)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"080cce42f046f9fe4e3a473ddf5add2f68876833","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Follow-up patch of: https://review.opendev.org/#/c/738274/"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"- Use normalized cidrs in address groups."},{"line_number":12,"context_line":"- Add api extension and db model changes to support remote_address_group_id"},{"line_number":13,"context_line":"  in SG rules."},{"line_number":14,"context_line":"- TODO: firewall drivers"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I99681736d05eefd82bdba72b3866eab9468ef5dd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9f560f44_387aaa76","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":14},"updated":"2020-10-01 19:19:35.000000000","message":"These two things should be in separate patches / commits","commit_id":"d90c89ed108cf680ca2eb9d150141b779e3f9c8e"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5ae89bfbe91138c5cb97534bd9b7ee73779af998","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I99681736d05eefd82bdba72b3866eab9468ef5dd"},{"line_number":14,"context_line":"Implements: blueprint address-groups-in-sg-rules"},{"line_number":15,"context_line":"Depends-On: https://review.opendev.org/755650"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1f621f24_e3d8237c","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":10},"updated":"2020-11-10 05:42:09.000000000","message":"why need this?","commit_id":"142a1c5937b8d4ee90fe47b653b75570ffe6156a"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"a8e4ba68a624f3da21bb0e138b5f88b3010aa223","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I99681736d05eefd82bdba72b3866eab9468ef5dd"},{"line_number":14,"context_line":"Implements: blueprint address-groups-in-sg-rules"},{"line_number":15,"context_line":"Depends-On: https://review.opendev.org/755650"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1f621f24_823831a0","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":10},"in_reply_to":"1f621f24_e3d8237c","updated":"2020-11-11 18:05:18.000000000","message":"No need anymore, I\u0027ve cleaned it.","commit_id":"142a1c5937b8d4ee90fe47b653b75570ffe6156a"}],"neutron/agent/securitygroups_rpc.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron_lib.api.definitions import rbac_security_groups as rbac_sg_apidef"},{"line_number":20,"context_line":"from neutron_lib.api.definitions import stateful_security_group as stateful_sg"},{"line_number":21,"context_line":"from neutron_lib.api.definitions import security_groups_remote_address_group"},{"line_number":22,"context_line":"from oslo_config import cfg"},{"line_number":23,"context_line":"from oslo_log import log as logging"},{"line_number":24,"context_line":"import oslo_messaging"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_94cc95bc","line":21,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: H306: imports not in alphabetical order (neutron_lib.api.definitions.stateful_security_group, neutron_lib.api.definitions.security_groups_remote_address_group)","commit_id":"da98885ec755b2dd73c266574f40391255468945"}],"neutron/db/address_group_db.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"import netaddr"},{"line_number":14,"context_line":"from neutron_lib._i18n import _"},{"line_number":15,"context_line":"from neutron_lib import constants"},{"line_number":16,"context_line":"from neutron_lib import exceptions"},{"line_number":17,"context_line":"from neutron_lib.db import resource_extend"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_f4d7d14f","line":14,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: N341: _ from python builtins module is used. Use _ from neutron._i18n instead.","commit_id":"da98885ec755b2dd73c266574f40391255468945"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from neutron_lib._i18n import _"},{"line_number":15,"context_line":"from neutron_lib import constants"},{"line_number":16,"context_line":"from neutron_lib import exceptions"},{"line_number":17,"context_line":"from neutron_lib.db import resource_extend"},{"line_number":18,"context_line":"from neutron_lib.db import utils as db_utils"},{"line_number":19,"context_line":"from neutron_lib.exceptions import address_group as ag_exc"},{"line_number":20,"context_line":"from oslo_utils import uuidutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_d4d44d4e","line":17,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: H306: imports not in alphabetical order (neutron_lib.exceptions, neutron_lib.db.resource_extend)","commit_id":"da98885ec755b2dd73c266574f40391255468945"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron.objects import securitygroup as sg_obj"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# TODO: move to neutron_lib"},{"line_number":29,"context_line":"class AddressGroupInUse(exceptions.InUse):"},{"line_number":30,"context_line":"    message \u003d _(\"Address group %(address_group_id)s is in use on one or more \""},{"line_number":31,"context_line":"                \"security group rules.\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_34e2e931","line":28,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"da98885ec755b2dd73c266574f40391255468945"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# TODO: move to neutron_lib"},{"line_number":29,"context_line":"class AddressGroupInUse(exceptions.InUse):"},{"line_number":30,"context_line":"    message \u003d _(\"Address group %(address_group_id)s is in use on one or more \""},{"line_number":31,"context_line":"                \"security group rules.\")"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_14dfe566","line":30,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: N341: _ from python builtins module is used. Use _ from neutron._i18n instead.","commit_id":"da98885ec755b2dd73c266574f40391255468945"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        return obj"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _process_requested_addresses(self, ag_obj, req_addrs):"},{"line_number":67,"context_line":"        \"\"\"Deduplicate, normalize and compare the requested addresses"},{"line_number":68,"context_line":"        with existing addresses in the address group\"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        ag_addrs \u003d set(self._make_address_group_dict("}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_74cd81b9","line":67,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"da98885ec755b2dd73c266574f40391255468945"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _process_requested_addresses(self, ag_obj, req_addrs):"},{"line_number":67,"context_line":"        \"\"\"Deduplicate, normalize and compare the requested addresses"},{"line_number":68,"context_line":"        with existing addresses in the address group\"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        ag_addrs \u003d set(self._make_address_group_dict("},{"line_number":71,"context_line":"            ag_obj, fields\u003d[\u0027addresses\u0027])[\u0027addresses\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_54d2fd5c","line":68,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"da98885ec755b2dd73c266574f40391255468945"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    def delete_address_group(self, context, id):"},{"line_number":152,"context_line":"        if sg_obj.SecurityGroupRule.get_objects(context,"},{"line_number":153,"context_line":"                                                remote_address_group_id\u003did):"},{"line_number":154,"context_line":"            # TODO: use exception from neutron_lib"},{"line_number":155,"context_line":"            raise AddressGroupInUse(address_group_id\u003did)"},{"line_number":156,"context_line":"        address_group \u003d self._get_address_group(context, id)"},{"line_number":157,"context_line":"        address_group.delete()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_b4c71999","line":154,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"da98885ec755b2dd73c266574f40391255468945"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"080cce42f046f9fe4e3a473ddf5add2f68876833","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9f560f44_18a6c610","updated":"2020-10-01 19:19:35.000000000","message":"I think the changes in this module should be part of another commit and this commit should depend on it, because we are mixing to set of changes: the handling of normalized cidrs in address group and the addition of address groups to security group rules","commit_id":"d90c89ed108cf680ca2eb9d150141b779e3f9c8e"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"82bb6a7c2ddc8f7bca8f5aa6f8c22ccf605ab65d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9f560f44_62891024","in_reply_to":"9f560f44_18a6c610","updated":"2020-10-01 21:30:08.000000000","message":"ok, I split it the normalized cidr part to https://review.opendev.org/#/c/755650/","commit_id":"d90c89ed108cf680ca2eb9d150141b779e3f9c8e"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5ae89bfbe91138c5cb97534bd9b7ee73779af998","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return db_utils.resource_fields(res, fields)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    @staticmethod"},{"line_number":57,"context_line":"    def check_address_group(context, id, project_id\u003dNone):"},{"line_number":58,"context_line":"        \"\"\"Check if address group id exists for the given project\"\"\""},{"line_number":59,"context_line":"        if project_id:"},{"line_number":60,"context_line":"            tmp_context_project_id \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_e36663c1","line":57,"range":{"start_line":57,"start_character":37,"end_line":57,"end_character":39},"updated":"2020-11-10 05:42:09.000000000","message":"please do not use builtin func name for var. Should be fixed for other methods (in a separate commit)","commit_id":"142a1c5937b8d4ee90fe47b653b75570ffe6156a"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"a8e4ba68a624f3da21bb0e138b5f88b3010aa223","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return db_utils.resource_fields(res, fields)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    @staticmethod"},{"line_number":57,"context_line":"    def check_address_group(context, id, project_id\u003dNone):"},{"line_number":58,"context_line":"        \"\"\"Check if address group id exists for the given project\"\"\""},{"line_number":59,"context_line":"        if project_id:"},{"line_number":60,"context_line":"            tmp_context_project_id \u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_e248052e","line":57,"range":{"start_line":57,"start_character":37,"end_line":57,"end_character":39},"in_reply_to":"1f621f24_e36663c1","updated":"2020-11-11 18:05:18.000000000","message":"Thanks for the tip. I have cleaned up this function and will handle other functions in the future cleanup patch.","commit_id":"142a1c5937b8d4ee90fe47b653b75570ffe6156a"}],"neutron/db/models/securitygroup.py":[{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"080cce42f046f9fe4e3a473ddf5add2f68876833","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                                  sa.ForeignKey(\"securitygroups.id\","},{"line_number":83,"context_line":"                                                ondelete\u003d\"CASCADE\"),"},{"line_number":84,"context_line":"                                  nullable\u003dFalse)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    remote_group_id \u003d sa.Column(sa.String(36),"},{"line_number":87,"context_line":"                                sa.ForeignKey(\"securitygroups.id\","},{"line_number":88,"context_line":"                                              ondelete\u003d\"CASCADE\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_58431e12","side":"PARENT","line":85,"updated":"2020-10-01 19:19:35.000000000","message":"This is a gratuitous change unrelated to this patch. Please restore","commit_id":"bcc530bd26fdafced181e23803ccb5e0d8b3ede8"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"82bb6a7c2ddc8f7bca8f5aa6f8c22ccf605ab65d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"                                  sa.ForeignKey(\"securitygroups.id\","},{"line_number":83,"context_line":"                                                ondelete\u003d\"CASCADE\"),"},{"line_number":84,"context_line":"                                  nullable\u003dFalse)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    remote_group_id \u003d sa.Column(sa.String(36),"},{"line_number":87,"context_line":"                                sa.ForeignKey(\"securitygroups.id\","},{"line_number":88,"context_line":"                                              ondelete\u003d\"CASCADE\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f560f44_429b2c72","side":"PARENT","line":85,"in_reply_to":"9f560f44_58431e12","updated":"2020-10-01 21:30:08.000000000","message":"Done","commit_id":"bcc530bd26fdafced181e23803ccb5e0d8b3ede8"}],"neutron/db/securitygroups_db.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5ae89bfbe91138c5cb97534bd9b7ee73779af998","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from neutron._i18n import _"},{"line_number":37,"context_line":"from neutron.common import _constants as const"},{"line_number":38,"context_line":"from neutron.db.address_group_db import AddressGroupDbMixin"},{"line_number":39,"context_line":"from neutron.db.models import securitygroup as sg_models"},{"line_number":40,"context_line":"from neutron.db import rbac_db_mixin as rbac_mixin"},{"line_number":41,"context_line":"from neutron.extensions import securitygroup as ext_sg"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_e3d94357","line":38,"range":{"start_line":38,"start_character":40,"end_line":38,"end_character":59},"updated":"2020-11-10 05:42:09.000000000","message":"\"Do not import objects, only modules\" https://docs.openstack.org/hacking/latest/user/hacking.html#imports","commit_id":"142a1c5937b8d4ee90fe47b653b75570ffe6156a"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"a8e4ba68a624f3da21bb0e138b5f88b3010aa223","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from neutron._i18n import _"},{"line_number":37,"context_line":"from neutron.common import _constants as const"},{"line_number":38,"context_line":"from neutron.db.address_group_db import AddressGroupDbMixin"},{"line_number":39,"context_line":"from neutron.db.models import securitygroup as sg_models"},{"line_number":40,"context_line":"from neutron.db import rbac_db_mixin as rbac_mixin"},{"line_number":41,"context_line":"from neutron.extensions import securitygroup as ext_sg"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_425299df","line":38,"range":{"start_line":38,"start_character":40,"end_line":38,"end_character":59},"in_reply_to":"1f621f24_e3d94357","updated":"2020-11-11 18:05:18.000000000","message":"Done","commit_id":"142a1c5937b8d4ee90fe47b653b75570ffe6156a"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"5ae89bfbe91138c5cb97534bd9b7ee73779af998","unresolved":false,"context_lines":[{"line_number":639,"context_line":"        # Check that remote_address_group_id exists for tenant"},{"line_number":640,"context_line":"        if remote_address_group_id:"},{"line_number":641,"context_line":"            AddressGroupDbMixin.check_address_group("},{"line_number":642,"context_line":"                context, remote_address_group_id, project_id\u003drule[\u0027tenant_id\u0027])"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        security_group_id \u003d rule[\u0027security_group_id\u0027]"},{"line_number":645,"context_line":"        # Confirm that the tenant has permission"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_c3eec7eb","line":642,"range":{"start_line":642,"start_character":67,"end_line":642,"end_character":76},"updated":"2020-11-10 05:42:09.000000000","message":"for new code please use project_id. Could be changed for the whole func in this patch I think.","commit_id":"142a1c5937b8d4ee90fe47b653b75570ffe6156a"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"a8e4ba68a624f3da21bb0e138b5f88b3010aa223","unresolved":false,"context_lines":[{"line_number":639,"context_line":"        # Check that remote_address_group_id exists for tenant"},{"line_number":640,"context_line":"        if remote_address_group_id:"},{"line_number":641,"context_line":"            AddressGroupDbMixin.check_address_group("},{"line_number":642,"context_line":"                context, remote_address_group_id, project_id\u003drule[\u0027tenant_id\u0027])"},{"line_number":643,"context_line":""},{"line_number":644,"context_line":"        security_group_id \u003d rule[\u0027security_group_id\u0027]"},{"line_number":645,"context_line":"        # Confirm that the tenant has permission"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_620b55d5","line":642,"range":{"start_line":642,"start_character":67,"end_line":642,"end_character":76},"in_reply_to":"1f621f24_c3eec7eb","updated":"2020-11-11 18:05:18.000000000","message":"Fixed for this function. Other security group related functions still use tenant_id as the keyword argument so I don\u0027t want to change them in this patch.","commit_id":"142a1c5937b8d4ee90fe47b653b75570ffe6156a"}],"neutron/extensions/security_groups_remote_address_group.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class Security_groups_remote_address_group(extensions.APIExtensionDescriptor):"},{"line_number":18,"context_line":"    \"\"\"Extension class supporting remote address group in security"},{"line_number":19,"context_line":"    group rules.\"\"\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    api_definition \u003d security_groups_remote_address_group"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_b4eef91e","line":18,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"da98885ec755b2dd73c266574f40391255468945"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class Security_groups_remote_address_group(extensions.APIExtensionDescriptor):"},{"line_number":18,"context_line":"    \"\"\"Extension class supporting remote address group in security"},{"line_number":19,"context_line":"    group rules.\"\"\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    api_definition \u003d security_groups_remote_address_group"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_94f3f509","line":19,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: H403: multi line docstrings should end on a new line","commit_id":"da98885ec755b2dd73c266574f40391255468945"}],"neutron/objects/securitygroup.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"c033bf5a7dbbb96b2d8857fd597ec691512dc4a8","unresolved":true,"context_lines":[{"line_number":96,"context_line":"        if _target_version \u003c (1, 1):"},{"line_number":97,"context_line":"            primitive.pop(\u0027shared\u0027)"},{"line_number":98,"context_line":"        if _target_version \u003c (1, 2):"},{"line_number":99,"context_line":"            primitive.pop(\u0027stateful\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @classmethod"},{"line_number":102,"context_line":"    def get_bound_tenant_ids(cls, context, obj_id):"}],"source_content_type":"text/x-python","patch_set":13,"id":"da63bb6e_324571ee","line":99,"updated":"2020-11-24 12:11:41.000000000","message":"I looked deeper into the issue with grenade jobs and it\u0027s not a bug that only master node is upgraded. It\u0027s like that to ensure that 2 different versions of Neutron can work together - which is an upgrade requirement.\nAnd to fix the issue with grenade jobs, You will need to add compatibility code to the Security group also. See at my patch https://review.opendev.org/c/openstack/neutron/+/749158/14/neutron/objects/securitygroup.py#109 which is doing something very similar.","commit_id":"843ba53d837ee2021aafc5c3c8d499f83686d504"},{"author":{"_account_id":28159,"name":"Hang Yang","email":"hangyang@yahooinc.com","username":"hangyang"},"change_message_id":"933c4e6972c76e4b3065849ff57e1fb3a38e640c","unresolved":true,"context_lines":[{"line_number":96,"context_line":"        if _target_version \u003c (1, 1):"},{"line_number":97,"context_line":"            primitive.pop(\u0027shared\u0027)"},{"line_number":98,"context_line":"        if _target_version \u003c (1, 2):"},{"line_number":99,"context_line":"            primitive.pop(\u0027stateful\u0027)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @classmethod"},{"line_number":102,"context_line":"    def get_bound_tenant_ids(cls, context, obj_id):"}],"source_content_type":"text/x-python","patch_set":13,"id":"def20ccc_aaea9d4c","line":99,"in_reply_to":"da63bb6e_324571ee","updated":"2020-11-24 21:24:03.000000000","message":"Thanks for the advice! I have updated accordingly in PS14.","commit_id":"843ba53d837ee2021aafc5c3c8d499f83686d504"}],"neutron/tests/unit/extensions/test_address_group.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from neutron.db import db_base_plugin_v2"},{"line_number":19,"context_line":"from neutron.db import securitygroups_db"},{"line_number":20,"context_line":"from neutron.extensions import address_group as ag_ext"},{"line_number":21,"context_line":"from neutron.extensions import securitygroup as sg_ext"},{"line_number":22,"context_line":"from neutron.tests.unit.db import test_db_base_plugin_v2"},{"line_number":23,"context_line":"from neutron.tests.unit.extensions import test_securitygroup"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_148a4563","line":21,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: F401 \u0027neutron.extensions.securitygroup as sg_ext\u0027 imported but unused","commit_id":"da98885ec755b2dd73c266574f40391255468945"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def get_resources(self):"},{"line_number":33,"context_line":"        return (ag_ext.Address_group.get_resources() +"},{"line_number":34,"context_line":"                test_securitygroup.SecurityGroupTestExtensionManager().get_resources())"},{"line_number":35,"context_line":"                # sg_ext.Securitygroup.get_resources())"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_actions(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_74e46143","line":34,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: E501 line too long (87 \u003e 79 characters)","commit_id":"da98885ec755b2dd73c266574f40391255468945"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f9899b5b6bd0ab24703f30db644345ea084b8f2a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def get_resources(self):"},{"line_number":33,"context_line":"        return (ag_ext.Address_group.get_resources() +"},{"line_number":34,"context_line":"                test_securitygroup.SecurityGroupTestExtensionManager().get_resources())"},{"line_number":35,"context_line":"                # sg_ext.Securitygroup.get_resources())"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_actions(self):"},{"line_number":38,"context_line":"        return []"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_54e95d17","line":35,"updated":"2020-09-29 04:19:43.000000000","message":"pep8: E116 unexpected indentation (comment)","commit_id":"da98885ec755b2dd73c266574f40391255468945"}]}
