)]}'
{"id":"openstack%2Foslo.messaging~394667","triplet_id":"openstack%2Foslo.messaging~master~I0651b165fd19d4e778d52247c112c954563173ee","project":"openstack/oslo.messaging","branch":"master","topic":"oslo-messaging-rpc-wrap-dispatcher","hashtags":[],"change_id":"I0651b165fd19d4e778d52247c112c954563173ee","subject":"allow oslo_messaging.rpc server consumers to wrap a dispatcher","status":"ABANDONED","created":"2016-11-07 22:54:40.000000000","updated":"2016-11-14 16:59:28.000000000","total_comment_count":5,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"4acaeea484e5cbe883ae35a1ab884c91d6ef841a","_number":394667,"virtual_id_number":394667,"owner":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"date":"2016-11-08 18:49:38.000000000","_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},{"value":1,"date":"2016-11-08 00:21:22.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":0},"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},{"date":"2016-11-08 18:55:40.000000000","_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},{"date":"2016-11-10 13:35:41.000000000","_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"date":"2016-11-07 22:59:53.000000000","_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},{"date":"2016-11-07 22:55:37.000000000","_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},{"date":"2016-11-09 06:49:02.000000000","_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true},"Backport-Candidate":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"}],"values":{"-2":"Do Not Backport","-1":"Not A Backport Candidate"," 0":"Backport Review Needed","+1":"Proposed Backport","+2":"Should Backport"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2016-11-07 22:55:37.000000000","updated_by":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"reviewer":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"state":"REVIEWER"},{"updated":"2016-11-07 22:59:53.000000000","updated_by":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"reviewer":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"state":"REVIEWER"},{"updated":"2016-11-08 00:21:22.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"},{"updated":"2016-11-08 18:55:40.000000000","updated_by":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"reviewer":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"state":"REVIEWER"},{"updated":"2016-11-09 06:49:02.000000000","updated_by":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"reviewer":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"state":"REVIEWER"},{"updated":"2016-11-10 13:35:41.000000000","updated_by":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"reviewer":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"state":"REVIEWER"}],"messages":[{"id":"ae571f2da1591bea817fec10f98a8a2212f01cfa","author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"date":"2016-11-07 22:54:40.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"510be4a68ab6acc58676dfd847930595f9365380","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-11-08 00:21:22.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-oslo.messaging-docs-ubuntu-xenial http://docs-draft.openstack.org/67/394667/1/check/gate-oslo.messaging-docs-ubuntu-xenial/26ce6b5//doc/build/html/ : SUCCESS in 2m 15s\n- gate-oslo.messaging-pep8-ubuntu-xenial http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-pep8-ubuntu-xenial/ed65887/ : SUCCESS in 1m 44s\n- gate-oslo.messaging-python27-ubuntu-xenial http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-python27-ubuntu-xenial/9547ad2/ : SUCCESS in 3m 29s\n- gate-oslo.messaging-python34 http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-python34/54a8132/ : SUCCESS in 3m 10s\n- gate-oslo.messaging-python35 http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-python35/683a79b/ : SUCCESS in 3m 13s\n- gate-tempest-dsvm-neutron-src-oslo.messaging http://logs.openstack.org/67/394667/1/check/gate-tempest-dsvm-neutron-src-oslo.messaging/c62ae3b/ : SUCCESS in 42m 50s\n- gate-tempest-dsvm-neutron-src-oslo.messaging-newton http://logs.openstack.org/67/394667/1/check/gate-tempest-dsvm-neutron-src-oslo.messaging-newton/d830a28/ : FAILURE in 15m 23s (non-voting)\n- gate-oslo.messaging-dsvm-functional-py27-rabbit-nv http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-dsvm-functional-py27-rabbit-nv/392707a/ : SUCCESS in 15m 34s (non-voting)\n- gate-oslo.messaging-dsvm-functional-py34-rabbit-nv http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-dsvm-functional-py34-rabbit-nv/a006207/ : FAILURE in 1h 26m 23s (non-voting)\n- gate-oslo.messaging-dsvm-functional-py27-amqp1-centos7 http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-dsvm-functional-py27-amqp1-centos7/b5cb420/ : SUCCESS in 16m 41s\n- gate-oslo.messaging-dsvm-functional-py34-amqp1-centos7-nv http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-dsvm-functional-py34-amqp1-centos7-nv/28bfef7/ : FAILURE in 15m 37s (non-voting)\n- gate-oslo.messaging-dsvm-functional-py27-pika http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-dsvm-functional-py27-pika/3282a6d/ : SUCCESS in 14m 15s\n- gate-oslo.messaging-dsvm-functional-py27-zeromq http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-dsvm-functional-py27-zeromq/5075c00/ : SUCCESS in 14m 37s\n- gate-oslo.messaging-dsvm-functional-py27-zeromq-proxy-nv http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-dsvm-functional-py27-zeromq-proxy-nv/b32cdf8/ : SUCCESS in 14m 35s (non-voting)\n- gate-oslo.messaging-dsvm-functional-py27-zeromq-pub-sub-nv http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-dsvm-functional-py27-zeromq-pub-sub-nv/e317c90/ : SUCCESS in 14m 40s (non-voting)\n- gate-oslo.messaging-src-dsvm-full-amqp1-centos7 http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-src-dsvm-full-amqp1-centos7/1d3a8ca/ : SUCCESS in 42m 33s\n- gate-oslo.messaging-src-dsvm-full-pika http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-src-dsvm-full-pika/82ef1af/ : SUCCESS in 38m 23s\n- gate-oslo.messaging-src-dsvm-full-zmq http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-src-dsvm-full-zmq/b725c1c/ : SUCCESS in 42m 20s\n- gate-oslo.messaging-src-grenade-dsvm http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-src-grenade-dsvm/a31de0e/ : FAILURE in 24m 58s (non-voting)\n- gate-oslo.messaging-src-grenade-dsvm-multinode http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-src-grenade-dsvm-multinode/ccb1b1a/ : FAILURE in 10m 26s (non-voting)\n- gate-telemetry-dsvm-integration-oslo.messaging-ubuntu-xenial http://logs.openstack.org/67/394667/1/check/gate-telemetry-dsvm-integration-oslo.messaging-ubuntu-xenial/8eddc81/ : SUCCESS in 40m 07s\n- gate-oslo.messaging-telemetry-dsvm-integration-pika http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-telemetry-dsvm-integration-pika/cd62896/ : FAILURE in 21m 32s (non-voting)\n- gate-oslo.messaging-telemetry-dsvm-integration-zmq http://logs.openstack.org/67/394667/1/check/gate-oslo.messaging-telemetry-dsvm-integration-zmq/a335240/ : FAILURE in 56m 11s (non-voting)\n- gate-tempest-neutron-dsvm-src-oslo.messaging-amqp1-nv http://logs.openstack.org/67/394667/1/check/gate-tempest-neutron-dsvm-src-oslo.messaging-amqp1-nv/f91f30e/ : SUCCESS in 42m 56s (non-voting)\n- gate-tempest-neutron-dsvm-src-oslo.messaging-pika http://logs.openstack.org/67/394667/1/check/gate-tempest-neutron-dsvm-src-oslo.messaging-pika/72c2049/ : SUCCESS in 42m 40s\n- gate-tempest-neutron-dsvm-src-oslo.messaging-zmq http://logs.openstack.org/67/394667/1/check/gate-tempest-neutron-dsvm-src-oslo.messaging-zmq/12520e9/ : SUCCESS in 1h 07m 49s","accounts_in_message":[],"_revision_number":1},{"id":"f231ff7e8ef015d638174e977ef3c30f39589c54","author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"date":"2016-11-08 18:36:32.000000000","message":"Patch Set 1:\n\nThis opens widely the internal of oslo.messaging to application. \n\nMaking the private \u0027IncomingMessage\u0027 object public (Its currently only shared between Drivers and Dispatchers). \n\nThis object have some methods that call internal driver code (ack/requeue/reject) that we don\u0027t want to expose. \n\nWhat if this object is modified outside ? I don\u0027t think we want to support that.","accounts_in_message":[],"_revision_number":1},{"id":"51ee847bfc57159e2424a60bae07591957a5e1db","author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"date":"2016-11-08 18:49:38.000000000","message":"Patch Set 1:\n\n\u003e This opens widely the internal of oslo.messaging to application.\n \u003e \n \u003e Making the private \u0027IncomingMessage\u0027 object public (Its currently\n \u003e only shared between Drivers and Dispatchers).\n \u003e \n\nIsn\u0027t that the point in making a dispatcher an independent object? If the idea was that the message was internal to oslo_messaging, I\u0027d have thought the dispatcher would just have been part of the server and get_rpc_server would just have been in the __init__ of the server!\n\n \u003e This object have some methods that call internal driver code\n \u003e (ack/requeue/reject) that we don\u0027t want to expose.\n \u003e \n\nWell, the reason I want to do this is that it makes the code to handle the message signature on the server side much cleaner than requiring a decorator on each and every API call. Trove has three servers (taskmanager, guestagent and conductor) with literally hundreds of API\u0027s. The alternative is to attach a decorator to each of these hundreds of API methods. It can be done, no doubt. This is just more elegant.\n\n \u003e What if this object is modified outside ? I don\u0027t think we want to\n \u003e support that.\n\nIsn\u0027t that point of making this stuff extensible?","accounts_in_message":[],"_revision_number":1},{"id":"468b708b9b064d5171bdbaa32a6f514afda4bb02","author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"date":"2016-11-08 18:55:40.000000000","message":"Patch Set 1:\n\nWhat classes and such does this open up to now be public APIs that were not previous public APIs, if it is quite a bit then I\u0027d echo Medhi\u0027s concern. Extensiblity hopefully doesn\u0027t have to come at the cost of making everything fragile (which exposing to much can do).","accounts_in_message":[],"_revision_number":1},{"id":"d6b7082ff423caa67f8d659bd0be1e07d96fb588","author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"date":"2016-11-08 19:06:59.000000000","message":"Patch Set 1:\n\n\u003e What classes and such does this open up to now be public APIs that\n \u003e were not previous public APIs, if it is quite a bit then I\u0027d echo\n \u003e Medhi\u0027s concern. Extensiblity hopefully doesn\u0027t have to come at the\n \u003e cost of making everything fragile (which exposing to much can do).\n\nTwo things. First, I read https://wiki.openstack.org/wiki/Oslo/Messaging#Server_Side_API before proposing this change. Observe that in this version of the wiki, the constructor of RPCServer defined the Dispatcher; not get_rpc_server(). The fact that someone came up with the convenience function get_rpc_server() was what made me feel that pluggability of the Dispatcher was actually intended.\n\nNo classes that were earlier private are now public. One data structure (message) becomes visible to the wrapper.\n\nBy wrapping RPCDispatcher() all that happens is that the envelopes dispatch() function gets invoked (see the new invocation of get_rpc_server and the new wrapper\u0027s dispatcher at https://review.openstack.org/#/c/394707/2/trove/rpc.py).\n\nLiterally, all I get is the message and the ability to pop the signature out of it so that I don\u0027t need every function to have a decorator to do that.","accounts_in_message":[],"_revision_number":1},{"id":"26e65c58c7bb8bb2cabaffde5d0393d3dca380f7","author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"date":"2016-11-08 19:10:00.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"d436c58c8a6a5fc780de98cb9c8ad76ac71d5b43","author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"date":"2016-11-08 19:14:53.000000000","message":"Patch Set 1:\n\nThis dispatcher have two public methods __init__ and dispatch that could be overriden with this change.\n\nThe dispatch method takes a RpcIncomingMessage as argument. \nThis object is created by drivers. \n\nThis object have two attributes (dict) ctxt and message. Theses dicts have some mandatory stuff common to all drivers and each driver can add their stuff if additional data have to be shared between the client and the server (like unique message id for rabbit driver).\n\nAll of this is currently internal/private and come from deep (and dark ;) ) part of oslo.messaging.\n\n\nThe famous RpcIncomingMessage: https://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/_drivers/base.py#L80-L99","accounts_in_message":[],"_revision_number":1},{"id":"0b09d5682f9f5b963e1ad7120e43d83fa1ba4110","author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"date":"2016-11-08 19:31:21.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"1c899da05d770bd46bfb38064f367579df21ab9a","author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"date":"2016-11-08 20:53:37.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"5139750ce15400d21e6b69cb7414069855c7eb06","author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"date":"2016-11-09 06:49:02.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"b75a31f8797faed19237d7430eb389fc82f87ad7","author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"date":"2016-11-09 11:51:17.000000000","message":"Patch Set 1:\n\n(1 comment)\n\n\u003e This dispatcher have two public methods __init__ and dispatch that\n \u003e could be overriden with this change.\n \u003e \n \u003e The dispatch method takes a RpcIncomingMessage as argument.\n \u003e This object is created by drivers.\n \u003e \n \u003e This object have two attributes (dict) ctxt and message. Theses\n \u003e dicts have some mandatory stuff common to all drivers and each\n \u003e driver can add their stuff if additional data have to be shared\n \u003e between the client and the server (like unique message id for\n \u003e rabbit driver).\n \u003e \n \u003e All of this is currently internal/private and come from deep (and\n \u003e dark ;) ) part of oslo.messaging.\n \u003e \n \u003e \n \u003e The famous RpcIncomingMessage: https://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/_drivers/base.py#L80-L99\n\nGiven Sileht\u0027s other comment about __all__, I think this answer above is wrong too (and so was I).\n\nThe things that were earlier private, which would now effectively be treated as public are:\n\nRPCServer\nRPCDispatcher\n\nAnd the other things that sileht says, all would also be changes from private to now exposed.","accounts_in_message":[],"_revision_number":1},{"id":"8b0d384dec31e28af7e4fa92f903c9b092a3f929","author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"date":"2016-11-09 16:11:31.000000000","message":"Patch Set 1:\n\nNot to review-jack, but:\n\nhttps://wiki.openstack.org/wiki/Oslo/Messaging\n\nI can\u0027t find a link to this on the openstack wiki homepage - am I missing something?  Also where are the sources?","accounts_in_message":[],"_revision_number":1},{"id":"ca5d1098658297162f8b745acf945e8dc2ee987b","author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"date":"2016-11-09 16:20:35.000000000","message":"Patch Set 1:\n\nNot a big fan of exposing the internal driver API (IncomingMessage, etc).\n\nI\u0027d rather see a dispatcher method added that gets invoked with just the original message body and the ctxt just prior to invoking the method, maybe dispatcher.pre_call(ctxt, msg_body).  The user can override its implementation with custom logic.","accounts_in_message":[],"_revision_number":1},{"id":"102129dc3cd112532f400af6e9eaab9b5b839fc3","author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"date":"2016-11-09 16:34:59.000000000","message":"Patch Set 1:\n\n\u003e Not a big fan of exposing the internal driver API (IncomingMessage,\n \u003e etc).\n \u003e \n \u003e I\u0027d rather see a dispatcher method added that gets invoked with\n \u003e just the original message body and the ctxt just prior to invoking\n \u003e the method, maybe dispatcher.pre_call(ctxt, msg_body).  The user\n \u003e can override its implementation with custom logic.\n\nInteresting you should say that. I agree absolutely!\n\nhttps://review.openstack.org/#/c/394389","accounts_in_message":[],"_revision_number":1},{"id":"6b964874b33ec231302d1eb56062457f4f9fb7c4","author":{"_account_id":8770,"name":"Ken Giusti","email":"kgiusti@gmail.com","username":"kgiusti"},"date":"2016-11-10 13:35:41.000000000","message":"Patch Set 1:\n\nAh, sorry - I see Mehdi\u0027s point. Must think a bit more about this...","accounts_in_message":[],"_revision_number":1},{"id":"46b16574c900131882f591318e51a55c7d5e3fed","author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"date":"2016-11-14 16:59:28.000000000","message":"Abandoned\n\nper oslo meeting today I was told that this wouldn\u0027t pass muster as is either. And no one else has the time to work on an acceptable implementation. So back to the drawing board.","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"ae371409c15ef3b75847be77049ee03d85560778","revisions":{"ae371409c15ef3b75847be77049ee03d85560778":{"kind":"REWORK","_number":1,"created":"2016-11-07 22:54:40.000000000","uploader":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"ref":"refs/changes/67/394667/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/oslo.messaging","ref":"refs/changes/67/394667/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/oslo.messaging refs/changes/67/394667/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/oslo.messaging refs/changes/67/394667/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/oslo.messaging refs/changes/67/394667/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/oslo.messaging refs/changes/67/394667/1"}}},"commit":{"parents":[{"commit":"9dcd9b78beecdad4db73c1226779cd4e6389efa8","subject":"Merge \"[zmq] Cleanup changes to zmq-specific f-tests\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.messaging/commit/9dcd9b78beecdad4db73c1226779cd4e6389efa8"}]}],"author":{"name":"Amrith Kumar","email":"amrith@amrith.org","date":"2016-11-07 22:42:06.000000000","tz":-300},"committer":{"name":"Amrith Kumar","email":"amrith@amrith.org","date":"2016-11-07 22:42:06.000000000","tz":-300},"subject":"allow oslo_messaging.rpc server consumers to wrap a dispatcher","message":"allow oslo_messaging.rpc server consumers to wrap a dispatcher\n\nCurrently get_rpc_server is a convenience function that allows\nconsumers of oslo_messaging.rpc to instantiate an RPCServer. It does\nthis by constructing a default dispatcher and using that to construct\nthe RPCServer.\n\nThere are situations where consumers of oslo_messaging.rpc can benefit\nfrom having access to the message that is received and manipulate it\nbefore the RPC call is made. One example of this is message signing\nand verification. While this can be accomplished with a decorator or\nhook on each RPC method, having a dispatcher that can inspect the\nmessage, verify it (assuming that the client did some corresponding\nsigning and stuck a signature argument into kwargs) and then invoke\nthe default RPCDispatcher\u0027s dispatch method.\n\nThis change allows such a requestor to provide a dispatcher to\nget_rpc_server. It is assumed that this dispatcher will be one that\nderives from RPCDispatcher or at least provides the same methods.\n\nIn the use-case that drives this change request, trove would provide a\ndispatcher that derives from RPCDispatcher, and use its dispatch()\nmethod merely to verify the message signature before popping that\nsignature argument from the kwargs and invoking the\nRPCDispatcher.dispatch method.\n\nTrove could just as well make its own get_rpc_server convenience\nmethod and do what it wishes to there but I think it would be better\nto do it this way as it makes it apparent to people who come later\nthat the ability to override the dispatcher in this manner is\nsomething that is in fact being done, and something that is an\nunderstood use-case.\n\nPut differntly, this is the non-decorator based approach to do\nsomething similar to the sample that I illustrated in\nhttps://gist.github.com/amrith/6a89ff478f81c2910e84325923eddebe and\nsileht proposed in http://paste.openstack.org/show/588244/.\n\nChange-Id: I0651b165fd19d4e778d52247c112c954563173ee\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.messaging/commit/ae371409c15ef3b75847be77049ee03d85560778"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/oslo.messaging/commit/ae371409c15ef3b75847be77049ee03d85560778"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
