)]}'
{"dragonflow/neutron/ml2/mech_driver.py":[{"author":{"_account_id":20297,"name":"duankebo","email":"duankebo@huawei.com","username":"duankebo"},"change_message_id":"4520f7afc7a42e3f82e378412e6d2150e1575d32","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        sg_name \u003d sg.get(\u0027name\u0027, df_const.DF_SG_DEFAULT_NAME)"},{"line_number":116,"context_line":"        tenant_id \u003d sg[\u0027tenant_id\u0027]"},{"line_number":117,"context_line":"        rules \u003d sg.get(\u0027security_group_rules\u0027, [])"},{"line_number":118,"context_line":"        sg_version \u003d sg[\u0027revision_number\u0027]"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        for rule in rules:"},{"line_number":121,"context_line":"            rule[\u0027topic\u0027] \u003d rule.get(\u0027tenant_id\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_a2125307","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":18},"updated":"2016-09-07 06:29:16.000000000","message":"this feature is merge in July 2016, so what if the user\u0027s neutron doesn\u0027t contain it? Maybe you need to use the old way if the \u0027revision_number\u0027 field doesn\u0027t exit.","commit_id":"92b34357c92f7cec3fbd95725bc4c6b2a79b78d1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"37dee46255e92e3ae9eeba1555d0ed312a1422a1","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        sg_name \u003d sg.get(\u0027name\u0027, df_const.DF_SG_DEFAULT_NAME)"},{"line_number":116,"context_line":"        tenant_id \u003d sg[\u0027tenant_id\u0027]"},{"line_number":117,"context_line":"        rules \u003d sg.get(\u0027security_group_rules\u0027, [])"},{"line_number":118,"context_line":"        sg_version \u003d sg[\u0027revision_number\u0027]"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        for rule in rules:"},{"line_number":121,"context_line":"            rule[\u0027topic\u0027] \u003d rule.get(\u0027tenant_id\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_7be6d144","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":18},"in_reply_to":"9a89bdaa_2356295c","updated":"2016-09-08 15:36:14.000000000","message":"Dragonflow master should be installed with Neutron master. Dragonflow Newton (or Mitaka, or Juno) should be installed with the matching Neutron version (Newton, Mitaka, or Juno).\n\nIf you use the head-of-branch, you need to be updated everywhere else as well. For a stable api, we tag every 6 months (amongst other reasons... (: )","commit_id":"92b34357c92f7cec3fbd95725bc4c6b2a79b78d1"},{"author":{"_account_id":9044,"name":"Will","email":"wangjian.ika@bytedance.com","username":"Will"},"change_message_id":"166109938c1db3fd4286ff56119f88eea1bfa72c","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        sg_name \u003d sg.get(\u0027name\u0027, df_const.DF_SG_DEFAULT_NAME)"},{"line_number":116,"context_line":"        tenant_id \u003d sg[\u0027tenant_id\u0027]"},{"line_number":117,"context_line":"        rules \u003d sg.get(\u0027security_group_rules\u0027, [])"},{"line_number":118,"context_line":"        sg_version \u003d sg[\u0027revision_number\u0027]"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        for rule in rules:"},{"line_number":121,"context_line":"            rule[\u0027topic\u0027] \u003d rule.get(\u0027tenant_id\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_2356295c","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":18},"in_reply_to":"9a89bdaa_a2125307","updated":"2016-09-07 14:38:56.000000000","message":"I think when people update dragonflow, they should update neutron as well, they should update both df and neutron at the same time","commit_id":"92b34357c92f7cec3fbd95725bc4c6b2a79b78d1"},{"author":{"_account_id":23235,"name":"Lihi Wishnitzer","email":"lihiwish@gmail.com","username":"lihiwish"},"change_message_id":"5d68b5f28edb56c0f8aadb80c399539804a70680","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        core_plugin \u003d manager.NeutronManager.get_plugin()"},{"line_number":147,"context_line":"        sg \u003d core_plugin.get_security_group(context, sg_id)"},{"line_number":148,"context_line":"        sg_version \u003d sg[\u0027revision_number\u0027]"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        sg_rule[\u0027topic\u0027] \u003d tenant_id"},{"line_number":151,"context_line":"        del sg_rule[\u0027tenant_id\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_e1a538a2","line":148,"range":{"start_line":148,"start_character":7,"end_line":148,"end_character":42},"updated":"2016-09-07 07:29:19.000000000","message":"Is the revision number unique for each rule? What happens when you create two rules for the same group?","commit_id":"92b34357c92f7cec3fbd95725bc4c6b2a79b78d1"},{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"37dee46255e92e3ae9eeba1555d0ed312a1422a1","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        # being deleted. The sg revision_number will increase after the sg"},{"line_number":171,"context_line":"        # rule being deleted. But it is impossible to retrieve sg rule then."},{"line_number":172,"context_line":"        # Manually add the version here for now."},{"line_number":173,"context_line":"        sg_version \u003d sg[\u0027revision_number\u0027] + 1"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.nb_api.delete_security_group_rule(sg_id, sgr_id, tenant_id,"},{"line_number":176,"context_line":"                                               sg_version\u003dsg_version)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_3b236957","line":173,"updated":"2016-09-08 15:36:14.000000000","message":"This might cause the next sg update, which increments revision_number by one, to equal the new sg_version created here.","commit_id":"92b34357c92f7cec3fbd95725bc4c6b2a79b78d1"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"8658385de38dd1e65d74cac6e42ddf8c856d57c8","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        # being deleted. The sg revision_number will increase after the sg"},{"line_number":171,"context_line":"        # rule being deleted. But it is impossible to retrieve sg rule then."},{"line_number":172,"context_line":"        # Manually add the version here for now."},{"line_number":173,"context_line":"        sg_version \u003d sg[\u0027revision_number\u0027] + 1"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.nb_api.delete_security_group_rule(sg_id, sgr_id, tenant_id,"},{"line_number":176,"context_line":"                                               sg_version\u003dsg_version)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_fe6c78d2","line":173,"in_reply_to":"9a89bdaa_3b236957","updated":"2016-09-09 00:34:05.000000000","message":"Correct. I can do nothing about it with current neutron code. I planned to file a bug in neutron to pass the sg_id, so I leave a todo here. Actually, I am going to file that bug today.","commit_id":"92b34357c92f7cec3fbd95725bc4c6b2a79b78d1"},{"author":{"_account_id":7805,"name":"Li Ma","email":"skywalker.nick@gmail.com","username":"Nick"},"change_message_id":"0a5ba60238759c09a9c978d302113f6860cdd93d","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        sg_id \u003d None"},{"line_number":196,"context_line":"        security_groups \u003d self.nb_api.get_security_groups()"},{"line_number":197,"context_line":"        for sg in security_groups:"},{"line_number":198,"context_line":"            for sg_rule in sg.get_rules():"},{"line_number":199,"context_line":"                if sgr_id \u003d\u003d sg_rule.get_id():"},{"line_number":200,"context_line":"                    sg_id \u003d sg.get_id()"},{"line_number":201,"context_line":"                    break"},{"line_number":202,"context_line":"        if not sg_id:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_b5692b8e","line":199,"range":{"start_line":198,"start_character":12,"end_line":199,"end_character":46},"updated":"2016-09-22 09:49:02.000000000","message":"suggest you use a filter() function.","commit_id":"3a4f7d5985bcd44fee8135394bc103de1ff5a8ea"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"55a3f057b832dbe35a24f3db42e772773a19e451","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        sg_id \u003d None"},{"line_number":196,"context_line":"        security_groups \u003d self.nb_api.get_security_groups()"},{"line_number":197,"context_line":"        for sg in security_groups:"},{"line_number":198,"context_line":"            for sg_rule in sg.get_rules():"},{"line_number":199,"context_line":"                if sgr_id \u003d\u003d sg_rule.get_id():"},{"line_number":200,"context_line":"                    sg_id \u003d sg.get_id()"},{"line_number":201,"context_line":"                    break"},{"line_number":202,"context_line":"        if not sg_id:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_3f17b152","line":199,"range":{"start_line":198,"start_character":12,"end_line":199,"end_character":46},"in_reply_to":"5a8bc5a2_b5692b8e","updated":"2016-09-22 12:07:21.000000000","message":"I would use a method to do the job. So, in the future, it would be easier to remove the code.","commit_id":"3a4f7d5985bcd44fee8135394bc103de1ff5a8ea"},{"author":{"_account_id":20287,"name":"hujie","email":"mike.hu@huawei.com","username":"hujie"},"change_message_id":"a6235ecf95e4462df61b4d070c3a0b7c93f67b92","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        # get security_group from neutron DB."},{"line_number":195,"context_line":"        sg_id \u003d None"},{"line_number":196,"context_line":"        security_groups \u003d self.nb_api.get_security_groups()"},{"line_number":197,"context_line":"        for sg in security_groups:"},{"line_number":198,"context_line":"            for sg_rule in sg.get_rules():"},{"line_number":199,"context_line":"                if sgr_id \u003d\u003d sg_rule.get_id():"},{"line_number":200,"context_line":"                    sg_id \u003d sg.get_id()"},{"line_number":201,"context_line":"                    break"},{"line_number":202,"context_line":"        if not sg_id:"},{"line_number":203,"context_line":"            # There is no such security group in nb DB. No other operations"},{"line_number":204,"context_line":"            # required."}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_1c5ccc24","line":201,"range":{"start_line":197,"start_character":8,"end_line":201,"end_character":25},"updated":"2016-09-22 09:03:08.000000000","message":"there are two levels of loop, you just break in the inner level :)","commit_id":"3a4f7d5985bcd44fee8135394bc103de1ff5a8ea"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"103ef354ba1fb9e7cadf695d4b1871935d8f3eca","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        # get security_group from neutron DB."},{"line_number":195,"context_line":"        sg_id \u003d None"},{"line_number":196,"context_line":"        security_groups \u003d self.nb_api.get_security_groups()"},{"line_number":197,"context_line":"        for sg in security_groups:"},{"line_number":198,"context_line":"            for sg_rule in sg.get_rules():"},{"line_number":199,"context_line":"                if sgr_id \u003d\u003d sg_rule.get_id():"},{"line_number":200,"context_line":"                    sg_id \u003d sg.get_id()"},{"line_number":201,"context_line":"                    break"},{"line_number":202,"context_line":"        if not sg_id:"},{"line_number":203,"context_line":"            # There is no such security group in nb DB. No other operations"},{"line_number":204,"context_line":"            # required."}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_8ef6d9d5","line":201,"range":{"start_line":197,"start_character":8,"end_line":201,"end_character":25},"in_reply_to":"5a8bc5a2_1c5ccc24","updated":"2016-09-22 11:09:23.000000000","message":"You are right, good catch!","commit_id":"3a4f7d5985bcd44fee8135394bc103de1ff5a8ea"}]}
