Merge "Adding retry ability to heatclient calls"
This commit is contained in:
commit
cf8d03cd42
@ -26,6 +26,7 @@ from sahara.service.heat import templates as ht
|
|||||||
from sahara.service import volumes
|
from sahara.service import volumes
|
||||||
from sahara.utils import cluster_progress_ops as cpo
|
from sahara.utils import cluster_progress_ops as cpo
|
||||||
from sahara.utils import general as g
|
from sahara.utils import general as g
|
||||||
|
from sahara.utils.openstack import base as b
|
||||||
from sahara.utils.openstack import heat
|
from sahara.utils.openstack import heat
|
||||||
|
|
||||||
conductor = c.API
|
conductor = c.API
|
||||||
@ -39,10 +40,10 @@ class HeatEngine(e.Engine):
|
|||||||
|
|
||||||
def _add_volumes(self, ctx, cluster):
|
def _add_volumes(self, ctx, cluster):
|
||||||
for instance in g.get_instances(cluster):
|
for instance in g.get_instances(cluster):
|
||||||
res_names = heat.client().resources.get(
|
res_names = heat.get_resource(
|
||||||
cluster.name, instance.instance_name).required_by
|
cluster.name, instance.instance_name).required_by
|
||||||
for res_name in res_names:
|
for res_name in res_names:
|
||||||
vol_res = heat.client().resources.get(cluster.name, res_name)
|
vol_res = heat.get_resource(cluster.name, res_name)
|
||||||
if vol_res.resource_type == (('OS::Cinder::'
|
if vol_res.resource_type == (('OS::Cinder::'
|
||||||
'VolumeAttachment')):
|
'VolumeAttachment')):
|
||||||
volume_id = vol_res.physical_resource_id
|
volume_id = vol_res.physical_resource_id
|
||||||
@ -177,7 +178,7 @@ class HeatEngine(e.Engine):
|
|||||||
def shutdown_cluster(self, cluster):
|
def shutdown_cluster(self, cluster):
|
||||||
"""Shutdown specified cluster and all related resources."""
|
"""Shutdown specified cluster and all related resources."""
|
||||||
try:
|
try:
|
||||||
heat.client().stacks.delete(cluster.name)
|
b.execute_with_retries(heat.client().stacks.delete, cluster.name)
|
||||||
stack = heat.get_stack(cluster.name)
|
stack = heat.get_stack(cluster.name)
|
||||||
heat.wait_stack_completion(stack)
|
heat.wait_stack_completion(stack)
|
||||||
except heat_exc.HTTPNotFound:
|
except heat_exc.HTTPNotFound:
|
||||||
|
@ -20,6 +20,7 @@ import six
|
|||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from sahara.utils import general as g
|
from sahara.utils import general as g
|
||||||
|
from sahara.utils.openstack import base as b
|
||||||
from sahara.utils.openstack import heat as h
|
from sahara.utils.openstack import heat as h
|
||||||
from sahara.utils.openstack import neutron
|
from sahara.utils.openstack import neutron
|
||||||
|
|
||||||
@ -91,11 +92,11 @@ class ClusterTemplate(object):
|
|||||||
'template': main_tmpl}
|
'template': main_tmpl}
|
||||||
|
|
||||||
if not update_existing:
|
if not update_existing:
|
||||||
heat.stacks.create(**kwargs)
|
b.execute_with_retries(heat.stacks.create, **kwargs)
|
||||||
else:
|
else:
|
||||||
for stack in heat.stacks.list():
|
for stack in b.execute_with_retries(heat.stacks.list):
|
||||||
if stack.stack_name == self.cluster.name:
|
if stack.stack_name == self.cluster.name:
|
||||||
stack.update(**kwargs)
|
b.execute_with_retries(stack.update, **kwargs)
|
||||||
break
|
break
|
||||||
|
|
||||||
return ClusterStack(self, h.get_stack(self.cluster.name))
|
return ClusterStack(self, h.get_stack(self.cluster.name))
|
||||||
@ -337,10 +338,9 @@ class ClusterStack(object):
|
|||||||
|
|
||||||
count = self.tmpl.node_groups_extra[node_group.id]['node_count']
|
count = self.tmpl.node_groups_extra[node_group.id]['node_count']
|
||||||
|
|
||||||
heat = h.client()
|
|
||||||
for i in range(0, count):
|
for i in range(0, count):
|
||||||
name = _get_inst_name(self.tmpl.cluster.name, node_group.name, i)
|
name = _get_inst_name(self.tmpl.cluster.name, node_group.name, i)
|
||||||
res = heat.resources.get(self.heat_stack.id, name)
|
res = h.get_resource(self.heat_stack.id, name)
|
||||||
insts.append((name, res.physical_resource_id))
|
insts.append((name, res.physical_resource_id))
|
||||||
|
|
||||||
return insts
|
return insts
|
||||||
|
@ -49,7 +49,7 @@ def client():
|
|||||||
|
|
||||||
def get_stack(stack_name):
|
def get_stack(stack_name):
|
||||||
heat = client()
|
heat = client()
|
||||||
for stack in heat.stacks.list():
|
for stack in base.execute_with_retries(heat.stacks.list):
|
||||||
if stack.stack_name == stack_name:
|
if stack.stack_name == stack_name:
|
||||||
return stack
|
return stack
|
||||||
|
|
||||||
@ -62,7 +62,12 @@ def wait_stack_completion(stack):
|
|||||||
# maybe is not set in heat database
|
# maybe is not set in heat database
|
||||||
while stack.status in ['IN_PROGRESS', '']:
|
while stack.status in ['IN_PROGRESS', '']:
|
||||||
context.sleep(1)
|
context.sleep(1)
|
||||||
stack.get()
|
base.execute_with_retries(stack.get)
|
||||||
|
|
||||||
if stack.status != 'COMPLETE':
|
if stack.status != 'COMPLETE':
|
||||||
raise ex.HeatStackException(stack.stack_status)
|
raise ex.HeatStackException(stack.stack_status)
|
||||||
|
|
||||||
|
|
||||||
|
def get_resource(stack, resource):
|
||||||
|
return base.execute_with_retries(
|
||||||
|
client().resources.get, stack, resource)
|
||||||
|
Loading…
Reference in New Issue
Block a user