**** CubicPower OpenStack Study ****
def link_request_ids(context, source_id, target_id=None, stage=None,
target_name=None, notifier=None):
"""Links the Request ID from the Source service to
the Request ID returned from the Target service.
Linkages are logged and emitted as INFO notifications.
:params context: context object
:params source_id: the Request ID of the source
:params target_id: the Request ID of the target
:params stage: optional event name extension to
indicate which part of the linkage
this is.
:params target_name: human readable name of the
target system you are talking to.
:params notifier: notifier object
A typical use case is: System A asking System B
to perform some action. The linkages might look
like this:
link_request_ids(sys_A.request_ID, stage="start")
# send request to System B and get request ID
link_request_ids(sys_A.request_ID, target_id=sys_B.request.ID)
# optionally wait for System B to complete
link_request_ids(sys_A.request_ID, target_id=sys_B.request.ID,
stage="end")
But, it could be as simple as:
link_request_ids(sys_A.request_ID, target_id=sys_B.request.ID)
"""
event_name = "request.link"
if stage:
event_name += ".%s" % stage
rtarget_id = ""
if target_id:
rtarget_id = _("TargetId=%(id)s ") % {'id': target_id}
rtarget_name = ""
if target_name:
rtarget_name = _("Target='%(name)s' ") % {'name': target_name}
arrow = ""
if target_name or target_id:
arrow = " -> "
LOG.info(_("Request ID Link: %(event_name)s '%(source_id)s'%(arrow)s"
"%(target_name)s%(target_id)s") % {"event_name": event_name,
"source_id": source_id,
"target_name": rtarget_name,
"arrow": arrow,
"target_id": rtarget_id})
if notifier:
payload = {"source_request_id": source_id,
"target_request_id": target_id,
"target_name": target_name,
"stage": stage}
notifier.info(context, event_name, payload)