[openstack-dev] [all] cross project communication: Return request-id to caller
Doug Hellmann
doug at doughellmann.com
Tue Dec 22 14:50:17 UTC 2015
Excerpts from Kekane, Abhishek's message of 2015-12-18 06:27:59 +0000:
> Hi Devs,
>
> I have submitted a cross-project specs [1] for returning request-id to the caller which was approved. For implementation we have submitted patches in python-cinderclient [2] as per design in cross-project specs. However we have found one issue while implementing this design in python-glanceclient and submitted a lite-spec [3] to address this issue.
>
> As per the comments [4] on lite-specs, glance core are suggesting new approach to use hooks and pass empty list to each of the api, so that when the hook is executed it will append the request-id to the list.
>
> POC code for approach suggested by glance:
> ------------------------------------------
> # change in python-glanceclient/v2/images.py to delete api
>
> import functools
>
> def append_request_id(req_id_lst, response, *args, **kwargs):
> req_id = response.headers.get('x-openstack-request-id')
> if req_id:
> req_id_lst.append(req_id)
>
> def setup_request_id_hook(req_id_lst):
> if req_id_lst is not None:
> return dict(response=functools.partial(append_request_id, req_id_lst))
>
> def delete(self, image_id, request_ids=None):
> hook = setup_request_id_hook(request_ids)
> url = '/v2/images/%s' % image_id
> self.http_client.delete(url, hooks=hook)
>
> # modify the do_image_delete function (glanceclient/v2/shell.py) to look as follows:
>
> request_ids = []
> gc.images.delete(args_id, request_ids=request_ids)
> print request_ids
>
> $ glance image-delete 11887d68-7faf-4821-9a42-3ec63451067c
> ['req-a0892f56-2626-4069-8787-f8bf56e0c1cc']
>
> We have tested this approach and it is working as per expectation, only thing is that we need to make changes in every method to add hook and request_id list.
> From third-party tools, user need to pass this request-ids list as mentioned in above poc in order to get the request-id back.
>
> My point here is, should we follow this new approach in all python-clients to maintain the consistency across openstack?
The original design was discussed, reviewed, and if I understand
correctly is already mostly implemented. Let's not change that.
Doug
>
> Please provide your feedback for the same.
>
> [1] http://specs.openstack.org/openstack/openstack-specs/specs/return-request-id.html
> [2] https://review.openstack.org/#/c/257170/ (base patch, followed by dependent patches)
> [3] https://bugs.launchpad.net/glance/+bug/1525259
> [4] https://bugs.launchpad.net/glance/+bug/1525259/comments/1 and https://bugs.launchpad.net/glance/+bug/1525259/comments/5
>
>
> Thank you,
>
> Abhishek Kekane
>
More information about the OpenStack-dev
mailing list