¡@

Home 

OpenStack Study: request_utils.py

OpenStack Index

**** 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)