)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"87e73b0f7fdaf31fb540f9babc661fd27caf2b05","unresolved":false,"context_lines":[{"line_number":17,"context_line":"add_extra_exmods()."},{"line_number":18,"context_line":"Consumers of neutron-lib.rpc.init() will need to be updated"},{"line_number":19,"context_line":"to pass in neutron exceptions for extmods where appropriate"},{"line_number":20,"context_line":"once merged into neutron-lib."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Additionally the test_rpc unit tests from neutron are brought"},{"line_number":23,"context_line":"over. Finally a new unit test method is added to verify the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9abb7d3a_325e0e46","line":20,"updated":"2016-05-27 06:00:38.000000000","message":"how about keeping a thin rpc.init in neutron, which just calls neutron-lib version adding neutron exceptions?","commit_id":"1fce17c4339541ac9ee19787f05c6cea39ab45f3"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"e4a4f42dc91121f49f4c38b7a5481d991b923938","unresolved":false,"context_lines":[{"line_number":17,"context_line":"add_extra_exmods()."},{"line_number":18,"context_line":"Consumers of neutron-lib.rpc.init() will need to be updated"},{"line_number":19,"context_line":"to pass in neutron exceptions for extmods where appropriate"},{"line_number":20,"context_line":"once merged into neutron-lib."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Additionally the test_rpc unit tests from neutron are brought"},{"line_number":23,"context_line":"over. Finally a new unit test method is added to verify the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9abb7d3a_344ffa93","line":20,"in_reply_to":"9abb7d3a_325e0e46","updated":"2016-05-27 18:20:29.000000000","message":"Yep that\u0027s the plan and hence why rpc.init() accepts extra_extmods now. Obviously we need to get this into the lib before we can update the neutron callers.","commit_id":"1fce17c4339541ac9ee19787f05c6cea39ab45f3"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"3581e10d0961c8b77db262d8805435f4d338510d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Boden R \u003cbodenvmw@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-19 14:36:13 -0600"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Rehome neutron common rpc"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch rehomes neutron.common.rpc into neutron_lib."},{"line_number":10,"context_line":"As it uses neutron_lib._context, this module is also made private."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1ac06dbe_8670dfdd","line":7,"updated":"2016-08-22 22:58:56.000000000","message":"looking at [1], it seems this code is in use nowhere meaningful but the tests for the following repos:\n\nnetworking-cisco\nnetworking-nec\nneutron-fwaas\nneutron-vpnaas\nnetworking-vsphere\ntap-as-a-service\n\nAre we sure this is even worth doing?\n\n[1] http://codesearch.openstack.org/?q\u003dneutron.common.rpc\u0026i\u003dnope\u0026files\u003d\u0026repos\u003d","commit_id":"bba671a41a001d3b174da782c085030a8a1311a8"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"0f2c40de800207d17ecb9f66f989894f4f7d949d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Boden R \u003cbodenvmw@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-19 14:36:13 -0600"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Rehome neutron common rpc"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch rehomes neutron.common.rpc into neutron_lib."},{"line_number":10,"context_line":"As it uses neutron_lib._context, this module is also made private."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1ac06dbe_4638a7ef","line":7,"in_reply_to":"1ac06dbe_8670dfdd","updated":"2016-08-22 23:00:20.000000000","message":"Perhaps we can come up with an alternative plan to break the dependency between the rpc layer and these repos, but if we can avoid bringing all this baggage in, perhaps we can take the saved time and energy and focus it elsewhere?\n\nWhat am I missing?","commit_id":"bba671a41a001d3b174da782c085030a8a1311a8"}],"lower-constraints.txt":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1725a4e433f7d12af372ad9604bb55a91f470fa6","unresolved":false,"context_lines":[{"line_number":98,"context_line":"vine\u003d\u003d1.1.4"},{"line_number":99,"context_line":"weakrefmethod\u003d\u003d1.0.2"},{"line_number":100,"context_line":"WebOb\u003d\u003d1.7.1"},{"line_number":101,"context_line":"wrapt\u003d\u003d1.7.0"}],"source_content_type":"text/plain","patch_set":12,"id":"5f7c97a3_10093083","line":101,"updated":"2018-07-12 15:54:10.000000000","message":"spurious whitespace change?","commit_id":"3d5419d133332f34dbea6981ee05d145b883aa45"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"6c073789637ee130364b47accdb9b677635c38c6","unresolved":false,"context_lines":[{"line_number":98,"context_line":"vine\u003d\u003d1.1.4"},{"line_number":99,"context_line":"weakrefmethod\u003d\u003d1.0.2"},{"line_number":100,"context_line":"WebOb\u003d\u003d1.7.1"},{"line_number":101,"context_line":"wrapt\u003d\u003d1.7.0"}],"source_content_type":"text/plain","patch_set":12,"id":"5f7c97a3_7372e94c","line":101,"in_reply_to":"5f7c97a3_10093083","updated":"2018-07-12 19:14:41.000000000","message":"Done","commit_id":"3d5419d133332f34dbea6981ee05d145b883aa45"}],"neutron_lib/rpc.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"87e73b0f7fdaf31fb540f9babc661fd27caf2b05","unresolved":false,"context_lines":[{"line_number":61,"context_line":"RPC_DISABLED \u003d False"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def init(conf, extra_extmods\u003d[]):"},{"line_number":65,"context_line":"    global TRANSPORT, NOTIFICATION_TRANSPORT, NOTIFIER"},{"line_number":66,"context_line":"    if extra_extmods:"},{"line_number":67,"context_line":"        add_extra_exmods(*tuple(extra_extmods or []))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_32b0ce8b","line":64,"range":{"start_line":64,"start_character":29,"end_line":64,"end_character":31},"updated":"2016-05-27 06:00:38.000000000","message":"it\u0027s better to use None for the default argument.","commit_id":"1fce17c4339541ac9ee19787f05c6cea39ab45f3"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"f91b8914d2c08b6b2e2bd01b7a758f0333f16149","unresolved":false,"context_lines":[{"line_number":61,"context_line":"RPC_DISABLED \u003d False"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def init(conf, extra_extmods\u003d[]):"},{"line_number":65,"context_line":"    global TRANSPORT, NOTIFICATION_TRANSPORT, NOTIFIER"},{"line_number":66,"context_line":"    if extra_extmods:"},{"line_number":67,"context_line":"        add_extra_exmods(*tuple(extra_extmods or []))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_a24903d3","line":64,"range":{"start_line":64,"start_character":29,"end_line":64,"end_character":31},"in_reply_to":"9abb7d3a_32b0ce8b","updated":"2016-05-27 11:39:47.000000000","message":"+1","commit_id":"1fce17c4339541ac9ee19787f05c6cea39ab45f3"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"e4a4f42dc91121f49f4c38b7a5481d991b923938","unresolved":false,"context_lines":[{"line_number":61,"context_line":"RPC_DISABLED \u003d False"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def init(conf, extra_extmods\u003d[]):"},{"line_number":65,"context_line":"    global TRANSPORT, NOTIFICATION_TRANSPORT, NOTIFIER"},{"line_number":66,"context_line":"    if extra_extmods:"},{"line_number":67,"context_line":"        add_extra_exmods(*tuple(extra_extmods or []))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_341d3a74","line":64,"range":{"start_line":64,"start_character":29,"end_line":64,"end_character":31},"in_reply_to":"9abb7d3a_32b0ce8b","updated":"2016-05-27 18:20:29.000000000","message":"Can you please explain to me why you think None is a better default?\n\n\nMy thinking is that using the empty list is more descriptive and tells consumers we expect a list. I\u0027m not aware of any side-effects of using the empty list as a default in this fashion.","commit_id":"1fce17c4339541ac9ee19787f05c6cea39ab45f3"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"a3ffc5547b000b3b55ea1a8ab57111280f6b2904","unresolved":false,"context_lines":[{"line_number":61,"context_line":"RPC_DISABLED \u003d False"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def init(conf, extra_extmods\u003d[]):"},{"line_number":65,"context_line":"    global TRANSPORT, NOTIFICATION_TRANSPORT, NOTIFIER"},{"line_number":66,"context_line":"    if extra_extmods:"},{"line_number":67,"context_line":"        add_extra_exmods(*tuple(extra_extmods or []))"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_6b252b09","line":64,"range":{"start_line":64,"start_character":29,"end_line":64,"end_character":31},"in_reply_to":"9abb7d3a_341d3a74","updated":"2016-06-09 15:52:07.000000000","message":"See the \"Mutable Default Arguments\" section of common gotchas, http://docs.python-guide.org/en/latest/writing/gotchas/\n\n\nOur hacking check N529 would stop you if it was enabled for neutron-lib. Patch https://review.openstack.org/327508 will enable hacking checks when it merges.","commit_id":"1fce17c4339541ac9ee19787f05c6cea39ab45f3"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"87e73b0f7fdaf31fb540f9babc661fd27caf2b05","unresolved":false,"context_lines":[{"line_number":189,"context_line":"def get_notifier(service\u003dNone, host\u003dNone, publisher_id\u003dNone):"},{"line_number":190,"context_line":"    assert NOTIFIER is not None"},{"line_number":191,"context_line":"    if not publisher_id:"},{"line_number":192,"context_line":"        publisher_id \u003d \"%s.%s\" % (service, host or cfg.CONF.host)"},{"line_number":193,"context_line":"    return NOTIFIER.prepare(publisher_id\u003dpublisher_id)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_b5fe6803","line":192,"range":{"start_line":192,"start_character":51,"end_line":192,"end_character":64},"updated":"2016-05-27 06:00:38.000000000","message":"is it ok to rely on neutron config?","commit_id":"1fce17c4339541ac9ee19787f05c6cea39ab45f3"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"e4a4f42dc91121f49f4c38b7a5481d991b923938","unresolved":false,"context_lines":[{"line_number":189,"context_line":"def get_notifier(service\u003dNone, host\u003dNone, publisher_id\u003dNone):"},{"line_number":190,"context_line":"    assert NOTIFIER is not None"},{"line_number":191,"context_line":"    if not publisher_id:"},{"line_number":192,"context_line":"        publisher_id \u003d \"%s.%s\" % (service, host or cfg.CONF.host)"},{"line_number":193,"context_line":"    return NOTIFIER.prepare(publisher_id\u003dpublisher_id)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_7f5cbb25","line":192,"range":{"start_line":192,"start_character":51,"end_line":192,"end_character":64},"in_reply_to":"9abb7d3a_b5fe6803","updated":"2016-05-27 18:20:29.000000000","message":"In this case I believe so since the caller can override using the \u0027host\u0027 kwarg.","commit_id":"1fce17c4339541ac9ee19787f05c6cea39ab45f3"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"87e73b0f7fdaf31fb540f9babc661fd27caf2b05","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def create_consumer(self, topic, endpoints, fanout\u003dFalse):"},{"line_number":281,"context_line":"        target \u003d oslo_messaging.Target("},{"line_number":282,"context_line":"            topic\u003dtopic, server\u003dcfg.CONF.host, fanout\u003dfanout)"},{"line_number":283,"context_line":"        server \u003d get_server(target, endpoints)"},{"line_number":284,"context_line":"        self.servers.append(server)"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_d50dec38","line":282,"range":{"start_line":282,"start_character":32,"end_line":282,"end_character":45},"updated":"2016-05-27 06:00:38.000000000","message":"ditto","commit_id":"1fce17c4339541ac9ee19787f05c6cea39ab45f3"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"e4a4f42dc91121f49f4c38b7a5481d991b923938","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def create_consumer(self, topic, endpoints, fanout\u003dFalse):"},{"line_number":281,"context_line":"        target \u003d oslo_messaging.Target("},{"line_number":282,"context_line":"            topic\u003dtopic, server\u003dcfg.CONF.host, fanout\u003dfanout)"},{"line_number":283,"context_line":"        server \u003d get_server(target, endpoints)"},{"line_number":284,"context_line":"        self.servers.append(server)"},{"line_number":285,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_9fa51f06","line":282,"range":{"start_line":282,"start_character":32,"end_line":282,"end_character":45},"in_reply_to":"9abb7d3a_d50dec38","updated":"2016-05-27 18:20:29.000000000","message":"Good catch.\nI\u0027m going to update to allow the host to passed in here and default back to the CONF.host","commit_id":"1fce17c4339541ac9ee19787f05c6cea39ab45f3"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ba57d691fbe4f0aa7ac9b4db64ee0035d85cdae7","unresolved":false,"context_lines":[{"line_number":61,"context_line":"RPC_DISABLED \u003d False"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def init(conf, extra_extmods\u003d[]):"},{"line_number":65,"context_line":"    global TRANSPORT, NOTIFICATION_TRANSPORT, NOTIFIER"},{"line_number":66,"context_line":"    if extra_extmods:"},{"line_number":67,"context_line":"        add_extra_exmods(*tuple(extra_extmods or []))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_0b72a7ad","line":64,"range":{"start_line":64,"start_character":13,"end_line":64,"end_character":31},"updated":"2016-06-09 15:52:29.000000000","message":"Why did you add this? Also, we forbid mutable default args as mentioned in PS1.","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"f644fe27346175d36236fa16d6b852f2676c83d2","unresolved":false,"context_lines":[{"line_number":61,"context_line":"RPC_DISABLED \u003d False"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def init(conf, extra_extmods\u003d[]):"},{"line_number":65,"context_line":"    global TRANSPORT, NOTIFICATION_TRANSPORT, NOTIFIER"},{"line_number":66,"context_line":"    if extra_extmods:"},{"line_number":67,"context_line":"        add_extra_exmods(*tuple(extra_extmods or []))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_cdfb8c46","line":64,"range":{"start_line":64,"start_character":13,"end_line":64,"end_character":31},"in_reply_to":"7aa08908_0b72a7ad","updated":"2016-06-09 17:43:58.000000000","message":"The motivation for adding this behavior is described in the PS commit text:\n\"(b) rpc.init() is updated to accept an extra_extmods kwarg\nallowing consumers to pass in additional extmods. If extra\nextmods are passed, init() adds them using\nadd_extra_exmods().\nConsumers of neutron-lib.rpc.init() will need to be updated\nto pass in neutron exceptions for extmods where appropriate\nonce merged into neutron-lib.\"","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"f09a32809fa0608d85545cbe7841197084c21619","unresolved":false,"context_lines":[{"line_number":61,"context_line":"RPC_DISABLED \u003d False"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def init(conf, extra_extmods\u003d[]):"},{"line_number":65,"context_line":"    global TRANSPORT, NOTIFICATION_TRANSPORT, NOTIFIER"},{"line_number":66,"context_line":"    if extra_extmods:"},{"line_number":67,"context_line":"        add_extra_exmods(*tuple(extra_extmods or []))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_06aa8e70","line":64,"range":{"start_line":64,"start_character":13,"end_line":64,"end_character":31},"in_reply_to":"7aa08908_cdfb8c46","updated":"2016-06-09 20:58:10.000000000","message":"Done","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"12660405f3ede8ce67cb5d14febe457b1358cb96","unresolved":false,"context_lines":[{"line_number":61,"context_line":"RPC_DISABLED \u003d False"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"def init(conf, extra_extmods\u003d[]):"},{"line_number":65,"context_line":"    global TRANSPORT, NOTIFICATION_TRANSPORT, NOTIFIER"},{"line_number":66,"context_line":"    if extra_extmods:"},{"line_number":67,"context_line":"        add_extra_exmods(*tuple(extra_extmods or []))"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_87b838e7","line":64,"range":{"start_line":64,"start_character":13,"end_line":64,"end_character":31},"in_reply_to":"7aa08908_cdfb8c46","updated":"2016-06-09 20:37:14.000000000","message":"Shame on me for not reading the commit msg. :(\n\n\nI think we may want to start a section in the devref about \"Notes on adopting neutron-lib\" or something like that.","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ba57d691fbe4f0aa7ac9b4db64ee0035d85cdae7","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self._original_context \u003d original_context"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def __getattr__(self, name):"},{"line_number":123,"context_line":"        return getattr(self._original_context, name)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def call(self, ctxt, method, **kwargs):"},{"line_number":126,"context_line":"        # two methods with the same name in different namespaces should"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_16b80ee5","line":123,"updated":"2016-06-09 15:52:29.000000000","message":"Coverage shows this is untested.","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"f09a32809fa0608d85545cbe7841197084c21619","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        self._original_context \u003d original_context"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def __getattr__(self, name):"},{"line_number":123,"context_line":"        return getattr(self._original_context, name)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def call(self, ctxt, method, **kwargs):"},{"line_number":126,"context_line":"        # two methods with the same name in different namespaces should"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_ac9efb04","line":123,"in_reply_to":"7aa08908_16b80ee5","updated":"2016-06-09 20:58:10.000000000","message":"Done","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ba57d691fbe4f0aa7ac9b4db64ee0035d85cdae7","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"class RequestContextSerializer(om_serializer.Serializer):"},{"line_number":197,"context_line":"    \"\"\"RCP Request Context Serializer."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    This serializer is used to convert RPC common context into"},{"line_number":200,"context_line":"    Neutron Context."}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_8be33733","line":197,"range":{"start_line":197,"start_character":7,"end_line":197,"end_character":10},"updated":"2016-06-09 15:52:29.000000000","message":"RPC","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"f09a32809fa0608d85545cbe7841197084c21619","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"class RequestContextSerializer(om_serializer.Serializer):"},{"line_number":197,"context_line":"    \"\"\"RCP Request Context Serializer."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    This serializer is used to convert RPC common context into"},{"line_number":200,"context_line":"    Neutron Context."}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_8ca33f4f","line":197,"range":{"start_line":197,"start_character":7,"end_line":197,"end_character":10},"in_reply_to":"7aa08908_8be33733","updated":"2016-06-09 20:58:10.000000000","message":"Done","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ba57d691fbe4f0aa7ac9b4db64ee0035d85cdae7","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def serialize_entity(self, ctxt, entity):"},{"line_number":207,"context_line":"        if not self._base:"},{"line_number":208,"context_line":"            return entity"},{"line_number":209,"context_line":"        return self._base.serialize_entity(ctxt, entity)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def deserialize_entity(self, ctxt, entity):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_768872c7","line":208,"updated":"2016-06-09 15:52:29.000000000","message":"Coverage shows this is untested.","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"f09a32809fa0608d85545cbe7841197084c21619","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def serialize_entity(self, ctxt, entity):"},{"line_number":207,"context_line":"        if not self._base:"},{"line_number":208,"context_line":"            return entity"},{"line_number":209,"context_line":"        return self._base.serialize_entity(ctxt, entity)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"    def deserialize_entity(self, ctxt, entity):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_ec8803c9","line":208,"in_reply_to":"7aa08908_768872c7","updated":"2016-06-09 20:58:10.000000000","message":"Done","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ba57d691fbe4f0aa7ac9b4db64ee0035d85cdae7","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        return self._base.deserialize_entity(ctxt, entity)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def serialize_context(self, ctxt):"},{"line_number":217,"context_line":"        return ctxt.to_dict()"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def deserialize_context(self, ctxt):"},{"line_number":220,"context_line":"        rpc_ctxt_dict \u003d ctxt.copy()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_2bb3230c","line":217,"updated":"2016-06-09 15:52:29.000000000","message":"You need to update to bring in the profiler changes, https://review.openstack.org/#/c/273951/28/neutron/common/rpc.py","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"f09a32809fa0608d85545cbe7841197084c21619","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        return self._base.deserialize_entity(ctxt, entity)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def serialize_context(self, ctxt):"},{"line_number":217,"context_line":"        return ctxt.to_dict()"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def deserialize_context(self, ctxt):"},{"line_number":220,"context_line":"        rpc_ctxt_dict \u003d ctxt.copy()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_996ee094","line":217,"in_reply_to":"7aa08908_2bb3230c","updated":"2016-06-09 20:58:10.000000000","message":"Done; also needed UTs","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ba57d691fbe4f0aa7ac9b4db64ee0035d85cdae7","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        if manager is None:"},{"line_number":241,"context_line":"            self.manager \u003d self"},{"line_number":242,"context_line":"        else:"},{"line_number":243,"context_line":"            self.manager \u003d manager"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def start(self):"},{"line_number":246,"context_line":"        super(Service, self).start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_d19e90b7","line":243,"range":{"start_line":243,"start_character":12,"end_line":243,"end_character":34},"updated":"2016-06-09 15:52:29.000000000","message":"Coverage shows this is untested.","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"f09a32809fa0608d85545cbe7841197084c21619","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        if manager is None:"},{"line_number":241,"context_line":"            self.manager \u003d self"},{"line_number":242,"context_line":"        else:"},{"line_number":243,"context_line":"            self.manager \u003d manager"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def start(self):"},{"line_number":246,"context_line":"        super(Service, self).start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_b9f8fcc5","line":243,"range":{"start_line":243,"start_character":12,"end_line":243,"end_character":34},"in_reply_to":"7aa08908_d19e90b7","updated":"2016-06-09 20:58:10.000000000","message":"Done","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ba57d691fbe4f0aa7ac9b4db64ee0035d85cdae7","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.conn.create_consumer(self.topic, endpoints)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        # Hook to allow the manager to do other initializations after"},{"line_number":257,"context_line":"        # the rpc connection is created."},{"line_number":258,"context_line":"        if callable(getattr(self.manager, \u0027initialize_service_hook\u0027, None)):"},{"line_number":259,"context_line":"            self.manager.initialize_service_hook(self)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        # Consume from all consumers in threads"},{"line_number":262,"context_line":"        self.conn.consume_in_threads()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_b1b8242c","line":259,"range":{"start_line":256,"start_character":0,"end_line":259,"end_character":54},"updated":"2016-06-09 15:52:29.000000000","message":"Coverage shows this is untested.","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"f09a32809fa0608d85545cbe7841197084c21619","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.conn.create_consumer(self.topic, endpoints)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        # Hook to allow the manager to do other initializations after"},{"line_number":257,"context_line":"        # the rpc connection is created."},{"line_number":258,"context_line":"        if callable(getattr(self.manager, \u0027initialize_service_hook\u0027, None)):"},{"line_number":259,"context_line":"            self.manager.initialize_service_hook(self)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        # Consume from all consumers in threads"},{"line_number":262,"context_line":"        self.conn.consume_in_threads()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_f90284b3","line":259,"range":{"start_line":256,"start_character":0,"end_line":259,"end_character":54},"in_reply_to":"7aa08908_b1b8242c","updated":"2016-06-09 20:58:10.000000000","message":"Done","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ba57d691fbe4f0aa7ac9b4db64ee0035d85cdae7","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        # errors, go ahead and ignore them.. as we\u0027re shutting down anyway"},{"line_number":267,"context_line":"        try:"},{"line_number":268,"context_line":"            self.conn.close()"},{"line_number":269,"context_line":"        except Exception:"},{"line_number":270,"context_line":"            pass"},{"line_number":271,"context_line":"        super(Service, self).stop()"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_f1358ca8","line":270,"range":{"start_line":269,"start_character":8,"end_line":270,"end_character":16},"updated":"2016-06-09 15:52:29.000000000","message":"Coverage shows this is untested.","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"f09a32809fa0608d85545cbe7841197084c21619","unresolved":false,"context_lines":[{"line_number":266,"context_line":"        # errors, go ahead and ignore them.. as we\u0027re shutting down anyway"},{"line_number":267,"context_line":"        try:"},{"line_number":268,"context_line":"            self.conn.close()"},{"line_number":269,"context_line":"        except Exception:"},{"line_number":270,"context_line":"            pass"},{"line_number":271,"context_line":"        super(Service, self).stop()"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_392b6c35","line":270,"range":{"start_line":269,"start_character":8,"end_line":270,"end_character":16},"in_reply_to":"7aa08908_f1358ca8","updated":"2016-06-09 20:58:10.000000000","message":"Done","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ba57d691fbe4f0aa7ac9b4db64ee0035d85cdae7","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    # initialization when they are running in the REST over HTTP API server."},{"line_number":315,"context_line":"    # The educated reader will perfectly be able that this a fairly dirty hack"},{"line_number":316,"context_line":"    # to avoid having to change the initialization process of every plugin."},{"line_number":317,"context_line":"    if RPC_DISABLED:"},{"line_number":318,"context_line":"        return VoidConnection()"},{"line_number":319,"context_line":"    return Connection()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_1145b816","line":318,"range":{"start_line":317,"start_character":4,"end_line":318,"end_character":31},"updated":"2016-06-09 15:52:29.000000000","message":"Coverage shows this is untested.","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"f09a32809fa0608d85545cbe7841197084c21619","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    # initialization when they are running in the REST over HTTP API server."},{"line_number":315,"context_line":"    # The educated reader will perfectly be able that this a fairly dirty hack"},{"line_number":316,"context_line":"    # to avoid having to change the initialization process of every plugin."},{"line_number":317,"context_line":"    if RPC_DISABLED:"},{"line_number":318,"context_line":"        return VoidConnection()"},{"line_number":319,"context_line":"    return Connection()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_592ab82d","line":318,"range":{"start_line":317,"start_character":4,"end_line":318,"end_character":31},"in_reply_to":"7aa08908_1145b816","updated":"2016-06-09 20:58:10.000000000","message":"Done","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"}],"neutron_lib/tests/unit/test_rpc.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"e7b95e0c26f0f4aad907e872d1a297c203b8f74f","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            with testtools.ExpectedException(messaging.MessagingTimeout):"},{"line_number":441,"context_line":"                self.client.call(self.call_context, \u0027method_1\u0027)"},{"line_number":442,"context_line":"            # sleep value should always be between 0 and configured timeout"},{"line_number":443,"context_line":"            self.assertGreaterEqual(self.sleep.call_args_list[0][0][0], 0)"},{"line_number":444,"context_line":"            self.assertLessEqual(self.sleep.call_args_list[0][0][0], 2)"},{"line_number":445,"context_line":"            self.sleep.reset_mock()"},{"line_number":446,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_b7b1ebe3","line":443,"range":{"start_line":443,"start_character":71,"end_line":443,"end_character":73},"updated":"2016-08-16 14:53:15.000000000","message":"nit: on some of the asserts with ordering of args. Should be (expected, actual).","commit_id":"26c94b738d016b9d7d6dd783e469549de6682ead"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"b9d236e7f3ba45d9cf227e3f3a2adda88d51b7fc","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            with testtools.ExpectedException(messaging.MessagingTimeout):"},{"line_number":441,"context_line":"                self.client.call(self.call_context, \u0027method_1\u0027)"},{"line_number":442,"context_line":"            # sleep value should always be between 0 and configured timeout"},{"line_number":443,"context_line":"            self.assertGreaterEqual(self.sleep.call_args_list[0][0][0], 0)"},{"line_number":444,"context_line":"            self.assertLessEqual(self.sleep.call_args_list[0][0][0], 2)"},{"line_number":445,"context_line":"            self.sleep.reset_mock()"},{"line_number":446,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_d31625f0","line":443,"range":{"start_line":443,"start_character":71,"end_line":443,"end_character":73},"in_reply_to":"3ac371cc_b7b1ebe3","updated":"2016-08-16 21:58:21.000000000","message":"Actually (unless I\u0027m missing something) the ordering here can\u0027t be changed as we are asserting a \u003e\u003d b. Same goes with the others related to ordering. See [1].\n\n[1] https://docs.python.org/2/library/unittest.html#unittest.TestCase.assertGreaterEqual","commit_id":"26c94b738d016b9d7d6dd783e469549de6682ead"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"470c6a0bfa466201263158baed7bf85e3d0f1e15","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            with testtools.ExpectedException(messaging.MessagingTimeout):"},{"line_number":441,"context_line":"                self.client.call(self.call_context, \u0027method_1\u0027)"},{"line_number":442,"context_line":"            # sleep value should always be between 0 and configured timeout"},{"line_number":443,"context_line":"            self.assertGreaterEqual(self.sleep.call_args_list[0][0][0], 0)"},{"line_number":444,"context_line":"            self.assertLessEqual(self.sleep.call_args_list[0][0][0], 2)"},{"line_number":445,"context_line":"            self.sleep.reset_mock()"},{"line_number":446,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3ac371cc_992e07f9","line":443,"range":{"start_line":443,"start_character":71,"end_line":443,"end_character":73},"in_reply_to":"3ac371cc_d31625f0","updated":"2016-08-18 18:57:46.000000000","message":"Yeah, right. I was thinking assertEquals. Passed over that too fast. Please ignore.","commit_id":"26c94b738d016b9d7d6dd783e469549de6682ead"}],"requirements.txt":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1725a4e433f7d12af372ad9604bb55a91f470fa6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"osprofiler\u003e\u003d1.4.0 # Apache-2.0"},{"line_number":25,"context_line":"WebOb\u003e\u003d1.7.1 # MIT"},{"line_number":26,"context_line":"weakrefmethod\u003e\u003d1.0.2;python_version\u003d\u003d\u00272.7\u0027  # PSF"},{"line_number":27,"context_line":""}],"source_content_type":"text/plain","patch_set":12,"id":"5f7c97a3_1beab173","side":"PARENT","line":27,"updated":"2018-07-12 15:54:10.000000000","message":"spurious whitespace change?","commit_id":"8cbab5756c7b6adffc54af39ead3b6c89bbcd3ea"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"6c073789637ee130364b47accdb9b677635c38c6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"osprofiler\u003e\u003d1.4.0 # Apache-2.0"},{"line_number":25,"context_line":"WebOb\u003e\u003d1.7.1 # MIT"},{"line_number":26,"context_line":"weakrefmethod\u003e\u003d1.0.2;python_version\u003d\u003d\u00272.7\u0027  # PSF"},{"line_number":27,"context_line":""}],"source_content_type":"text/plain","patch_set":12,"id":"5f7c97a3_b378812c","side":"PARENT","line":27,"in_reply_to":"5f7c97a3_1beab173","updated":"2018-07-12 19:14:41.000000000","message":"done thx","commit_id":"8cbab5756c7b6adffc54af39ead3b6c89bbcd3ea"}],"test-requirements.txt":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"ba57d691fbe4f0aa7ac9b4db64ee0035d85cdae7","unresolved":false,"context_lines":[{"line_number":5,"context_line":"hacking\u003c0.11,\u003e\u003d0.10.2"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"coverage\u003e\u003d3.6 # Apache-2.0"},{"line_number":8,"context_line":"fixtures\u003c2.0,\u003e\u003d1.3.1 # Apache-2.0/BSD"},{"line_number":9,"context_line":"discover # BSD"},{"line_number":10,"context_line":"python-subunit\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":11,"context_line":"sphinx!\u003d1.2.0,!\u003d1.3b1,\u003c1.3,\u003e\u003d1.1.2 # BSD"}],"source_content_type":"text/plain","patch_set":4,"id":"7aa08908_b602dab2","line":8,"updated":"2016-06-09 15:52:29.000000000","message":"The latest from global requirements is\n\n  fixtures\u003e\u003d3.0.0","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"f09a32809fa0608d85545cbe7841197084c21619","unresolved":false,"context_lines":[{"line_number":5,"context_line":"hacking\u003c0.11,\u003e\u003d0.10.2"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"coverage\u003e\u003d3.6 # Apache-2.0"},{"line_number":8,"context_line":"fixtures\u003c2.0,\u003e\u003d1.3.1 # Apache-2.0/BSD"},{"line_number":9,"context_line":"discover # BSD"},{"line_number":10,"context_line":"python-subunit\u003e\u003d0.0.18 # Apache-2.0/BSD"},{"line_number":11,"context_line":"sphinx!\u003d1.2.0,!\u003d1.3b1,\u003c1.3,\u003e\u003d1.1.2 # BSD"}],"source_content_type":"text/plain","patch_set":4,"id":"7aa08908_f9756432","line":8,"in_reply_to":"7aa08908_b602dab2","updated":"2016-06-09 20:58:10.000000000","message":"Done","commit_id":"40a0cb3c14429c5450a8066667c9896036485bd1"}],"tox.ini":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1725a4e433f7d12af372ad9604bb55a91f470fa6","unresolved":false,"context_lines":[{"line_number":100,"context_line":"[testenv:bandit]"},{"line_number":101,"context_line":"# B104: Possible binding to all interfaces"},{"line_number":102,"context_line":"deps \u003d -r{toxinidir}/test-requirements.txt"},{"line_number":103,"context_line":"commands \u003d bandit -r neutron_lib -x tests -n5 -s B104,B311"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"[hacking]"},{"line_number":106,"context_line":"import_exceptions \u003d neutron_lib._i18n"}],"source_content_type":"text/x-properties","patch_set":12,"id":"5f7c97a3_5bf02967","line":103,"updated":"2018-07-12 15:54:10.000000000","message":"Can you put the B311 reason after L101?\n\n# B311: Standard pseudo-random generators are not suitable for security/cryptographic purpose","commit_id":"3d5419d133332f34dbea6981ee05d145b883aa45"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"6c073789637ee130364b47accdb9b677635c38c6","unresolved":false,"context_lines":[{"line_number":100,"context_line":"[testenv:bandit]"},{"line_number":101,"context_line":"# B104: Possible binding to all interfaces"},{"line_number":102,"context_line":"deps \u003d -r{toxinidir}/test-requirements.txt"},{"line_number":103,"context_line":"commands \u003d bandit -r neutron_lib -x tests -n5 -s B104,B311"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"[hacking]"},{"line_number":106,"context_line":"import_exceptions \u003d neutron_lib._i18n"}],"source_content_type":"text/x-properties","patch_set":12,"id":"5f7c97a3_d375fd34","line":103,"in_reply_to":"5f7c97a3_5bf02967","updated":"2018-07-12 19:14:41.000000000","message":"done, thanks","commit_id":"3d5419d133332f34dbea6981ee05d145b883aa45"}]}
