from heat.openstack.common import rpc
import heat.openstack.common.rpc.proxy
-
-FLAGS = cfg.CONF
-
-
-def _engine_topic(topic, ctxt, host):
- '''Get the topic to use for a message.
-
- :param topic: the base topic
- :param ctxt: request context
- :param host: explicit host to send the message to.
-
- :returns: A topic string
- '''
- if not host:
- host = cfg.CONF.host
- return rpc.queue_get_for(ctxt, topic, host)
+CONF = cfg.CONF
class EngineClient(heat.openstack.common.rpc.proxy.RpcProxy):
def __init__(self):
super(EngineClient, self).__init__(
- topic=FLAGS.engine_topic,
+ topic=rpc.queue_get_for(None, CONF.engine_topic, CONF.host),
default_version=self.BASE_RPC_API_VERSION)
def identify_stack(self, ctxt, stack_name):
or None to see all
"""
return self.call(ctxt, self.make_msg('identify_stack',
- stack_name=stack_name),
- topic=_engine_topic(self.topic, ctxt, None))
+ stack_name=stack_name))
def list_stacks(self, ctxt):
"""
:param ctxt: RPC context.
"""
- return self.call(ctxt, self.make_msg('list_stacks'),
- topic=_engine_topic(self.topic, ctxt, None))
+ return self.call(ctxt, self.make_msg('list_stacks'))
def show_stack(self, ctxt, stack_identity):
"""
show all
"""
return self.call(ctxt, self.make_msg('show_stack',
- stack_identity=stack_identity),
- topic=_engine_topic(self.topic, ctxt, None))
+ stack_identity=stack_identity))
def create_stack(self, ctxt, stack_name, template, params, args):
"""
return self.call(ctxt,
self.make_msg('create_stack', stack_name=stack_name,
template=template,
- params=params, args=args),
- topic=_engine_topic(self.topic, ctxt, None))
+ params=params, args=args))
def update_stack(self, ctxt, stack_identity, template, params, args):
"""
return self.call(ctxt, self.make_msg('update_stack',
stack_identity=stack_identity,
template=template,
- params=params, args=args),
- topic=_engine_topic(self.topic, ctxt, None))
+ params=params, args=args))
def validate_template(self, ctxt, template):
"""
:param params: Params passed from API.
"""
return self.call(ctxt, self.make_msg('validate_template',
- template=template),
- topic=_engine_topic(self.topic, ctxt, None))
+ template=template))
def authenticated_to_backend(self, ctxt):
"""
:param ctxt: RPC context.
"""
- return self.call(ctxt, self.make_msg('authenticated_to_backend'),
- topic=_engine_topic(self.topic, ctxt, None))
+ return self.call(ctxt, self.make_msg('authenticated_to_backend'))
def get_template(self, ctxt, stack_identity):
"""
:param params: Dict of http request parameters passed in from API side.
"""
return self.call(ctxt, self.make_msg('get_template',
- stack_identity=stack_identity),
- topic=_engine_topic(self.topic, ctxt, None))
+ stack_identity=stack_identity))
def delete_stack(self, ctxt, stack_identity, cast=True):
"""
rpc_method = self.cast if cast else self.call
return rpc_method(ctxt,
self.make_msg('delete_stack',
- stack_identity=stack_identity),
- topic=_engine_topic(self.topic, ctxt, None))
+ stack_identity=stack_identity))
def list_resource_types(self, ctxt):
"""
:param ctxt: RPC context.
"""
- return self.call(ctxt, self.make_msg('list_resource_types'),
- topic=_engine_topic(self.topic, ctxt, None))
+ return self.call(ctxt, self.make_msg('list_resource_types'))
def list_events(self, ctxt, stack_identity):
"""
:param params: Params passed from API.
"""
return self.call(ctxt, self.make_msg('list_events',
- stack_identity=stack_identity),
- topic=_engine_topic(self.topic, ctxt, None))
+ stack_identity=stack_identity))
def describe_stack_resource(self, ctxt, stack_identity, resource_name):
return self.call(ctxt, self.make_msg('describe_stack_resource',
stack_identity=stack_identity,
- resource_name=resource_name),
- topic=_engine_topic(self.topic, ctxt, None))
+ resource_name=resource_name))
def find_physical_resource(self, ctxt, physical_resource_id):
"""
return self.call(ctxt,
self.make_msg(
'find_physical_resource',
- physical_resource_id=physical_resource_id),
- topic=_engine_topic(self.topic, ctxt, None))
+ physical_resource_id=physical_resource_id))
def describe_stack_resources(self, ctxt, stack_identity, resource_name):
return self.call(ctxt, self.make_msg('describe_stack_resources',
stack_identity=stack_identity,
- resource_name=resource_name),
- topic=_engine_topic(self.topic, ctxt, None))
+ resource_name=resource_name))
def list_stack_resources(self, ctxt, stack_identity):
return self.call(ctxt, self.make_msg('list_stack_resources',
- stack_identity=stack_identity),
- topic=_engine_topic(self.topic, ctxt, None))
+ stack_identity=stack_identity))
def metadata_update(self, ctxt, stack_identity, resource_name, metadata):
"""
Update the metadata for the given resource.
"""
return self.call(ctxt, self.make_msg('metadata_update',
- stack_identity=stack_identity,
- resource_name=resource_name, metadata=metadata),
- topic=_engine_topic(self.topic, ctxt, None))
+ stack_identity=stack_identity,
+ resource_name=resource_name,
+ metadata=metadata))
def create_watch_data(self, ctxt, watch_name, stats_data):
'''
and treat HA service events like any other CloudWatch.
'''
return self.call(ctxt, self.make_msg('create_watch_data',
- watch_name=watch_name, stats_data=stats_data),
- topic=_engine_topic(self.topic, ctxt, None))
+ watch_name=watch_name,
+ stats_data=stats_data))
def show_watch(self, ctxt, watch_name):
"""
or None to see all
"""
return self.call(ctxt, self.make_msg('show_watch',
- watch_name=watch_name),
- topic=_engine_topic(self.topic, ctxt, None))
+ watch_name=watch_name))
def show_watch_metric(self, ctxt, namespace=None, metric_name=None):
"""
or None to see all
"""
return self.call(ctxt, self.make_msg('show_watch_metric',
- namespace=namespace, metric_name=metric_name),
- topic=_engine_topic(self.topic, ctxt, None))
+ namespace=namespace,
+ metric_name=metric_name))
def set_watch_state(self, ctxt, watch_name, state):
'''
arg3 -> State (must be one defined in WatchRule class)
'''
return self.call(ctxt, self.make_msg('set_watch_state',
- watch_name=watch_name, state=state),
- topic=_engine_topic(self.topic, ctxt, None))
+ watch_name=watch_name,
+ state=state))