)]}'
{"neutron/common/ovn/qos.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2018 DtDream Technology Co.,Ltd."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_7728b285","line":1,"updated":"2020-04-15 14:17:58.000000000","message":"This code should go to neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/qos.py","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                rule[\u0027burst\u0027] \u003d burst"},{"line_number":43,"context_line":"            return"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    rule \u003d {\u0027priority\u0027: 1000,"},{"line_number":46,"context_line":"            \u0027direction\u0027: direction,"},{"line_number":47,"context_line":"            \u0027match\u0027: match,"},{"line_number":48,"context_line":"            \u0027burst\u0027: burst,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_ba7ea168","line":45,"range":{"start_line":45,"start_character":24,"end_line":45,"end_character":28},"updated":"2020-04-15 14:17:58.000000000","message":"Why don\u0027t you use \"priority\"?","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    rules.append(rule)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def _update_floating_ip_dscp_mark(rules, lswitch, id, fip, gw_port_id, dscp):"},{"line_number":57,"context_line":"    priority \u003d 1000"},{"line_number":58,"context_line":"    direction \u003d \u0027from-lport\u0027"},{"line_number":59,"context_line":"    match \u003d _get_floating_ip_qos_match(direction, fip, gw_port_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_97ae1e96","line":56,"range":{"start_line":56,"start_character":50,"end_line":56,"end_character":52},"updated":"2020-04-15 14:17:58.000000000","message":"this is a built-in variable, please, change this name. E.g.: \"_id\"","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    rules.append(rule)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def get_floating_ip_qos_rules(lswitch, id, fip, gw_port_id, policy_id):"},{"line_number":78,"context_line":"    rules \u003d []"},{"line_number":79,"context_line":"    if policy_id and gw_port_id:"},{"line_number":80,"context_line":"        context \u003d n_context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_f794c246","line":77,"range":{"start_line":77,"start_character":39,"end_line":77,"end_character":41},"updated":"2020-04-15 14:17:58.000000000","message":"ditto","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    rules.append(rule)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def get_floating_ip_qos_rules(lswitch, id, fip, gw_port_id, policy_id):"},{"line_number":78,"context_line":"    rules \u003d []"},{"line_number":79,"context_line":"    if policy_id and gw_port_id:"},{"line_number":80,"context_line":"        context \u003d n_context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_17c16e2f","line":77,"range":{"start_line":77,"start_character":60,"end_line":77,"end_character":69},"updated":"2020-04-15 14:17:58.000000000","message":"nit: can you use \"qos_policy_id\"?","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def get_floating_ip_qos_rules(lswitch, id, fip, gw_port_id, policy_id):"},{"line_number":78,"context_line":"    rules \u003d []"},{"line_number":79,"context_line":"    if policy_id and gw_port_id:"},{"line_number":80,"context_line":"        context \u003d n_context.get_admin_context()"},{"line_number":81,"context_line":"        fip_rules \u003d qos_rule.get_rules(qos_policy.QosPolicy, context,"},{"line_number":82,"context_line":"                                       policy_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_57093693","line":79,"range":{"start_line":79,"start_character":4,"end_line":79,"end_character":32},"updated":"2020-04-15 14:17:58.000000000","message":"To avoid the extra indentation in the rest of the method, why not this?\n\nif not qos_policy_id or not gw_port_id:\n   return rules\n\n(and the rest of the function)","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":77,"context_line":"def get_floating_ip_qos_rules(lswitch, id, fip, gw_port_id, policy_id):"},{"line_number":78,"context_line":"    rules \u003d []"},{"line_number":79,"context_line":"    if policy_id and gw_port_id:"},{"line_number":80,"context_line":"        context \u003d n_context.get_admin_context()"},{"line_number":81,"context_line":"        fip_rules \u003d qos_rule.get_rules(qos_policy.QosPolicy, context,"},{"line_number":82,"context_line":"                                       policy_id)"},{"line_number":83,"context_line":"        for rule in fip_rules:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_57bbf6c2","line":80,"range":{"start_line":80,"start_character":7,"end_line":80,"end_character":47},"updated":"2020-04-15 14:17:58.000000000","message":"Why don\u0027t you call this method passing the used context? \"get_floating_ip_qos_rules\" is used in \"_create_or_update_floatingip_qos\". This method is called when a FIP is created or updated. Use this context.","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        fip_rules \u003d qos_rule.get_rules(qos_policy.QosPolicy, context,"},{"line_number":82,"context_line":"                                       policy_id)"},{"line_number":83,"context_line":"        for rule in fip_rules:"},{"line_number":84,"context_line":"            if isinstance(rule, qos_rule.QosDscpMarkingRule):"},{"line_number":85,"context_line":"                if rule.dscp_mark:"},{"line_number":86,"context_line":"                    _update_floating_ip_dscp_mark("},{"line_number":87,"context_line":"                        rules, lswitch, id, fip, gw_port_id, rule.dscp_mark)"},{"line_number":88,"context_line":"            elif isinstance(rule, qos_rule.QosBandwidthLimitRule):"},{"line_number":89,"context_line":"                direction \u003d \u0027from-lport\u0027 if rule.direction \u003d\u003d \u0027egress\u0027 else \\"},{"line_number":90,"context_line":"                    \u0027to-lport\u0027"},{"line_number":91,"context_line":"                _update_floating_ip_bandwidth("},{"line_number":92,"context_line":"                    rules, lswitch, id, fip, gw_port_id, direction,"},{"line_number":93,"context_line":"                    rule.max_kbps, rule.max_burst_kbps)"},{"line_number":94,"context_line":"    return rules"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_7ab899c7","line":93,"range":{"start_line":84,"start_character":0,"end_line":93,"end_character":55},"updated":"2020-04-15 14:17:58.000000000","message":"What happens if you have a DSCP and a BW rule in the same direction? You\u0027ll create two rules with the same priority, direction, match and switch. You can\u0027t add two rules having the same tuple, self._nb_idl.qos_add(**rule) will reject a second rule if (direction,priority,match) are the same: https://github.com/openstack/ovsdbapp/blob/e8ac095c897f5c2905981061764fddab7d77cd39/ovsdbapp/schema/ovn_northbound/commands.py#L243-L255","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/api.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":625,"context_line":"        :type if_exists:        bool"},{"line_number":626,"context_line":"        :returns:               :class:`Command` with no result"},{"line_number":627,"context_line":"        \"\"\""},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"    def get_fip_qos_rules(self, fip_id):"},{"line_number":630,"context_line":"        \"\"\"Get floating IP QoS rules."},{"line_number":631,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_f7404238","line":628,"updated":"2020-04-15 14:17:58.000000000","message":"This should be an abstract method\n\n@abc.abstractmethod","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/commands.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8022efae7be84e73ca596a84e987580be067df23","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from oslo_utils import timeutils"},{"line_number":16,"context_line":"from ovsdbapp.backend.ovs_idl import command"},{"line_number":17,"context_line":"from ovsdbapp.backend.ovs_idl import idlutils"},{"line_number":18,"context_line":"from ovsdbapp.backend.ovs_idl import rowview"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron._i18n import _"},{"line_number":21,"context_line":"from neutron.common.ovn import constants as ovn_const"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_dc5f6d0c","line":18,"updated":"2020-04-11 16:51:51.000000000","message":"pep8: F401 \u0027ovsdbapp.backend.ovs_idl.rowview\u0027 imported but unused","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/qos.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from neutron.objects.qos import binding as qos_binding"},{"line_number":17,"context_line":"from neutron.objects.qos import policy as qos_policy"},{"line_number":18,"context_line":"from neutron.objects.qos import rule as qos_rule"},{"line_number":19,"context_line":"from neutron_lib import constants"},{"line_number":20,"context_line":"from neutron_lib import context as n_context"},{"line_number":21,"context_line":"from neutron_lib.plugins import directory"},{"line_number":22,"context_line":"from neutron_lib.plugins import constants as lib_constants"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_79626718","line":19,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: F811 redefinition of unused \u0027constants\u0027 from line 15","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutron_lib import constants"},{"line_number":20,"context_line":"from neutron_lib import context as n_context"},{"line_number":21,"context_line":"from neutron_lib.plugins import directory"},{"line_number":22,"context_line":"from neutron_lib.plugins import constants as lib_constants"},{"line_number":23,"context_line":"from neutron_lib.services.qos import constants as qos_consts"},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_5965eb1c","line":22,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: H306  imports not in alphabetical order (neutron_lib.plugins.directory, neutron_lib.plugins.constants)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                fip \u003d self._l3plugin._make_floatingip_dict(fip_db)"},{"line_number":267,"context_line":"                if fip.get(\u0027port_id\u0027) and fip.get(\u0027router_id\u0027) \\"},{"line_number":268,"context_line":"                        and fip.get(\u0027qos_policy_id\u0027):"},{"line_number":269,"context_line":"                    ovn_qos \u003d self._l3plugin._ovn_client._nb_idl.get_fip_qos_rules("},{"line_number":270,"context_line":"                        fip[\u0027id\u0027])"},{"line_number":271,"context_line":"                    self._l3plugin._ovn_client._delete_floatingip_qos(ovn_qos)"},{"line_number":272,"context_line":"                    self._l3plugin._ovn_client._create_or_update_floatingip_qos("}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_b96cef08","line":269,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E501 line too long (83 \u003e 79 characters)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                    ovn_qos \u003d self._l3plugin._ovn_client._nb_idl.get_fip_qos_rules("},{"line_number":270,"context_line":"                        fip[\u0027id\u0027])"},{"line_number":271,"context_line":"                    self._l3plugin._ovn_client._delete_floatingip_qos(ovn_qos)"},{"line_number":272,"context_line":"                    self._l3plugin._ovn_client._create_or_update_floatingip_qos("},{"line_number":273,"context_line":"                        fip)"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"    def _get_floating_ip_qos_match(self, direction, fip, gw_port_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_996f73fb","line":272,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        priority \u003d 1000"},{"line_number":286,"context_line":"        match \u003d self._get_floating_ip_qos_match(direction, fip, gw_port_id)"},{"line_number":287,"context_line":"        for rule in rules:"},{"line_number":288,"context_line":"            if direction \u003d\u003d rule[\u0027direction\u0027] and priority \u003d\u003d rule[\u0027priority\u0027] \\"},{"line_number":289,"context_line":"                    and match \u003d\u003d rule[\u0027match\u0027] and lswitch \u003d\u003d rule[\u0027switch\u0027] \\"},{"line_number":290,"context_line":"                    and _id \u003d\u003d rule[constants.OVN_FIP_EXT_ID_KEY]:"},{"line_number":291,"context_line":"                if rate:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_f975d7cd","line":288,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        direction \u003d \u0027from-lport\u0027"},{"line_number":311,"context_line":"        match \u003d self._get_floating_ip_qos_match(direction, fip, gw_port_id)"},{"line_number":312,"context_line":"        for rule in rules:"},{"line_number":313,"context_line":"            if direction \u003d\u003d rule[\u0027direction\u0027] and priority \u003d\u003d rule[\u0027priority\u0027] \\"},{"line_number":314,"context_line":"                    and match \u003d\u003d rule[\u0027match\u0027] and lswitch \u003d\u003d rule[\u0027switch\u0027] \\"},{"line_number":315,"context_line":"                    and _id \u003d\u003d rule[constants.OVN_FIP_EXT_ID_KEY]:"},{"line_number":316,"context_line":"                rule[\u0027dscp\u0027] \u003d dscp"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_d970dbdd","line":313,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0df5dc75b766ba557e740b116d2b55c677cc5551","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                fip \u003d self._l3plugin._make_floatingip_dict(fip_db)"},{"line_number":267,"context_line":"                if fip.get(\u0027port_id\u0027) and fip.get(\u0027router_id\u0027) \\"},{"line_number":268,"context_line":"                        and fip.get(\u0027qos_policy_id\u0027):"},{"line_number":269,"context_line":"                    ovn_qos \u003d \\"},{"line_number":270,"context_line":"                        self._l3plugin._ovn_client._nb_idl.get_fip_qos_rules("},{"line_number":271,"context_line":"                            fip[\u0027id\u0027])"},{"line_number":272,"context_line":"                    self.delete_floatingip_qos(fip[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_74137c67","line":269,"updated":"2020-05-07 05:22:18.000000000","message":"pep8: F841 local variable \u0027ovn_qos\u0027 is assigned to but never used","commit_id":"2491cee2306efa8e7d59f640df38c8dee800d15e"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":694,"context_line":"        fip \u003d self.db_find(\u0027QoS\u0027, (\u0027external_ids\u0027, \u0027\u003d\u0027,"},{"line_number":695,"context_line":"                                   {ovn_const.OVN_FIP_EXT_ID_KEY: fip_id}))"},{"line_number":696,"context_line":"        result \u003d fip.execute(check_error\u003dTrue)"},{"line_number":697,"context_line":"        return result if result else []"},{"line_number":698,"context_line":""},{"line_number":699,"context_line":"    def is_port_groups_supported(self):"},{"line_number":700,"context_line":"        return self.is_table_present(\u0027Port_Group\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_14032c11","line":697,"range":{"start_line":697,"start_character":15,"end_line":697,"end_character":39},"updated":"2020-04-15 14:17:58.000000000","message":"result or []","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"}],"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":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":896,"context_line":"                        floatingip[\u0027id\u0027])"},{"line_number":897,"context_line":"        self._transaction(commands, txn\u003dtxn)"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":"    def _create_or_update_floatingip_qos(self, floatingip, txn\u003dNone):"},{"line_number":900,"context_line":"        router_id \u003d floatingip.get(\u0027router_id\u0027)"},{"line_number":901,"context_line":"        qos_policy_id \u003d floatingip.get(\u0027qos_policy_id\u0027)"},{"line_number":902,"context_line":"        if router_id and qos_policy_id:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_77e9d218","line":899,"updated":"2020-04-15 14:17:58.000000000","message":"This logic should go to the ovn_client QoS extension\n\nneutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/qos.py","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"        fip_status \u003d None"},{"line_number":1128,"context_line":"        router_id \u003d None"},{"line_number":1129,"context_line":"        ovn_fip \u003d self._nb_idl.get_floatingip(floatingip[\u0027id\u0027])"},{"line_number":1130,"context_line":"        ovn_qos \u003d self._nb_idl.get_fip_qos_rules(floatingip[\u0027id\u0027])"},{"line_number":1131,"context_line":""},{"line_number":1132,"context_line":"        if not ovn_fip and fip_object:"},{"line_number":1133,"context_line":"            router_id \u003d fip_object.get(\u0027router_id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_97445e1d","line":1130,"range":{"start_line":1130,"start_character":8,"end_line":1130,"end_character":66},"updated":"2020-04-15 14:17:58.000000000","message":"This should be retrieved inside the method. In this case, \"_delete_floatingip_qos\"","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"                self._delete_floatingip(ovn_fip, lrouter, txn\u003dtxn)"},{"line_number":1147,"context_line":"                fip_status \u003d const.FLOATINGIP_STATUS_DOWN"},{"line_number":1148,"context_line":""},{"line_number":1149,"context_line":"            self._delete_floatingip_qos(ovn_qos, txn)"},{"line_number":1150,"context_line":"            if floatingip.get(\u0027port_id\u0027):"},{"line_number":1151,"context_line":"                self._create_or_update_floatingip(floatingip, txn\u003dtxn)"},{"line_number":1152,"context_line":"                self._create_or_update_floatingip_qos(floatingip, txn\u003dtxn)"},{"line_number":1153,"context_line":"                fip_status \u003d const.FLOATINGIP_STATUS_ACTIVE"},{"line_number":1154,"context_line":""},{"line_number":1155,"context_line":"        if check_rev_cmd.result \u003d\u003d ovn_const.TXN_COMMITTED:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_7760b2a6","line":1152,"range":{"start_line":1149,"start_character":12,"end_line":1152,"end_character":74},"updated":"2020-04-15 14:17:58.000000000","message":"Are we going to deleted and create the QoS rules every time we have a FIP update? No sorry, this is inefficient.\n\nWhen the FIP is updated, we need to check if the QoS has been updated (added, changed, deleted) and execute the needed action.","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":1167,"context_line":"    def delete_floatingip(self, context, fip_id, fip_object\u003dNone):"},{"line_number":1168,"context_line":"        router_id \u003d None"},{"line_number":1169,"context_line":"        ovn_fip \u003d self._nb_idl.get_floatingip(fip_id)"},{"line_number":1170,"context_line":"        qos_rules \u003d self._nb_idl.get_fip_qos_rules(fip_id)"},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"        if not ovn_fip and fip_object:"},{"line_number":1173,"context_line":"            router_id \u003d fip_object.get(\u0027router_id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_d76ee694","line":1170,"range":{"start_line":1170,"start_character":0,"end_line":1170,"end_character":58},"updated":"2020-04-15 14:17:58.000000000","message":"This logic should be implemented inside \"_delete_floatingip_qos\". We should only pass fip_id (or the fip_object if needed).","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":1191,"context_line":""},{"line_number":1192,"context_line":"    def disassociate_floatingip(self, floatingip, router_id):"},{"line_number":1193,"context_line":"        lrouter \u003d utils.ovn_name(router_id)"},{"line_number":1194,"context_line":"        qos_rules \u003d self._nb_idl.get_fip_qos_rules(floatingip[\u0027id\u0027])"},{"line_number":1195,"context_line":"        try:"},{"line_number":1196,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1197,"context_line":"                self._delete_floatingip(floatingip, lrouter, txn)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_d7f386e6","line":1194,"updated":"2020-04-15 14:17:58.000000000","message":"ditto","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f88a3a8d3b2655d51d86659952a00b783f223f94","unresolved":false,"context_lines":[{"line_number":1810,"context_line":"        lswitch_name \u003d utils.ovn_name(network[\u0027id\u0027])"},{"line_number":1811,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":1812,"context_line":"            txn.add(self._nb_idl.ls_add(lswitch_name, may_exist\u003dTrue,"},{"line_number":1813,"context_line":"                                        **lswitch_params))"},{"line_number":1814,"context_line":"            physnet \u003d network.get(pnet.PHYSICAL_NETWORK)"},{"line_number":1815,"context_line":"            if physnet:"},{"line_number":1816,"context_line":"                self._create_provnet_port(txn, network, physnet,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_17fe8ead","line":1813,"updated":"2020-04-15 14:17:58.000000000","message":"Why this change?","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_db_sync.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from neutron.common.ovn import utils"},{"line_number":32,"context_line":"from neutron.conf.plugins.ml2.drivers.ovn import ovn_conf"},{"line_number":33,"context_line":"from neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb import ovn_client"},{"line_number":34,"context_line":"from neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions import qos"},{"line_number":35,"context_line":"from neutron.services.segments import db as segments_db"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_197b63be","line":34,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: F401 \u0027neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions.qos\u0027 imported but unused","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"from neutron.common.ovn import utils"},{"line_number":32,"context_line":"from neutron.conf.plugins.ml2.drivers.ovn import ovn_conf"},{"line_number":33,"context_line":"from neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb import ovn_client"},{"line_number":34,"context_line":"from neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions import qos"},{"line_number":35,"context_line":"from neutron.services.segments import db as segments_db"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_794b8786","line":34,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: H306  imports not in alphabetical order (neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.ovn_client, neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions.qos)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":511,"context_line":"            ovn_fips \u003d self.ovn_api.qos_list(lswitch).execute(check_error\u003dTrue)"},{"line_number":512,"context_line":"            with self.ovn_api.transaction(check_error\u003dTrue) as txn:"},{"line_number":513,"context_line":"                for ovn_fip in ovn_fips:"},{"line_number":514,"context_line":"                    ovn_fip \u003d self._ovn_client._qos_driver.build_qos_to_compare(ovn_fip)"},{"line_number":515,"context_line":"                    if ovn_fip not in db_fips:"},{"line_number":516,"context_line":"                        LOG.debug(\u0027QoS-SYNC: delete qos: %s\u0027, ovn_fip)"},{"line_number":517,"context_line":"                        if self.mode \u003d\u003d SYNC_MODE_REPAIR:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_594e8b96","line":514,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E501 line too long (88 \u003e 79 characters)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_ovn_db_sync.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.common.ovn import utils"},{"line_number":21,"context_line":"from neutron.conf.plugins.ml2.drivers.ovn import ovn_conf as ovn_config"},{"line_number":22,"context_line":"from neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb import ovn_db_sync"},{"line_number":23,"context_line":"from neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions \\"},{"line_number":24,"context_line":"    import qos as qos_extension"},{"line_number":25,"context_line":"from neutron.services.segments import db as segments_db"},{"line_number":26,"context_line":"from neutron.tests.functional import base"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_3980df8b","line":23,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: H306  imports not in alphabetical order (neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.ovn_db_sync, neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions.qos)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0df5dc75b766ba557e740b116d2b55c677cc5551","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutron.common.ovn import utils"},{"line_number":20,"context_line":"from neutron.conf.plugins.ml2.drivers.ovn import ovn_conf as ovn_config"},{"line_number":21,"context_line":"from neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb import ovn_db_sync"},{"line_number":22,"context_line":"from neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions \\"},{"line_number":23,"context_line":"    import qos as qos_extension"},{"line_number":24,"context_line":"from neutron.services.segments import db as segments_db"},{"line_number":25,"context_line":"from neutron.tests.functional import base"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_54164057","line":22,"updated":"2020-05-07 05:22:18.000000000","message":"pep8: H306  imports not in alphabetical order (neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.ovn_db_sync, neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions.qos)","commit_id":"2491cee2306efa8e7d59f640df38c8dee800d15e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26e0faa1d5be0e055c2daaf41dd6632a5f3e5a0c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":"import test_qos_driver"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.common.ovn import acl as acl_utils"},{"line_number":19,"context_line":"from neutron.common.ovn import constants as ovn_const"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_7391fb99","line":16,"updated":"2020-05-12 06:44:40.000000000","message":"pep8: H306  imports not in alphabetical order (unittest.mock, test_qos_driver)","commit_id":"5e22f5e12a48dd7666f53fffe9d3e1e6a1c199da"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26e0faa1d5be0e055c2daaf41dd6632a5f3e5a0c","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":"import test_qos_driver"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron.common.ovn import acl as acl_utils"},{"line_number":19,"context_line":"from neutron.common.ovn import constants as ovn_const"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_538e7778","line":16,"updated":"2020-05-12 06:44:40.000000000","message":"pep8: I201 Missing newline before sections or imports.","commit_id":"5e22f5e12a48dd7666f53fffe9d3e1e6a1c199da"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26e0faa1d5be0e055c2daaf41dd6632a5f3e5a0c","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from neutron.common.ovn import utils"},{"line_number":21,"context_line":"from neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions \\"},{"line_number":22,"context_line":"    import qos as qos_extension"},{"line_number":23,"context_line":"from neutron.conf.plugins.ml2.drivers.ovn import ovn_conf as ovn_config"},{"line_number":24,"context_line":"from neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb import ovn_db_sync"},{"line_number":25,"context_line":"from neutron.services.segments import db as segments_db"},{"line_number":26,"context_line":"from neutron.tests.functional import base"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_b3e8b316","line":23,"updated":"2020-05-12 06:44:40.000000000","message":"pep8: H306  imports not in alphabetical order (neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions.qos, neutron.conf.plugins.ml2.drivers.ovn.ovn_conf)","commit_id":"5e22f5e12a48dd7666f53fffe9d3e1e6a1c199da"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26e0faa1d5be0e055c2daaf41dd6632a5f3e5a0c","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class TestOvnNbSync(test_qos_driver.TestOVNQosDriver):"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    _extension_drivers \u003d [\u0027port_security\u0027, \u0027dns\u0027, \u0027qos\u0027]"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_93edaf27","line":42,"updated":"2020-05-12 06:44:40.000000000","message":"pep8: E303 too many blank lines (3)","commit_id":"5e22f5e12a48dd7666f53fffe9d3e1e6a1c199da"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26e0faa1d5be0e055c2daaf41dd6632a5f3e5a0c","unresolved":false,"context_lines":[{"line_number":797,"context_line":"                                                        ip_prefix, nexthop,"},{"line_number":798,"context_line":"                                                        True))"},{"line_number":799,"context_line":""},{"line_number":800,"context_line":"            for lrouter_name, nat_dict in("},{"line_number":801,"context_line":"                    self.create_lrouter_nats):"},{"line_number":802,"context_line":"                txn.add(self.nb_api.add_nat_rule_in_lrouter("},{"line_number":803,"context_line":"                    lrouter_name, **nat_dict))"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_f3f22b06","line":800,"updated":"2020-05-12 06:44:40.000000000","message":"pep8: E225 missing whitespace around operator","commit_id":"5e22f5e12a48dd7666f53fffe9d3e1e6a1c199da"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26e0faa1d5be0e055c2daaf41dd6632a5f3e5a0c","unresolved":false,"context_lines":[{"line_number":802,"context_line":"                txn.add(self.nb_api.add_nat_rule_in_lrouter("},{"line_number":803,"context_line":"                    lrouter_name, **nat_dict))"},{"line_number":804,"context_line":""},{"line_number":805,"context_line":"            for lrouter_name, nat_dict in("},{"line_number":806,"context_line":"                    self.delete_lrouter_nats):"},{"line_number":807,"context_line":"                txn.add(self.nb_api.delete_nat_rule_in_lrouter("},{"line_number":808,"context_line":"                    lrouter_name, if_exists\u003dTrue, **nat_dict))"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_d3f727f5","line":805,"updated":"2020-05-12 06:44:40.000000000","message":"pep8: E225 missing whitespace around operator","commit_id":"5e22f5e12a48dd7666f53fffe9d3e1e6a1c199da"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26e0faa1d5be0e055c2daaf41dd6632a5f3e5a0c","unresolved":false,"context_lines":[{"line_number":809,"context_line":""},{"line_number":810,"context_line":"            txn.add(self.nb_api.qos_add(**self.create_lswitch_qos_rules))"},{"line_number":811,"context_line":""},{"line_number":812,"context_line":"            for lswitch_name, direction in("},{"line_number":813,"context_line":"                    self.delete_lswitch_qos_rules):"},{"line_number":814,"context_line":"                txn.add(self.nb_api.qos_del(lswitch_name, direction))"},{"line_number":815,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_33dca373","line":812,"updated":"2020-05-12 06:44:40.000000000","message":"pep8: E225 missing whitespace around operator","commit_id":"5e22f5e12a48dd7666f53fffe9d3e1e6a1c199da"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_qos_driver.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8022efae7be84e73ca596a84e987580be067df23","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron.tests.functional import base"},{"line_number":16,"context_line":"from neutron.tests.unit.api import test_extensions"},{"line_number":17,"context_line":"from neutron.extensions import qos as qos_ext"},{"line_number":18,"context_line":"from ovsdbapp.backend.ovs_idl import idlutils"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f4c43b2_3c9ad1c4","line":17,"updated":"2020-04-11 16:51:51.000000000","message":"pep8: H306  imports not in alphabetical order (neutron.tests.unit.api.test_extensions, neutron.extensions.qos)","commit_id":"589ba65ec7b0e0172dd33a26e84de22256e70065"}],"neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/ovsdb/extensions/test_qos.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        mock_qos_rules \u003d mock.Mock()"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        with mock.patch.object(self.policy, \u0027get_bound_floatingips\u0027,"},{"line_number":382,"context_line":"                               return_value\u003d[self.floatingip_id]) as get_bound_floatingips, \\"},{"line_number":383,"context_line":"             mock.patch.object(self.l3plugin, \u0027_get_floatingip\u0027,"},{"line_number":384,"context_line":"                               return_value\u003dself.floatingip) as get_floatingip, \\"},{"line_number":385,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_79bd4767","line":382,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E501 line too long (93 \u003e 79 characters)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        with mock.patch.object(self.policy, \u0027get_bound_floatingips\u0027,"},{"line_number":382,"context_line":"                               return_value\u003d[self.floatingip_id]) as get_bound_floatingips, \\"},{"line_number":383,"context_line":"             mock.patch.object(self.l3plugin, \u0027_get_floatingip\u0027,"},{"line_number":384,"context_line":"                               return_value\u003dself.floatingip) as get_floatingip, \\"},{"line_number":385,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"},{"line_number":386,"context_line":"                               return_value\u003dself.floatingip) as make_floatingip_dict, \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_59c04be1","line":383,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        with mock.patch.object(self.policy, \u0027get_bound_floatingips\u0027,"},{"line_number":382,"context_line":"                               return_value\u003d[self.floatingip_id]) as get_bound_floatingips, \\"},{"line_number":383,"context_line":"             mock.patch.object(self.l3plugin, \u0027_get_floatingip\u0027,"},{"line_number":384,"context_line":"                               return_value\u003dself.floatingip) as get_floatingip, \\"},{"line_number":385,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"},{"line_number":386,"context_line":"                               return_value\u003dself.floatingip) as make_floatingip_dict, \\"},{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin._ovn_client,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_b9b7cf86","line":384,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                               return_value\u003d[self.floatingip_id]) as get_bound_floatingips, \\"},{"line_number":383,"context_line":"             mock.patch.object(self.l3plugin, \u0027_get_floatingip\u0027,"},{"line_number":384,"context_line":"                               return_value\u003dself.floatingip) as get_floatingip, \\"},{"line_number":385,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"},{"line_number":386,"context_line":"                               return_value\u003dself.floatingip) as make_floatingip_dict, \\"},{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin._ovn_client,"},{"line_number":388,"context_line":"                               \u0027_create_or_update_floatingip_qos\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_99bad36b","line":385,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":383,"context_line":"             mock.patch.object(self.l3plugin, \u0027_get_floatingip\u0027,"},{"line_number":384,"context_line":"                               return_value\u003dself.floatingip) as get_floatingip, \\"},{"line_number":385,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"},{"line_number":386,"context_line":"                               return_value\u003dself.floatingip) as make_floatingip_dict, \\"},{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin._ovn_client,"},{"line_number":388,"context_line":"                               \u0027_create_or_update_floatingip_qos\u0027,"},{"line_number":389,"context_line":"                               return_value\u003dNone) as create_or_update_floatingip_qos, \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_f9b0378e","line":386,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E501 line too long (87 \u003e 79 characters)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":384,"context_line":"                               return_value\u003dself.floatingip) as get_floatingip, \\"},{"line_number":385,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"},{"line_number":386,"context_line":"                               return_value\u003dself.floatingip) as make_floatingip_dict, \\"},{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin._ovn_client,"},{"line_number":388,"context_line":"                               \u0027_create_or_update_floatingip_qos\u0027,"},{"line_number":389,"context_line":"                               return_value\u003dNone) as create_or_update_floatingip_qos, \\"},{"line_number":390,"context_line":"             mock.patch.object(self.qos_driver, \u0027_qos_rules\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_d9abbb1b","line":387,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                               return_value\u003dself.floatingip) as make_floatingip_dict, \\"},{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin._ovn_client,"},{"line_number":388,"context_line":"                               \u0027_create_or_update_floatingip_qos\u0027,"},{"line_number":389,"context_line":"                               return_value\u003dNone) as create_or_update_floatingip_qos, \\"},{"line_number":390,"context_line":"             mock.patch.object(self.qos_driver, \u0027_qos_rules\u0027,"},{"line_number":391,"context_line":"                               return_value\u003dmock_qos_rules):"},{"line_number":392,"context_line":"            self.qos_driver.update_policy(self.ctx, self.qos_policies[0])"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_39abbf1d","line":389,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E501 line too long (87 \u003e 79 characters)","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"337e429a977e163ba78f7f6e342a71f9a8b7eb7e","unresolved":false,"context_lines":[{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin._ovn_client,"},{"line_number":388,"context_line":"                               \u0027_create_or_update_floatingip_qos\u0027,"},{"line_number":389,"context_line":"                               return_value\u003dNone) as create_or_update_floatingip_qos, \\"},{"line_number":390,"context_line":"             mock.patch.object(self.qos_driver, \u0027_qos_rules\u0027,"},{"line_number":391,"context_line":"                               return_value\u003dmock_qos_rules):"},{"line_number":392,"context_line":"            self.qos_driver.update_policy(self.ctx, self.qos_policies[0])"},{"line_number":393,"context_line":"        get_bound_floatingips.assert_called_once()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_19a6c354","line":390,"updated":"2020-05-06 10:28:07.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"4caf44354f53438d96b40df1b00f129972672f03"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0df5dc75b766ba557e740b116d2b55c677cc5551","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        with mock.patch.object(self.policy, \u0027get_bound_floatingips\u0027,"},{"line_number":382,"context_line":"                               return_value\u003d[self.floatingip_id]) \\"},{"line_number":383,"context_line":"                     as get_bound_floatingips, \\"},{"line_number":384,"context_line":"             mock.patch.object(self.l3plugin, \u0027_get_floatingip\u0027,"},{"line_number":385,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":386,"context_line":"                     as get_floatingip, \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_743a5ce7","line":383,"updated":"2020-05-07 05:22:18.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"2491cee2306efa8e7d59f640df38c8dee800d15e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0df5dc75b766ba557e740b116d2b55c677cc5551","unresolved":false,"context_lines":[{"line_number":381,"context_line":"        with mock.patch.object(self.policy, \u0027get_bound_floatingips\u0027,"},{"line_number":382,"context_line":"                               return_value\u003d[self.floatingip_id]) \\"},{"line_number":383,"context_line":"                     as get_bound_floatingips, \\"},{"line_number":384,"context_line":"             mock.patch.object(self.l3plugin, \u0027_get_floatingip\u0027,"},{"line_number":385,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":386,"context_line":"                     as get_floatingip, \\"},{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_543da0db","line":384,"updated":"2020-05-07 05:22:18.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"2491cee2306efa8e7d59f640df38c8dee800d15e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0df5dc75b766ba557e740b116d2b55c677cc5551","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                     as get_bound_floatingips, \\"},{"line_number":384,"context_line":"             mock.patch.object(self.l3plugin, \u0027_get_floatingip\u0027,"},{"line_number":385,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":386,"context_line":"                     as get_floatingip, \\"},{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"},{"line_number":388,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":389,"context_line":"                     as make_floatingip_dict, \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_b42344be","line":386,"updated":"2020-05-07 05:22:18.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"2491cee2306efa8e7d59f640df38c8dee800d15e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0df5dc75b766ba557e740b116d2b55c677cc5551","unresolved":false,"context_lines":[{"line_number":384,"context_line":"             mock.patch.object(self.l3plugin, \u0027_get_floatingip\u0027,"},{"line_number":385,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":386,"context_line":"                     as get_floatingip, \\"},{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"},{"line_number":388,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":389,"context_line":"                     as make_floatingip_dict, \\"},{"line_number":390,"context_line":"             mock.patch.object(self.l3plugin._ovn_client._qos_driver,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_941e0872","line":387,"updated":"2020-05-07 05:22:18.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"2491cee2306efa8e7d59f640df38c8dee800d15e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0df5dc75b766ba557e740b116d2b55c677cc5551","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                     as get_floatingip, \\"},{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"},{"line_number":388,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":389,"context_line":"                     as make_floatingip_dict, \\"},{"line_number":390,"context_line":"             mock.patch.object(self.l3plugin._ovn_client._qos_driver,"},{"line_number":391,"context_line":"                               \u0027create_or_update_floatingip_qos\u0027,"},{"line_number":392,"context_line":"                               return_value\u003dNone) \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_f42dcca8","line":389,"updated":"2020-05-07 05:22:18.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"2491cee2306efa8e7d59f640df38c8dee800d15e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0df5dc75b766ba557e740b116d2b55c677cc5551","unresolved":false,"context_lines":[{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"},{"line_number":388,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":389,"context_line":"                     as make_floatingip_dict, \\"},{"line_number":390,"context_line":"             mock.patch.object(self.l3plugin._ovn_client._qos_driver,"},{"line_number":391,"context_line":"                               \u0027create_or_update_floatingip_qos\u0027,"},{"line_number":392,"context_line":"                               return_value\u003dNone) \\"},{"line_number":393,"context_line":"                     as create_or_update_floatingip_qos, \\"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_d4289098","line":390,"updated":"2020-05-07 05:22:18.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"2491cee2306efa8e7d59f640df38c8dee800d15e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0df5dc75b766ba557e740b116d2b55c677cc5551","unresolved":false,"context_lines":[{"line_number":390,"context_line":"             mock.patch.object(self.l3plugin._ovn_client._qos_driver,"},{"line_number":391,"context_line":"                               \u0027create_or_update_floatingip_qos\u0027,"},{"line_number":392,"context_line":"                               return_value\u003dNone) \\"},{"line_number":393,"context_line":"                     as create_or_update_floatingip_qos, \\"},{"line_number":394,"context_line":"             mock.patch.object(self.qos_driver, \u0027_qos_rules\u0027,"},{"line_number":395,"context_line":"                               return_value\u003dmock_qos_rules):"},{"line_number":396,"context_line":"            self.qos_driver.update_policy(self.ctx, self.qos_policies[0])"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_3419f487","line":393,"updated":"2020-05-07 05:22:18.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"2491cee2306efa8e7d59f640df38c8dee800d15e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"0df5dc75b766ba557e740b116d2b55c677cc5551","unresolved":false,"context_lines":[{"line_number":391,"context_line":"                               \u0027create_or_update_floatingip_qos\u0027,"},{"line_number":392,"context_line":"                               return_value\u003dNone) \\"},{"line_number":393,"context_line":"                     as create_or_update_floatingip_qos, \\"},{"line_number":394,"context_line":"             mock.patch.object(self.qos_driver, \u0027_qos_rules\u0027,"},{"line_number":395,"context_line":"                               return_value\u003dmock_qos_rules):"},{"line_number":396,"context_line":"            self.qos_driver.update_policy(self.ctx, self.qos_policies[0])"},{"line_number":397,"context_line":"        get_bound_floatingips.assert_called_once()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_141cb875","line":394,"updated":"2020-05-07 05:22:18.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"2491cee2306efa8e7d59f640df38c8dee800d15e"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26e0faa1d5be0e055c2daaf41dd6632a5f3e5a0c","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"        with mock.patch.object(self.policy, \u0027get_bound_floatingips\u0027,"},{"line_number":382,"context_line":"                               return_value\u003d[self.floatingip_id]) \\"},{"line_number":383,"context_line":"                     as get_bound_floatingips, \\"},{"line_number":384,"context_line":"             mock.patch.object(self.l3plugin, \u0027_get_floatingip\u0027,"},{"line_number":385,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":386,"context_line":"                     as get_floatingip, \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_13d99f82","line":383,"updated":"2020-05-12 06:44:40.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"5e22f5e12a48dd7666f53fffe9d3e1e6a1c199da"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26e0faa1d5be0e055c2daaf41dd6632a5f3e5a0c","unresolved":false,"context_lines":[{"line_number":383,"context_line":"                     as get_bound_floatingips, \\"},{"line_number":384,"context_line":"             mock.patch.object(self.l3plugin, \u0027_get_floatingip\u0027,"},{"line_number":385,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":386,"context_line":"                     as get_floatingip, \\"},{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"},{"line_number":388,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":389,"context_line":"                     as make_floatingip_dict, \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_73e61b47","line":386,"updated":"2020-05-12 06:44:40.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"5e22f5e12a48dd7666f53fffe9d3e1e6a1c199da"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26e0faa1d5be0e055c2daaf41dd6632a5f3e5a0c","unresolved":false,"context_lines":[{"line_number":386,"context_line":"                     as get_floatingip, \\"},{"line_number":387,"context_line":"             mock.patch.object(self.l3plugin, \u0027_make_floatingip_dict\u0027,"},{"line_number":388,"context_line":"                               return_value\u003dself.floatingip) \\"},{"line_number":389,"context_line":"                     as make_floatingip_dict, \\"},{"line_number":390,"context_line":"             mock.patch.object(self.l3plugin._ovn_client._qos_driver,"},{"line_number":391,"context_line":"                               \u0027create_or_update_floatingip_qos\u0027,"},{"line_number":392,"context_line":"                               return_value\u003dNone) \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_53e31734","line":389,"updated":"2020-05-12 06:44:40.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"5e22f5e12a48dd7666f53fffe9d3e1e6a1c199da"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"26e0faa1d5be0e055c2daaf41dd6632a5f3e5a0c","unresolved":false,"context_lines":[{"line_number":390,"context_line":"             mock.patch.object(self.l3plugin._ovn_client._qos_driver,"},{"line_number":391,"context_line":"                               \u0027create_or_update_floatingip_qos\u0027,"},{"line_number":392,"context_line":"                               return_value\u003dNone) \\"},{"line_number":393,"context_line":"                     as create_or_update_floatingip_qos, \\"},{"line_number":394,"context_line":"             mock.patch.object(self.qos_driver, \u0027_qos_rules\u0027,"},{"line_number":395,"context_line":"                               return_value\u003dmock_qos_rules):"},{"line_number":396,"context_line":"            self.qos_driver.update_policy(self.ctx, self.qos_policies[0])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_b3d1d35a","line":393,"updated":"2020-05-12 06:44:40.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"5e22f5e12a48dd7666f53fffe9d3e1e6a1c199da"}]}
