)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"b86e4970ddb97b748df52c069dc083e244836fbd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Inessa Vasilevskaya \u003civasilevskaya@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-02 13:21:03 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] OVS: UnboundLocalError when switch timeout fixed"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case there is some cached datapath id in OVSAgentBridge"},{"line_number":10,"context_line":"and openflow switch does not respond in time for some"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9abb7d3a_4e7686d9","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"updated":"2016-06-02 10:42:05.000000000","message":"WIP isn\u0027t necessary anymore","commit_id":"663bfb8677d51b67a033ed4a657a138697121ccb"},{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"b86e4970ddb97b748df52c069dc083e244836fbd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Inessa Vasilevskaya \u003civasilevskaya@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-02 13:21:03 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] OVS: UnboundLocalError when switch timeout fixed"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"In case there is some cached datapath id in OVSAgentBridge"},{"line_number":10,"context_line":"and openflow switch does not respond in time for some"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9abb7d3a_8ec34e38","line":7,"range":{"start_line":7,"start_character":29,"end_line":7,"end_character":33},"updated":"2016-06-02 10:42:05.000000000","message":"s/when/on\n\nWill fix after receive some reviews.","commit_id":"663bfb8677d51b67a033ed4a657a138697121ccb"}],"neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/ovs_bridge.py":[{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"b86e4970ddb97b748df52c069dc083e244836fbd","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        A convenient method for openflow message composers."},{"line_number":43,"context_line":"        \"\"\""},{"line_number":44,"context_line":"        while True:"},{"line_number":45,"context_line":"            dpid_int \u003d self._cached_dpid"},{"line_number":46,"context_line":"            if dpid_int is None:"},{"line_number":47,"context_line":"                dpid_str \u003d self.get_datapath_id()"},{"line_number":48,"context_line":"                LOG.info(_LI(\"Bridge %(br_name)s has datapath-ID %(dpid)s\"),"},{"line_number":49,"context_line":"                         {\"br_name\": self.br_name, \"dpid\": dpid_str})"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_ce10b6ae","side":"PARENT","line":46,"range":{"start_line":45,"start_character":12,"end_line":46,"end_character":32},"updated":"2016-06-02 10:42:05.000000000","message":"Decided to refactor this part a bit. Imho direct references to self._cached_dpid make code a bit easier to read.","commit_id":"e0c212222286a9e07613de7f09d227fae40c43b8"},{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"b86e4970ddb97b748df52c069dc083e244836fbd","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                    # Retry if dpid has been changed."},{"line_number":57,"context_line":"                    # NOTE(yamamoto): Open vSwitch change its dpid on"},{"line_number":58,"context_line":"                    # some events."},{"line_number":59,"context_line":"                    # REVISIT(yamamoto): Consider to set dpid statically."},{"line_number":60,"context_line":"                    new_dpid_str \u003d self.get_datapath_id()"},{"line_number":61,"context_line":"                    if new_dpid_str !\u003d dpid_str:"},{"line_number":62,"context_line":"                        LOG.info(_LI(\"Bridge %(br_name)s changed its \""}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_0ee75ead","side":"PARENT","line":59,"range":{"start_line":59,"start_character":20,"end_line":59,"end_character":73},"updated":"2016-06-02 10:42:05.000000000","message":"Hasn\u0027t this already been done (_cached_dpid is a class variable)? Should the comment be removed?","commit_id":"e0c212222286a9e07613de7f09d227fae40c43b8"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"6938397714a811111e92642fc5c7f51583d9bd4b","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron._i18n import _LI"},{"line_number":21,"context_line":"from neutron.agent.common import ovs_lib"},{"line_number":22,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.common import constants \\"},{"line_number":23,"context_line":"    as ovs_consts"},{"line_number":24,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.openflow \\"},{"line_number":25,"context_line":"    import br_cookie"},{"line_number":26,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.openflow.native \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_3ab3410c","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":4},"updated":"2016-06-16 10:47:01.000000000","message":"This is irrelevant， should keep it unchanged.","commit_id":"0ec60deb6259ce434e3a86084e67002a1cb8a1f1"},{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"fc1d742079d57112f8f4268cc0718f0188f0e71c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron._i18n import _LI"},{"line_number":21,"context_line":"from neutron.agent.common import ovs_lib"},{"line_number":22,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.common import constants \\"},{"line_number":23,"context_line":"    as ovs_consts"},{"line_number":24,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.openflow \\"},{"line_number":25,"context_line":"    import br_cookie"},{"line_number":26,"context_line":"from neutron.plugins.ml2.drivers.openvswitch.agent.openflow.native \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_ad4ff632","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":4},"in_reply_to":"7aa08908_3ab3410c","updated":"2016-06-16 11:17:09.000000000","message":"Done","commit_id":"0ec60deb6259ce434e3a86084e67002a1cb8a1f1"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"6938397714a811111e92642fc5c7f51583d9bd4b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        A convenient method for openflow message composers."},{"line_number":43,"context_line":"        \"\"\""},{"line_number":44,"context_line":"        while True:"},{"line_number":45,"context_line":"            if not self._cached_dpid:"},{"line_number":46,"context_line":"                dpid_str \u003d self.get_datapath_id()"},{"line_number":47,"context_line":"                LOG.info(_LI(\"Bridge %(br_name)s has datapath-ID %(dpid)s\"),"},{"line_number":48,"context_line":"                         {\"br_name\": self.br_name, \"dpid\": dpid_str})"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_40dc5a46","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":37},"updated":"2016-06-16 10:47:01.000000000","message":"Better to keep the original logic \"if *** is None:\" here, self._cached_dpid is an int, and not 0 will be True.(although dpid seems not possible to be 0).","commit_id":"0ec60deb6259ce434e3a86084e67002a1cb8a1f1"},{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"fc1d742079d57112f8f4268cc0718f0188f0e71c","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        A convenient method for openflow message composers."},{"line_number":43,"context_line":"        \"\"\""},{"line_number":44,"context_line":"        while True:"},{"line_number":45,"context_line":"            if not self._cached_dpid:"},{"line_number":46,"context_line":"                dpid_str \u003d self.get_datapath_id()"},{"line_number":47,"context_line":"                LOG.info(_LI(\"Bridge %(br_name)s has datapath-ID %(dpid)s\"),"},{"line_number":48,"context_line":"                         {\"br_name\": self.br_name, \"dpid\": dpid_str})"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_2d430615","line":45,"range":{"start_line":45,"start_character":12,"end_line":45,"end_character":37},"in_reply_to":"7aa08908_40dc5a46","updated":"2016-06-16 11:17:09.000000000","message":"Done","commit_id":"0ec60deb6259ce434e3a86084e67002a1cb8a1f1"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"ae4366c0d70088a1ad447a6b5ed0c670c51d7b0d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                            \"new\": new_dpid_str,"},{"line_number":67,"context_line":"                        })"},{"line_number":68,"context_line":"                        ctx.reraise \u003d False"},{"line_number":69,"context_line":"                    self._cached_dpid \u003d None"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def setup_controllers(self, conf):"},{"line_number":72,"context_line":"        controllers \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_0167cab7","line":69,"updated":"2016-06-17 02:18:58.000000000","message":"It seems better to assign int(new_dpid_str, 16) into _cached_dpid rather than to discard it.","commit_id":"de42aaf2ff4ea4a6fbc65e06b3e61a748955004a"},{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"04a90913ca13a5637e7315d3be750546b42b6d51","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                            \"new\": new_dpid_str,"},{"line_number":67,"context_line":"                        })"},{"line_number":68,"context_line":"                        ctx.reraise \u003d False"},{"line_number":69,"context_line":"                    self._cached_dpid \u003d None"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def setup_controllers(self, conf):"},{"line_number":72,"context_line":"        controllers \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_9ca3f142","line":69,"in_reply_to":"7aa08908_0167cab7","updated":"2016-06-17 23:08:03.000000000","message":"You are right here, will fix that.","commit_id":"de42aaf2ff4ea4a6fbc65e06b3e61a748955004a"}],"neutron/tests/unit/plugins/ml2/drivers/openvswitch/agent/openflow/native/test_ovs_bridge.py":[{"author":{"_account_id":20229,"name":"Omer Anson","email":"omer.anson@toganetworks.com","username":"oanson"},"change_message_id":"17a32bf59deefdcd4a0042be6bb2095edb860b76","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        br._cached_dpid \u003d 1001"},{"line_number":33,"context_line":"        # make sure it correctly raises RuntimeError, not UnboundLocalError as"},{"line_number":34,"context_line":"        # in LP https://bugs.launchpad.net/neutron/+bug/1588042"},{"line_number":35,"context_line":"        self.assertRaises(RuntimeError, br._get_dp)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_652e138d","line":35,"updated":"2016-06-09 07:53:38.000000000","message":"Maybe also verify that _cached_dpid is updated to correct value?","commit_id":"0ec60deb6259ce434e3a86084e67002a1cb8a1f1"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"ae4366c0d70088a1ad447a6b5ed0c670c51d7b0d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            \"ofswitch.OpenFlowSwitchMixin._get_dp_by_dpid\","},{"line_number":30,"context_line":"            side_effect\u003dRuntimeError).start()"},{"line_number":31,"context_line":"        br \u003d self.br_int_cls(\u0027br-int\u0027)"},{"line_number":32,"context_line":"        br._cached_dpid \u003d 1001"},{"line_number":33,"context_line":"        # make sure it correctly raises RuntimeError, not UnboundLocalError as"},{"line_number":34,"context_line":"        # in LP https://bugs.launchpad.net/neutron/+bug/1588042"},{"line_number":35,"context_line":"        self.assertRaises(RuntimeError, br._get_dp)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_a1dcf646","line":32,"updated":"2016-06-17 02:18:58.000000000","message":"I\u0027d rather write int(\"3e9\", 16) so that it\u0027s clear to match with line 26.","commit_id":"de42aaf2ff4ea4a6fbc65e06b3e61a748955004a"},{"author":{"_account_id":13717,"name":"Inessa Vasilevskaya","email":"ivasilevskaya@mirantis.com","username":"ivasilevskaya"},"change_message_id":"04a90913ca13a5637e7315d3be750546b42b6d51","unresolved":false,"context_lines":[{"line_number":29,"context_line":"            \"ofswitch.OpenFlowSwitchMixin._get_dp_by_dpid\","},{"line_number":30,"context_line":"            side_effect\u003dRuntimeError).start()"},{"line_number":31,"context_line":"        br \u003d self.br_int_cls(\u0027br-int\u0027)"},{"line_number":32,"context_line":"        br._cached_dpid \u003d 1001"},{"line_number":33,"context_line":"        # make sure it correctly raises RuntimeError, not UnboundLocalError as"},{"line_number":34,"context_line":"        # in LP https://bugs.launchpad.net/neutron/+bug/1588042"},{"line_number":35,"context_line":"        self.assertRaises(RuntimeError, br._get_dp)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_3c691df9","line":32,"in_reply_to":"7aa08908_a1dcf646","updated":"2016-06-17 23:08:03.000000000","message":"Will be done, thanks.","commit_id":"de42aaf2ff4ea4a6fbc65e06b3e61a748955004a"}]}
