)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":34118,"name":"Arnau Verdaguer","email":"averdagu@redhat.com","username":"averdaguer"},"change_message_id":"f2f2bf0b29d7172e68ab227966d564e17f2e3555","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Rodolfo Alonso Hernandez \u003cralonsoh@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-06-20 23:54:46 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[OVN[[Trunk] Add bound info on subport when parent is bound"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The host-id and vif_details are added on the subport when the"},{"line_number":10,"context_line":"trunk is created, if it\u0027s created when it\u0027s not attached to any"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"2180ad15_f5a0a079","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":6},"updated":"2023-06-21 16:58:27.000000000","message":"Nit: modify for a space","commit_id":"a017672d330bed2a97534b9415ec35d77a21e754"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"bac152b723400bdd48c719fb818c7c0055651e17","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Rodolfo Alonso Hernandez \u003cralonsoh@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-06-20 23:54:46 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[OVN[[Trunk] Add bound info on subport when parent is bound"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The host-id and vif_details are added on the subport when the"},{"line_number":10,"context_line":"trunk is created, if it\u0027s created when it\u0027s not attached to any"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"c5bb8660_7cce72e6","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":6},"in_reply_to":"2180ad15_f5a0a079","updated":"2023-06-23 11:22:35.000000000","message":"Done","commit_id":"a017672d330bed2a97534b9415ec35d77a21e754"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d9af7cddc088ac15c6fd5de9c5af0fccd46f8c0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0482c491_07e3d2f8","updated":"2023-06-21 16:32:39.000000000","message":"FT is needed.","commit_id":"0f3b659c0716e004c0e89264451e50f043bdbc37"},{"author":{"_account_id":34118,"name":"Arnau Verdaguer","email":"averdagu@redhat.com","username":"averdaguer"},"change_message_id":"f2f2bf0b29d7172e68ab227966d564e17f2e3555","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9081e002_9b581081","updated":"2023-06-21 16:58:27.000000000","message":"Thanks for adding the FT Rodolfo! Looks good to me.","commit_id":"a017672d330bed2a97534b9415ec35d77a21e754"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6d2b503919138d11833bb9cc5b99f11fe7d3fe1e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b0d07ef1_93c0ab0c","updated":"2023-06-23 14:42:29.000000000","message":"I see that I\u0027m quite late to the party, but anyway I leave these comments here. Maybe for a followup change.","commit_id":"955e621167987626806128d259a29d4e62acf102"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"2b803ee725300e96d5b86fb337b8ac2d96cd8186","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"2ca291d6_9598b8de","updated":"2023-06-23 13:34:25.000000000","message":"LGTM","commit_id":"955e621167987626806128d259a29d4e62acf102"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"30d705f290e63fbff1b480c0a291771219978803","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"829c2a75_58b485a7","updated":"2023-06-22 14:42:10.000000000","message":"lgtm!","commit_id":"955e621167987626806128d259a29d4e62acf102"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"1e9bab72d04cac721ec6c5e06d5af810e557dac5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f01142c7_47a7136f","updated":"2023-06-26 07:20:04.000000000","message":"recheck\nneutron-tempest-plugin-ovn timeout, tests passed","commit_id":"955e621167987626806128d259a29d4e62acf102"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7f2de80ff6bf771533bb887d6d95189822caf6a5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"e42af4d6_f6aed2ce","updated":"2023-06-23 14:21:48.000000000","message":"recheck neutron-fullstack-with-uwsgi","commit_id":"955e621167987626806128d259a29d4e62acf102"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7191d39b6d6cfd3b645ad7c094b8957b4aa87565","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"143d7fa5_7ccd63ae","updated":"2023-06-23 15:54:41.000000000","message":"recheck neutron-ovn-tempest-ipv6-only-ovs-release","commit_id":"955e621167987626806128d259a29d4e62acf102"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"7209303da4d93b24544c6a8c8f2753a9e7e184f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1803e738_5dac26f4","updated":"2023-06-26 14:35:06.000000000","message":"recheck openstack-tox-py310","commit_id":"955e621167987626806128d259a29d4e62acf102"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6330fde108f86a26f186b8a3058f4b2656cf35eb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"5925c9cd_4ce78dd8","updated":"2023-06-26 08:36:13.000000000","message":"recheck tempest","commit_id":"955e621167987626806128d259a29d4e62acf102"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"71ca9e079c1c545dbb35457624cf2feaefbd0d71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"f62ed680_7d41ed7b","updated":"2023-06-23 10:59:37.000000000","message":"recheck tempest timeout","commit_id":"955e621167987626806128d259a29d4e62acf102"},{"author":{"_account_id":32586,"name":"Elvira García Ruiz","display_name":"Elvira","email":"egarciar@redhat.com","username":"elvira"},"change_message_id":"4074a2829b73157bca6adf70d1289330694915b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"84ed53d4_9fa5efd6","updated":"2023-06-22 12:59:18.000000000","message":"recheck timeout","commit_id":"955e621167987626806128d259a29d4e62acf102"}],"neutron/services/trunk/drivers/ovn/trunk_driver.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d9af7cddc088ac15c6fd5de9c5af0fccd46f8c0f","unresolved":true,"context_lines":[{"line_number":237,"context_line":"            registry.subscribe(self._handler.trunk_event,"},{"line_number":238,"context_line":"                               resources.TRUNK,"},{"line_number":239,"context_line":"                               trunk_event)"},{"line_number":240,"context_line":"            registry.subscribe(self._handler.subport_event,"},{"line_number":241,"context_line":"                               resources.SUBPORTS,"},{"line_number":242,"context_line":"                               trunk_event)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @classmethod"},{"line_number":245,"context_line":"    def create(cls, plugin_driver):"}],"source_content_type":"text/x-python","patch_set":5,"id":"efa26167_aeab999f","line":242,"range":{"start_line":240,"start_character":12,"end_line":242,"end_character":43},"updated":"2023-06-21 16:32:39.000000000","message":"It will be better to make two loops here to avoid subscribing this extension to the subport AFTER_UPDATE event.","commit_id":"0f3b659c0716e004c0e89264451e50f043bdbc37"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"86cf1990e16abe68d735dd60db94420e1039235e","unresolved":false,"context_lines":[{"line_number":237,"context_line":"            registry.subscribe(self._handler.trunk_event,"},{"line_number":238,"context_line":"                               resources.TRUNK,"},{"line_number":239,"context_line":"                               trunk_event)"},{"line_number":240,"context_line":"            registry.subscribe(self._handler.subport_event,"},{"line_number":241,"context_line":"                               resources.SUBPORTS,"},{"line_number":242,"context_line":"                               trunk_event)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @classmethod"},{"line_number":245,"context_line":"    def create(cls, plugin_driver):"}],"source_content_type":"text/x-python","patch_set":5,"id":"cb901324_3866cc9e","line":242,"range":{"start_line":240,"start_character":12,"end_line":242,"end_character":43},"in_reply_to":"efa26167_aeab999f","updated":"2023-06-23 11:22:44.000000000","message":"Done","commit_id":"0f3b659c0716e004c0e89264451e50f043bdbc37"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6d2b503919138d11833bb9cc5b99f11fe7d3fe1e","unresolved":true,"context_lines":[{"line_number":86,"context_line":"        if parent_port_bindings.host:"},{"line_number":87,"context_line":"            parent_binding_host \u003d parent_port_bindings.host"},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            # NOTE(flaviof): We expect binding\u0027s host to be set. Otherwise,"},{"line_number":90,"context_line":"            # sub-port will not transition from DOWN to ACTIVE."},{"line_number":91,"context_line":"            db_port.device_owner \u003d trunk_consts.TRUNK_SUBPORT_OWNER"},{"line_number":92,"context_line":"            # NOTE(ksambor):  When sub-port was created and event was process"}],"source_content_type":"text/x-python","patch_set":8,"id":"b63641df_f4e9de06","line":89,"updated":"2023-06-23 14:42:29.000000000","message":"It may be worth to look at these old bugs too where these two NOTEs (from flaviof and ksambor) were added, because clearly this is not the first bug where we leave subports in the DOWN state.","commit_id":"955e621167987626806128d259a29d4e62acf102"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"6d2b503919138d11833bb9cc5b99f11fe7d3fe1e","unresolved":true,"context_lines":[{"line_number":163,"context_line":"        return db_port"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def trunk_updated(self, trunk):"},{"line_number":166,"context_line":"        # Check if parent port is handled by OVN."},{"line_number":167,"context_line":"        if not self.plugin_driver.nb_ovn.lookup(\u0027Logical_Switch_Port\u0027,"},{"line_number":168,"context_line":"                                                trunk.port_id, default\u003dNone):"},{"line_number":169,"context_line":"            return"},{"line_number":170,"context_line":"        if trunk.sub_ports:"},{"line_number":171,"context_line":"            self._set_sub_ports(trunk.port_id, trunk.sub_ports)"},{"line_number":172,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9d83865f_d8bc7dcc","line":169,"range":{"start_line":166,"start_character":0,"end_line":169,"end_character":18},"updated":"2023-06-23 14:42:29.000000000","message":"I\u0027m not sure if this suggestion makes any practical difference here (unless neutron and backend DBs get out of sync somehow), but conceptually I believe it is slightly more correct to check port ownership not in the backend, but by looking into binding:vif_type.","commit_id":"955e621167987626806128d259a29d4e62acf102"}],"neutron/services/trunk/plugin.py":[{"author":{"_account_id":34118,"name":"Arnau Verdaguer","email":"averdagu@redhat.com","username":"averdaguer"},"change_message_id":"8d561c7a2782033113967ef210b200d19116b003","unresolved":true,"context_lines":[{"line_number":210,"context_line":"        return \"trunk\""},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def _get_subport(self, context, subport_id):"},{"line_number":213,"context_line":"        \"\"\"Return the trunk object or raise if not found.\"\"\""},{"line_number":214,"context_line":"        obj \u003d port_objects.Port.get_object(context, id\u003dsubport_id)"},{"line_number":215,"context_line":"        if obj is None:"},{"line_number":216,"context_line":"            raise trunk_exc.SubPortNotFound(port_id\u003dsubport_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"46dcb135_fe1f8e48","line":213,"range":{"start_line":213,"start_character":22,"end_line":213,"end_character":27},"updated":"2023-05-17 09:58:50.000000000","message":"change to trunk subport","commit_id":"0c7e6f8b154397a2667d9653dded2299c703fad1"},{"author":{"_account_id":34118,"name":"Arnau Verdaguer","email":"averdagu@redhat.com","username":"averdaguer"},"change_message_id":"a0200061440ef22f1eba89dbb3f76771371be3f8","unresolved":true,"context_lines":[{"line_number":388,"context_line":"        return trunk"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"    @db_base_plugin_common.convert_result_to_dict"},{"line_number":391,"context_line":"    def bound_subport(self, context, subport_id,"},{"line_number":392,"context_line":"                      vif_type, vif_details, parent_host):"},{"line_number":393,"context_line":"        l3plugin \u003d directory.get_plugin(plugin_constants.L3)"},{"line_number":394,"context_line":"        if not l3plugin:"},{"line_number":395,"context_line":"            return"},{"line_number":396,"context_line":"        ovn_client \u003d l3plugin._ovn_client"},{"line_number":397,"context_line":""},{"line_number":398,"context_line":"        db_subport \u003d self._get_subport(context, subport_id)"},{"line_number":399,"context_line":"        options \u003d {}"},{"line_number":400,"context_line":""},{"line_number":401,"context_line":"        check_rev_cmd \u003d ovn_client._nb_idl.check_revision_number("},{"line_number":402,"context_line":"            subport_id, db_subport, ovn_const.TYPE_PORTS)"},{"line_number":403,"context_line":"        with ovn_client._nb_idl.transaction("},{"line_number":404,"context_line":"                check_error\u003dTrue, revision_mismatch_raise\u003dTrue) as txn:"},{"line_number":405,"context_line":"            txn.add(check_rev_cmd)"},{"line_number":406,"context_line":"            options[portbindings.HOST_ID] \u003d parent_host"},{"line_number":407,"context_line":"            options[portbindings.VIF_TYPE] \u003d vif_type"},{"line_number":408,"context_line":"            options[ovn_const.LSP_OPTIONS_REQUESTED_CHASSIS_KEY] \u003d parent_host"},{"line_number":409,"context_line":"            # new_options[portbindings.VIF_DETAILS] \u003d vif_details"},{"line_number":410,"context_line":"            txn.add(ovn_client._nb_idl.set_lswitch_port("},{"line_number":411,"context_line":"                lport_name\u003dsubport_id,"},{"line_number":412,"context_line":"                if_exists\u003dFalse,"},{"line_number":413,"context_line":"                options\u003doptions,))"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"    @db_base_plugin_common.convert_result_to_dict"},{"line_number":416,"context_line":"    def remove_subports(self, context, trunk_id, subports):"},{"line_number":417,"context_line":"        \"\"\"Remove one or more subports from trunk.\"\"\""},{"line_number":418,"context_line":"        subports \u003d subports[\u0027sub_ports\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"608bec2d_df8c467d","line":415,"range":{"start_line":391,"start_character":0,"end_line":415,"end_character":0},"updated":"2023-05-17 09:59:49.000000000","message":"TODO: Delete, past code from past approaches","commit_id":"8355011a023bf320a95f480aefa0a3dfa8df5d70"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d9af7cddc088ac15c6fd5de9c5af0fccd46f8c0f","unresolved":true,"context_lines":[{"line_number":480,"context_line":"            self.update_trunk("},{"line_number":481,"context_line":"                context, trunk_id,"},{"line_number":482,"context_line":"                {\u0027trunk\u0027: {\u0027status\u0027: constants.TRUNK_DOWN_STATUS}})"},{"line_number":483,"context_line":"        if vif_type_changed and vif_has_been_bound:"},{"line_number":484,"context_line":"            trunk_obj \u003d self._get_trunk(context, trunk_id)"},{"line_number":485,"context_line":"            payload \u003d events.DBEventPayload("},{"line_number":486,"context_line":"                context, resource_id\u003dtrunk_id, desired_state\u003dtrunk_obj)"},{"line_number":487,"context_line":"            registry.publish(resources.TRUNK, events.AFTER_UPDATE, self,"},{"line_number":488,"context_line":"                             payload\u003dpayload)"},{"line_number":489,"context_line":"        elif new_status \u003d\u003d const.PORT_STATUS_ACTIVE and \\"},{"line_number":490,"context_line":"                new_status !\u003d orig_status:"},{"line_number":491,"context_line":"            self.update_trunk("}],"source_content_type":"text/x-python","patch_set":5,"id":"f55a046d_7bdd41a8","line":488,"range":{"start_line":483,"start_character":8,"end_line":488,"end_character":45},"updated":"2023-06-21 16:32:39.000000000","message":"1) The event payload doesn\u0027t have the states defined. That will break the event receiver that is expecting payload.states[0]\n2) This event is not needed. It is issued from the next lines, in \"update_trunk\".","commit_id":"0f3b659c0716e004c0e89264451e50f043bdbc37"}]}
