)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6598,"name":"Berezovsky Irena","email":"irenab.dev@gmail.com","username":"irenab"},"change_message_id":"d118e1815c6207ad477cac5aaffa1f47bc522256","unresolved":false,"context_lines":[{"line_number":7,"context_line":"cascade_service framework"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is the base implementation. It adds all the devstack boilerplate"},{"line_number":10,"context_line":"and connects to the netwrok plugins\u0027 requests."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Ibd61153e755e1c218503b0671c242ff50b5ebdc8"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"9a41bdd9_88b78dd7","line":10,"updated":"2015-07-14 09:00:14.000000000","message":"typo: network","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"}],"cmd/cascade_service.py":[{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"fd0daac030a34dd7d60a8d1207b6f78f4944fa68","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    logging.register_options(conf)"},{"line_number":17,"context_line":"    logging.set_defaults()"},{"line_number":18,"context_line":"    conf(sys.argv[1:])"},{"line_number":19,"context_line":"    logging.setup(conf, \"cascade_service\", version\u003d\u00271.0\u0027)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"if __name__ \u003d\u003d \"__main__\":"},{"line_number":22,"context_line":"    process_command_line_arguments()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_ab41fd64","line":19,"updated":"2015-07-15 01:45:36.000000000","message":"version from 0.1?","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"},{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"fd0daac030a34dd7d60a8d1207b6f78f4944fa68","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"if __name__ \u003d\u003d \"__main__\":"},{"line_number":22,"context_line":"    process_command_line_arguments()"},{"line_number":23,"context_line":"    server \u003d service.setup_server()"},{"line_number":24,"context_line":"    server.start()"},{"line_number":25,"context_line":"    server.wait()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_f1a294ad","line":23,"updated":"2015-07-15 01:45:36.000000000","message":"I have not studied how to support multi-worker when service startup. But I think we need to support multi-worker for cascade service","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"5718fb326a04f9b8a5870819aa7d081555ef525d","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"if __name__ \u003d\u003d \"__main__\":"},{"line_number":22,"context_line":"    process_command_line_arguments()"},{"line_number":23,"context_line":"    server \u003d service.setup_server()"},{"line_number":24,"context_line":"    server.start()"},{"line_number":25,"context_line":"    server.wait()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_7620504a","line":23,"in_reply_to":"9a41bdd9_f1a294ad","updated":"2015-07-19 12:28:54.000000000","message":"This could be done at a later patch.","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"},{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"1a123e8504e07f4941a249ebb3911c0644c768b4","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    conf(sys.argv[1:])"},{"line_number":35,"context_line":"    logging.setup(conf, \"cascade_service\", version\u003d\u00270.1\u0027)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"if __name__ \u003d\u003d \"__main__\":"},{"line_number":38,"context_line":"    process_command_line_arguments()"},{"line_number":39,"context_line":"    server \u003d service.setup_server()"},{"line_number":40,"context_line":"    server.start()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a50d1a3_a63ad532","line":37,"updated":"2015-07-27 06:36:46.000000000","message":"use oslo.service to support multi-workers","commit_id":"fec97c9b256c0dbb08361a659a1cf2a56ed4732c"}],"devstack/local.conf.sample":[{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"fd0daac030a34dd7d60a8d1207b6f78f4944fa68","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"# Use Neutron instead of nova-network"},{"line_number":42,"context_line":"disable_service n-net"},{"line_number":43,"context_line":"enable_service q-svc"},{"line_number":44,"context_line":"disable_service q-dhcp"},{"line_number":45,"context_line":"disable_service q-l3"},{"line_number":46,"context_line":"disable_service q-agt"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"9a41bdd9_f1005403","line":43,"updated":"2015-07-15 01:45:36.000000000","message":"Please divide devstack source code into two commits","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"}],"tricircle/cascade_service/endpoints/networking.py":[{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"fd0daac030a34dd7d60a8d1207b6f78f4944fa68","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"    def create_network(self, ctx, payload):"},{"line_number":14,"context_line":"        # TODO(gamepl, saggi): STUB"},{"line_number":15,"context_line":"        LOG.info(\"(create_network) payload: %s\", payload)"},{"line_number":16,"context_line":"        return True"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    def delete_network(self, ctx, payload):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_112db894","line":15,"updated":"2015-07-15 01:45:36.000000000","message":"debug information using Log.debug , but not log.info","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"}],"tricircle/cascade_service/service.py":[{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"fd0daac030a34dd7d60a8d1207b6f78f4944fa68","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    def __init__(self, server):"},{"line_number":20,"context_line":"        self.server \u003d server"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    def stop(self, ctx):"},{"line_number":23,"context_line":"        if self.server:"},{"line_number":24,"context_line":"            self.server.stop()"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_31b79c3b","line":22,"updated":"2015-07-15 01:45:36.000000000","message":"start function also needed to provide here","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"3023c3c178ea0259f39b805fd8caa7768725bb9c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from tricircle.common import topics"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# import endpoints here"},{"line_number":26,"context_line":"from .endpoints.networking import CascadeNetworkingServiceEndpoints"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_a23a08cc","line":26,"updated":"2015-07-20 06:35:01.000000000","message":"[H304] Do not make relative imports","commit_id":"f3015e12786ce5f5b3ffef6d59649dc06f23485b"}],"tricircle/common/cascading_networking_api.py":[{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"e8a162fd3953fbba9776adfcbbc2bbbb8894544f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        target \u003d oslo_messaging.Target(topic\u003dtopic,"},{"line_number":32,"context_line":"                                       namespace\u003d\"networking\","},{"line_number":33,"context_line":"                                       version\u003d\u00271.0\u0027,"},{"line_number":34,"context_line":"                                       fanout\u003dTrue)"},{"line_number":35,"context_line":"        self.client \u003d n_rpc.get_client(target)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _cast_message(self, context, method, payload):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_e57d24b2","line":34,"updated":"2015-07-14 08:40:15.000000000","message":"If multiple cascading services are running, fanout will lead to multiple services process the message concurrently, and race condition will appear.","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"},{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"755c5ba2c7ed26a3a160ac549d649f6d2be00b89","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        target \u003d oslo_messaging.Target(topic\u003dtopic,"},{"line_number":32,"context_line":"                                       namespace\u003d\"networking\","},{"line_number":33,"context_line":"                                       version\u003d\u00271.0\u0027,"},{"line_number":34,"context_line":"                                       fanout\u003dTrue)"},{"line_number":35,"context_line":"        self.client \u003d n_rpc.get_client(target)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _cast_message(self, context, method, payload):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_6d946042","line":34,"updated":"2015-07-15 07:49:11.000000000","message":"We can use the round-robin dispatch mode: the message is consumed by one of the cascade service if multiple cascade services running in parallel. Cascade service should be stateless.","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"},{"author":{"_account_id":2023,"name":"Saggi Mizrahi","email":"ficoos+osreview@gmail.com","username":"ficoos"},"change_message_id":"5718fb326a04f9b8a5870819aa7d081555ef525d","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        target \u003d oslo_messaging.Target(topic\u003dtopic,"},{"line_number":32,"context_line":"                                       namespace\u003d\"networking\","},{"line_number":33,"context_line":"                                       version\u003d\u00271.0\u0027,"},{"line_number":34,"context_line":"                                       fanout\u003dTrue)"},{"line_number":35,"context_line":"        self.client \u003d n_rpc.get_client(target)"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def _cast_message(self, context, method, payload):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a50d1a3_639091ed","line":34,"in_reply_to":"9a41bdd9_6d946042","updated":"2015-07-19 12:28:54.000000000","message":"This could be changed later.","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"},{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"fd0daac030a34dd7d60a8d1207b6f78f4944fa68","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                  \u0027%(method)s for CascadingNetwork\u0027,"},{"line_number":43,"context_line":"                  {\u0027topic\u0027: cctx.target.topic,"},{"line_number":44,"context_line":"                   \u0027namespace\u0027: cctx.target.namespace,"},{"line_number":45,"context_line":"                   \u0027method\u0027: method})"},{"line_number":46,"context_line":"        cctx.cast(context, method, payload\u003dpayload)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def create_network(self, context, network):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_519a606f","line":45,"updated":"2015-07-15 01:45:36.000000000","message":"payload should also be output here","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"},{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"fd0daac030a34dd7d60a8d1207b6f78f4944fa68","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            \u0027network_id\u0027: network_id,"},{"line_number":59,"context_line":"            \u0027network\u0027: network"},{"line_number":60,"context_line":"        }"},{"line_number":61,"context_line":"        self._cast_message(context, \"delete_network\", payload)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def create_port(self, context, port):"},{"line_number":64,"context_line":"        self._cast_message(context, \"delete_network\", port)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_31747c34","line":61,"updated":"2015-07-15 01:45:36.000000000","message":"cast \"update_network\" instead","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"},{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"fd0daac030a34dd7d60a8d1207b6f78f4944fa68","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self._cast_message(context, \"delete_network\", payload)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def create_port(self, context, port):"},{"line_number":64,"context_line":"        self._cast_message(context, \"delete_network\", port)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def delete_port(self, context, port_id, l3_port_check\u003dTrue):"},{"line_number":67,"context_line":"        payload \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_b1964c3c","line":64,"updated":"2015-07-15 01:45:36.000000000","message":"cast \"create_port\" instead","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"},{"author":{"_account_id":11819,"name":"Chaoyi Huang","email":"joehuang@huawei.com","username":"joehuang"},"change_message_id":"fd0daac030a34dd7d60a8d1207b6f78f4944fa68","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            \u0027port_id\u0027: port_id,"},{"line_number":69,"context_line":"            \u0027l3_port_check\u0027: l3_port_check"},{"line_number":70,"context_line":"        }"},{"line_number":71,"context_line":"        self._cast_message(context, \"delete_network\", payload)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a41bdd9_51a82077","line":71,"updated":"2015-07-15 01:45:36.000000000","message":"cast \"delete_network\" instead","commit_id":"51d72255a8db71ef7c7bb73b7bf74fc069d5a96b"},{"author":{"_account_id":12076,"name":"Zhiyuan Cai","email":"luckyvega.g@gmail.com","username":"zhiyuan_cai"},"change_message_id":"59524efe10a7c2a780489576f4b7059df2d07307","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self._cast_message(context, \"update_network\", payload)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def create_port(self, context, port):"},{"line_number":64,"context_line":"        self._cast_message(context, \"create_port\", port)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def delete_port(self, context, port_id, l3_port_check\u003dTrue):"},{"line_number":67,"context_line":"        payload \u003d {"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_579ae415","line":64,"updated":"2015-07-20 06:26:55.000000000","message":"After testing on DevStack, I found that port might contain some attributes with values ATTR_NOT_SPECIFIED, which are not JSON serializable. These attributes should be filtered before sending the message.","commit_id":"f3015e12786ce5f5b3ffef6d59649dc06f23485b"}]}
