Merge "fix use of heat client in driver"
This commit is contained in:
commit
022e18ea7d
@ -29,9 +29,6 @@ from vitrage import os_clients
|
|||||||
|
|
||||||
class HeatStackDriver(DriverBase):
|
class HeatStackDriver(DriverBase):
|
||||||
|
|
||||||
_client = None
|
|
||||||
conf = None
|
|
||||||
|
|
||||||
RESOURCE_TYPE = {
|
RESOURCE_TYPE = {
|
||||||
'OS::Nova::Server': NOVA_INSTANCE_DATASOURCE,
|
'OS::Nova::Server': NOVA_INSTANCE_DATASOURCE,
|
||||||
'OS::Cinder::Volume': CINDER_VOLUME_DATASOURCE,
|
'OS::Cinder::Volume': CINDER_VOLUME_DATASOURCE,
|
||||||
@ -48,16 +45,15 @@ class HeatStackDriver(DriverBase):
|
|||||||
|
|
||||||
def __init__(self, conf):
|
def __init__(self, conf):
|
||||||
super(HeatStackDriver, self).__init__()
|
super(HeatStackDriver, self).__init__()
|
||||||
HeatStackDriver.conf = conf
|
self._client = None
|
||||||
|
self._conf = conf
|
||||||
self._filter_resource_types()
|
self._filter_resource_types()
|
||||||
HeatStackDriver.client()
|
|
||||||
|
|
||||||
@staticmethod
|
@property
|
||||||
def client():
|
def client(self):
|
||||||
if not HeatStackDriver._client:
|
if not self._client:
|
||||||
HeatStackDriver._client = os_clients.heat_client(
|
self._client = os_clients.heat_client(self._conf)
|
||||||
HeatStackDriver.conf)
|
return self._client
|
||||||
return HeatStackDriver._client
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_topic(conf):
|
def get_topic(conf):
|
||||||
@ -84,7 +80,7 @@ class HeatStackDriver(DriverBase):
|
|||||||
return
|
return
|
||||||
|
|
||||||
event[DSProps.EVENT_TYPE] = event_type
|
event[DSProps.EVENT_TYPE] = event_type
|
||||||
event = HeatStackDriver._retrieve_stack_resources(event, stack_id)
|
event = self._retrieve_stack_resources(event, stack_id)
|
||||||
|
|
||||||
return HeatStackDriver.make_pickleable(
|
return HeatStackDriver.make_pickleable(
|
||||||
[event],
|
[event],
|
||||||
@ -92,19 +88,14 @@ class HeatStackDriver(DriverBase):
|
|||||||
DatasourceAction.UPDATE,
|
DatasourceAction.UPDATE,
|
||||||
*self.properties_to_filter_out())[0]
|
*self.properties_to_filter_out())[0]
|
||||||
|
|
||||||
@staticmethod
|
def _is_nested_stack(self, _id):
|
||||||
def _is_nested_stack(_id):
|
return self.client.stacks.get(_id).to_dict()['parent']
|
||||||
return HeatStackDriver.client().stacks.get(_id).to_dict()['parent']
|
|
||||||
|
|
||||||
def _filter_resource_types(self):
|
def _filter_resource_types(self):
|
||||||
types = self.conf.datasources.types
|
types = self._conf.datasources.types
|
||||||
tmp_dict = {}
|
|
||||||
|
|
||||||
for key, value in HeatStackDriver.RESOURCE_TYPE.items():
|
self.RESOURCE_TYPE = {key: value for key, value in
|
||||||
if value in types:
|
self.RESOURCE_TYPE.items() if value in types}
|
||||||
tmp_dict[key] = value
|
|
||||||
|
|
||||||
HeatStackDriver.RESOURCE_TYPE = tmp_dict
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _make_stacks_list(stacks):
|
def _make_stacks_list(stacks):
|
||||||
@ -118,16 +109,13 @@ class HeatStackDriver(DriverBase):
|
|||||||
def properties_to_filter_out():
|
def properties_to_filter_out():
|
||||||
return ['manager', '_info']
|
return ['manager', '_info']
|
||||||
|
|
||||||
@staticmethod
|
def _retrieve_stack_resources(self, stack, stack_id):
|
||||||
def _retrieve_stack_resources(stack, stack_id):
|
# guess 10 is enough
|
||||||
resources = HeatStackDriver.client().resources.list(stack_id,
|
resources = self.client.resources.list(stack_id, nested_depth=10)
|
||||||
# guess 10 is
|
|
||||||
# enough
|
|
||||||
nested_depth=10)
|
|
||||||
stack['resources'] = [resource.to_dict() for resource in resources
|
stack['resources'] = [resource.to_dict() for resource in resources
|
||||||
if resource.to_dict()['resource_type'] in
|
if resource.to_dict()['resource_type'] in
|
||||||
HeatStackDriver.RESOURCE_TYPE]
|
self.RESOURCE_TYPE]
|
||||||
HeatStackDriver._filter_stack_resources(stack)
|
self._filter_stack_resources(stack)
|
||||||
return stack
|
return stack
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@ -140,7 +128,7 @@ class HeatStackDriver(DriverBase):
|
|||||||
del resource[prop]
|
del resource[prop]
|
||||||
|
|
||||||
def get_all(self, datasource_action):
|
def get_all(self, datasource_action):
|
||||||
stacks = HeatStackDriver.client().stacks.list(global_tenant=True)
|
stacks = self.client.stacks.list(global_tenant=True)
|
||||||
stacks_list = self._make_stacks_list(stacks)
|
stacks_list = self._make_stacks_list(stacks)
|
||||||
stacks_with_resources = self._append_stacks_resources(stacks_list)
|
stacks_with_resources = self._append_stacks_resources(stacks_list)
|
||||||
return self.make_pickleable(stacks_with_resources,
|
return self.make_pickleable(stacks_with_resources,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user