)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch add a new configuration option to use"},{"line_number":10,"context_line":"per port bridge when hybrid_plug is false."},{"line_number":11,"context_line":"This can be used with ovn to reduce packet loss"},{"line_number":12,"context_line":"during a live migration."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"ovn can only install openflow rules when a port both has"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"2f75f2ae_a0cc2cfd","line":11,"range":{"start_line":11,"start_character":22,"end_line":11,"end_character":25},"updated":"2021-07-01 13:27:39.000000000","message":"nit: OVN (below also)","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":12,"context_line":"during a live migration."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"ovn can only install openflow rules when a port both has"},{"line_number":15,"context_line":"a external ids set and the port has an ofport-id assigned."},{"line_number":16,"context_line":"since the ofport-id is only assinged when a netdev matching"},{"line_number":17,"context_line":"the port name exists connected to the dataplane ovn cannot"},{"line_number":18,"context_line":"install the flows until libvirt create the tap on the destination"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9f4cad63_f3d6776b","line":15,"range":{"start_line":15,"start_character":2,"end_line":15,"end_character":14},"updated":"2021-07-01 13:27:39.000000000","message":"nit: external_ids ? external IDs?","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"ovn can only install openflow rules when a port both has"},{"line_number":15,"context_line":"a external ids set and the port has an ofport-id assigned."},{"line_number":16,"context_line":"since the ofport-id is only assinged when a netdev matching"},{"line_number":17,"context_line":"the port name exists connected to the dataplane ovn cannot"},{"line_number":18,"context_line":"install the flows until libvirt create the tap on the destination"},{"line_number":19,"context_line":"host during a live migration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"72385180_19db3f01","line":16,"range":{"start_line":16,"start_character":28,"end_line":16,"end_character":36},"updated":"2021-07-01 13:27:39.000000000","message":"nit: assigned","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":18,"context_line":"install the flows until libvirt create the tap on the destination"},{"line_number":19,"context_line":"host during a live migration."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"on loaded systems this can result in multiple second of packet loss."},{"line_number":22,"context_line":"To address this we introduce per port bridges which are interconencted"},{"line_number":23,"context_line":"to the integration brige by patch. since the patch port will exist on"},{"line_number":24,"context_line":"the dataplane during pre-livemigration ovn can install the flows"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a73b461_3871e11c","line":21,"range":{"start_line":21,"start_character":0,"end_line":21,"end_character":2},"updated":"2021-07-01 13:27:39.000000000","message":"nit: On","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":19,"context_line":"host during a live migration."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"on loaded systems this can result in multiple second of packet loss."},{"line_number":22,"context_line":"To address this we introduce per port bridges which are interconencted"},{"line_number":23,"context_line":"to the integration brige by patch. since the patch port will exist on"},{"line_number":24,"context_line":"the dataplane during pre-livemigration ovn can install the flows"},{"line_number":25,"context_line":"on the integration brdige before we begin the migration reducing"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"4eb68b12_b7ac2eed","line":22,"range":{"start_line":22,"start_character":56,"end_line":22,"end_character":70},"updated":"2021-07-01 13:27:39.000000000","message":"nit: connected","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"on loaded systems this can result in multiple second of packet loss."},{"line_number":22,"context_line":"To address this we introduce per port bridges which are interconencted"},{"line_number":23,"context_line":"to the integration brige by patch. since the patch port will exist on"},{"line_number":24,"context_line":"the dataplane during pre-livemigration ovn can install the flows"},{"line_number":25,"context_line":"on the integration brdige before we begin the migration reducing"},{"line_number":26,"context_line":"or avoiding packet loss."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"64ba0f5f_2f07608b","line":23,"range":{"start_line":23,"start_character":19,"end_line":23,"end_character":33},"updated":"2021-07-01 13:27:39.000000000","message":"bridge by a patch port. Since","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":21,"context_line":"on loaded systems this can result in multiple second of packet loss."},{"line_number":22,"context_line":"To address this we introduce per port bridges which are interconencted"},{"line_number":23,"context_line":"to the integration brige by patch. since the patch port will exist on"},{"line_number":24,"context_line":"the dataplane during pre-livemigration ovn can install the flows"},{"line_number":25,"context_line":"on the integration brdige before we begin the migration reducing"},{"line_number":26,"context_line":"or avoiding packet loss."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"85bd6bc2_f85ded14","line":24,"range":{"start_line":24,"start_character":25,"end_line":24,"end_character":38},"updated":"2021-07-01 13:27:39.000000000","message":"live migration","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":22,"context_line":"To address this we introduce per port bridges which are interconencted"},{"line_number":23,"context_line":"to the integration brige by patch. since the patch port will exist on"},{"line_number":24,"context_line":"the dataplane during pre-livemigration ovn can install the flows"},{"line_number":25,"context_line":"on the integration brdige before we begin the migration reducing"},{"line_number":26,"context_line":"or avoiding packet loss."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: I0d55ccbef5b585330b5512e67e442b80304a2e73"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"39ed4c08_4cb6ea66","line":25,"range":{"start_line":25,"start_character":19,"end_line":25,"end_character":25},"updated":"2021-07-01 13:27:39.000000000","message":"bridge","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e36780e9e1d89b9bf3acf108946f5b25c3efc3b6","unresolved":true,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"On loaded systems this can result in multiple seconds of packet loss."},{"line_number":22,"context_line":"To address this we introduce per port bridges which are connencted"},{"line_number":23,"context_line":"to the integration brige by a patch port pair. Since the patch port"},{"line_number":24,"context_line":"will exist on the dataplane during pre live migration OVN can install"},{"line_number":25,"context_line":"the flows on the integration bridge before we begin the migration reducing"},{"line_number":26,"context_line":"or avoiding packet loss."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"908ee8c2_2a417c1f","line":23,"range":{"start_line":23,"start_character":19,"end_line":23,"end_character":24},"updated":"2021-07-22 12:54:17.000000000","message":"nit:bridge","commit_id":"b837c1a74f37191692a820711e431a75516a4abf"}],"vif_plug_ovs/ovs.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":249,"context_line":"        # recreates the port. This both undoes the effort to resolve"},{"line_number":250,"context_line":"        # bug #1734320 and intoduces other issues for neutron."},{"line_number":251,"context_line":"        # this comment will be removed when we actully fix #1734320 in"},{"line_number":252,"context_line":"        # all cases."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        # NOTE(hamdyk): As a WA to the above note, one can use"},{"line_number":255,"context_line":"        # VIFPortProfileOpenVSwitch.create_port flag to explicitly"}],"source_content_type":"text/x-python","patch_set":6,"id":"52512c7d_f4a662e9","side":"PARENT","line":252,"updated":"2021-07-01 13:27:39.000000000","message":"tbf, this change probably should be kept separate. It\u0027s not entirely related, right?","commit_id":"e93736711920afe64a850f564dddefbd704975cd"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1894fa44e395e28f46f60b0b09cdd6e7984b6fe0","unresolved":true,"context_lines":[{"line_number":249,"context_line":"        # recreates the port. This both undoes the effort to resolve"},{"line_number":250,"context_line":"        # bug #1734320 and intoduces other issues for neutron."},{"line_number":251,"context_line":"        # this comment will be removed when we actully fix #1734320 in"},{"line_number":252,"context_line":"        # all cases."},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        # NOTE(hamdyk): As a WA to the above note, one can use"},{"line_number":255,"context_line":"        # VIFPortProfileOpenVSwitch.create_port flag to explicitly"}],"source_content_type":"text/x-python","patch_set":6,"id":"b1985b64_e34ae27c","side":"PARENT","line":252,"in_reply_to":"52512c7d_f4a662e9","updated":"2021-07-01 14:28:40.000000000","message":"its not but this comment is nolonger relevent following the os-vif delegation patch\ni can clean it up seperately though if you like","commit_id":"e93736711920afe64a850f564dddefbd704975cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":92,"context_line":"                    \u0027to the ovs bridge. This should only be set to True \u0027"},{"line_number":93,"context_line":"                    \u0027when using the neutron ovs ml2 agent.\u0027),"},{"line_number":94,"context_line":"        cfg.BoolOpt(\u0027per_port_bridge\u0027, default\u003dTrue,"},{"line_number":95,"context_line":"                    help\u003d\u0027Controls if VIF should be plugged into a per port \u0027"},{"line_number":96,"context_line":"                    \u0027bridge. This is experimental and contols the plugging \u0027"},{"line_number":97,"context_line":"                    \u0027behavior when not using hybrid-plug. \u0027"},{"line_number":98,"context_line":"                    \u0027This is only used on linux.\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"db9f3e57_2152866f","line":95,"range":{"start_line":95,"start_character":67,"end_line":95,"end_character":75},"updated":"2021-07-01 13:27:39.000000000","message":"per-port","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":93,"context_line":"                    \u0027when using the neutron ovs ml2 agent.\u0027),"},{"line_number":94,"context_line":"        cfg.BoolOpt(\u0027per_port_bridge\u0027, default\u003dTrue,"},{"line_number":95,"context_line":"                    help\u003d\u0027Controls if VIF should be plugged into a per port \u0027"},{"line_number":96,"context_line":"                    \u0027bridge. This is experimental and contols the plugging \u0027"},{"line_number":97,"context_line":"                    \u0027behavior when not using hybrid-plug. \u0027"},{"line_number":98,"context_line":"                    \u0027This is only used on linux.\u0027)"},{"line_number":99,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff4d98af_f1981973","line":96,"range":{"start_line":96,"start_character":54,"end_line":96,"end_character":61},"updated":"2021-07-01 13:27:39.000000000","message":"controls","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @staticmethod"},{"line_number":106,"context_line":"    def gen_port_name(prefix, vif_id, max_length\u003dNone):"},{"line_number":107,"context_line":"        limit \u003d max_length or OvsPlugin.NIC_NAME_LEN"},{"line_number":108,"context_line":"        return (\"%s%s\" % (prefix, vif_id))[:limit]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ec0ea79_723cbd20","line":107,"range":{"start_line":107,"start_character":30,"end_line":107,"end_character":52},"updated":"2021-07-01 13:27:39.000000000","message":"why not use this directly? It should be in scope, no? A docstring would be lovely too, though by no means necessary.\n\n  def gen_port_name(prefix, vif_id, max_length\u003dNIC_NAME_LEN):\n      \"\"\"Generate an OVS port name.\n\n      :param prefix: The port prefix.\n      :param vif_id: The ID of the underlying VIF.\n      :param max_length: An optional maximum length; defaults to NIC_NAME_LEN\n      :returns: A generated OVS port name.\n      \"\"\"\n\nWe could also just use 14 directly, if you documented why that was chosen in the docstring so it\u0027s not a magic value.","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1894fa44e395e28f46f60b0b09cdd6e7984b6fe0","unresolved":true,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @staticmethod"},{"line_number":106,"context_line":"    def gen_port_name(prefix, vif_id, max_length\u003dNone):"},{"line_number":107,"context_line":"        limit \u003d max_length or OvsPlugin.NIC_NAME_LEN"},{"line_number":108,"context_line":"        return (\"%s%s\" % (prefix, vif_id))[:limit]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"ca602c2f_e4fb827a","line":107,"range":{"start_line":107,"start_character":30,"end_line":107,"end_character":52},"in_reply_to":"5ec0ea79_723cbd20","updated":"2021-07-01 14:28:40.000000000","message":"at the time this function signature is being parsed the the class is not yet finalisased and i cant refer to the constant as  OvsPlugin.NIC_NAME_LEN. as the default value.\n\ni tried to do gen_port_name(prefix, vif_id, max_length\u003dOvsPlugin.NIC_NAME_LEN):\nin my initial version i can try what you suggest but i think that will resultin in an endifeind\natribute errror or similar for NIC_NAME_LEN since i dont think its in  gobal scope wehn the function is being parsed.\n\nthat is why i do it in the funtion body because when the function body is being parsed the\ncalss varables are constructed since the function body is parsed at a later point.\n\n\nits 14 currently because on really old kernel that was the max lenght of a netdev name its currenly 16\nso we need to truncated.\n\nfor patch port we dont need to truncate technially so im just using 64 later since that will include the entire uuid with ease(uuids are 36 in lenght in standard text notation)","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"25879769ae40bce01578d1c53ce97877c24ccae8","unresolved":true,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @staticmethod"},{"line_number":106,"context_line":"    def gen_port_name(prefix, vif_id, max_length\u003dNone):"},{"line_number":107,"context_line":"        limit \u003d max_length or OvsPlugin.NIC_NAME_LEN"},{"line_number":108,"context_line":"        return (\"%s%s\" % (prefix, vif_id))[:limit]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"4ad032f1_6be17b01","line":107,"range":{"start_line":107,"start_character":30,"end_line":107,"end_character":52},"in_reply_to":"ca602c2f_e4fb827a","updated":"2021-07-02 12:21:46.000000000","message":"huh this does work TIL","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":243,"context_line":"        \"\"\"Create a per-VIF OVS bridge and patch pair.\"\"\""},{"line_number":244,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":245,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":246,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":247,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":248,"context_line":"            vif.network.bridge, self._get_vif_datapath_type(vif))"},{"line_number":249,"context_line":"        self.ovsdb.ensure_ovs_bridge("}],"source_content_type":"text/x-python","patch_set":6,"id":"ce4a5485_2d53310c","line":246,"updated":"2021-07-01 13:27:39.000000000","message":"nit: an alias to the integration bridge name would make me happy, i.e.\n\n  int_bridge_name \u003d vif.network.bridge\n  int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1894fa44e395e28f46f60b0b09cdd6e7984b6fe0","unresolved":true,"context_lines":[{"line_number":243,"context_line":"        \"\"\"Create a per-VIF OVS bridge and patch pair.\"\"\""},{"line_number":244,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":245,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":246,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":247,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":248,"context_line":"            vif.network.bridge, self._get_vif_datapath_type(vif))"},{"line_number":249,"context_line":"        self.ovsdb.ensure_ovs_bridge("}],"source_content_type":"text/x-python","patch_set":6,"id":"d414f0cf_d8fe1969","line":246,"in_reply_to":"ce4a5485_2d53310c","updated":"2021-07-01 14:28:40.000000000","message":"sure i an do that it will make the consistent.","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":308,"context_line":"            else:"},{"line_number":309,"context_line":"                self._plug_vif_generic(vif, instance_info)"},{"line_number":310,"context_line":"        elif isinstance(vif, objects.vif.VIFBridge):"},{"line_number":311,"context_line":"            self._plug_bridge(vif, instance_info)"},{"line_number":312,"context_line":"        elif isinstance(vif, objects.vif.VIFVHostUser):"},{"line_number":313,"context_line":"            self._plug_vhostuser(vif, instance_info)"},{"line_number":314,"context_line":"        elif isinstance(vif, objects.vif.VIFHostDevice):"}],"source_content_type":"text/x-python","patch_set":6,"id":"f026aed6_a6fdbf3f","line":311,"updated":"2021-07-01 13:27:39.000000000","message":"This logic isn\u0027t the same. We\u0027ll always attempt to the \u0027_plug_vif_windows\u0027 path on Windows now, whereas previously we tried it for \u0027VIFOpenVSwitch\u0027 and \u0027VIFBridge\u0027 but not \u0027VIFVHostUser\u0027 or \u0027VIFHostDevice\u0027. I suspect the latter two never worked on Windows, but we\u0027re continuing to do the wrong thing if so. Perhaps we could add a check and raise and exception if trying to plug one of these VIF types on Windows?","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"25879769ae40bce01578d1c53ce97877c24ccae8","unresolved":false,"context_lines":[{"line_number":308,"context_line":"            else:"},{"line_number":309,"context_line":"                self._plug_vif_generic(vif, instance_info)"},{"line_number":310,"context_line":"        elif isinstance(vif, objects.vif.VIFBridge):"},{"line_number":311,"context_line":"            self._plug_bridge(vif, instance_info)"},{"line_number":312,"context_line":"        elif isinstance(vif, objects.vif.VIFVHostUser):"},{"line_number":313,"context_line":"            self._plug_vhostuser(vif, instance_info)"},{"line_number":314,"context_line":"        elif isinstance(vif, objects.vif.VIFHostDevice):"}],"source_content_type":"text/x-python","patch_set":6,"id":"15016240_20ec67b5","line":311,"in_reply_to":"dbe4ba78_47d70551","updated":"2021-07-02 12:21:46.000000000","message":"Done","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1894fa44e395e28f46f60b0b09cdd6e7984b6fe0","unresolved":true,"context_lines":[{"line_number":308,"context_line":"            else:"},{"line_number":309,"context_line":"                self._plug_vif_generic(vif, instance_info)"},{"line_number":310,"context_line":"        elif isinstance(vif, objects.vif.VIFBridge):"},{"line_number":311,"context_line":"            self._plug_bridge(vif, instance_info)"},{"line_number":312,"context_line":"        elif isinstance(vif, objects.vif.VIFVHostUser):"},{"line_number":313,"context_line":"            self._plug_vhostuser(vif, instance_info)"},{"line_number":314,"context_line":"        elif isinstance(vif, objects.vif.VIFHostDevice):"}],"source_content_type":"text/x-python","patch_set":6,"id":"dbe4ba78_47d70551","line":311,"in_reply_to":"f026aed6_a6fdbf3f","updated":"2021-07-01 14:28:40.000000000","message":"yes i changed the logic.\non windows we shoudl only ever call self._plug_vif_windows(vif, instance_info)\n\noh you want an excption if you try to use \n\n \u0027VIFVHostUser\u0027 or \u0027VIFHostDevice\u0027 ok i can add a check for that. since hardware offloaded ovs and ovs-dpdk are not supported on windows they were not checked for previously but i can put an explcit check in.","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":342,"context_line":"        \"\"\"Create a per-VIF OVS bridge and patch pair.\"\"\""},{"line_number":343,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":344,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":345,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":346,"context_line":"        self.ovsdb.delete_ovs_vif_port(vif.network.bridge, int_bridge_patch)"},{"line_number":347,"context_line":"        self.ovsdb.delete_ovs_vif_port(port_bridge_name, port_bridge_patch)"},{"line_number":348,"context_line":"        self.ovsdb.delete_ovs_vif_port(port_bridge_name, vif.vif_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"d9fc883b_3d4bb7e0","line":345,"updated":"2021-07-01 13:27:39.000000000","message":"Probably worth noting that because we\u0027re not storing any of these attributes on the VIF, we can never change the naming scheme here or we\u0027ll end up being unable to plug things. A comment in the function would be useful in this regard, perhaps?","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1894fa44e395e28f46f60b0b09cdd6e7984b6fe0","unresolved":true,"context_lines":[{"line_number":342,"context_line":"        \"\"\"Create a per-VIF OVS bridge and patch pair.\"\"\""},{"line_number":343,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":344,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":345,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":346,"context_line":"        self.ovsdb.delete_ovs_vif_port(vif.network.bridge, int_bridge_patch)"},{"line_number":347,"context_line":"        self.ovsdb.delete_ovs_vif_port(port_bridge_name, port_bridge_patch)"},{"line_number":348,"context_line":"        self.ovsdb.delete_ovs_vif_port(port_bridge_name, vif.vif_name)"}],"source_content_type":"text/x-python","patch_set":6,"id":"979082b5_a05574e7","line":345,"in_reply_to":"d9fc883b_3d4bb7e0","updated":"2021-07-01 14:28:40.000000000","message":"good point in that case i shoudl also pull the prefixs out into constatns to reinforce that.\n\nalthough we could change this in os-vif if we also check for the old names for a period of time but ya we likely will not have need to change them.","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":391,"context_line":"            else:"},{"line_number":392,"context_line":"                self._unplug_vif_generic(vif, instance_info)"},{"line_number":393,"context_line":"        elif isinstance(vif, objects.vif.VIFBridge):"},{"line_number":394,"context_line":"            self._unplug_bridge(vif, instance_info)"},{"line_number":395,"context_line":"        elif isinstance(vif, objects.vif.VIFVHostUser):"},{"line_number":396,"context_line":"            self._unplug_vhostuser(vif, instance_info)"},{"line_number":397,"context_line":"        elif isinstance(vif, objects.vif.VIFHostDevice):"}],"source_content_type":"text/x-python","patch_set":6,"id":"c41c3fda_396dd1fb","line":394,"updated":"2021-07-01 13:27:39.000000000","message":"Same comments as above RE: Windows support for \u0027VIFVHostUser\u0027 or \u0027VIFHostDevice\u0027","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"25879769ae40bce01578d1c53ce97877c24ccae8","unresolved":false,"context_lines":[{"line_number":391,"context_line":"            else:"},{"line_number":392,"context_line":"                self._unplug_vif_generic(vif, instance_info)"},{"line_number":393,"context_line":"        elif isinstance(vif, objects.vif.VIFBridge):"},{"line_number":394,"context_line":"            self._unplug_bridge(vif, instance_info)"},{"line_number":395,"context_line":"        elif isinstance(vif, objects.vif.VIFVHostUser):"},{"line_number":396,"context_line":"            self._unplug_vhostuser(vif, instance_info)"},{"line_number":397,"context_line":"        elif isinstance(vif, objects.vif.VIFHostDevice):"}],"source_content_type":"text/x-python","patch_set":6,"id":"935195ca_5605c0a1","line":394,"in_reply_to":"1c64ce80_6932edbd","updated":"2021-07-02 12:21:46.000000000","message":"Done","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1894fa44e395e28f46f60b0b09cdd6e7984b6fe0","unresolved":true,"context_lines":[{"line_number":391,"context_line":"            else:"},{"line_number":392,"context_line":"                self._unplug_vif_generic(vif, instance_info)"},{"line_number":393,"context_line":"        elif isinstance(vif, objects.vif.VIFBridge):"},{"line_number":394,"context_line":"            self._unplug_bridge(vif, instance_info)"},{"line_number":395,"context_line":"        elif isinstance(vif, objects.vif.VIFVHostUser):"},{"line_number":396,"context_line":"            self._unplug_vhostuser(vif, instance_info)"},{"line_number":397,"context_line":"        elif isinstance(vif, objects.vif.VIFHostDevice):"}],"source_content_type":"text/x-python","patch_set":6,"id":"1c64ce80_6932edbd","line":394,"in_reply_to":"c41c3fda_396dd1fb","updated":"2021-07-01 14:28:40.000000000","message":"yep or rather lack of support \nill do somethin like \n\nif type(vif) not in (objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge):\n  raise TypeError\n\ni might use somethign better then type error if we can already retrun somethig better that nova will hanedl but ill have to look at what excptions we have since i want to backport this.\n\nwe have things like WrongPortProfile but i dont know if we have WrongVifObject or similar.","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"572b94aeb0e671833c16e617b816fa6ab543fde1","unresolved":true,"context_lines":[{"line_number":249,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":250,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":251,"context_line":"        int_bridge_name \u003d vif.network.bridge"},{"line_number":252,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":255,"context_line":"            vif.network.bridge, self._get_vif_datapath_type(vif))"}],"source_content_type":"text/x-python","patch_set":10,"id":"541840f1_c29ea749","line":252,"range":{"start_line":252,"start_character":0,"end_line":252,"end_character":7},"updated":"2021-07-02 11:16:23.000000000","message":"My main concern is with the naming. What we want is to create a transparent intermediate bridge between the integration bridge and the VM tap interface.\n\nNeutron will create a Neutron DB port and a logical swith port (LSP) in the OVN NB DB. The LSP will refer to the Neutron DB port using the \"lsp.name\" field.\n\nWithout this patch, when the port is plugged, OVN ML2 pluggin waits for the creation event filtering by name (Neutron ID). Because we want this bridge to be transparent to Neutron (with some exceptions, QoS for example), I would suggest to change this patch name to \"vif.vif_name\".\n\nBTW, in the port.external_ids there should be a reference to the TAP port ID. That will be read by Neutron and used for example in QoS extension.","commit_id":"5945da453636062d8732b3662ad9b4a62c12da6c"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"25879769ae40bce01578d1c53ce97877c24ccae8","unresolved":true,"context_lines":[{"line_number":249,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":250,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":251,"context_line":"        int_bridge_name \u003d vif.network.bridge"},{"line_number":252,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":255,"context_line":"            vif.network.bridge, self._get_vif_datapath_type(vif))"}],"source_content_type":"text/x-python","patch_set":10,"id":"f3f3a28b_3372f01e","line":252,"range":{"start_line":252,"start_character":0,"end_line":252,"end_character":7},"in_reply_to":"541840f1_c29ea749","updated":"2021-07-02 12:21:46.000000000","message":"the patch will have\n\n            external_ids \u003d {\n                \u0027iface-id\u0027: iface_id, \u0027iface-status\u0027: \u0027active\u0027,\n                \u0027attached-mac\u0027: mac, \u0027vm-uuid\u0027: instance_id\n            }\n\ntoday that is the api contract that we have betwen nova/os-vif and neutron\n\nthe prot on the brin will have those feled set and that is the only thing that any neutron backed should be useing to identify the port.\nthe name of the ovs port is technialy not part of the api contract so ovns use of lsp.name is not valid withint that contract.\n\ni am using vif.vif_name for the name of the tap interface that is added to the port bridge.\ni cannot use that for the patch port as ovs uses that name to find thet tap device.\n\nso it would be incorerct to use vif.vif_name for the patch port.\ni could add a new field to the external_ids which contains the the vif.vif_name\n\n            external_ids \u003d {\n                \u0027iface-id\u0027: iface_id, \u0027iface-status\u0027: \u0027active\u0027,\n                \u0027attached-mac\u0027: mac, \u0027vm-uuid\u0027: instance_id,\n                \u0027port-ref\u0027: vif.vif_name\n            }\n\nthen the qos edxtetion can use that to determin what port to apply the qos rules too.\nwoudl that work for you?\n\nthe current design mirror the design of the vlan aware vms feature where\nthe port on the trunk bridge is the tap device an uses vif.vif_name and the patch prot that interfonnct the trunk bridge are prefixed\nhttps://access.redhat.com/solutions/3031501\n\n[root@overcloud-compute-0 ~]# ovs-vsctl show\nfc66647b-7c7b-44b1-9f8f-49d8a01014f1\n    Manager \"ptcp:6640:127.0.0.1\"\n        is_connected: true\n    Bridge br-ex\n        Controller \"tcp:127.0.0.1:6633\"\n            is_connected: true\n        fail_mode: secure\n        Port \"vlan903\"\n            tag: 903\n            Interface \"vlan903\"\n                type: internal\n        Port \"vlan902\"\n            tag: 902\n            Interface \"vlan902\"\n                type: internal\n        Port \"vlan901\"\n            tag: 901\n            Interface \"vlan901\"\n                type: internal\n        Port \"eth1\"\n            Interface \"eth1\"\n        Port br-ex\n            Interface br-ex\n                type: internal\n        Port phy-br-ex\n            Interface phy-br-ex\n                type: patch\n                options: {peer\u003dint-br-ex}\n    Bridge br-int\n        Controller \"tcp:127.0.0.1:6633\"\n            is_connected: true\n        fail_mode: secure\n        Port br-int\n            Interface br-int\n                type: internal\n        Port \"spi-afbdc655-0f\"\n            tag: 9\n            Interface \"spi-afbdc655-0f\"\n                type: patch\n                options: {peer\u003d\"spt-afbdc655-0f\"}\n        Port patch-tun\n            Interface patch-tun\n                type: patch\n                options: {peer\u003dpatch-int}\n        Port \"tpi-5285a833-dc\"\n            tag: 1\n            Interface \"tpi-5285a833-dc\"\n                type: patch\n                options: {peer\u003d\"tpt-5285a833-dc\"}\n        Port \"spi-0e86fe19-23\"\n            tag: 8\n            Interface \"spi-0e86fe19-23\"\n                type: patch\n                options: {peer\u003d\"spt-0e86fe19-23\"}\n        Port int-br-ex\n            Interface int-br-ex\n                type: patch\n                options: {peer\u003dphy-br-ex}\n    Bridge br-tun\n        Controller \"tcp:127.0.0.1:6633\"\n            is_connected: true\n        fail_mode: secure\n        Port patch-int\n            Interface patch-int\n                type: patch\n                options: {peer\u003dpatch-tun}\n        Port br-tun\n            Interface br-tun\n                type: internal\n        Port \"vxlan-ac100004\"\n            Interface \"vxlan-ac100004\"\n                type: vxlan\n                options: {df_default\u003d\"true\", in_key\u003dflow, local_ip\u003d\"172.16.0.6\", out_key\u003dflow, remote_ip\u003d\"172.16.0.4\"}\n        Port \"vxlan-ac10000c\"\n            Interface \"vxlan-ac10000c\"\n                type: vxlan\n                options: {df_default\u003d\"true\", in_key\u003dflow, local_ip\u003d\"172.16.0.6\", out_key\u003dflow, remote_ip\u003d\"172.16.0.12\"}\n    Bridge \"tbr-67f24c11-a\"\n        Port \"spt-afbdc655-0f\"\n            tag: 200\n            Interface \"spt-afbdc655-0f\"\n                type: patch\n                options: {peer\u003d\"spi-afbdc655-0f\"}\n        Port \"tbr-67f24c11-a\"\n            Interface \"tbr-67f24c11-a\"\n                type: internal\n        Port \"tpt-5285a833-dc\"\n            Interface \"tpt-5285a833-dc\"\n                type: patch\n                options: {peer\u003d\"tpi-5285a833-dc\"}\n        Port \"spt-0e86fe19-23\"\n            tag: 100\n            Interface \"spt-0e86fe19-23\"\n                type: patch\n                options: {peer\u003d\"spi-0e86fe19-23\"}\n        Port \"qvo5285a833-dc\"\n            Interface \"qvo5285a833-dc\"\n    ovs_version: \"2.6.1\"\n\n\n\nto name the patch port with a name passed form neutorn i woudl need to extend the os vif obejcts to accpet another paramter for the tap device and modify nova to do that. this would effectivly prevent backporting this change.","commit_id":"5945da453636062d8732b3662ad9b4a62c12da6c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c42ac7016bf0327e4f7382ff3a20be1b8c1b41db","unresolved":true,"context_lines":[{"line_number":249,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":250,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":251,"context_line":"        int_bridge_name \u003d vif.network.bridge"},{"line_number":252,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":255,"context_line":"            vif.network.bridge, self._get_vif_datapath_type(vif))"}],"source_content_type":"text/x-python","patch_set":10,"id":"cd4db68a_68f0e5ee","line":252,"range":{"start_line":252,"start_character":0,"end_line":252,"end_character":7},"in_reply_to":"f3f3a28b_3372f01e","updated":"2021-07-06 08:17:46.000000000","message":"Right, I see in [1] you are assigning the iface-id to the patch port needed for ovn-controller to make the link between LSP and OVS port.\n\nI\u0027ve tested this patch with nova one and it\u0027s working: before the VM starts, OVN detects the port with the iface-id and Neutron receives the port UP event, that triggers the processing of the (LSP, Neutron DB) port.\n\nThat will also work with the current QoS implementation: we don\u0027t assign the queues to a port but using a \"match\" to a logical flow. I need to test it but I think we don\u0027t need to change anything there.\n\n[1]https://review.opendev.org/c/openstack/os-vif/+/798055/10/vif_plug_ovs/ovsdb/ovsdb_lib.py#122","commit_id":"5945da453636062d8732b3662ad9b4a62c12da6c"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":245,"context_line":"        \"\"\"Create a per-VIF OVS bridge and patch pair.\"\"\""},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        # NOTE(sean-k-mooney): the port name prefix should not be"},{"line_number":248,"context_line":"        # changed to avoid loosing ports on upgrade."},{"line_number":249,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":250,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":251,"context_line":"        int_bridge_name \u003d vif.network.bridge"}],"source_content_type":"text/x-python","patch_set":11,"id":"dc627235_a78277dd","line":248,"range":{"start_line":248,"start_character":27,"end_line":248,"end_character":34},"updated":"2021-07-06 17:26:30.000000000","message":"losing","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":false,"context_lines":[{"line_number":245,"context_line":"        \"\"\"Create a per-VIF OVS bridge and patch pair.\"\"\""},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        # NOTE(sean-k-mooney): the port name prefix should not be"},{"line_number":248,"context_line":"        # changed to avoid loosing ports on upgrade."},{"line_number":249,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":250,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":251,"context_line":"        int_bridge_name \u003d vif.network.bridge"}],"source_content_type":"text/x-python","patch_set":11,"id":"505d5d6b_b31c0c0e","line":248,"range":{"start_line":248,"start_character":27,"end_line":248,"end_character":34},"in_reply_to":"dc627235_a78277dd","updated":"2021-07-14 10:27:09.000000000","message":"Done","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":250,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":251,"context_line":"        int_bridge_name \u003d vif.network.bridge"},{"line_number":252,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":255,"context_line":"            vif.network.bridge, self._get_vif_datapath_type(vif))"},{"line_number":256,"context_line":"        self.ovsdb.ensure_ovs_bridge("}],"source_content_type":"text/x-python","patch_set":11,"id":"ec04fa2e_f6648aa9","line":253,"updated":"2021-07-06 17:26:30.000000000","message":"Can we get a (debug-level?) log for this? You have one for the patch port pair but arguably it would be more useful here. We can see the ovs-vsctl commands if we wanted more details","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":251,"context_line":"        int_bridge_name \u003d vif.network.bridge"},{"line_number":252,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":255,"context_line":"            vif.network.bridge, self._get_vif_datapath_type(vif))"},{"line_number":256,"context_line":"        self.ovsdb.ensure_ovs_bridge("}],"source_content_type":"text/x-python","patch_set":11,"id":"e0a9a3cb_f1c9e750","line":253,"in_reply_to":"cf10be7e_f2f90ce6","updated":"2021-07-14 10:27:09.000000000","message":"Ack","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2f31e5ea7f691fb946b135c7b076fc9bda585502","unresolved":true,"context_lines":[{"line_number":250,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":251,"context_line":"        int_bridge_name \u003d vif.network.bridge"},{"line_number":252,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":255,"context_line":"            vif.network.bridge, self._get_vif_datapath_type(vif))"},{"line_number":256,"context_line":"        self.ovsdb.ensure_ovs_bridge("}],"source_content_type":"text/x-python","patch_set":11,"id":"cf10be7e_f2f90ce6","line":253,"in_reply_to":"ec04fa2e_f6648aa9","updated":"2021-07-06 17:40:34.000000000","message":"yes ill add one.\n\nthe vsctl command are only in the log when not using the native driver.\nwe currently are using the deprecated one to workaroud a gate issue so\nwhen that is reverted having the debug logs would be useful","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":252,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":255,"context_line":"            vif.network.bridge, self._get_vif_datapath_type(vif))"},{"line_number":256,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":257,"context_line":"            port_bridge_name, self._get_vif_datapath_type(vif))"},{"line_number":258,"context_line":"        self._create_vif_port("}],"source_content_type":"text/x-python","patch_set":11,"id":"7668e1c8_60c49ff6","line":255,"range":{"start_line":255,"start_character":12,"end_line":255,"end_character":30},"updated":"2021-07-06 17:26:30.000000000","message":"whoops, should be \u0027int_bridge_name\u0027","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2f31e5ea7f691fb946b135c7b076fc9bda585502","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":255,"context_line":"            vif.network.bridge, self._get_vif_datapath_type(vif))"},{"line_number":256,"context_line":"        self.ovsdb.ensure_ovs_bridge("},{"line_number":257,"context_line":"            port_bridge_name, self._get_vif_datapath_type(vif))"},{"line_number":258,"context_line":"        self._create_vif_port("}],"source_content_type":"text/x-python","patch_set":11,"id":"f3007a99_ff436060","line":255,"range":{"start_line":255,"start_character":12,"end_line":255,"end_character":30},"in_reply_to":"7668e1c8_60c49ff6","updated":"2021-07-06 17:40:34.000000000","message":"Ack","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":327,"context_line":"        if sys.platform \u003d\u003d constants.PLATFORM_WIN32:"},{"line_number":328,"context_line":"            if type(vif) not in ("},{"line_number":329,"context_line":"                objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge"},{"line_number":330,"context_line":"            ):"},{"line_number":331,"context_line":"                raise osv_exception.PlugException("},{"line_number":332,"context_line":"                    vif\u003dvif, err\u003d\"This vif type is not supported on windows.\")"},{"line_number":333,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"25ac7b22_4882aa83","line":330,"updated":"2021-07-06 17:26:30.000000000","message":"nit:\n\n  if not isinstance(\n      vif, (objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge),\n  ):\n\nThis will also handle future subclasses of these which I think we\u0027d want to support?","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2f31e5ea7f691fb946b135c7b076fc9bda585502","unresolved":true,"context_lines":[{"line_number":327,"context_line":"        if sys.platform \u003d\u003d constants.PLATFORM_WIN32:"},{"line_number":328,"context_line":"            if type(vif) not in ("},{"line_number":329,"context_line":"                objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge"},{"line_number":330,"context_line":"            ):"},{"line_number":331,"context_line":"                raise osv_exception.PlugException("},{"line_number":332,"context_line":"                    vif\u003dvif, err\u003d\"This vif type is not supported on windows.\")"},{"line_number":333,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"4a05e464_f738a909","line":330,"in_reply_to":"25ac7b22_4882aa83","updated":"2021-07-06 17:40:34.000000000","message":"we do not allow plugins to add objects or subclass them so addign a new subclass woudl required a change to os-vif. so i actully used type to avoid that.","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        if sys.platform \u003d\u003d constants.PLATFORM_WIN32:"},{"line_number":328,"context_line":"            if type(vif) not in ("},{"line_number":329,"context_line":"                objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge"},{"line_number":330,"context_line":"            ):"},{"line_number":331,"context_line":"                raise osv_exception.PlugException("},{"line_number":332,"context_line":"                    vif\u003dvif, err\u003d\"This vif type is not supported on windows.\")"},{"line_number":333,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"6c8c4720_6fae639d","line":330,"in_reply_to":"4a05e464_f738a909","updated":"2021-07-14 10:27:09.000000000","message":"Ack","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":329,"context_line":"                objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge"},{"line_number":330,"context_line":"            ):"},{"line_number":331,"context_line":"                raise osv_exception.PlugException("},{"line_number":332,"context_line":"                    vif\u003dvif, err\u003d\"This vif type is not supported on windows.\")"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"            self._plug_vif_windows(vif, instance_info)"},{"line_number":335,"context_line":"        elif isinstance(vif, objects.vif.VIFOpenVSwitch):"}],"source_content_type":"text/x-python","patch_set":11,"id":"118fe40e_070e13b7","line":332,"range":{"start_line":332,"start_character":68,"end_line":332,"end_character":76},"updated":"2021-07-06 17:26:30.000000000","message":"Windows","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":false,"context_lines":[{"line_number":329,"context_line":"                objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge"},{"line_number":330,"context_line":"            ):"},{"line_number":331,"context_line":"                raise osv_exception.PlugException("},{"line_number":332,"context_line":"                    vif\u003dvif, err\u003d\"This vif type is not supported on windows.\")"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"            self._plug_vif_windows(vif, instance_info)"},{"line_number":335,"context_line":"        elif isinstance(vif, objects.vif.VIFOpenVSwitch):"}],"source_content_type":"text/x-python","patch_set":11,"id":"ab727e5c_7926c3c1","line":332,"range":{"start_line":332,"start_character":68,"end_line":332,"end_character":76},"in_reply_to":"118fe40e_070e13b7","updated":"2021-07-14 10:27:09.000000000","message":"Done","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":376,"context_line":"    def _unplug_port_bridge(self, vif, instance_info):"},{"line_number":377,"context_line":"        \"\"\"Create a per-VIF OVS bridge and patch pair.\"\"\""},{"line_number":378,"context_line":"        # NOTE(sean-k-mooney): the port name prefix should not be"},{"line_number":379,"context_line":"        # changed to avoid loosing ports on upgrade."},{"line_number":380,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":381,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":382,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9b98f7eb_5eddf8fe","line":379,"range":{"start_line":379,"start_character":27,"end_line":379,"end_character":34},"updated":"2021-07-06 17:26:30.000000000","message":"losing","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":true,"context_lines":[{"line_number":376,"context_line":"    def _unplug_port_bridge(self, vif, instance_info):"},{"line_number":377,"context_line":"        \"\"\"Create a per-VIF OVS bridge and patch pair.\"\"\""},{"line_number":378,"context_line":"        # NOTE(sean-k-mooney): the port name prefix should not be"},{"line_number":379,"context_line":"        # changed to avoid loosing ports on upgrade."},{"line_number":380,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":381,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":382,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"}],"source_content_type":"text/x-python","patch_set":11,"id":"75fb53b8_c7339676","line":379,"range":{"start_line":379,"start_character":27,"end_line":379,"end_character":34},"in_reply_to":"9b98f7eb_5eddf8fe","updated":"2021-07-14 10:27:09.000000000","message":"Still wrong","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":423,"context_line":"        if sys.platform \u003d\u003d constants.PLATFORM_WIN32:"},{"line_number":424,"context_line":"            if type(vif) not in ("},{"line_number":425,"context_line":"                objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge"},{"line_number":426,"context_line":"            ):"},{"line_number":427,"context_line":"                raise osv_exception.UnplugException("},{"line_number":428,"context_line":"                    vif\u003dvif, err\u003d\"This vif type is not supported on windows.\")"},{"line_number":429,"context_line":"            self._unplug_vif_windows(vif, instance_info)"}],"source_content_type":"text/x-python","patch_set":11,"id":"e9fe65b3_f1b3c8b7","line":426,"updated":"2021-07-06 17:26:30.000000000","message":"As above","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":false,"context_lines":[{"line_number":423,"context_line":"        if sys.platform \u003d\u003d constants.PLATFORM_WIN32:"},{"line_number":424,"context_line":"            if type(vif) not in ("},{"line_number":425,"context_line":"                objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge"},{"line_number":426,"context_line":"            ):"},{"line_number":427,"context_line":"                raise osv_exception.UnplugException("},{"line_number":428,"context_line":"                    vif\u003dvif, err\u003d\"This vif type is not supported on windows.\")"},{"line_number":429,"context_line":"            self._unplug_vif_windows(vif, instance_info)"}],"source_content_type":"text/x-python","patch_set":11,"id":"375fb98f_2bee3093","line":426,"in_reply_to":"e9fe65b3_f1b3c8b7","updated":"2021-07-14 10:27:09.000000000","message":"Not doing this","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":425,"context_line":"                objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge"},{"line_number":426,"context_line":"            ):"},{"line_number":427,"context_line":"                raise osv_exception.UnplugException("},{"line_number":428,"context_line":"                    vif\u003dvif, err\u003d\"This vif type is not supported on windows.\")"},{"line_number":429,"context_line":"            self._unplug_vif_windows(vif, instance_info)"},{"line_number":430,"context_line":"        elif isinstance(vif, objects.vif.VIFOpenVSwitch):"},{"line_number":431,"context_line":"            if self.config.per_port_bridge:"}],"source_content_type":"text/x-python","patch_set":11,"id":"2fbbc111_ff0e67dc","line":428,"range":{"start_line":428,"start_character":68,"end_line":428,"end_character":76},"updated":"2021-07-06 17:26:30.000000000","message":"Windows","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":true,"context_lines":[{"line_number":425,"context_line":"                objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge"},{"line_number":426,"context_line":"            ):"},{"line_number":427,"context_line":"                raise osv_exception.UnplugException("},{"line_number":428,"context_line":"                    vif\u003dvif, err\u003d\"This vif type is not supported on windows.\")"},{"line_number":429,"context_line":"            self._unplug_vif_windows(vif, instance_info)"},{"line_number":430,"context_line":"        elif isinstance(vif, objects.vif.VIFOpenVSwitch):"},{"line_number":431,"context_line":"            if self.config.per_port_bridge:"}],"source_content_type":"text/x-python","patch_set":11,"id":"e031d1b8_29afc682","line":428,"range":{"start_line":428,"start_character":68,"end_line":428,"end_character":76},"in_reply_to":"2fbbc111_ff0e67dc","updated":"2021-07-14 10:27:09.000000000","message":"Still wrong","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":true,"context_lines":[{"line_number":385,"context_line":"    def _unplug_port_bridge(self, vif, instance_info):"},{"line_number":386,"context_line":"        \"\"\"Create a per-VIF OVS bridge and patch pair.\"\"\""},{"line_number":387,"context_line":"        # NOTE(sean-k-mooney): the port name prefix should not be"},{"line_number":388,"context_line":"        # changed to avoid loosing ports on upgrade."},{"line_number":389,"context_line":"        port_bridge_name \u003d self.gen_port_name(\u0027pb\u0027, vif.id)"},{"line_number":390,"context_line":"        port_bridge_patch \u003d self.gen_port_name(\u0027pbp\u0027, vif.id, max_length\u003d64)"},{"line_number":391,"context_line":"        int_bridge_patch \u003d self.gen_port_name(\u0027ibp\u0027, vif.id, max_length\u003d64)"}],"source_content_type":"text/x-python","patch_set":13,"id":"453b8354_dc9cc086","line":388,"range":{"start_line":388,"start_character":27,"end_line":388,"end_character":34},"updated":"2021-07-14 10:27:09.000000000","message":"losing","commit_id":"b837c1a74f37191692a820711e431a75516a4abf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":true,"context_lines":[{"line_number":434,"context_line":"                objects.vif.VIFOpenVSwitch, objects.vif.VIFBridge"},{"line_number":435,"context_line":"            ):"},{"line_number":436,"context_line":"                raise osv_exception.UnplugException("},{"line_number":437,"context_line":"                    vif\u003dvif, err\u003d\"This vif type is not supported on windows.\")"},{"line_number":438,"context_line":"            self._unplug_vif_windows(vif, instance_info)"},{"line_number":439,"context_line":"        elif isinstance(vif, objects.vif.VIFOpenVSwitch):"},{"line_number":440,"context_line":"            if self.config.per_port_bridge:"}],"source_content_type":"text/x-python","patch_set":13,"id":"f1948ed1_78776c2d","line":437,"range":{"start_line":437,"start_character":68,"end_line":437,"end_character":75},"updated":"2021-07-14 10:27:09.000000000","message":"Windows","commit_id":"b837c1a74f37191692a820711e431a75516a4abf"}],"vif_plug_ovs/ovsdb/ovsdb_lib.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        return self.ovsdb.add_br(bridge, may_exist\u003dTrue,"},{"line_number":72,"context_line":"                                 datapath_type\u003ddatapath_type).execute()"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def delete_ovs_bridge(self, bridge):"},{"line_number":75,"context_line":"        return self.ovsdb.del_br(bridge).execute()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def create_patch_port_pair("}],"source_content_type":"text/x-python","patch_set":6,"id":"17bf7b8a_0085f710","line":74,"updated":"2021-07-01 13:27:39.000000000","message":"A docstring for this would be appreciated","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"25879769ae40bce01578d1c53ce97877c24ccae8","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        return self.ovsdb.add_br(bridge, may_exist\u003dTrue,"},{"line_number":72,"context_line":"                                 datapath_type\u003ddatapath_type).execute()"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def delete_ovs_bridge(self, bridge):"},{"line_number":75,"context_line":"        return self.ovsdb.del_br(bridge).execute()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def create_patch_port_pair("}],"source_content_type":"text/x-python","patch_set":6,"id":"26b7270f_b275b3be","line":74,"in_reply_to":"0b1463f0_27e37497","updated":"2021-07-02 12:21:46.000000000","message":"we need to get your mypy change merged too so that we can use types","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1894fa44e395e28f46f60b0b09cdd6e7984b6fe0","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        return self.ovsdb.add_br(bridge, may_exist\u003dTrue,"},{"line_number":72,"context_line":"                                 datapath_type\u003ddatapath_type).execute()"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def delete_ovs_bridge(self, bridge):"},{"line_number":75,"context_line":"        return self.ovsdb.del_br(bridge).execute()"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def create_patch_port_pair("}],"source_content_type":"text/x-python","patch_set":6,"id":"0b1463f0_27e37497","line":74,"in_reply_to":"17bf7b8a_0085f710","updated":"2021-07-01 14:28:40.000000000","message":"Ack","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":77,"context_line":"    def create_patch_port_pair("},{"line_number":78,"context_line":"        self, port_bridge, port_bridge_port, int_bridge, int_bridge_port,"},{"line_number":79,"context_line":"        iface_id, mac, instance_id, tag\u003dNone"},{"line_number":80,"context_line":"    ):"},{"line_number":81,"context_line":"        LOG.debug("},{"line_number":82,"context_line":"            \u0027creating patch port pair \\n\u0027"},{"line_number":83,"context_line":"            f\u0027{port_bridge}:({port_bridge_port}) -\u003e \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ac4e07a5_71c8f7a1","line":80,"updated":"2021-07-01 13:27:39.000000000","message":"Ditto","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1894fa44e395e28f46f60b0b09cdd6e7984b6fe0","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    def create_patch_port_pair("},{"line_number":78,"context_line":"        self, port_bridge, port_bridge_port, int_bridge, int_bridge_port,"},{"line_number":79,"context_line":"        iface_id, mac, instance_id, tag\u003dNone"},{"line_number":80,"context_line":"    ):"},{"line_number":81,"context_line":"        LOG.debug("},{"line_number":82,"context_line":"            \u0027creating patch port pair \\n\u0027"},{"line_number":83,"context_line":"            f\u0027{port_bridge}:({port_bridge_port}) -\u003e \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"e641b7cd_fc47a7f0","line":80,"in_reply_to":"ac4e07a5_71c8f7a1","updated":"2021-07-01 14:28:40.000000000","message":"Ack","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":141,"context_line":"                        \u0027attached-mac\u0027: mac,"},{"line_number":142,"context_line":"                        \u0027vm-uuid\u0027: instance_id}"},{"line_number":143,"context_line":"        col_values \u003d [(\u0027external_ids\u0027, external_ids)] if set_ids else []"},{"line_number":144,"context_line":"        if interface_type is not None:"},{"line_number":145,"context_line":"            col_values.append((\u0027type\u0027, interface_type))"},{"line_number":146,"context_line":"        if vhost_server_path:"},{"line_number":147,"context_line":"            col_values.append((\u0027options\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"bccc07df_ac35ed24","line":144,"updated":"2021-07-01 13:27:39.000000000","message":"Why did this change? Can interface_type ever be an empty string? You didn\u0027t change the other false\u0027y checks below","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"25879769ae40bce01578d1c53ce97877c24ccae8","unresolved":false,"context_lines":[{"line_number":141,"context_line":"                        \u0027attached-mac\u0027: mac,"},{"line_number":142,"context_line":"                        \u0027vm-uuid\u0027: instance_id}"},{"line_number":143,"context_line":"        col_values \u003d [(\u0027external_ids\u0027, external_ids)] if set_ids else []"},{"line_number":144,"context_line":"        if interface_type is not None:"},{"line_number":145,"context_line":"            col_values.append((\u0027type\u0027, interface_type))"},{"line_number":146,"context_line":"        if vhost_server_path:"},{"line_number":147,"context_line":"            col_values.append((\u0027options\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"47b33141_acc9278d","line":144,"in_reply_to":"1e331848_18de847f","updated":"2021-07-02 12:21:46.000000000","message":"Done","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1894fa44e395e28f46f60b0b09cdd6e7984b6fe0","unresolved":true,"context_lines":[{"line_number":141,"context_line":"                        \u0027attached-mac\u0027: mac,"},{"line_number":142,"context_line":"                        \u0027vm-uuid\u0027: instance_id}"},{"line_number":143,"context_line":"        col_values \u003d [(\u0027external_ids\u0027, external_ids)] if set_ids else []"},{"line_number":144,"context_line":"        if interface_type is not None:"},{"line_number":145,"context_line":"            col_values.append((\u0027type\u0027, interface_type))"},{"line_number":146,"context_line":"        if vhost_server_path:"},{"line_number":147,"context_line":"            col_values.append((\u0027options\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1e331848_18de847f","line":144,"in_reply_to":"bccc07df_ac35ed24","updated":"2021-07-01 14:28:40.000000000","message":"am i orginally this was the cause of the erro i was seeing but what actully fixed it is link 159\n\ni was seeing \"... -- set interface $dev \" and then no tfiled or value which broke the port cration.\n\nline 159 is the real fix so i can revert this.","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    def delete_ovs_bridge(self, bridge):"},{"line_number":75,"context_line":"        \"\"\"Delete ovs brdige by name"},{"line_number":76,"context_line":"        :param bridge: bridge name as a string"},{"line_number":77,"context_line":"        .. note:: Do Not call with br-int !!!"},{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":"        return self.ovsdb.del_br(bridge).execute()"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fa426415_d16090f0","line":77,"updated":"2021-07-06 17:26:30.000000000","message":"nit: newlines between each of these would be appreciated, also would it make sense to raise an exception if bridge \u003d\u003d br-int just to be safe?","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    def delete_ovs_bridge(self, bridge):"},{"line_number":75,"context_line":"        \"\"\"Delete ovs brdige by name"},{"line_number":76,"context_line":"        :param bridge: bridge name as a string"},{"line_number":77,"context_line":"        .. note:: Do Not call with br-int !!!"},{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":"        return self.ovsdb.del_br(bridge).execute()"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"56a0f42f_11505234","line":77,"in_reply_to":"b9775fba_fd13ffd9","updated":"2021-07-14 10:27:09.000000000","message":"Ack","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2f31e5ea7f691fb946b135c7b076fc9bda585502","unresolved":true,"context_lines":[{"line_number":74,"context_line":"    def delete_ovs_bridge(self, bridge):"},{"line_number":75,"context_line":"        \"\"\"Delete ovs brdige by name"},{"line_number":76,"context_line":"        :param bridge: bridge name as a string"},{"line_number":77,"context_line":"        .. note:: Do Not call with br-int !!!"},{"line_number":78,"context_line":"        \"\"\""},{"line_number":79,"context_line":"        return self.ovsdb.del_br(bridge).execute()"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"b9775fba_fd13ffd9","line":77,"in_reply_to":"fa426415_d16090f0","updated":"2021-07-06 17:40:34.000000000","message":"we could but i plan on adding a followup patch that will do something like that.\n\ntl;dr to adress https://bugs.launchpad.net/os-vif/+bug/1914886 i need to add a config option for the name of the integration bridge which will default to br-int and then i need to delete the trunk bridges when we unplug.\n\ni cant actully assume in code that its called br-int since its name is configurable in neutron ovs agent config.\n\nbr-int is just the default and no one changes it.\n\nill add a todo to that effect when i add the spaces.","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        :param port_bridge: the source bridge name for the patch port pair."},{"line_number":88,"context_line":"        :param port_bridge_port: the name of the patch port on the"},{"line_number":89,"context_line":"                                 source bridge."},{"line_number":90,"context_line":"        :param int_bridge: the target bridge name, typically br-int."},{"line_number":91,"context_line":"        :param int_bridge_port; the name of the patch port on the"},{"line_number":92,"context_line":"                                target bridge."}],"source_content_type":"text/x-python","patch_set":11,"id":"a314c3c6_00024fe3","line":89,"range":{"start_line":89,"start_character":12,"end_line":89,"end_character":33},"updated":"2021-07-06 17:26:30.000000000","message":"nit","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2f31e5ea7f691fb946b135c7b076fc9bda585502","unresolved":true,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        :param port_bridge: the source bridge name for the patch port pair."},{"line_number":88,"context_line":"        :param port_bridge_port: the name of the patch port on the"},{"line_number":89,"context_line":"                                 source bridge."},{"line_number":90,"context_line":"        :param int_bridge: the target bridge name, typically br-int."},{"line_number":91,"context_line":"        :param int_bridge_port; the name of the patch port on the"},{"line_number":92,"context_line":"                                target bridge."}],"source_content_type":"text/x-python","patch_set":11,"id":"d7b3f0e7_0944cd3f","line":89,"range":{"start_line":89,"start_character":12,"end_line":89,"end_character":33},"in_reply_to":"a314c3c6_00024fe3","updated":"2021-07-06 17:40:34.000000000","message":"i was not sure if theyse were ment to line up or not\nbut cool ill drop this","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        :param port_bridge: the source bridge name for the patch port pair."},{"line_number":88,"context_line":"        :param port_bridge_port: the name of the patch port on the"},{"line_number":89,"context_line":"                                 source bridge."},{"line_number":90,"context_line":"        :param int_bridge: the target bridge name, typically br-int."},{"line_number":91,"context_line":"        :param int_bridge_port; the name of the patch port on the"},{"line_number":92,"context_line":"                                target bridge."}],"source_content_type":"text/x-python","patch_set":11,"id":"d3d99796_8d8c591a","line":89,"range":{"start_line":89,"start_character":12,"end_line":89,"end_character":33},"in_reply_to":"d7b3f0e7_0944cd3f","updated":"2021-07-14 10:27:09.000000000","message":"Ack","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":88,"context_line":"        :param port_bridge_port: the name of the patch port on the"},{"line_number":89,"context_line":"                                 source bridge."},{"line_number":90,"context_line":"        :param int_bridge: the target bridge name, typically br-int."},{"line_number":91,"context_line":"        :param int_bridge_port; the name of the patch port on the"},{"line_number":92,"context_line":"                                target bridge."},{"line_number":93,"context_line":"        :param iface_id: neutron port ID."},{"line_number":94,"context_line":"        :param mac: port MAC."}],"source_content_type":"text/x-python","patch_set":11,"id":"87ca1292_c6836b25","line":91,"range":{"start_line":91,"start_character":30,"end_line":91,"end_character":31},"updated":"2021-07-06 17:26:30.000000000","message":"nit:\n\n  :","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        :param port_bridge_port: the name of the patch port on the"},{"line_number":89,"context_line":"                                 source bridge."},{"line_number":90,"context_line":"        :param int_bridge: the target bridge name, typically br-int."},{"line_number":91,"context_line":"        :param int_bridge_port; the name of the patch port on the"},{"line_number":92,"context_line":"                                target bridge."},{"line_number":93,"context_line":"        :param iface_id: neutron port ID."},{"line_number":94,"context_line":"        :param mac: port MAC."}],"source_content_type":"text/x-python","patch_set":11,"id":"fc30bb64_26e02da1","line":91,"range":{"start_line":91,"start_character":30,"end_line":91,"end_character":31},"in_reply_to":"87ca1292_c6836b25","updated":"2021-07-14 10:27:09.000000000","message":"Ack","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":89,"context_line":"                                 source bridge."},{"line_number":90,"context_line":"        :param int_bridge: the target bridge name, typically br-int."},{"line_number":91,"context_line":"        :param int_bridge_port; the name of the patch port on the"},{"line_number":92,"context_line":"                                target bridge."},{"line_number":93,"context_line":"        :param iface_id: neutron port ID."},{"line_number":94,"context_line":"        :param mac: port MAC."},{"line_number":95,"context_line":"        :param instance_id: instance uuid."}],"source_content_type":"text/x-python","patch_set":11,"id":"3ae58fdc_4994b407","line":92,"range":{"start_line":92,"start_character":12,"end_line":92,"end_character":32},"updated":"2021-07-06 17:26:30.000000000","message":"nit","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                                 source bridge."},{"line_number":90,"context_line":"        :param int_bridge: the target bridge name, typically br-int."},{"line_number":91,"context_line":"        :param int_bridge_port; the name of the patch port on the"},{"line_number":92,"context_line":"                                target bridge."},{"line_number":93,"context_line":"        :param iface_id: neutron port ID."},{"line_number":94,"context_line":"        :param mac: port MAC."},{"line_number":95,"context_line":"        :param instance_id: instance uuid."}],"source_content_type":"text/x-python","patch_set":11,"id":"221e5ca2_a0e4aec4","line":92,"range":{"start_line":92,"start_character":12,"end_line":92,"end_character":32},"in_reply_to":"3ae58fdc_4994b407","updated":"2021-07-14 10:27:09.000000000","message":"Ack","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":101,"context_line":"            \u0027creating patch port pair \\n\u0027"},{"line_number":102,"context_line":"            f\u0027{port_bridge}:({port_bridge_port}) -\u003e \u0027"},{"line_number":103,"context_line":"            f\u0027{int_bridge}:({int_bridge_port})\u0027"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":"        with self.ovsdb.transaction() as txn:"},{"line_number":106,"context_line":"            # create integration bridge patch peer"},{"line_number":107,"context_line":"            external_ids \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"df86848b_71c1cebe","line":104,"updated":"2021-07-06 17:26:30.000000000","message":"This is weird. It occurs after we\u0027ve already created the integration bridge etc. [1] Perhaps we could drop this and log earlier in the process instead, as I said in the previous file?\n\n[1] https://zuul.opendev.org/t/openstack/build/394b6914d85447078f35dd7c2d071767/log/controller/logs/screen-n-cpu.txt#7676","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2f31e5ea7f691fb946b135c7b076fc9bda585502","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            \u0027creating patch port pair \\n\u0027"},{"line_number":102,"context_line":"            f\u0027{port_bridge}:({port_bridge_port}) -\u003e \u0027"},{"line_number":103,"context_line":"            f\u0027{int_bridge}:({int_bridge_port})\u0027"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":"        with self.ovsdb.transaction() as txn:"},{"line_number":106,"context_line":"            # create integration bridge patch peer"},{"line_number":107,"context_line":"            external_ids \u003d {"}],"source_content_type":"text/x-python","patch_set":11,"id":"de2c88dc_7e236b6c","line":104,"in_reply_to":"df86848b_71c1cebe","updated":"2021-07-06 17:40:34.000000000","message":"Ack","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"56a23ebda7fa086c3b2b5ef09d87cbf0f12c2a2a","unresolved":true,"context_lines":[{"line_number":102,"context_line":"            f\u0027{port_bridge}:({port_bridge_port}) -\u003e \u0027"},{"line_number":103,"context_line":"            f\u0027{int_bridge}:({int_bridge_port})\u0027"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":"        with self.ovsdb.transaction() as txn:"},{"line_number":106,"context_line":"            # create integration bridge patch peer"},{"line_number":107,"context_line":"            external_ids \u003d {"},{"line_number":108,"context_line":"                \u0027iface-id\u0027: iface_id, \u0027iface-status\u0027: \u0027active\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"07e1190e_6890ee71","line":105,"updated":"2021-07-06 17:26:30.000000000","message":"a comment on why you\u0027re using a transaction here would be helpful. I\u0027m guessing performance but I don\u0027t know. We don\u0027t appear to be using one when creating the bridges and ports in the previous file","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2f31e5ea7f691fb946b135c7b076fc9bda585502","unresolved":true,"context_lines":[{"line_number":102,"context_line":"            f\u0027{port_bridge}:({port_bridge_port}) -\u003e \u0027"},{"line_number":103,"context_line":"            f\u0027{int_bridge}:({int_bridge_port})\u0027"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":"        with self.ovsdb.transaction() as txn:"},{"line_number":106,"context_line":"            # create integration bridge patch peer"},{"line_number":107,"context_line":"            external_ids \u003d {"},{"line_number":108,"context_line":"                \u0027iface-id\u0027: iface_id, \u0027iface-status\u0027: \u0027active\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"91676c73_8258e4c2","line":105,"in_reply_to":"07e1190e_6890ee71","updated":"2021-07-06 17:40:34.000000000","message":"i want the entire patch port pair to be create or nothing.\nto avoid intermitent states so im using a transaction.\n\nport use transation internally see line 174\nhttps://review.opendev.org/c/openstack/os-vif/+/798055/11/vif_plug_ovs/ovsdb/ovsdb_lib.py#174\n\nwe proably could be more effiecnt by putting everything into a big transaction but that a larger reqwirte and i just wanted that atomic nature of a transactrion to be scoped to the patch port pair creations\n\ni can leave a comment to that effect.","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            f\u0027{port_bridge}:({port_bridge_port}) -\u003e \u0027"},{"line_number":103,"context_line":"            f\u0027{int_bridge}:({int_bridge_port})\u0027"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":"        with self.ovsdb.transaction() as txn:"},{"line_number":106,"context_line":"            # create integration bridge patch peer"},{"line_number":107,"context_line":"            external_ids \u003d {"},{"line_number":108,"context_line":"                \u0027iface-id\u0027: iface_id, \u0027iface-status\u0027: \u0027active\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"fe5119a7_b7268947","line":105,"in_reply_to":"91676c73_8258e4c2","updated":"2021-07-14 10:27:09.000000000","message":"Thanks for the comment","commit_id":"78e78f6acfe97677b71853b234330cbc68c42387"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e36780e9e1d89b9bf3acf108946f5b25c3efc3b6","unresolved":true,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        :param bridge: bridge name as a string"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        .. note:: Do Not call with br-int !!!"},{"line_number":80,"context_line":"        \"\"\""},{"line_number":81,"context_line":"        # TODO(sean-k-mooney): when we fix bug: #1914886"},{"line_number":82,"context_line":"        # add a guard against deleting the integration bridge"}],"source_content_type":"text/x-python","patch_set":13,"id":"daba425f_786b23db","line":79,"updated":"2021-07-22 12:54:17.000000000","message":";)","commit_id":"b837c1a74f37191692a820711e431a75516a4abf"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7ad9c3b9c20787048d132099313c9af84439fd33","unresolved":true,"context_lines":[{"line_number":105,"context_line":"        # NOTE(sean-k-mooney): we use a transaction here for 2 reasons:"},{"line_number":106,"context_line":"        # 1.) if using the vsctl client its faster"},{"line_number":107,"context_line":"        # 2.) in all cases we either want to fully create the patch port"},{"line_number":108,"context_line":"        # pair or not create it atomicly. By using a transaction we know"},{"line_number":109,"context_line":"        # that we will never be in a mixed state where it was partly created."},{"line_number":110,"context_line":"        with self.ovsdb.transaction() as txn:"},{"line_number":111,"context_line":"            # create integration bridge patch peer"}],"source_content_type":"text/x-python","patch_set":13,"id":"5ed60976_ab2cad39","line":108,"range":{"start_line":108,"start_character":32,"end_line":108,"end_character":40},"updated":"2021-07-14 10:27:09.000000000","message":"atomically","commit_id":"b837c1a74f37191692a820711e431a75516a4abf"}],"vif_plug_ovs/tests/unit/test_plugin.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":66,"context_line":"            interface_id\u003d\u0027e65867e0-9340-4a7f-a256-09af6eb7a3aa\u0027,"},{"line_number":67,"context_line":"            datapath_type\u003d\u0027system\u0027)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        # This is used for ironinc with vif_type\u003dsmartnic"},{"line_number":70,"context_line":"        self.profile_ovs_smart_nic \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":71,"context_line":"            interface_id\u003d\u0027e65867e0-9340-4a7f-a256-09af6eb7a3aa\u0027,"},{"line_number":72,"context_line":"            create_port\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"4804023c_c27fb1c1","line":69,"range":{"start_line":69,"start_character":27,"end_line":69,"end_character":34},"updated":"2021-07-01 13:27:39.000000000","message":"ironic","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"1894fa44e395e28f46f60b0b09cdd6e7984b6fe0","unresolved":true,"context_lines":[{"line_number":66,"context_line":"            interface_id\u003d\u0027e65867e0-9340-4a7f-a256-09af6eb7a3aa\u0027,"},{"line_number":67,"context_line":"            datapath_type\u003d\u0027system\u0027)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        # This is used for ironinc with vif_type\u003dsmartnic"},{"line_number":70,"context_line":"        self.profile_ovs_smart_nic \u003d objects.vif.VIFPortProfileOpenVSwitch("},{"line_number":71,"context_line":"            interface_id\u003d\u0027e65867e0-9340-4a7f-a256-09af6eb7a3aa\u0027,"},{"line_number":72,"context_line":"            create_port\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"034a210e_7746761a","line":69,"range":{"start_line":69,"start_character":27,"end_line":69,"end_character":34},"in_reply_to":"4804023c_c27fb1c1","updated":"2021-07-01 14:28:40.000000000","message":"ack.\n\ni forgot this code path exsited and had to figure it out from commit which is why im addign this comment by the way.","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"23ae6c537b571a7c09df011414e5930ceca3def7","unresolved":true,"context_lines":[{"line_number":90,"context_line":"            vif_name\u003d\u0027tap-xxx-yyy-zzz\u0027,"},{"line_number":91,"context_line":"            port_profile\u003dself.profile_ovs)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        # This is used for ironinc with vif_type\u003dsmartnic"},{"line_number":94,"context_line":"        self.vif_ovs_smart_nic \u003d objects.vif.VIFOpenVSwitch("},{"line_number":95,"context_line":"            id\u003d\u0027b679325f-ca89-4ee0-a8be-6db1409b69ea\u0027,"},{"line_number":96,"context_line":"            address\u003d\u0027ca:fe:de:ad:be:ef\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"dfa0c180_a86270e9","line":93,"range":{"start_line":93,"start_character":27,"end_line":93,"end_character":34},"updated":"2021-07-01 13:27:39.000000000","message":"ironic","commit_id":"d9d399e84f075951feba529d7f70c9411375a361"}]}
