)]}'
{"oslo/messaging/_drivers/impl_zmq.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"02fd45bfff2761973051c11c1aa84f27b624af43","unresolved":false,"context_lines":[{"line_number":941,"context_line":"            # NOTE(ewindisch): fanout~ is used because it avoid splitting on"},{"line_number":942,"context_line":"            # and acts as a non-subtle hint to the matchmaker and ZmqProxy."},{"line_number":943,"context_line":"            topic \u003d \u0027fanout~\u0027 + topic"},{"line_number":944,"context_line":"        elif target.server:"},{"line_number":945,"context_line":"            # NOTE(jamespage): Cinder multi-backends provider the server"},{"line_number":946,"context_line":"            # name in \u003cserver\u003e@\u003cbackend\u003e format - pick the server part"},{"line_number":947,"context_line":"            # if this is the case."}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8c0949_0d04067a","line":944,"updated":"2014-10-31 14:45:49.000000000","message":"Shouldn\u0027t we consider on something common across given drivers rather then making 0mq drive Cinder-orientied?","commit_id":"f4980d98220702c1025ef9340e68d0cfde9ca30b"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"c0e6a1d83e28ceb579ad00a1b4c52bf7299e4530","unresolved":false,"context_lines":[{"line_number":941,"context_line":"            # NOTE(ewindisch): fanout~ is used because it avoid splitting on"},{"line_number":942,"context_line":"            # and acts as a non-subtle hint to the matchmaker and ZmqProxy."},{"line_number":943,"context_line":"            topic \u003d \u0027fanout~\u0027 + topic"},{"line_number":944,"context_line":"        elif target.server:"},{"line_number":945,"context_line":"            # NOTE(jamespage): Cinder multi-backends provider the server"},{"line_number":946,"context_line":"            # name in \u003cserver\u003e@\u003cbackend\u003e format - pick the server part"},{"line_number":947,"context_line":"            # if this is the case."}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8c0949_2fa268ae","line":944,"in_reply_to":"7a8c0949_0d04067a","updated":"2014-11-05 15:05:56.000000000","message":"+1 AFAIK, only cinder multi-backend adds \u0027backend-name\u0027 in the server part. Is it possible to provide some proposal to cinder project to let it be consistent with oslo.messaging way.\n\nOr we need to add \u0027if:else\u0027 for every brand-new topic format that may come out for other projects.","commit_id":"f4980d98220702c1025ef9340e68d0cfde9ca30b"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"6cbe84d9d95454c453103823b00a75f171245bca","unresolved":false,"context_lines":[{"line_number":941,"context_line":"            # NOTE(ewindisch): fanout~ is used because it avoid splitting on"},{"line_number":942,"context_line":"            # and acts as a non-subtle hint to the matchmaker and ZmqProxy."},{"line_number":943,"context_line":"            topic \u003d \u0027fanout~\u0027 + topic"},{"line_number":944,"context_line":"        elif target.server:"},{"line_number":945,"context_line":"            # NOTE(jamespage): Cinder multi-backends provider the server"},{"line_number":946,"context_line":"            # name in \u003cserver\u003e@\u003cbackend\u003e format - pick the server part"},{"line_number":947,"context_line":"            # if this is the case."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_d74eca95","line":944,"in_reply_to":"7a8c0949_2fa268ae","updated":"2014-11-13 12:06:16.000000000","message":"I think the challenge here is that normally this is all handled in the messaging broker - for example, in a rmq deployment, you end up with a queue:\n\n  cinder-volume.\u003chostname\u003e@cinder-ceph\n\nand its is all handled automatically in the broker - cinder-volume can then just consume messages using this handle.\n\nIn zmq, the server part is used to direct the outbound message at another openstack edge point, so the driver inherently needs to know how to parse this type of information - in effect the broker function of rmq or qpid starts to creep directly into the driver for zmq.\n\nI guess we could add a \u0027subsystem\u0027 style handle for all drivers, and ask cinder to start using that - I\u0027ll see how that might fit.","commit_id":"f4980d98220702c1025ef9340e68d0cfde9ca30b"},{"author":{"_account_id":13290,"name":"Oleksii Zamiatin","email":"ozamiatin@mirantis.com","username":"ozamiatin"},"change_message_id":"515e73344ac353037ec13622ac0f81705ae68d4c","unresolved":false,"context_lines":[{"line_number":945,"context_line":"            # NOTE(jamespage): Cinder multi-backends provider the server"},{"line_number":946,"context_line":"            # name in \u003cserver\u003e@\u003cbackend\u003e format - pick the server part"},{"line_number":947,"context_line":"            # if this is the case."},{"line_number":948,"context_line":"            if \u0027@\u0027 in target.server:"},{"line_number":949,"context_line":"                server \u003d target.server.split(\u0027@\u0027)[0]"},{"line_number":950,"context_line":"            else:"},{"line_number":951,"context_line":"                server \u003d target.server"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_a2377ae2","line":948,"updated":"2014-11-11 14:47:00.000000000","message":"Should the driver decide which part of cinder-specific server name to use? This logic should not be in the driver. Agreed with Denis M that such approach makes ZMQ driver Cinder-oriented.","commit_id":"f4980d98220702c1025ef9340e68d0cfde9ca30b"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"274f9f235de19b611cc6032cda57a3c1a48933b8","unresolved":false,"context_lines":[{"line_number":906,"context_line":"            # name in \u003cserver\u003e@\u003cbackend\u003e format - pick the server part"},{"line_number":907,"context_line":"            # if this is the case."},{"line_number":908,"context_line":"            if \u0027@\u0027 in target.server:"},{"line_number":909,"context_line":"                server \u003d target.server.split(\u0027@\u0027)[0]"},{"line_number":910,"context_line":"            else:"},{"line_number":911,"context_line":"                server \u003d target.server"},{"line_number":912,"context_line":"            topic \u003d \u0027%s.%s\u0027 % (topic, server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_43d02fc9","line":909,"updated":"2014-11-14 12:58:14.000000000","message":"I don\u0027t really like the idea to have cinder specif stuff into only one driver and more generally into oslo.messaging. \n\nDoes @ is forbidden or have a special meaning in a zmq topic ?","commit_id":"ed32dfcabbb69c8b1bead91797836141b401bad3"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"d37d7ef760041ed356c0586cdcf3cd3fdabc4b98","unresolved":false,"context_lines":[{"line_number":906,"context_line":"            # name in \u003cserver\u003e@\u003cbackend\u003e format - pick the server part"},{"line_number":907,"context_line":"            # if this is the case."},{"line_number":908,"context_line":"            if \u0027@\u0027 in target.server:"},{"line_number":909,"context_line":"                server \u003d target.server.split(\u0027@\u0027)[0]"},{"line_number":910,"context_line":"            else:"},{"line_number":911,"context_line":"                server \u003d target.server"},{"line_number":912,"context_line":"            topic \u003d \u0027%s.%s\u0027 % (topic, server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_ba6038a5","line":909,"in_reply_to":"5a890539_34e01696","updated":"2015-01-05 15:16:06.000000000","message":"Sounds like a plan - I\u0027ll rework this ASAP and raise the bug.","commit_id":"ed32dfcabbb69c8b1bead91797836141b401bad3"},{"author":{"_account_id":935,"name":"James Page","email":"ringo.page@gmail.com","username":"james-page"},"change_message_id":"e79e90c7859387129e44933bcf305d4d7fe022a0","unresolved":false,"context_lines":[{"line_number":906,"context_line":"            # name in \u003cserver\u003e@\u003cbackend\u003e format - pick the server part"},{"line_number":907,"context_line":"            # if this is the case."},{"line_number":908,"context_line":"            if \u0027@\u0027 in target.server:"},{"line_number":909,"context_line":"                server \u003d target.server.split(\u0027@\u0027)[0]"},{"line_number":910,"context_line":"            else:"},{"line_number":911,"context_line":"                server \u003d target.server"},{"line_number":912,"context_line":"            topic \u003d \u0027%s.%s\u0027 % (topic, server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_e45385df","line":909,"in_reply_to":"5a890539_43d02fc9","updated":"2014-11-18 15:20:11.000000000","message":"As zmq is brokerless, the server component is directly used to address the endpoint that needs to receive the message; so from this drivers perspective the @\u003cbackend\u003e makes no sense.\n\nThis is obviously different in RMQ or QPID which are broker oriented and don\u0027t use the server component in this way - its just another queue in the broker in these cases.\n\nI did wonder whether the namespace attribute of the target was intended for this purpose but never actually used.","commit_id":"ed32dfcabbb69c8b1bead91797836141b401bad3"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"1876cd3062811cab55dc8e506933893968e644e8","unresolved":false,"context_lines":[{"line_number":906,"context_line":"            # name in \u003cserver\u003e@\u003cbackend\u003e format - pick the server part"},{"line_number":907,"context_line":"            # if this is the case."},{"line_number":908,"context_line":"            if \u0027@\u0027 in target.server:"},{"line_number":909,"context_line":"                server \u003d target.server.split(\u0027@\u0027)[0]"},{"line_number":910,"context_line":"            else:"},{"line_number":911,"context_line":"                server \u003d target.server"},{"line_number":912,"context_line":"            topic \u003d \u0027%s.%s\u0027 % (topic, server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_34e01696","line":909,"in_reply_to":"5a890539_d2e8cb18","updated":"2014-11-20 09:56:29.000000000","message":"The problem is that cinder creates 1 rpc server per backend enabled, so if we cut \"@XXXX\" the server, to do the TCP connection, which one of this rpc server will receive the message ?  By chance cinder, use the same endpoint class for each RPCServer, so it should work...\n\nBut I agree that cinder should not use \u0027server\u0027 for this purpose, but \u0027namespace\u0027.\n\nPerhaps at least create a bug report in cinder, put the link here, and merge that as workaround. WDYT ?","commit_id":"ed32dfcabbb69c8b1bead91797836141b401bad3"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"7ab985353e6289f685dfbd76c8384e7c5bf9f123","unresolved":false,"context_lines":[{"line_number":906,"context_line":"            # name in \u003cserver\u003e@\u003cbackend\u003e format - pick the server part"},{"line_number":907,"context_line":"            # if this is the case."},{"line_number":908,"context_line":"            if \u0027@\u0027 in target.server:"},{"line_number":909,"context_line":"                server \u003d target.server.split(\u0027@\u0027)[0]"},{"line_number":910,"context_line":"            else:"},{"line_number":911,"context_line":"                server \u003d target.server"},{"line_number":912,"context_line":"            topic \u003d \u0027%s.%s\u0027 % (topic, server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_d2e8cb18","line":909,"in_reply_to":"5a890539_e45385df","updated":"2014-11-20 03:29:55.000000000","message":"Although it is a little weird to make cinder-oriented, but as James said, it is also not good to change cinder logic.\n\nIt is the general difference with broker-oriented methods.\n\nWe can first land this patch and then improve it in the future. At least, I\u0027d like to say that we need to make it work.","commit_id":"ed32dfcabbb69c8b1bead91797836141b401bad3"}],"oslo_messaging/_drivers/impl_zmq.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4d151a18f7d214b5a1f80aef112d7eb0e16f151b","unresolved":false,"context_lines":[{"line_number":909,"context_line":"            # the \u0027namespace\u0027 attribute of the messaging target - see"},{"line_number":910,"context_line":"            # https://bugs.launchpad.net/oslo.messaging/+bug/1407707"},{"line_number":911,"context_line":"            if \u0027@\u0027 in target.server:"},{"line_number":912,"context_line":"                server \u003d target.server.split(\u0027@\u0027)[0]"},{"line_number":913,"context_line":"            else:"},{"line_number":914,"context_line":"                server \u003d target.server"},{"line_number":915,"context_line":"            topic \u003d \u0027%s.%s\u0027 % (topic, server)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a930d6b_8f1719ed","line":912,"updated":"2015-01-21 15:50:50.000000000","message":"Since you\u0027re picking only first item from a list you don\u0027t have to check if \"@\" is in server name, just do next\n\n      server \u003d target.server.split(\"@\")[0]\n\n\nHere why it would work:\n\n\n      \"abcd\".split(\"@\")[0] \u003d\u003d \u0027abcd\u0027\n\n       \"ab@cd\".split(\"@\")[0] \u003d\u003d \u0027ab\u0027\n\n\nPlease update this code according to my suggestion, since it looks smaller and without explicit checks.","commit_id":"7b70e88d83217b20b47e0de613224761e7d3725d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"ff5e6925cb8ed3897c4f8ff85e1b6d9885d181f7","unresolved":false,"context_lines":[{"line_number":912,"context_line":"                server \u003d target.server.split(\u0027@\u0027)[0]"},{"line_number":913,"context_line":"            else:"},{"line_number":914,"context_line":"                server \u003d target.server"},{"line_number":915,"context_line":"            topic \u003d \u0027%s.%s\u0027 % (topic, server)"},{"line_number":916,"context_line":""},{"line_number":917,"context_line":"        reply \u003d _multi_send(method, ctxt, topic, message,"},{"line_number":918,"context_line":"                            envelope\u003denvelope,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1a930d6b_9273be4c","line":915,"updated":"2015-01-21 16:09:20.000000000","message":"and it does make sense to do next:\n\ntopic \u003d \u0027%s.%s\u0027 % (topic, target.server.split(\u0027@\u0027)[0])","commit_id":"7b70e88d83217b20b47e0de613224761e7d3725d"},{"author":{"_account_id":13979,"name":"qiaojian","email":"qiaojian@awcloud.com","username":"joyce"},"change_message_id":"ffbf5946fec3fc976833372ccad2d9d32eae7500","unresolved":false,"context_lines":[{"line_number":908,"context_line":"            # if this is the case.  This is a workaround until Cinder uses"},{"line_number":909,"context_line":"            # the \u0027namespace\u0027 attribute of the messaging target - see"},{"line_number":910,"context_line":"            # https://bugs.launchpad.net/oslo.messaging/+bug/1407707"},{"line_number":911,"context_line":"            topic \u003d \u0027%s.%s\u0027 % (topic, target.server.split(\u0027@\u0027)[0])"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        reply \u003d _multi_send(method, ctxt, topic, message,"},{"line_number":914,"context_line":"                            envelope\u003denvelope,"}],"source_content_type":"text/x-python","patch_set":8,"id":"da86d52c_b8633cb0","line":911,"updated":"2015-02-02 12:54:50.000000000","message":"When zmq_receiver got the message, turning to ipc local, any consumer subscribe to the topic can got the message, but may not be the right one.","commit_id":"8169b867616706385256350775c00a56c328b979"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"46fc4d411f8dbfc868c1f13c5431291a6e971827","unresolved":false,"context_lines":[{"line_number":908,"context_line":"            # if this is the case.  This is a workaround until Cinder uses"},{"line_number":909,"context_line":"            # the \u0027namespace\u0027 attribute of the messaging target - see"},{"line_number":910,"context_line":"            # https://bugs.launchpad.net/oslo.messaging/+bug/1407707"},{"line_number":911,"context_line":"            topic \u003d \u0027%s.%s\u0027 % (topic, target.server.split(\u0027@\u0027)[0])"},{"line_number":912,"context_line":""},{"line_number":913,"context_line":"        reply \u003d _multi_send(method, ctxt, topic, message,"},{"line_number":914,"context_line":"                            envelope\u003denvelope,"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa81d914_fba5b704","line":911,"updated":"2015-01-28 13:20:21.000000000","message":"thanks","commit_id":"8169b867616706385256350775c00a56c328b979"}],"tests/drivers/test_impl_zmq.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"351eacac33f887c51ece325705c29e4ae3a8baf9","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            {\u0027tx_id\u0027: 1, \u0027method\u0027: \u0027hello-world\u0027},"},{"line_number":167,"context_line":"            None, False, [])"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @mock.patch(\u0027oslo.messaging._drivers.impl_zmq._call\u0027, autospec\u003dTrue)"},{"line_number":170,"context_line":"    def test_send_receive_direct_cinder_multibackend(self, mock_call):"},{"line_number":171,"context_line":"        target \u003d messaging.Target(topic\u003d\u0027testtopic\u0027,"},{"line_number":172,"context_line":"                                  server\u003d\u0027localhost@cinder-backend\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a930d6b_5b2494ae","line":169,"updated":"2015-01-26 08:06:37.000000000","message":"All tests must be in oslo_mesasging/tests now, this directory is only conserved for backward compatibility with namespace package name.","commit_id":"8169b867616706385256350775c00a56c328b979"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"46fc4d411f8dbfc868c1f13c5431291a6e971827","unresolved":false,"context_lines":[{"line_number":166,"context_line":"            {\u0027tx_id\u0027: 1, \u0027method\u0027: \u0027hello-world\u0027},"},{"line_number":167,"context_line":"            None, False, [])"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @mock.patch(\u0027oslo.messaging._drivers.impl_zmq._call\u0027, autospec\u003dTrue)"},{"line_number":170,"context_line":"    def test_send_receive_direct_cinder_multibackend(self, mock_call):"},{"line_number":171,"context_line":"        target \u003d messaging.Target(topic\u003d\u0027testtopic\u0027,"},{"line_number":172,"context_line":"                                  server\u003d\u0027localhost@cinder-backend\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa81d914_5b65e3df","line":169,"in_reply_to":"1a930d6b_5b2494ae","updated":"2015-01-28 13:20:21.000000000","message":"+1 to given concern","commit_id":"8169b867616706385256350775c00a56c328b979"}]}
