)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dda5694989748feb71767c3a21dfc2c8011437a7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     zhanghao \u003czhanghao2@cmss.chinamobile.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-01-27 15:37:07 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[OVN] Remove QoS dependency on port_object"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The \u0027port_object\u0027 needs to be removed, so the current QoS dependency"},{"line_number":10,"context_line":"on it needs to be resolved first. The \u0027qos_policy_id\u0027 is stored in the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3fa7e38b_ef757835","line":7,"range":{"start_line":7,"start_character":6,"end_line":7,"end_character":42},"updated":"2020-02-21 19:56:46.000000000","message":"Sorry but I don\u0027t understand this heading. Currently we don\u0027t depend on the port object but the port dict.","commit_id":"eb47515ca75902c88911f682a12b81772a944319"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"0c65e4d1a6526fa7e40e1edd0e62c14304f31c70","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     zhanghao \u003czhanghao2@cmss.chinamobile.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-01-27 15:37:07 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[OVN] Remove QoS dependency on port_object"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The \u0027port_object\u0027 needs to be removed, so the current QoS dependency"},{"line_number":10,"context_line":"on it needs to be resolved first. The \u0027qos_policy_id\u0027 is stored in the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1fa4df85_8653ece2","line":7,"range":{"start_line":7,"start_character":6,"end_line":7,"end_character":42},"in_reply_to":"3fa7e38b_ef757835","updated":"2020-02-23 06:19:31.000000000","message":"Done","commit_id":"eb47515ca75902c88911f682a12b81772a944319"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"32fed1094a260730e2ebbc268621640e8a0c8347","unresolved":false,"context_lines":[{"line_number":11,"context_line":"\u0027external_ids\u0027 of the logical switch port, like the network QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I1ab34c07407a595c8b1f39b5d43d9c7dc674b40b"},{"line_number":14,"context_line":"Closes-Bug: #1863987"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1fa4df85_fedd2142","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":6},"updated":"2020-02-29 11:49:51.000000000","message":"Partial-Bug. There are three patches related to this bug.","commit_id":"0b4ee0b101aa4c0cf6e66040c508949f7bd71d4e"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"e6630e63fa2639e6d6efae5b8f211c16a45ef8e5","unresolved":false,"context_lines":[{"line_number":11,"context_line":"\u0027external_ids\u0027 of the logical switch port, like the network QoS policy."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I1ab34c07407a595c8b1f39b5d43d9c7dc674b40b"},{"line_number":14,"context_line":"Closes-Bug: #1863987"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"1fa4df85_1eafdd94","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":6},"in_reply_to":"1fa4df85_fedd2142","updated":"2020-02-29 12:25:30.000000000","message":"Done","commit_id":"0b4ee0b101aa4c0cf6e66040c508949f7bd71d4e"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dda5694989748feb71767c3a21dfc2c8011437a7","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                        port.get(portbindings.HOST_ID, \u0027\u0027)})"},{"line_number":275,"context_line":"        device_owner \u003d port.get(\u0027device_owner\u0027, \u0027\u0027)"},{"line_number":276,"context_line":"        sg_ids \u003d \u0027 \u0027.join(utils.get_lsp_security_groups(port))"},{"line_number":277,"context_line":"        qos_policy_id \u003d port.get(\u0027qos_policy_id\u0027)"},{"line_number":278,"context_line":"        return OvnPortInfo(port_type, options, addresses, port_security,"},{"line_number":279,"context_line":"                           parent_name, tag, dhcpv4_options, dhcpv6_options,"},{"line_number":280,"context_line":"                           cidrs.strip(), device_owner, sg_ids, qos_policy_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_f4578b27","line":277,"updated":"2020-02-21 19:56:46.000000000","message":"And the network qos policy id? The port can inherit the network policy.","commit_id":"eb47515ca75902c88911f682a12b81772a944319"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"0c65e4d1a6526fa7e40e1edd0e62c14304f31c70","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                        port.get(portbindings.HOST_ID, \u0027\u0027)})"},{"line_number":275,"context_line":"        device_owner \u003d port.get(\u0027device_owner\u0027, \u0027\u0027)"},{"line_number":276,"context_line":"        sg_ids \u003d \u0027 \u0027.join(utils.get_lsp_security_groups(port))"},{"line_number":277,"context_line":"        qos_policy_id \u003d port.get(\u0027qos_policy_id\u0027)"},{"line_number":278,"context_line":"        return OvnPortInfo(port_type, options, addresses, port_security,"},{"line_number":279,"context_line":"                           parent_name, tag, dhcpv4_options, dhcpv6_options,"},{"line_number":280,"context_line":"                           cidrs.strip(), device_owner, sg_ids, qos_policy_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_06593cfd","line":277,"in_reply_to":"3fa7e38b_f4578b27","updated":"2020-02-23 06:19:31.000000000","message":"The \u0027network_qos_policy_id\u0027 does not need to be saved to the \u0027external_ids\u0027 in the ovn port.","commit_id":"eb47515ca75902c88911f682a12b81772a944319"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dda5694989748feb71767c3a21dfc2c8011437a7","unresolved":false,"context_lines":[{"line_number":417,"context_line":""},{"line_number":418,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":419,"context_line":"            if self._is_qos_required_for_port(port):"},{"line_number":420,"context_line":"                qos_options \u003d self._qos_driver.get_qos_options("},{"line_number":421,"context_line":"                    port[\u0027qos_policy_id\u0027], port[\u0027network_id\u0027])"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"                if qos_options:"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_6f7c2874","line":420,"range":{"start_line":420,"start_character":47,"end_line":420,"end_character":62},"updated":"2020-02-21 19:56:46.000000000","message":"If we are refactoring this, we should redo \"get_qos_options\". This method is not considering that now the port dict have both \"qos_policy_id\" and \"network_qos_policy_id\". There is no need to retrieve it again.","commit_id":"eb47515ca75902c88911f682a12b81772a944319"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"0c65e4d1a6526fa7e40e1edd0e62c14304f31c70","unresolved":false,"context_lines":[{"line_number":417,"context_line":""},{"line_number":418,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":419,"context_line":"            if self._is_qos_required_for_port(port):"},{"line_number":420,"context_line":"                qos_options \u003d self._qos_driver.get_qos_options("},{"line_number":421,"context_line":"                    port[\u0027qos_policy_id\u0027], port[\u0027network_id\u0027])"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"                if qos_options:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_265eb8e6","line":420,"range":{"start_line":420,"start_character":47,"end_line":420,"end_character":62},"in_reply_to":"3fa7e38b_6f7c2874","updated":"2020-02-23 06:19:31.000000000","message":"Done","commit_id":"eb47515ca75902c88911f682a12b81772a944319"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dda5694989748feb71767c3a21dfc2c8011437a7","unresolved":false,"context_lines":[{"line_number":694,"context_line":"    def add_txns_to_sync_port_qos(self, txn, port_id, lswitch_name,"},{"line_number":695,"context_line":"                                  qos_options_new, qos_options_old,"},{"line_number":696,"context_line":"                                  ovn_net_qos_policy):"},{"line_number":697,"context_line":"        if qos_options_new:"},{"line_number":698,"context_line":"            qos_rule_column_old \u003d self._create_qos_rules(qos_options_old,"},{"line_number":699,"context_line":"                                                         port_id,"},{"line_number":700,"context_line":"                                                         lswitch_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_ef8c983b","line":697,"range":{"start_line":697,"start_character":11,"end_line":697,"end_character":26},"updated":"2020-02-21 19:56:46.000000000","message":"Same comment as in other patch. \"qos_options_new\" could be:\n- A new set of rules\n- The current port qos rules.\n\nIf \"qos_options_new\" \u003d\u003d \"qos_rule_column_old\", why we need to delete and create again the qos options?","commit_id":"eb47515ca75902c88911f682a12b81772a944319"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"0c65e4d1a6526fa7e40e1edd0e62c14304f31c70","unresolved":false,"context_lines":[{"line_number":694,"context_line":"    def add_txns_to_sync_port_qos(self, txn, port_id, lswitch_name,"},{"line_number":695,"context_line":"                                  qos_options_new, qos_options_old,"},{"line_number":696,"context_line":"                                  ovn_net_qos_policy):"},{"line_number":697,"context_line":"        if qos_options_new:"},{"line_number":698,"context_line":"            qos_rule_column_old \u003d self._create_qos_rules(qos_options_old,"},{"line_number":699,"context_line":"                                                         port_id,"},{"line_number":700,"context_line":"                                                         lswitch_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_c672447d","line":697,"range":{"start_line":697,"start_character":11,"end_line":697,"end_character":26},"in_reply_to":"3fa7e38b_ef8c983b","updated":"2020-02-23 06:19:31.000000000","message":"you are right, I want to fix it in another patch(https://review.opendev.org/#/c/707352/), if you think it needs to be incorporated into this patch, I will do it.","commit_id":"eb47515ca75902c88911f682a12b81772a944319"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"dda5694989748feb71767c3a21dfc2c8011437a7","unresolved":false,"context_lines":[{"line_number":725,"context_line":"    def _is_qos_required_for_port(self, port):"},{"line_number":726,"context_line":"        if \u0027qos_policy_id\u0027 not in port:"},{"line_number":727,"context_line":"            return False"},{"line_number":728,"context_line":"        if utils.is_network_device_port(port):"},{"line_number":729,"context_line":"            return False"},{"line_number":730,"context_line":"        return True"},{"line_number":731,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_2f1ab06a","line":728,"range":{"start_line":728,"start_character":10,"end_line":728,"end_character":44},"updated":"2020-02-21 19:56:46.000000000","message":"That means we won\u0027t support blueprint: router-gateway-ip-qos","commit_id":"eb47515ca75902c88911f682a12b81772a944319"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"0c65e4d1a6526fa7e40e1edd0e62c14304f31c70","unresolved":false,"context_lines":[{"line_number":725,"context_line":"    def _is_qos_required_for_port(self, port):"},{"line_number":726,"context_line":"        if \u0027qos_policy_id\u0027 not in port:"},{"line_number":727,"context_line":"            return False"},{"line_number":728,"context_line":"        if utils.is_network_device_port(port):"},{"line_number":729,"context_line":"            return False"},{"line_number":730,"context_line":"        return True"},{"line_number":731,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1fa4df85_e66f4090","line":728,"range":{"start_line":728,"start_character":10,"end_line":728,"end_character":44},"in_reply_to":"3fa7e38b_2f1ab06a","updated":"2020-02-23 06:19:31.000000000","message":"Done,But I\u0027m not sure if the restrictions need to be solved if this feature is not implemented.","commit_id":"eb47515ca75902c88911f682a12b81772a944319"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"9d26e3e4d02d3013934b6e45805cb885918381c6","unresolved":false,"context_lines":[{"line_number":734,"context_line":"    def _is_qos_required_for_port(self, port):"},{"line_number":735,"context_line":"        if \u0027qos_policy_id\u0027 not in port:"},{"line_number":736,"context_line":"            return False"},{"line_number":737,"context_line":"        if utils.is_router_gw_port(port) or \\"},{"line_number":738,"context_line":"                not utils.is_network_device_port(port):"},{"line_number":739,"context_line":"            return True"},{"line_number":740,"context_line":"        else:"},{"line_number":741,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_f8eec286","line":738,"range":{"start_line":737,"start_character":8,"end_line":738,"end_character":55},"updated":"2020-02-26 16:26:20.000000000","message":"nit:\n\n...\nreturn (utils.is_router_gw_port(port) or\n        not utils.is_network_device_port(port))","commit_id":"c12005d48d81906ea79ebc768209e18060d7b2cc"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"fc62d1935a29570620378f564705f6e0e0314edd","unresolved":false,"context_lines":[{"line_number":734,"context_line":"    def _is_qos_required_for_port(self, port):"},{"line_number":735,"context_line":"        if \u0027qos_policy_id\u0027 not in port:"},{"line_number":736,"context_line":"            return False"},{"line_number":737,"context_line":"        if utils.is_router_gw_port(port) or \\"},{"line_number":738,"context_line":"                not utils.is_network_device_port(port):"},{"line_number":739,"context_line":"            return True"},{"line_number":740,"context_line":"        else:"},{"line_number":741,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_f4b3264c","line":738,"range":{"start_line":737,"start_character":8,"end_line":738,"end_character":55},"in_reply_to":"1fa4df85_f8eec286","updated":"2020-02-27 03:06:57.000000000","message":"Done","commit_id":"c12005d48d81906ea79ebc768209e18060d7b2cc"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f4330a651ba1c77a2a08e71ccc0c3f88ab771caa","unresolved":false,"context_lines":[{"line_number":275,"context_line":"                        port.get(portbindings.HOST_ID, \u0027\u0027)})"},{"line_number":276,"context_line":"        device_owner \u003d port.get(\u0027device_owner\u0027, \u0027\u0027)"},{"line_number":277,"context_line":"        sg_ids \u003d \u0027 \u0027.join(utils.get_lsp_security_groups(port))"},{"line_number":278,"context_line":"        qos_policy_id \u003d port.get(\u0027qos_policy_id\u0027)"},{"line_number":279,"context_line":"        return OvnPortInfo(port_type, options, addresses, port_security,"},{"line_number":280,"context_line":"                           parent_name, tag, dhcpv4_options, dhcpv6_options,"},{"line_number":281,"context_line":"                           cidrs.strip(), device_owner, sg_ids, qos_policy_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_8704d84b","line":278,"range":{"start_line":278,"start_character":48,"end_line":278,"end_character":49},"updated":"2020-03-02 12:45:21.000000000","message":"Everywhere default value is \u0027\u0027 instead None, Please update this place also.","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"543e551093cac74c1b54906073c69c9ed24ea5b0","unresolved":false,"context_lines":[{"line_number":275,"context_line":"                        port.get(portbindings.HOST_ID, \u0027\u0027)})"},{"line_number":276,"context_line":"        device_owner \u003d port.get(\u0027device_owner\u0027, \u0027\u0027)"},{"line_number":277,"context_line":"        sg_ids \u003d \u0027 \u0027.join(utils.get_lsp_security_groups(port))"},{"line_number":278,"context_line":"        qos_policy_id \u003d port.get(\u0027qos_policy_id\u0027)"},{"line_number":279,"context_line":"        return OvnPortInfo(port_type, options, addresses, port_security,"},{"line_number":280,"context_line":"                           parent_name, tag, dhcpv4_options, dhcpv6_options,"},{"line_number":281,"context_line":"                           cidrs.strip(), device_owner, sg_ids, qos_policy_id)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_70415039","line":278,"range":{"start_line":278,"start_character":48,"end_line":278,"end_character":49},"in_reply_to":"1fa4df85_8704d84b","updated":"2020-03-02 14:19:40.000000000","message":"Done","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f4330a651ba1c77a2a08e71ccc0c3f88ab771caa","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                            port_info.security_group_ids,"},{"line_number":298,"context_line":"                        ovn_const.OVN_QOS_POLICY_EXT_ID_KEY:"},{"line_number":299,"context_line":"                            port_info.qos_policy_id"},{"line_number":300,"context_line":"                            if port_info.qos_policy_id else \u0027null\u0027,"},{"line_number":301,"context_line":"                        ovn_const.OVN_REV_NUM_EXT_ID_KEY: str("},{"line_number":302,"context_line":"                            utils.get_revision_number("},{"line_number":303,"context_line":"                                port, ovn_const.TYPE_PORTS))}"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_aa467920","line":300,"range":{"start_line":300,"start_character":60,"end_line":300,"end_character":67},"updated":"2020-03-02 12:45:21.000000000","message":"Why this \u0027null\u0027 here? Why just not \u0027\u0027 or None?","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"543e551093cac74c1b54906073c69c9ed24ea5b0","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                            port_info.security_group_ids,"},{"line_number":298,"context_line":"                        ovn_const.OVN_QOS_POLICY_EXT_ID_KEY:"},{"line_number":299,"context_line":"                            port_info.qos_policy_id"},{"line_number":300,"context_line":"                            if port_info.qos_policy_id else \u0027null\u0027,"},{"line_number":301,"context_line":"                        ovn_const.OVN_REV_NUM_EXT_ID_KEY: str("},{"line_number":302,"context_line":"                            utils.get_revision_number("},{"line_number":303,"context_line":"                                port, ovn_const.TYPE_PORTS))}"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_50469451","line":300,"range":{"start_line":300,"start_character":60,"end_line":300,"end_character":67},"in_reply_to":"1fa4df85_aa467920","updated":"2020-03-02 14:19:40.000000000","message":"Done","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f4330a651ba1c77a2a08e71ccc0c3f88ab771caa","unresolved":false,"context_lines":[{"line_number":418,"context_line":""},{"line_number":419,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":420,"context_line":"            network \u003d port.get(\u0027network\u0027)"},{"line_number":421,"context_line":"            network_policy_id \u003d None"},{"line_number":422,"context_line":"            if network:"},{"line_number":423,"context_line":"                network_policy_id \u003d network.get(\u0027qos_policy_id\u0027)"},{"line_number":424,"context_line":"            if self._is_qos_required_for_port(port):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_2ad60951","line":421,"range":{"start_line":421,"start_character":12,"end_line":421,"end_character":29},"updated":"2020-03-02 12:45:21.000000000","message":"No need to set None here.","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"543e551093cac74c1b54906073c69c9ed24ea5b0","unresolved":false,"context_lines":[{"line_number":418,"context_line":""},{"line_number":419,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":420,"context_line":"            network \u003d port.get(\u0027network\u0027)"},{"line_number":421,"context_line":"            network_policy_id \u003d None"},{"line_number":422,"context_line":"            if network:"},{"line_number":423,"context_line":"                network_policy_id \u003d network.get(\u0027qos_policy_id\u0027)"},{"line_number":424,"context_line":"            if self._is_qos_required_for_port(port):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_f076a0a4","line":421,"range":{"start_line":421,"start_character":12,"end_line":421,"end_character":29},"in_reply_to":"1fa4df85_2ad60951","updated":"2020-03-02 14:19:40.000000000","message":"Done","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f4330a651ba1c77a2a08e71ccc0c3f88ab771caa","unresolved":false,"context_lines":[{"line_number":419,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":420,"context_line":"            network \u003d port.get(\u0027network\u0027)"},{"line_number":421,"context_line":"            network_policy_id \u003d None"},{"line_number":422,"context_line":"            if network:"},{"line_number":423,"context_line":"                network_policy_id \u003d network.get(\u0027qos_policy_id\u0027)"},{"line_number":424,"context_line":"            if self._is_qos_required_for_port(port):"},{"line_number":425,"context_line":"                qos_options \u003d self._qos_driver.get_qos_options("}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_6ae2c131","line":422,"range":{"start_line":422,"start_character":15,"end_line":422,"end_character":23},"updated":"2020-03-02 12:45:21.000000000","message":"Network is always declared in this context.","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"543e551093cac74c1b54906073c69c9ed24ea5b0","unresolved":false,"context_lines":[{"line_number":419,"context_line":"            # Add qos for port by qos table of logical flow instead of tc"},{"line_number":420,"context_line":"            network \u003d port.get(\u0027network\u0027)"},{"line_number":421,"context_line":"            network_policy_id \u003d None"},{"line_number":422,"context_line":"            if network:"},{"line_number":423,"context_line":"                network_policy_id \u003d network.get(\u0027qos_policy_id\u0027)"},{"line_number":424,"context_line":"            if self._is_qos_required_for_port(port):"},{"line_number":425,"context_line":"                qos_options \u003d self._qos_driver.get_qos_options("}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_9065ece3","line":422,"range":{"start_line":422,"start_character":15,"end_line":422,"end_character":23},"in_reply_to":"1fa4df85_6ae2c131","updated":"2020-03-02 14:19:40.000000000","message":"not always.","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f4330a651ba1c77a2a08e71ccc0c3f88ab771caa","unresolved":false,"context_lines":[{"line_number":486,"context_line":"                            port_info.security_group_ids,"},{"line_number":487,"context_line":"                        ovn_const.OVN_QOS_POLICY_EXT_ID_KEY:"},{"line_number":488,"context_line":"                            port_info.qos_policy_id"},{"line_number":489,"context_line":"                            if port_info.qos_policy_id else \u0027null\u0027,"},{"line_number":490,"context_line":"                        ovn_const.OVN_REV_NUM_EXT_ID_KEY: str("},{"line_number":491,"context_line":"                            utils.get_revision_number("},{"line_number":492,"context_line":"                                port, ovn_const.TYPE_PORTS))}"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_ea5d51e9","line":489,"range":{"start_line":489,"start_character":55,"end_line":489,"end_character":67},"updated":"2020-03-02 12:45:21.000000000","message":"Why not \u0027\u0027 or None?","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"543e551093cac74c1b54906073c69c9ed24ea5b0","unresolved":false,"context_lines":[{"line_number":486,"context_line":"                            port_info.security_group_ids,"},{"line_number":487,"context_line":"                        ovn_const.OVN_QOS_POLICY_EXT_ID_KEY:"},{"line_number":488,"context_line":"                            port_info.qos_policy_id"},{"line_number":489,"context_line":"                            if port_info.qos_policy_id else \u0027null\u0027,"},{"line_number":490,"context_line":"                        ovn_const.OVN_REV_NUM_EXT_ID_KEY: str("},{"line_number":491,"context_line":"                            utils.get_revision_number("},{"line_number":492,"context_line":"                                port, ovn_const.TYPE_PORTS))}"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_505f740d","line":489,"range":{"start_line":489,"start_character":55,"end_line":489,"end_character":67},"in_reply_to":"1fa4df85_ea5d51e9","updated":"2020-03-02 14:19:40.000000000","message":"Done","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f4330a651ba1c77a2a08e71ccc0c3f88ab771caa","unresolved":false,"context_lines":[{"line_number":666,"context_line":"                # also need get policy from port dict if qos_options is None"},{"line_number":667,"context_line":"                network \u003d port.get(\u0027network\u0027)"},{"line_number":668,"context_line":"                network_policy_id \u003d None"},{"line_number":669,"context_line":"                if network:"},{"line_number":670,"context_line":"                    network_policy_id \u003d network.get(\u0027qos_policy_id\u0027)"},{"line_number":671,"context_line":"                qos_options_new \u003d (qos_options if qos_options"},{"line_number":672,"context_line":"                                   else self._qos_driver.get_qos_options("}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_aa6f5990","line":669,"range":{"start_line":669,"start_character":19,"end_line":669,"end_character":26},"updated":"2020-03-02 12:45:21.000000000","message":"network is always set in port","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"543e551093cac74c1b54906073c69c9ed24ea5b0","unresolved":false,"context_lines":[{"line_number":666,"context_line":"                # also need get policy from port dict if qos_options is None"},{"line_number":667,"context_line":"                network \u003d port.get(\u0027network\u0027)"},{"line_number":668,"context_line":"                network_policy_id \u003d None"},{"line_number":669,"context_line":"                if network:"},{"line_number":670,"context_line":"                    network_policy_id \u003d network.get(\u0027qos_policy_id\u0027)"},{"line_number":671,"context_line":"                qos_options_new \u003d (qos_options if qos_options"},{"line_number":672,"context_line":"                                   else self._qos_driver.get_qos_options("}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_b0a58806","line":669,"range":{"start_line":669,"start_character":19,"end_line":669,"end_character":26},"in_reply_to":"1fa4df85_aa6f5990","updated":"2020-03-02 14:19:40.000000000","message":"not always","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f4330a651ba1c77a2a08e71ccc0c3f88ab771caa","unresolved":false,"context_lines":[{"line_number":685,"context_line":"                                      [ovn_const.OVN_QOS_POLICY_EXT_ID_KEY]"},{"line_number":686,"context_line":"                                      if ovn_const.OVN_QOS_POLICY_EXT_ID_KEY"},{"line_number":687,"context_line":"                                      in ovn_net.external_ids else None)"},{"line_number":688,"context_line":"                self.add_txns_to_sync_port_qos(txn, port[\u0027id\u0027], lswitch_name,"},{"line_number":689,"context_line":"                                               qos_options_new,"},{"line_number":690,"context_line":"                                               qos_options_old,"},{"line_number":691,"context_line":"                                               ovn_net_qos_policy)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_eaaeb196","line":688,"range":{"start_line":688,"start_character":21,"end_line":688,"end_character":46},"updated":"2020-03-02 12:45:21.000000000","message":"What if there is no difference between old and new qos rules? Why to execute it then?","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"543e551093cac74c1b54906073c69c9ed24ea5b0","unresolved":false,"context_lines":[{"line_number":685,"context_line":"                                      [ovn_const.OVN_QOS_POLICY_EXT_ID_KEY]"},{"line_number":686,"context_line":"                                      if ovn_const.OVN_QOS_POLICY_EXT_ID_KEY"},{"line_number":687,"context_line":"                                      in ovn_net.external_ids else None)"},{"line_number":688,"context_line":"                self.add_txns_to_sync_port_qos(txn, port[\u0027id\u0027], lswitch_name,"},{"line_number":689,"context_line":"                                               qos_options_new,"},{"line_number":690,"context_line":"                                               qos_options_old,"},{"line_number":691,"context_line":"                                               ovn_net_qos_policy)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_70af10e3","line":688,"range":{"start_line":688,"start_character":21,"end_line":688,"end_character":46},"in_reply_to":"1fa4df85_eaaeb196","updated":"2020-03-02 14:19:40.000000000","message":"do it in another patch.","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f4330a651ba1c77a2a08e71ccc0c3f88ab771caa","unresolved":false,"context_lines":[{"line_number":726,"context_line":"            # Delete old QoS rule"},{"line_number":727,"context_line":"            txn.add(self._nb_idl.qos_del(**qos_rule_column_old))"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        # If we want to delete network qos_rule by using"},{"line_number":730,"context_line":"        # param \u0027--no-qos-policy\u0027"},{"line_number":731,"context_line":"        elif not qos_options_old and ovn_net_qos_policy:"},{"line_number":732,"context_line":"            txn.add(self._nb_idl.qos_del(lswitch_name))"},{"line_number":733,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_aa79992f","line":730,"range":{"start_line":729,"start_character":8,"end_line":730,"end_character":32},"updated":"2020-03-02 12:45:21.000000000","message":"We\u0027re not using --no-qos-policy here. Its just an argument for neutron client. We\u0027re not using neutron client here, but we\u0027re deleting qos row for a given LSP.","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"543e551093cac74c1b54906073c69c9ed24ea5b0","unresolved":false,"context_lines":[{"line_number":726,"context_line":"            # Delete old QoS rule"},{"line_number":727,"context_line":"            txn.add(self._nb_idl.qos_del(**qos_rule_column_old))"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        # If we want to delete network qos_rule by using"},{"line_number":730,"context_line":"        # param \u0027--no-qos-policy\u0027"},{"line_number":731,"context_line":"        elif not qos_options_old and ovn_net_qos_policy:"},{"line_number":732,"context_line":"            txn.add(self._nb_idl.qos_del(lswitch_name))"},{"line_number":733,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_30b9982d","line":730,"range":{"start_line":729,"start_character":8,"end_line":730,"end_character":32},"in_reply_to":"1fa4df85_aa79992f","updated":"2020-03-02 14:19:40.000000000","message":"Done.","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":24791,"name":"Maciej Jozefczyk","email":"jeicam.pl@gmail.com","username":"maciej.jozefczyk"},"change_message_id":"f4330a651ba1c77a2a08e71ccc0c3f88ab771caa","unresolved":false,"context_lines":[{"line_number":732,"context_line":"            txn.add(self._nb_idl.qos_del(lswitch_name))"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"    def _is_qos_required_for_port(self, port):"},{"line_number":735,"context_line":"        if \u0027qos_policy_id\u0027 not in port:"},{"line_number":736,"context_line":"            return False"},{"line_number":737,"context_line":"        return (utils.is_router_gw_port(port) or"},{"line_number":738,"context_line":"                not utils.is_network_device_port(port))"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_aaf439d0","line":735,"range":{"start_line":735,"start_character":12,"end_line":735,"end_character":39},"updated":"2020-03-02 12:45:21.000000000","message":"This if will always be met, when API has port QoS API extension enabled.","commit_id":"a85498751404ca68d688bdef060e884fef277796"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"543e551093cac74c1b54906073c69c9ed24ea5b0","unresolved":false,"context_lines":[{"line_number":732,"context_line":"            txn.add(self._nb_idl.qos_del(lswitch_name))"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"    def _is_qos_required_for_port(self, port):"},{"line_number":735,"context_line":"        if \u0027qos_policy_id\u0027 not in port:"},{"line_number":736,"context_line":"            return False"},{"line_number":737,"context_line":"        return (utils.is_router_gw_port(port) or"},{"line_number":738,"context_line":"                not utils.is_network_device_port(port))"}],"source_content_type":"text/x-python","patch_set":9,"id":"1fa4df85_501774ee","line":735,"range":{"start_line":735,"start_character":12,"end_line":735,"end_character":39},"in_reply_to":"1fa4df85_aaf439d0","updated":"2020-03-02 14:19:40.000000000","message":"It is necessary for UT, like checking network qos policy.","commit_id":"a85498751404ca68d688bdef060e884fef277796"}],"neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/test_mech_driver.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"9d26e3e4d02d3013934b6e45805cb885918381c6","unresolved":false,"context_lines":[{"line_number":3000,"context_line":"                               parent[\u0027id\u0027]}})"},{"line_number":3001,"context_line":"        self.nb_idl.ls_get.return_value.execute.return_value \u003d ("},{"line_number":3002,"context_line":"            mock.Mock(ports\u003d[fake_row]))"},{"line_number":3003,"context_line":"        fake_lsp \u003d (fakes.FakeOVNPort.from_neutron_port(parent))"},{"line_number":3004,"context_line":"        self.nb_idl.lookup.return_value \u003d fake_lsp"},{"line_number":3005,"context_line":"        self.mech_driver._ovn_client.delete_port(self.context, parent[\u0027id\u0027])"},{"line_number":3006,"context_line":"        self.nb_idl.unset_lswitch_port_to_virtual_type.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_589276f8","line":3003,"range":{"start_line":3003,"start_character":63,"end_line":3003,"end_character":64},"updated":"2020-02-26 16:26:20.000000000","message":"nit: parentheses not needed","commit_id":"c12005d48d81906ea79ebc768209e18060d7b2cc"},{"author":{"_account_id":29157,"name":"zhanghao","email":"hao.zhang.am.i@gmail.com","username":"zhanghao2"},"change_message_id":"fc62d1935a29570620378f564705f6e0e0314edd","unresolved":false,"context_lines":[{"line_number":3000,"context_line":"                               parent[\u0027id\u0027]}})"},{"line_number":3001,"context_line":"        self.nb_idl.ls_get.return_value.execute.return_value \u003d ("},{"line_number":3002,"context_line":"            mock.Mock(ports\u003d[fake_row]))"},{"line_number":3003,"context_line":"        fake_lsp \u003d (fakes.FakeOVNPort.from_neutron_port(parent))"},{"line_number":3004,"context_line":"        self.nb_idl.lookup.return_value \u003d fake_lsp"},{"line_number":3005,"context_line":"        self.mech_driver._ovn_client.delete_port(self.context, parent[\u0027id\u0027])"},{"line_number":3006,"context_line":"        self.nb_idl.unset_lswitch_port_to_virtual_type.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_b487ee61","line":3003,"range":{"start_line":3003,"start_character":63,"end_line":3003,"end_character":64},"in_reply_to":"1fa4df85_589276f8","updated":"2020-02-27 03:06:57.000000000","message":"Done","commit_id":"c12005d48d81906ea79ebc768209e18060d7b2cc"}]}
