)]}'
{"neutron/plugins/ml2/drivers/openvswitch/agent/openflow/native/ofswitch.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d5bc16503148c38043d334896d4bb978658c5a0d","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def __enter__(self):"},{"line_number":263,"context_line":"        (dp, ofp, ofpp) \u003d self.br._get_dp()"},{"line_number":264,"context_line":"        assert self.active_bundle is None, \"Another active bundle is running\""},{"line_number":265,"context_line":"        while True:"},{"line_number":266,"context_line":"            self.active_bundle \u003d random.randrange(1 \u003c\u003c 32)"},{"line_number":267,"context_line":"            if self.active_bundle not in self.br.active_bundles:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_1b111bad","line":264,"updated":"2018-02-19 14:39:50.000000000","message":"wouldn\u0027t it be better to propose some new type of exception and raise it here?","commit_id":"287199e56678c8a57bd88e72d919cf69060fbd59"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"a96add50a21219d1b122b8447f4d143b2d630f73","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    def __enter__(self):"},{"line_number":263,"context_line":"        (dp, ofp, ofpp) \u003d self.br._get_dp()"},{"line_number":264,"context_line":"        assert self.active_bundle is None, \"Another active bundle is running\""},{"line_number":265,"context_line":"        while True:"},{"line_number":266,"context_line":"            self.active_bundle \u003d random.randrange(1 \u003c\u003c 32)"},{"line_number":267,"context_line":"            if self.active_bundle not in self.br.active_bundles:"}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_c64b155d","line":264,"in_reply_to":"3fa0c359_1b111bad","updated":"2018-03-19 09:27:39.000000000","message":"Done","commit_id":"287199e56678c8a57bd88e72d919cf69060fbd59"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d5bc16503148c38043d334896d4bb978658c5a0d","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        except Exception as e:"},{"line_number":281,"context_line":"            self.br.active_bundles.remove(self.active_bundle)"},{"line_number":282,"context_line":"            self.active_bundle \u003d None"},{"line_number":283,"context_line":"            raise e"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def __exit__(self, type, value, traceback):"},{"line_number":286,"context_line":"        (dp, ofp, ofpp) \u003d self.br._get_dp()"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa0c359_db83b3a8","line":283,"updated":"2018-02-19 14:39:50.000000000","message":"I think that this \"e\" variable is not necessary and just \"raise\" here should reraise last exception","commit_id":"287199e56678c8a57bd88e72d919cf69060fbd59"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"a96add50a21219d1b122b8447f4d143b2d630f73","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        except Exception as e:"},{"line_number":281,"context_line":"            self.br.active_bundles.remove(self.active_bundle)"},{"line_number":282,"context_line":"            self.active_bundle \u003d None"},{"line_number":283,"context_line":"            raise e"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def __exit__(self, type, value, traceback):"},{"line_number":286,"context_line":"        (dp, ofp, ofpp) \u003d self.br._get_dp()"}],"source_content_type":"text/x-python","patch_set":13,"id":"df7087c5_a625c1ad","line":283,"in_reply_to":"3fa0c359_db83b3a8","updated":"2018-03-19 09:27:39.000000000","message":"Done","commit_id":"287199e56678c8a57bd88e72d919cf69060fbd59"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"445002fc17c1953bea6bcc0b147eac9a8f294b0c","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class ActiveBundleRunning(exceptions.NeutronException):"},{"line_number":42,"context_line":"    message \u003d _(\"Another active bundle %(bundle_id)x is running\")"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class OpenFlowSwitchMixin(object):"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_66232907","line":42,"range":{"start_line":42,"start_character":38,"end_line":42,"end_character":39},"updated":"2018-03-19 09:48:40.000000000","message":"Should be there a 0x prefix to make it clear it\u0027s a hex number?","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"994f2dd7f2a18dde2807b54c216be2742154d961","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class ActiveBundleRunning(exceptions.NeutronException):"},{"line_number":42,"context_line":"    message \u003d _(\"Another active bundle %(bundle_id)x is running\")"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class OpenFlowSwitchMixin(object):"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf659307_8e88e422","line":42,"range":{"start_line":42,"start_character":38,"end_line":42,"end_character":39},"in_reply_to":"df7087c5_66232907","updated":"2018-04-05 08:03:00.000000000","message":"Done","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"445002fc17c1953bea6bcc0b147eac9a8f294b0c","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        return BundledOpenFlowBridge(self, atomic, ordered)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"class BundledOpenFlowBridge(object):"},{"line_number":249,"context_line":"    def __init__(self, br, atomic, ordered):"},{"line_number":250,"context_line":"        self.br \u003d br"},{"line_number":251,"context_line":"        self.active_bundle \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_0647cdbe","line":248,"updated":"2018-03-19 09:48:40.000000000","message":"I\u0027m thinking that adding some simple unittest to cover following would be beneficial:\n\n1) Test calling \"other than install/uninstall\" raises AttributeError\n2) Since we replaced __getattr__, calling to non-existing attribute raises an AttributeError\n3) An active bundle is created when entering bundled bridge context\n4) Active bundle is removed when context is left\n5) Active bundle is removed in case there is an error in the context\n6) Active bundle is left in active bundles attribute if there is an error while leaving context (L282), though I\u0027m not sure what that is good for :)","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"994f2dd7f2a18dde2807b54c216be2742154d961","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        return BundledOpenFlowBridge(self, atomic, ordered)"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"class BundledOpenFlowBridge(object):"},{"line_number":249,"context_line":"    def __init__(self, br, atomic, ordered):"},{"line_number":250,"context_line":"        self.br \u003d br"},{"line_number":251,"context_line":"        self.active_bundle \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf659307_4ad635c6","line":248,"in_reply_to":"df7087c5_0647cdbe","updated":"2018-04-05 08:03:00.000000000","message":"Done","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"445002fc17c1953bea6bcc0b147eac9a8f294b0c","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def __getattr__(self, name):"},{"line_number":260,"context_line":"        if name.startswith(\u0027install\u0027) or name.startswith(\u0027uninstall\u0027):"},{"line_number":261,"context_line":"            under \u003d getattr(self.br, name)"},{"line_number":262,"context_line":"            return functools.partial(under, active_bundle\u003d("},{"line_number":263,"context_line":"                self.active_bundle, self.bundle_flags))"},{"line_number":264,"context_line":"        raise AttributeError(\"Only install_* or uninstall_* methods \""}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_6646c924","line":261,"updated":"2018-03-19 09:48:40.000000000","message":"We should also raise an AttributeError here if under is None","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"994f2dd7f2a18dde2807b54c216be2742154d961","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    def __getattr__(self, name):"},{"line_number":260,"context_line":"        if name.startswith(\u0027install\u0027) or name.startswith(\u0027uninstall\u0027):"},{"line_number":261,"context_line":"            under \u003d getattr(self.br, name)"},{"line_number":262,"context_line":"            return functools.partial(under, active_bundle\u003d("},{"line_number":263,"context_line":"                self.active_bundle, self.bundle_flags))"},{"line_number":264,"context_line":"        raise AttributeError(\"Only install_* or uninstall_* methods \""}],"source_content_type":"text/x-python","patch_set":14,"id":"bf659307_eec0802d","line":261,"in_reply_to":"df7087c5_6646c924","updated":"2018-04-05 08:03:00.000000000","message":"getattr is not quite like get.\ngetattr will raise AttributeError for us instead of returning None. ;)","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"445002fc17c1953bea6bcc0b147eac9a8f294b0c","unresolved":false,"context_lines":[{"line_number":259,"context_line":"    def __getattr__(self, name):"},{"line_number":260,"context_line":"        if name.startswith(\u0027install\u0027) or name.startswith(\u0027uninstall\u0027):"},{"line_number":261,"context_line":"            under \u003d getattr(self.br, name)"},{"line_number":262,"context_line":"            return functools.partial(under, active_bundle\u003d("},{"line_number":263,"context_line":"                self.active_bundle, self.bundle_flags))"},{"line_number":264,"context_line":"        raise AttributeError(\"Only install_* or uninstall_* methods \""},{"line_number":265,"context_line":"            \"can be used\")"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_66c1e980","line":263,"range":{"start_line":262,"start_character":58,"end_line":263,"end_character":54},"updated":"2018-03-19 09:48:40.000000000","message":"Would be good to replace this tuple with namedtuple to avoid indexing on L88","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"994f2dd7f2a18dde2807b54c216be2742154d961","unresolved":false,"context_lines":[{"line_number":259,"context_line":"    def __getattr__(self, name):"},{"line_number":260,"context_line":"        if name.startswith(\u0027install\u0027) or name.startswith(\u0027uninstall\u0027):"},{"line_number":261,"context_line":"            under \u003d getattr(self.br, name)"},{"line_number":262,"context_line":"            return functools.partial(under, active_bundle\u003d("},{"line_number":263,"context_line":"                self.active_bundle, self.bundle_flags))"},{"line_number":264,"context_line":"        raise AttributeError(\"Only install_* or uninstall_* methods \""},{"line_number":265,"context_line":"            \"can be used\")"},{"line_number":266,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bf659307_29cc3260","line":263,"range":{"start_line":262,"start_character":58,"end_line":263,"end_character":54},"in_reply_to":"df7087c5_66c1e980","updated":"2018-04-05 08:03:00.000000000","message":"dict should be good enough","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"445002fc17c1953bea6bcc0b147eac9a8f294b0c","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        if self.active_bundle is not None:"},{"line_number":270,"context_line":"            raise ActiveBundleRunning(bundle_id\u003dself.active_bundle)"},{"line_number":271,"context_line":"        while True:"},{"line_number":272,"context_line":"            self.active_bundle \u003d random.randrange(1 \u003c\u003c 32)"},{"line_number":273,"context_line":"            if self.active_bundle not in self.br.active_bundles:"},{"line_number":274,"context_line":"                self.br.active_bundles.add(self.active_bundle)"},{"line_number":275,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_e6bf39ce","line":272,"range":{"start_line":272,"start_character":50,"end_line":272,"end_character":57},"updated":"2018-03-19 09:48:40.000000000","message":"This should be a constant","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"994f2dd7f2a18dde2807b54c216be2742154d961","unresolved":false,"context_lines":[{"line_number":269,"context_line":"        if self.active_bundle is not None:"},{"line_number":270,"context_line":"            raise ActiveBundleRunning(bundle_id\u003dself.active_bundle)"},{"line_number":271,"context_line":"        while True:"},{"line_number":272,"context_line":"            self.active_bundle \u003d random.randrange(1 \u003c\u003c 32)"},{"line_number":273,"context_line":"            if self.active_bundle not in self.br.active_bundles:"},{"line_number":274,"context_line":"                self.br.active_bundles.add(self.active_bundle)"},{"line_number":275,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf659307_8edb0420","line":272,"range":{"start_line":272,"start_character":50,"end_line":272,"end_character":57},"in_reply_to":"df7087c5_e6bf39ce","updated":"2018-04-05 08:03:00.000000000","message":"Done","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"445002fc17c1953bea6bcc0b147eac9a8f294b0c","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        (dp, ofp, ofpp) \u003d self.br._get_dp()"},{"line_number":269,"context_line":"        if self.active_bundle is not None:"},{"line_number":270,"context_line":"            raise ActiveBundleRunning(bundle_id\u003dself.active_bundle)"},{"line_number":271,"context_line":"        while True:"},{"line_number":272,"context_line":"            self.active_bundle \u003d random.randrange(1 \u003c\u003c 32)"},{"line_number":273,"context_line":"            if self.active_bundle not in self.br.active_bundles:"},{"line_number":274,"context_line":"                self.br.active_bundles.add(self.active_bundle)"},{"line_number":275,"context_line":"                break"},{"line_number":276,"context_line":"        try:"},{"line_number":277,"context_line":"            msg \u003d ofpp.ONFBundleCtrlMsg(dp, self.active_bundle,"},{"line_number":278,"context_line":"                                        ofp.ONF_BCT_OPEN_REQUEST,"}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_c69f9563","line":275,"range":{"start_line":271,"start_character":0,"end_line":275,"end_character":21},"updated":"2018-03-19 09:48:40.000000000","message":"nit: If this is added as a method self._set_active_bundle() and L287, L288 is self._unset_active_bundle(), it would improve readability","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"994f2dd7f2a18dde2807b54c216be2742154d961","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        (dp, ofp, ofpp) \u003d self.br._get_dp()"},{"line_number":269,"context_line":"        if self.active_bundle is not None:"},{"line_number":270,"context_line":"            raise ActiveBundleRunning(bundle_id\u003dself.active_bundle)"},{"line_number":271,"context_line":"        while True:"},{"line_number":272,"context_line":"            self.active_bundle \u003d random.randrange(1 \u003c\u003c 32)"},{"line_number":273,"context_line":"            if self.active_bundle not in self.br.active_bundles:"},{"line_number":274,"context_line":"                self.br.active_bundles.add(self.active_bundle)"},{"line_number":275,"context_line":"                break"},{"line_number":276,"context_line":"        try:"},{"line_number":277,"context_line":"            msg \u003d ofpp.ONFBundleCtrlMsg(dp, self.active_bundle,"},{"line_number":278,"context_line":"                                        ofp.ONF_BCT_OPEN_REQUEST,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf659307_a93122a5","line":275,"range":{"start_line":271,"start_character":0,"end_line":275,"end_character":21},"in_reply_to":"df7087c5_c69f9563","updated":"2018-04-05 08:03:00.000000000","message":"um. I think set.add/remove is descriptive enough.","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"445002fc17c1953bea6bcc0b147eac9a8f294b0c","unresolved":false,"context_lines":[{"line_number":307,"context_line":"            reply \u003d self.br._send_msg(msg, reply_cls\u003dofpp.ONFBundleCtrlMsg)"},{"line_number":308,"context_line":"            if reply.type !\u003d expected_reply:"},{"line_number":309,"context_line":"                raise RuntimeError(\"Unexpected reply type %d\" % reply.type)"},{"line_number":310,"context_line":"            self.br.active_bundles.remove(self.active_bundle)"},{"line_number":311,"context_line":"        finally:"},{"line_number":312,"context_line":"            # It is possible the bundle is kept open, but this must be"},{"line_number":313,"context_line":"            # cleared or all subsequent __enter__ will fail."}],"source_content_type":"text/x-python","patch_set":14,"id":"df7087c5_46caa54f","line":310,"updated":"2018-03-19 09:48:40.000000000","message":"Why do we want to keep the active_bundle id here? IIUC if reply.type is not what we expect, we\u0027re gonna leave the active bundle in the set forever.","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"994f2dd7f2a18dde2807b54c216be2742154d961","unresolved":false,"context_lines":[{"line_number":307,"context_line":"            reply \u003d self.br._send_msg(msg, reply_cls\u003dofpp.ONFBundleCtrlMsg)"},{"line_number":308,"context_line":"            if reply.type !\u003d expected_reply:"},{"line_number":309,"context_line":"                raise RuntimeError(\"Unexpected reply type %d\" % reply.type)"},{"line_number":310,"context_line":"            self.br.active_bundles.remove(self.active_bundle)"},{"line_number":311,"context_line":"        finally:"},{"line_number":312,"context_line":"            # It is possible the bundle is kept open, but this must be"},{"line_number":313,"context_line":"            # cleared or all subsequent __enter__ will fail."}],"source_content_type":"text/x-python","patch_set":14,"id":"bf659307_89121eb4","line":310,"in_reply_to":"df7087c5_46caa54f","updated":"2018-04-05 08:03:00.000000000","message":"This is intended. Added a comment for clarification.","commit_id":"4eb265fe6dc87b24dc3f24e537f580d150ab6e3c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b0ad4d325010ea7e16ba134a5ba8bebe2c7dac56","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                  active_bundle\u003dNone):"},{"line_number":85,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout"},{"line_number":86,"context_line":"        timeout \u003d eventlet.Timeout(seconds\u003dtimeout_sec)"},{"line_number":87,"context_line":"        if active_bundle is not None:"},{"line_number":88,"context_line":"            (dp, ofp, ofpp) \u003d self._get_dp()"},{"line_number":89,"context_line":"            msg \u003d ofpp.ONFBundleAddMsg(dp, active_bundle[\u0027id\u0027],"},{"line_number":90,"context_line":"                                       active_bundle[\u0027bundle_flags\u0027], msg, [])"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f6a8fd7_a0494061","line":87,"updated":"2018-04-15 06:59:27.000000000","message":"if active_bundle:\n\nwhat is if active_bundle \u003d\u003d []?","commit_id":"87256ac6108fc135a7923c25729a7fb2e2ca772f"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"c9ce24364ff5090082538c52e22985ca2304daf4","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                  active_bundle\u003dNone):"},{"line_number":85,"context_line":"        timeout_sec \u003d cfg.CONF.OVS.of_request_timeout"},{"line_number":86,"context_line":"        timeout \u003d eventlet.Timeout(seconds\u003dtimeout_sec)"},{"line_number":87,"context_line":"        if active_bundle is not None:"},{"line_number":88,"context_line":"            (dp, ofp, ofpp) \u003d self._get_dp()"},{"line_number":89,"context_line":"            msg \u003d ofpp.ONFBundleAddMsg(dp, active_bundle[\u0027id\u0027],"},{"line_number":90,"context_line":"                                       active_bundle[\u0027bundle_flags\u0027], msg, [])"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f6a8fd7_619e8555","line":87,"in_reply_to":"9f6a8fd7_a0494061","updated":"2018-04-18 09:31:22.000000000","message":"Passing [] is illegal.\nThe argument must be a dict or None.","commit_id":"87256ac6108fc135a7923c25729a7fb2e2ca772f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d50b757633c1577d9ca6bf6ff8abe648330b4b8b","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        self.br \u003d br"},{"line_number":252,"context_line":"        self.active_bundle \u003d None"},{"line_number":253,"context_line":"        self.bundle_flags \u003d 0"},{"line_number":254,"context_line":"        (dp, ofp, ofpp) \u003d self.br._get_dp()"},{"line_number":255,"context_line":"        if atomic:"},{"line_number":256,"context_line":"            self.bundle_flags |\u003d ofp.ONF_BF_ATOMIC"},{"line_number":257,"context_line":"        if ordered:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f6a8fd7_ab9ed804","line":254,"updated":"2018-04-17 10:30:57.000000000","message":"nit: this looks like not necessary if \"not atomic and not ordered\"","commit_id":"87256ac6108fc135a7923c25729a7fb2e2ca772f"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"c9ce24364ff5090082538c52e22985ca2304daf4","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        self.br \u003d br"},{"line_number":252,"context_line":"        self.active_bundle \u003d None"},{"line_number":253,"context_line":"        self.bundle_flags \u003d 0"},{"line_number":254,"context_line":"        (dp, ofp, ofpp) \u003d self.br._get_dp()"},{"line_number":255,"context_line":"        if atomic:"},{"line_number":256,"context_line":"            self.bundle_flags |\u003d ofp.ONF_BF_ATOMIC"},{"line_number":257,"context_line":"        if ordered:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f6a8fd7_211dedbc","line":254,"in_reply_to":"9f6a8fd7_ab9ed804","updated":"2018-04-18 09:31:22.000000000","message":"Done","commit_id":"87256ac6108fc135a7923c25729a7fb2e2ca772f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d50b757633c1577d9ca6bf6ff8abe648330b4b8b","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            \"can be used\")"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def __enter__(self):"},{"line_number":271,"context_line":"        (dp, ofp, ofpp) \u003d self.br._get_dp()"},{"line_number":272,"context_line":"        if self.active_bundle is not None:"},{"line_number":273,"context_line":"            raise ActiveBundleRunning(bundle_id\u003dself.active_bundle)"},{"line_number":274,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f6a8fd7_2b80888b","line":271,"updated":"2018-04-17 10:30:57.000000000","message":"nit: can it be maybe moved to L272 - then You will not do it unnecessarily if ActiveBundleRunning will be raised","commit_id":"87256ac6108fc135a7923c25729a7fb2e2ca772f"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"c9ce24364ff5090082538c52e22985ca2304daf4","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            \"can be used\")"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def __enter__(self):"},{"line_number":271,"context_line":"        (dp, ofp, ofpp) \u003d self.br._get_dp()"},{"line_number":272,"context_line":"        if self.active_bundle is not None:"},{"line_number":273,"context_line":"            raise ActiveBundleRunning(bundle_id\u003dself.active_bundle)"},{"line_number":274,"context_line":"        while True:"}],"source_content_type":"text/x-python","patch_set":17,"id":"9f6a8fd7_01778904","line":271,"in_reply_to":"9f6a8fd7_2b80888b","updated":"2018-04-18 09:31:22.000000000","message":"Done","commit_id":"87256ac6108fc135a7923c25729a7fb2e2ca772f"}],"requirements.txt":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d50b757633c1577d9ca6bf6ff8abe648330b4b8b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"neutron-lib\u003e\u003d1.13.0 # Apache-2.0"},{"line_number":18,"context_line":"python-neutronclient\u003e\u003d6.7.0 # Apache-2.0"},{"line_number":19,"context_line":"tenacity\u003e\u003d3.2.1 # Apache-2.0"},{"line_number":20,"context_line":"ryu\u003e\u003d4.24 # Apache-2.0"},{"line_number":21,"context_line":"SQLAlchemy!\u003d1.1.5,!\u003d1.1.6,!\u003d1.1.7,!\u003d1.1.8,\u003e\u003d1.0.10 # MIT"},{"line_number":22,"context_line":"WebOb\u003e\u003d1.7.1 # MIT"},{"line_number":23,"context_line":"keystoneauth1\u003e\u003d3.4.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"9f6a8fd7_e6e88717","line":20,"updated":"2018-04-17 10:30:57.000000000","message":"this is already done in separate patch :)","commit_id":"87256ac6108fc135a7923c25729a7fb2e2ca772f"},{"author":{"_account_id":9200,"name":"IWAMOTO Toshihiro","email":"iwamoto@valinux.co.jp","username":"toshii"},"change_message_id":"c9ce24364ff5090082538c52e22985ca2304daf4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"neutron-lib\u003e\u003d1.13.0 # Apache-2.0"},{"line_number":18,"context_line":"python-neutronclient\u003e\u003d6.7.0 # Apache-2.0"},{"line_number":19,"context_line":"tenacity\u003e\u003d3.2.1 # Apache-2.0"},{"line_number":20,"context_line":"ryu\u003e\u003d4.24 # Apache-2.0"},{"line_number":21,"context_line":"SQLAlchemy!\u003d1.1.5,!\u003d1.1.6,!\u003d1.1.7,!\u003d1.1.8,\u003e\u003d1.0.10 # MIT"},{"line_number":22,"context_line":"WebOb\u003e\u003d1.7.1 # MIT"},{"line_number":23,"context_line":"keystoneauth1\u003e\u003d3.4.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":17,"id":"9f6a8fd7_a15fbd70","line":20,"in_reply_to":"9f6a8fd7_e6e88717","updated":"2018-04-18 09:31:22.000000000","message":":-)","commit_id":"87256ac6108fc135a7923c25729a7fb2e2ca772f"}]}
