)]}'
{"os_vif/internal/command/ip/linux/impl_pyroute2.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"da6f50b2643726aafc504a5d2dedb1b92ca20bbd","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                args[\u0027flags\u0027] \u003d (utils.set_mask(flags, ifinfmsg.IFF_PROMISC)"},{"line_number":59,"context_line":"                                 if promisc is True else"},{"line_number":60,"context_line":"                                 utils.unset_mask(flags, ifinfmsg.IFF_PROMISC))"},{"line_number":61,"context_line":"            if master:"},{"line_number":62,"context_line":"                args[\u0027master\u0027] \u003d master"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"            if isinstance(check_exit_code, int):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_909ea067","line":61,"updated":"2019-02-19 12:22:26.000000000","message":"Can you add a new functional test to check this new parameter?","commit_id":"46edd3849e8400bd9c3facbccbb51bcb73efe619"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f08e363f971fc090058862992017b4c13a289a9","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                args[\u0027flags\u0027] \u003d (utils.set_mask(flags, ifinfmsg.IFF_PROMISC)"},{"line_number":59,"context_line":"                                 if promisc is True else"},{"line_number":60,"context_line":"                                 utils.unset_mask(flags, ifinfmsg.IFF_PROMISC))"},{"line_number":61,"context_line":"            if master:"},{"line_number":62,"context_line":"                args[\u0027master\u0027] \u003d master"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"            if isinstance(check_exit_code, int):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_5baff97c","line":61,"in_reply_to":"9fdfeff1_909ea067","updated":"2019-02-19 13:25:48.000000000","message":"its on my todo list.\ni need to update the linux bridge plugin too which is non trivial as a lost of that code is untested or tested badly.\ni will add functional tests likely in a followup patch but i need to respin some nova patches first.","commit_id":"46edd3849e8400bd9c3facbccbb51bcb73efe619"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"da6f50b2643726aafc504a5d2dedb1b92ca20bbd","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                args[\u0027link\u0027] \u003d idx[0]"},{"line_number":81,"context_line":"            elif self.TYPE_VETH \u003d\u003d dev_type:"},{"line_number":82,"context_line":"                args[\u0027peer\u0027] \u003d peer"},{"line_number":83,"context_line":"            elif self.TYPE_BRIDGE \u003d\u003d dev_type:"},{"line_number":84,"context_line":"                args[\u0027ageing_time\u0027] \u003d 0   # disable mac learning ageing"},{"line_number":85,"context_line":"                args[\u0027forward_delay\u0027] \u003d 0  # set no delay"},{"line_number":86,"context_line":"                args[\u0027stp_state\u0027] \u003d 0  # disable spanning tree"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_d0ed08f1","line":83,"updated":"2019-02-19 12:22:26.000000000","message":"Can you add a functional test to check this new type?","commit_id":"46edd3849e8400bd9c3facbccbb51bcb73efe619"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f08e363f971fc090058862992017b4c13a289a9","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                args[\u0027link\u0027] \u003d idx[0]"},{"line_number":81,"context_line":"            elif self.TYPE_VETH \u003d\u003d dev_type:"},{"line_number":82,"context_line":"                args[\u0027peer\u0027] \u003d peer"},{"line_number":83,"context_line":"            elif self.TYPE_BRIDGE \u003d\u003d dev_type:"},{"line_number":84,"context_line":"                args[\u0027ageing_time\u0027] \u003d 0   # disable mac learning ageing"},{"line_number":85,"context_line":"                args[\u0027forward_delay\u0027] \u003d 0  # set no delay"},{"line_number":86,"context_line":"                args[\u0027stp_state\u0027] \u003d 0  # disable spanning tree"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_dbc20935","line":83,"in_reply_to":"9fdfeff1_d0ed08f1","updated":"2019-02-19 13:25:48.000000000","message":"yep ill add this is a follow up patch.\ni need to add a release note too so ill do both in that patch.","commit_id":"46edd3849e8400bd9c3facbccbb51bcb73efe619"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"73cd34c626698e48e9d456c9af7163a261f6d18a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                args[\u0027link\u0027] \u003d idx[0]"},{"line_number":81,"context_line":"            elif self.TYPE_VETH \u003d\u003d dev_type:"},{"line_number":82,"context_line":"                args[\u0027peer\u0027] \u003d peer"},{"line_number":83,"context_line":"            elif self.TYPE_BRIDGE \u003d\u003d dev_type:"},{"line_number":84,"context_line":"                # NOTE(sean-k-mooney): the keys are defiend in the pyroute2"},{"line_number":85,"context_line":"                # codebase but are not documented. see the nla_map field"},{"line_number":86,"context_line":"                # in the bridge_data class located in the"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_9023cda7","line":83,"updated":"2019-02-21 11:45:27.000000000","message":"Interesting aside: this style of reverse comparison with the constant on the left comes from C, where it\u0027s useful because it\u0027s a compile error if you accidentally put \u0027\u003d\u0027 here instead of \u0027\u003d\u003d\u0027. Doesn\u0027t do anything in python because python has no discipline to fall back on: you\u0027ll just change the \u0027constant\u0027 :(","commit_id":"6e6e7edcf17ea055978f7360330a45a220e379a2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"23de27e8c1e178755d0d8577e351ed85da1c2b0a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                args[\u0027link\u0027] \u003d idx[0]"},{"line_number":81,"context_line":"            elif self.TYPE_VETH \u003d\u003d dev_type:"},{"line_number":82,"context_line":"                args[\u0027peer\u0027] \u003d peer"},{"line_number":83,"context_line":"            elif self.TYPE_BRIDGE \u003d\u003d dev_type:"},{"line_number":84,"context_line":"                # NOTE(sean-k-mooney): the keys are defiend in the pyroute2"},{"line_number":85,"context_line":"                # codebase but are not documented. see the nla_map field"},{"line_number":86,"context_line":"                # in the bridge_data class located in the"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_622428c7","line":83,"in_reply_to":"9fdfeff1_3aad18ea","updated":"2019-02-25 11:15:52.000000000","message":"the only saving grace was the choice to use :\u003d\n\ni only take issue with assingment expression if \u003d is uesed\nand \u003d\u003d is used for comparison in the language.","commit_id":"6e6e7edcf17ea055978f7360330a45a220e379a2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5b266df503f85c00187d6d618b7b120b637cfbe6","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                args[\u0027link\u0027] \u003d idx[0]"},{"line_number":81,"context_line":"            elif self.TYPE_VETH \u003d\u003d dev_type:"},{"line_number":82,"context_line":"                args[\u0027peer\u0027] \u003d peer"},{"line_number":83,"context_line":"            elif self.TYPE_BRIDGE \u003d\u003d dev_type:"},{"line_number":84,"context_line":"                # NOTE(sean-k-mooney): the keys are defiend in the pyroute2"},{"line_number":85,"context_line":"                # codebase but are not documented. see the nla_map field"},{"line_number":86,"context_line":"                # in the bridge_data class located in the"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_d03875a0","line":83,"in_reply_to":"9fdfeff1_9023cda7","updated":"2019-02-21 11:51:03.000000000","message":"actully in python asignment is a statement when done with \"\u003d\"\nso it is a syntaxerror if you mess it up.\n\n\u003e\u003e\u003e i \u003d 1\n\u003e\u003e\u003e if i \u003d 2:\n  File \"\u003cstdin\u003e\", line 1\n    if i \u003d 2:\n         ^\nSyntaxError: invalid syntax\n\nbut you are right this style does come form c/c++\nwhere asignment is an expression.","commit_id":"6e6e7edcf17ea055978f7360330a45a220e379a2"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"91e1e4b7a68398c3040732737c1b437f7070238c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                args[\u0027link\u0027] \u003d idx[0]"},{"line_number":81,"context_line":"            elif self.TYPE_VETH \u003d\u003d dev_type:"},{"line_number":82,"context_line":"                args[\u0027peer\u0027] \u003d peer"},{"line_number":83,"context_line":"            elif self.TYPE_BRIDGE \u003d\u003d dev_type:"},{"line_number":84,"context_line":"                # NOTE(sean-k-mooney): the keys are defiend in the pyroute2"},{"line_number":85,"context_line":"                # codebase but are not documented. see the nla_map field"},{"line_number":86,"context_line":"                # in the bridge_data class located in the"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_3aad18ea","line":83,"in_reply_to":"9fdfeff1_d03875a0","updated":"2019-02-21 15:55:19.000000000","message":"Following the trail of tears eventually leads to https://lwn.net/Articles/757713/ \n\nTL;DR Guido van Rossum resigned as BDFL shortly after overseeing adding assignment expressions like that to Python.","commit_id":"6e6e7edcf17ea055978f7360330a45a220e379a2"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"8a73043116f0be443efb766be559595ae53bfa7a","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            elif self.TYPE_VETH \u003d\u003d dev_type:"},{"line_number":82,"context_line":"                args[\u0027peer\u0027] \u003d peer"},{"line_number":83,"context_line":"            elif self.TYPE_BRIDGE \u003d\u003d dev_type:"},{"line_number":84,"context_line":"                # NOTE(sean-k-mooney): the keys are defiend in the pyroute2"},{"line_number":85,"context_line":"                # codebase but are not documented. see the nla_map field"},{"line_number":86,"context_line":"                # in the bridge_data class located in the"},{"line_number":87,"context_line":"                # pyroute2.netlink.rtnl.ifinfmsg module for mode details"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_866bae83","line":84,"range":{"start_line":84,"start_character":52,"end_line":84,"end_character":59},"updated":"2019-02-20 14:47:02.000000000","message":"defined","commit_id":"6e6e7edcf17ea055978f7360330a45a220e379a2"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"73cd34c626698e48e9d456c9af7163a261f6d18a","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            elif self.TYPE_VETH \u003d\u003d dev_type:"},{"line_number":82,"context_line":"                args[\u0027peer\u0027] \u003d peer"},{"line_number":83,"context_line":"            elif self.TYPE_BRIDGE \u003d\u003d dev_type:"},{"line_number":84,"context_line":"                # NOTE(sean-k-mooney): the keys are defiend in the pyroute2"},{"line_number":85,"context_line":"                # codebase but are not documented. see the nla_map field"},{"line_number":86,"context_line":"                # in the bridge_data class located in the"},{"line_number":87,"context_line":"                # pyroute2.netlink.rtnl.ifinfmsg module for mode details"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_b04b715d","line":84,"range":{"start_line":84,"start_character":52,"end_line":84,"end_character":59},"in_reply_to":"9fdfeff1_866bae83","updated":"2019-02-21 11:45:27.000000000","message":"defiend is an awesome word, though.","commit_id":"6e6e7edcf17ea055978f7360330a45a220e379a2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2951d57d76e4eb6469c59ea99098a7b30441f1e4","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                # codebase but are not documented. see the nla_map field"},{"line_number":86,"context_line":"                # in the bridge_data class located in the"},{"line_number":87,"context_line":"                # pyroute2.netlink.rtnl.ifinfmsg module for mode details"},{"line_number":88,"context_line":"                # https://github.com/svinota/pyroute2/blob/3ba9cdde34b2346ef8c2f8ba17cef5dbeb4c6d52/pyroute2/netlink/rtnl/ifinfmsg/__init__.py#L776-L820"},{"line_number":89,"context_line":"                args[\u0027IFLA_BR_AGEING_TIME\u0027] \u003d 0  # disable mac learning ageing"},{"line_number":90,"context_line":"                args[\u0027IFLA_BR_FORWARD_DELAY\u0027] \u003d 0  # set no delay"},{"line_number":91,"context_line":"                args[\u0027IFLA_BR_STP_STATE\u0027] \u003d 0  # disable spanning tree"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_835a7380","line":88,"range":{"start_line":88,"start_character":59,"end_line":88,"end_character":99},"updated":"2019-02-25 09:15:09.000000000","message":"nit: might be worth using a shorter hash","commit_id":"5027ce833c6fccaa80b5ddc8544d262c0bf99dbd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2951d57d76e4eb6469c59ea99098a7b30441f1e4","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                # in the bridge_data class located in the"},{"line_number":87,"context_line":"                # pyroute2.netlink.rtnl.ifinfmsg module for mode details"},{"line_number":88,"context_line":"                # https://github.com/svinota/pyroute2/blob/3ba9cdde34b2346ef8c2f8ba17cef5dbeb4c6d52/pyroute2/netlink/rtnl/ifinfmsg/__init__.py#L776-L820"},{"line_number":89,"context_line":"                args[\u0027IFLA_BR_AGEING_TIME\u0027] \u003d 0  # disable mac learning ageing"},{"line_number":90,"context_line":"                args[\u0027IFLA_BR_FORWARD_DELAY\u0027] \u003d 0  # set no delay"},{"line_number":91,"context_line":"                args[\u0027IFLA_BR_STP_STATE\u0027] \u003d 0  # disable spanning tree"},{"line_number":92,"context_line":"                args[\u0027IFLA_BR_MCAST_SNOOPING\u0027] \u003d 0  # disable snooping"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_a36e97fd","line":89,"range":{"start_line":89,"start_character":22,"end_line":89,"end_character":41},"updated":"2019-02-25 09:15:09.000000000","message":"note to self: not a typo","commit_id":"5027ce833c6fccaa80b5ddc8544d262c0bf99dbd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2951d57d76e4eb6469c59ea99098a7b30441f1e4","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                args[\u0027IFLA_BR_FORWARD_DELAY\u0027] \u003d 0  # set no delay"},{"line_number":91,"context_line":"                args[\u0027IFLA_BR_STP_STATE\u0027] \u003d 0  # disable spanning tree"},{"line_number":92,"context_line":"                args[\u0027IFLA_BR_MCAST_SNOOPING\u0027] \u003d 0  # disable snooping"},{"line_number":93,"context_line":"            else:"},{"line_number":94,"context_line":"                raise exception.NetworkInterfaceTypeNotDefined(type\u003ddev_type)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"            return self._ip_link(ip, \u0027add\u0027, check_exit_code, **args)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_c3615b13","line":93,"updated":"2019-02-25 09:15:09.000000000","message":"note to self: this replaces [1], which does all the same operations but uses the \u0027brctl setageing $IF 0\u0027, \u0027brctl setfd $IF 0\u0027, \u0027brctl stp $IF off\u0027, and \u0027echo 0 \u003e /proc/sys/net/ipv6/conf/$IF/disable_ipv6\u0027 commands.\n\n[1] https://github.com/openstack/os-vif/blob/36e3ba78ae6e46405daaafc7b41a0cd785921c24/vif_plug_ovs/linux_net.py#L106-L113","commit_id":"5027ce833c6fccaa80b5ddc8544d262c0bf99dbd"}],"vif_plug_ovs/linux_net.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"da6f50b2643726aafc504a5d2dedb1b92ca20bbd","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        # howver it will not set the detached interface down"},{"line_number":126,"context_line":"        # so we set the dev down if dev is not None and exists."},{"line_number":127,"context_line":"        if dev and ip_lib.exists(dev):"},{"line_number":128,"context_line":"            set_interface_state(dev, \"down\")"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"@privsep.vif_plug.entrypoint"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_90da201b","line":128,"updated":"2019-02-19 12:22:26.000000000","message":"I don\u0027t understand this line. In the previous implementation, both the interface and the bridge where deleted. Why are not you deleting the interface too?","commit_id":"46edd3849e8400bd9c3facbccbb51bcb73efe619"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"feecf0f003eb4c3bb8775ef14ff08b815ee0a5d8","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        # howver it will not set the detached interface down"},{"line_number":126,"context_line":"        # so we set the dev down if dev is not None and exists."},{"line_number":127,"context_line":"        if dev and ip_lib.exists(dev):"},{"line_number":128,"context_line":"            set_interface_state(dev, \"down\")"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"@privsep.vif_plug.entrypoint"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_eff06294","line":128,"in_reply_to":"9fdfeff1_3b39d53e","updated":"2019-02-19 18:25:17.000000000","message":"That\u0027s right, the interface is not deleted, just removed from the bridge.","commit_id":"46edd3849e8400bd9c3facbccbb51bcb73efe619"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1f08e363f971fc090058862992017b4c13a289a9","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        # howver it will not set the detached interface down"},{"line_number":126,"context_line":"        # so we set the dev down if dev is not None and exists."},{"line_number":127,"context_line":"        if dev and ip_lib.exists(dev):"},{"line_number":128,"context_line":"            set_interface_state(dev, \"down\")"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"@privsep.vif_plug.entrypoint"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_3b39d53e","line":128,"in_reply_to":"9fdfeff1_90da201b","updated":"2019-02-19 13:25:48.000000000","message":"\"brctl delif ...\" does not delete the interface.\nit just removes it from the bridge.\nthe interface is deleleted elsewhere.\n\nalso delete bridge should not delete interfaces as a side effect. its a bad api design and i intend to rework alot of this code after the code freeze. im going to pull linux_net out into a common moduel and share the code between the ovs and linux bridge plugins.","commit_id":"46edd3849e8400bd9c3facbccbb51bcb73efe619"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ef0995b4c4e7dc1be68c2c668d436966a8f210bb","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        # howver it will not set the detached interface down"},{"line_number":126,"context_line":"        # so we set the dev down if dev is not None and exists."},{"line_number":127,"context_line":"        if dev and ip_lib.exists(dev):"},{"line_number":128,"context_line":"            set_interface_state(dev, \"down\")"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"@privsep.vif_plug.entrypoint"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fdfeff1_2b9c1d69","line":128,"in_reply_to":"9fdfeff1_eff06294","updated":"2019-02-19 19:03:00.000000000","message":"so you are fine with this change then?\n\nthe interface is delete by\nhttps://github.com/openstack/os-vif/blob/master/vif_plug_ovs/ovsdb/ovsdb_lib.py#L89-L92\n\nwhen it is invoked here \nhttps://github.com/openstack/os-vif/blob/master/vif_plug_ovs/ovs.py#L301\n\nif you delete either end of a veth pair both ends are removed so the call to\nself.ovsdb.delete_ovs_vif_port(vif.network.bridge, v2_name)\nis what deletes the veth pair.","commit_id":"46edd3849e8400bd9c3facbccbb51bcb73efe619"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"e6b0fa5137548683ce2d9a091fcd5f1a5129fb87","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    \"\"\"Disable ipv6 if available for bridge. Must be called from"},{"line_number":99,"context_line":"       privsep context."},{"line_number":100,"context_line":"    \"\"\""},{"line_number":101,"context_line":"    # TODO(sean-k-mooney): determine why we do this and"},{"line_number":102,"context_line":"    # either remove or rewrite to stop using tee."},{"line_number":103,"context_line":"    disv6 \u003d (\u0027/proc/sys/net/ipv6/conf/%s/disable_ipv6\u0027 %"},{"line_number":104,"context_line":"             bridge)"},{"line_number":105,"context_line":"    if os.path.exists(disv6):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_d0007503","line":102,"range":{"start_line":101,"start_character":0,"end_line":102,"end_character":49},"updated":"2019-02-21 11:40:11.000000000","message":"https://review.openstack.org/#/c/275293/","commit_id":"6e6e7edcf17ea055978f7360330a45a220e379a2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b5fdb1958031f714d046d3db35ba48deae82d660","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    \"\"\"Disable ipv6 if available for bridge. Must be called from"},{"line_number":99,"context_line":"       privsep context."},{"line_number":100,"context_line":"    \"\"\""},{"line_number":101,"context_line":"    # TODO(sean-k-mooney): determine why we do this and"},{"line_number":102,"context_line":"    # either remove or rewrite to stop using tee."},{"line_number":103,"context_line":"    disv6 \u003d (\u0027/proc/sys/net/ipv6/conf/%s/disable_ipv6\u0027 %"},{"line_number":104,"context_line":"             bridge)"},{"line_number":105,"context_line":"    if os.path.exists(disv6):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_90a66d0f","line":102,"range":{"start_line":101,"start_character":0,"end_line":102,"end_character":49},"in_reply_to":"9fdfeff1_d0007503","updated":"2019-02-21 11:45:51.000000000","message":"yes  i vaguly rememebed it had something to do with security but did not remember of the top of my head.\nill seve that as a commet when i respin thanks","commit_id":"6e6e7edcf17ea055978f7360330a45a220e379a2"},{"author":{"_account_id":25733,"name":"Jan Gutter","email":"github@jangutter.com","username":"jangutter"},"change_message_id":"8a73043116f0be443efb766be559595ae53bfa7a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        # Note(sean-k-mooney): this will detach all ports on"},{"line_number":123,"context_line":"        # the bridge before deleting the bridge."},{"line_number":124,"context_line":"        ip_lib.delete(bridge, check_exit_code\u003d[0, 2, 254])"},{"line_number":125,"context_line":"        # howver it will not set the detached interface down"},{"line_number":126,"context_line":"        # so we set the dev down if dev is not None and exists."},{"line_number":127,"context_line":"        if dev and ip_lib.exists(dev):"},{"line_number":128,"context_line":"            set_interface_state(dev, \"down\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"9fdfeff1_a6fd92b2","line":125,"range":{"start_line":125,"start_character":10,"end_line":125,"end_character":16},"updated":"2019-02-20 14:47:02.000000000","message":"however","commit_id":"6e6e7edcf17ea055978f7360330a45a220e379a2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2951d57d76e4eb6469c59ea99098a7b30441f1e4","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    \"\"\"Disable ipv6 if available for bridge. Must be called from"},{"line_number":99,"context_line":"       privsep context."},{"line_number":100,"context_line":"    \"\"\""},{"line_number":101,"context_line":"    # NOTE(sean-k-mooney): os-vif disables ipv6 to ensure the Bridge"},{"line_number":102,"context_line":"    # does not aquire an ipv6 auto config or link local adress."},{"line_number":103,"context_line":"    # This is required to prevent bug 1302080."},{"line_number":104,"context_line":"    # https://bugs.launchpad.net/neutron/+bug/1302080"},{"line_number":105,"context_line":"    disv6 \u003d (\u0027/proc/sys/net/ipv6/conf/%s/disable_ipv6\u0027 %"},{"line_number":106,"context_line":"             bridge)"},{"line_number":107,"context_line":"    if os.path.exists(disv6):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_a3477777","line":104,"range":{"start_line":101,"start_character":0,"end_line":104,"end_character":53},"updated":"2019-02-25 09:15:09.000000000","message":"++ thanks for the context","commit_id":"5027ce833c6fccaa80b5ddc8544d262c0bf99dbd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2951d57d76e4eb6469c59ea99098a7b30441f1e4","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    # This is required to prevent bug 1302080."},{"line_number":104,"context_line":"    # https://bugs.launchpad.net/neutron/+bug/1302080"},{"line_number":105,"context_line":"    disv6 \u003d (\u0027/proc/sys/net/ipv6/conf/%s/disable_ipv6\u0027 %"},{"line_number":106,"context_line":"             bridge)"},{"line_number":107,"context_line":"    if os.path.exists(disv6):"},{"line_number":108,"context_line":"        with open(disv6, \u0027w\u0027) as f:"},{"line_number":109,"context_line":"            f.write(\u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_a3ebf775","line":106,"range":{"start_line":106,"start_character":13,"end_line":106,"end_character":20},"updated":"2019-02-25 09:15:09.000000000","message":"nit: no need to wrap this","commit_id":"5027ce833c6fccaa80b5ddc8544d262c0bf99dbd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"23de27e8c1e178755d0d8577e351ed85da1c2b0a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    # This is required to prevent bug 1302080."},{"line_number":104,"context_line":"    # https://bugs.launchpad.net/neutron/+bug/1302080"},{"line_number":105,"context_line":"    disv6 \u003d (\u0027/proc/sys/net/ipv6/conf/%s/disable_ipv6\u0027 %"},{"line_number":106,"context_line":"             bridge)"},{"line_number":107,"context_line":"    if os.path.exists(disv6):"},{"line_number":108,"context_line":"        with open(disv6, \u0027w\u0027) as f:"},{"line_number":109,"context_line":"            f.write(\u00271\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_25314aee","line":106,"range":{"start_line":106,"start_character":13,"end_line":106,"end_character":20},"in_reply_to":"9fdfeff1_a3ebf775","updated":"2019-02-25 11:15:52.000000000","message":"yes i might fix this in a follow up but im going to leave it for now.","commit_id":"5027ce833c6fccaa80b5ddc8544d262c0bf99dbd"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"67206c539b80a16d21bcc750ba3f55ad2437ac7e","unresolved":false,"context_lines":[{"line_number":121,"context_line":"@privsep.vif_plug.entrypoint"},{"line_number":122,"context_line":"def delete_bridge(bridge, dev):"},{"line_number":123,"context_line":"    if ip_lib.exists(bridge):"},{"line_number":124,"context_line":"        # Note(sean-k-mooney): this will detach all ports on"},{"line_number":125,"context_line":"        # the bridge before deleting the bridge."},{"line_number":126,"context_line":"        ip_lib.delete(bridge, check_exit_code\u003d[0, 2, 254])"},{"line_number":127,"context_line":"        # howver it will not set the detached interface down"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_488b43bf","line":124,"range":{"start_line":124,"start_character":10,"end_line":124,"end_character":14},"updated":"2019-02-25 12:50:42.000000000","message":"NOTE","commit_id":"5027ce833c6fccaa80b5ddc8544d262c0bf99dbd"}]}
