)]}'
{"neutron/agent/securitygroups_rpc.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"68e681e29d29c07b7dae1c6b7928a3112d4bdf25","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_normalized_cidr"},{"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":4,"id":"9f560f44_1dbfbcaa","line":21,"updated":"2020-09-03 01:08:56.000000000","message":"pep8: H306: imports not in alphabetical order (neutron_lib.api.definitions.stateful_security_group, neutron_lib.api.definitions.security_groups_normalized_cidr)","commit_id":"50f88da00fc0cf04f94cb7cab1878e363a45eacf"}],"neutron/db/securitygroups_db.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"bb3863f05714c8c4b93f8a78170d7853db57b79c","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        normalized_cidr \u003d None"},{"line_number":414,"context_line":"        if remote_ip_prefix:"},{"line_number":415,"context_line":"            remote_ip_prefix \u003d net.AuthenticIPNetwork(remote_ip_prefix)"},{"line_number":416,"context_line":"            normalized_ip_prefix \u003d \"%s/%s\" % ("},{"line_number":417,"context_line":"                remote_ip_prefix.network, remote_ip_prefix.prefixlen)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"        protocol \u003d rule_dict.get(\u0027protocol\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_25ee148b","line":416,"updated":"2020-09-01 00:13:55.000000000","message":"pep8: F841 local variable \u0027normalized_ip_prefix\u0027 is assigned to but never used","commit_id":"58688b283003122635b058db4cb39b2de8276065"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8111a7085716c8783073b813c090213b29982afb","unresolved":false,"context_lines":[{"line_number":661,"context_line":"               \u0027port_range_min\u0027: security_group_rule[\u0027port_range_min\u0027],"},{"line_number":662,"context_line":"               \u0027port_range_max\u0027: security_group_rule[\u0027port_range_max\u0027],"},{"line_number":663,"context_line":"               \u0027remote_ip_prefix\u0027: security_group_rule[\u0027remote_ip_prefix\u0027],"},{"line_number":664,"context_line":"               \u0027normalized_cidr\u0027: self._get_normalized_cidr_from_rule("},{"line_number":665,"context_line":"                   security_group_rule),"},{"line_number":666,"context_line":"               \u0027remote_group_id\u0027: security_group_rule[\u0027remote_group_id\u0027]}"},{"line_number":667,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_dc259c0c","line":664,"updated":"2020-11-18 11:42:38.000000000","message":"nit: I know this code is from 2012 but we should start using OVOs instead of db_obj as input parameters (security_group_rule). In this case, this parameter should be already populated in the OVO.\n\nIMO, you should add a TODO at the beginning of this method to remember it.","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"187a0b556d432fee56dfbdb795feb93bfdccc133","unresolved":false,"context_lines":[{"line_number":661,"context_line":"               \u0027port_range_min\u0027: security_group_rule[\u0027port_range_min\u0027],"},{"line_number":662,"context_line":"               \u0027port_range_max\u0027: security_group_rule[\u0027port_range_max\u0027],"},{"line_number":663,"context_line":"               \u0027remote_ip_prefix\u0027: security_group_rule[\u0027remote_ip_prefix\u0027],"},{"line_number":664,"context_line":"               \u0027normalized_cidr\u0027: self._get_normalized_cidr_from_rule("},{"line_number":665,"context_line":"                   security_group_rule),"},{"line_number":666,"context_line":"               \u0027remote_group_id\u0027: security_group_rule[\u0027remote_group_id\u0027]}"},{"line_number":667,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fffc6b78_52618939","line":664,"in_reply_to":"1f621f24_dc259c0c","updated":"2020-11-23 11:27:22.000000000","message":"Done","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8111a7085716c8783073b813c090213b29982afb","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        remote_ip_prefix \u003d rule.get(\u0027remote_ip_prefix\u0027)"},{"line_number":676,"context_line":"        if remote_ip_prefix:"},{"line_number":677,"context_line":"            normalized_cidr \u003d net.AuthenticIPNetwork(remote_ip_prefix).cidr"},{"line_number":678,"context_line":"        return normalized_cidr"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"    def _rule_to_key(self, rule):"},{"line_number":681,"context_line":"        def _normalize_rule_value(key, value):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_3c2e50fa","line":678,"range":{"start_line":678,"start_character":15,"end_line":678,"end_character":30},"updated":"2020-11-18 11:42:38.000000000","message":"We should return a string, not a IPNetwork object.","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"187a0b556d432fee56dfbdb795feb93bfdccc133","unresolved":false,"context_lines":[{"line_number":675,"context_line":"        remote_ip_prefix \u003d rule.get(\u0027remote_ip_prefix\u0027)"},{"line_number":676,"context_line":"        if remote_ip_prefix:"},{"line_number":677,"context_line":"            normalized_cidr \u003d net.AuthenticIPNetwork(remote_ip_prefix).cidr"},{"line_number":678,"context_line":"        return normalized_cidr"},{"line_number":679,"context_line":""},{"line_number":680,"context_line":"    def _rule_to_key(self, rule):"},{"line_number":681,"context_line":"        def _normalize_rule_value(key, value):"}],"source_content_type":"text/x-python","patch_set":11,"id":"fffc6b78_32668553","line":678,"range":{"start_line":678,"start_character":15,"end_line":678,"end_character":30},"in_reply_to":"1f621f24_3c2e50fa","updated":"2020-11-23 11:27:22.000000000","message":"Done","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"}],"neutron/extensions/security_groups_normalized_cidr.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e6c2a93c998a44da16fb599c7166a31c75da414e","unresolved":true,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class Security_groups_normalized_cidr(extensions.APIExtensionDescriptor):"},{"line_number":18,"context_line":"    \"\"\"Extension class supporting filtering port depend on security group.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    api_definition \u003d security_groups_normalized_cidr"}],"source_content_type":"text/x-python","patch_set":19,"id":"e17957c3_ce82f8f6","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":73},"updated":"2020-12-23 06:14:03.000000000","message":"Seems needs update","commit_id":"8023440c0968ccfb9db2e7dfe1676c951f9ded5f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"34d8d0c5a9348405eb0f4da592c17691c40402b3","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"class Security_groups_normalized_cidr(extensions.APIExtensionDescriptor):"},{"line_number":18,"context_line":"    \"\"\"Extension class supporting filtering port depend on security group.\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    api_definition \u003d security_groups_normalized_cidr"}],"source_content_type":"text/x-python","patch_set":19,"id":"21571405_9820d6d1","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":73},"in_reply_to":"e17957c3_ce82f8f6","updated":"2021-01-07 11:24:19.000000000","message":"Done","commit_id":"8023440c0968ccfb9db2e7dfe1676c951f9ded5f"}],"neutron/objects/securitygroup.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8111a7085716c8783073b813c090213b29982afb","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        def filter_normalized_cidr_from_rules(rules):"},{"line_number":99,"context_line":"            filtered_rules \u003d []"},{"line_number":100,"context_line":"            for rule in rules:"},{"line_number":101,"context_line":"                rule[\u0027versioned_object.data\u0027].pop(\"normalized_cidr\", None)"},{"line_number":102,"context_line":"                rule[\u0027versioned_object.version\u0027] \u003d \u00271.0\u0027"},{"line_number":103,"context_line":"                filtered_rules.append(rule)"},{"line_number":104,"context_line":"            return filtered_rules"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_7c49e889","line":102,"range":{"start_line":100,"start_character":0,"end_line":102,"end_character":56},"updated":"2020-11-18 11:42:38.000000000","message":"I\u0027m OK with this but I would prefer the SGrule method. E.g.:\n\n     sg_rule \u003d SecurityGroupRule()\n     for rule in rules:\n         sg_rule.obj_make_compatible(rule[\u0027versioned_object.data\u0027], \u00271.0\u0027)\n         rule[\u0027versioned_object.version\u0027] \u003d \u00271.0\u0027","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"187a0b556d432fee56dfbdb795feb93bfdccc133","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        def filter_normalized_cidr_from_rules(rules):"},{"line_number":99,"context_line":"            filtered_rules \u003d []"},{"line_number":100,"context_line":"            for rule in rules:"},{"line_number":101,"context_line":"                rule[\u0027versioned_object.data\u0027].pop(\"normalized_cidr\", None)"},{"line_number":102,"context_line":"                rule[\u0027versioned_object.version\u0027] \u003d \u00271.0\u0027"},{"line_number":103,"context_line":"                filtered_rules.append(rule)"},{"line_number":104,"context_line":"            return filtered_rules"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fffc6b78_d2545957","line":102,"range":{"start_line":100,"start_character":0,"end_line":102,"end_character":56},"in_reply_to":"1f621f24_7c49e889","updated":"2020-11-23 11:27:22.000000000","message":"Done","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8111a7085716c8783073b813c090213b29982afb","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                rule[\u0027versioned_object.data\u0027].pop(\"normalized_cidr\", None)"},{"line_number":102,"context_line":"                rule[\u0027versioned_object.version\u0027] \u003d \u00271.0\u0027"},{"line_number":103,"context_line":"                filtered_rules.append(rule)"},{"line_number":104,"context_line":"            return filtered_rules"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        if _target_version \u003c (1, 1):"},{"line_number":107,"context_line":"            primitive.pop(\u0027shared\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_9cdb244e","line":104,"updated":"2020-11-18 11:42:38.000000000","message":"nit: you are already modifying the object, you don\u0027t need to return it or create this new list","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"187a0b556d432fee56dfbdb795feb93bfdccc133","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                rule[\u0027versioned_object.data\u0027].pop(\"normalized_cidr\", None)"},{"line_number":102,"context_line":"                rule[\u0027versioned_object.version\u0027] \u003d \u00271.0\u0027"},{"line_number":103,"context_line":"                filtered_rules.append(rule)"},{"line_number":104,"context_line":"            return filtered_rules"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        if _target_version \u003c (1, 1):"},{"line_number":107,"context_line":"            primitive.pop(\u0027shared\u0027)"}],"source_content_type":"text/x-python","patch_set":11,"id":"fffc6b78_b251d565","line":104,"in_reply_to":"1f621f24_9cdb244e","updated":"2020-11-23 11:27:22.000000000","message":"Done","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8111a7085716c8783073b813c090213b29982afb","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if db_obj.remote_ip_prefix:"},{"line_number":185,"context_line":"            cidr \u003d net_utils.AuthenticIPNetwork(db_obj.remote_ip_prefix).cidr"},{"line_number":186,"context_line":"            normalized_cidr \u003d (cidr)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        setattr(self, \u0027normalized_cidr\u0027, normalized_cidr)"},{"line_number":189,"context_line":"        self.obj_reset_changes([\u0027normalized_cidr\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_fc4a18aa","line":186,"range":{"start_line":186,"start_character":12,"end_line":186,"end_character":36},"updated":"2020-11-18 11:42:38.000000000","message":"why this?","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"664bc4e048e8ea99346ef3da50013fc1f994296c","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if db_obj.remote_ip_prefix:"},{"line_number":185,"context_line":"            cidr \u003d net_utils.AuthenticIPNetwork(db_obj.remote_ip_prefix).cidr"},{"line_number":186,"context_line":"            normalized_cidr \u003d (cidr)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        setattr(self, \u0027normalized_cidr\u0027, normalized_cidr)"},{"line_number":189,"context_line":"        self.obj_reset_changes([\u0027normalized_cidr\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"e10546ab_4f03bb2c","line":186,"range":{"start_line":186,"start_character":12,"end_line":186,"end_character":36},"in_reply_to":"1f621f24_fc4a18aa","updated":"2020-11-23 16:36:07.000000000","message":"Why the parentheses?","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"d2e6efda98c0199458c6546a13be1d5b6a9cd960","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        if db_obj.remote_ip_prefix:"},{"line_number":185,"context_line":"            cidr \u003d net_utils.AuthenticIPNetwork(db_obj.remote_ip_prefix).cidr"},{"line_number":186,"context_line":"            normalized_cidr \u003d (cidr)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        setattr(self, \u0027normalized_cidr\u0027, normalized_cidr)"},{"line_number":189,"context_line":"        self.obj_reset_changes([\u0027normalized_cidr\u0027])"}],"source_content_type":"text/x-python","patch_set":11,"id":"af25c956_eb15a790","line":186,"range":{"start_line":186,"start_character":12,"end_line":186,"end_character":36},"in_reply_to":"e10546ab_4f03bb2c","updated":"2020-11-23 21:59:54.000000000","message":"tbh I have no idea :P Thx for pointing this out :)","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e6c2a93c998a44da16fb599c7166a31c75da414e","unresolved":true,"context_lines":[{"line_number":39,"context_line":"    # Version 1.1: Add RBAC support"},{"line_number":40,"context_line":"    # Version 1.2: Added stateful support"},{"line_number":41,"context_line":"    # Version 1.3: Added support for remote_address_group_id in rules"},{"line_number":42,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":43,"context_line":"    # Version 1.4: Added support for normalized_cidr in rules"},{"line_number":44,"context_line":"    VERSION \u003d \u00271.4\u0027"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"be5a515b_c16f9b09","line":42,"range":{"start_line":42,"start_character":4,"end_line":42,"end_character":19},"updated":"2020-12-23 06:14:03.000000000","message":"to be removed","commit_id":"8023440c0968ccfb9db2e7dfe1676c951f9ded5f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"34d8d0c5a9348405eb0f4da592c17691c40402b3","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # Version 1.1: Add RBAC support"},{"line_number":40,"context_line":"    # Version 1.2: Added stateful support"},{"line_number":41,"context_line":"    # Version 1.3: Added support for remote_address_group_id in rules"},{"line_number":42,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":43,"context_line":"    # Version 1.4: Added support for normalized_cidr in rules"},{"line_number":44,"context_line":"    VERSION \u003d \u00271.4\u0027"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"93f1087e_317210e6","line":42,"range":{"start_line":42,"start_character":4,"end_line":42,"end_character":19},"in_reply_to":"be5a515b_c16f9b09","updated":"2021-01-07 11:24:19.000000000","message":"Done","commit_id":"8023440c0968ccfb9db2e7dfe1676c951f9ded5f"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e6c2a93c998a44da16fb599c7166a31c75da414e","unresolved":true,"context_lines":[{"line_number":104,"context_line":"                    rule[\u0027versioned_object.data\u0027], \u00271.0\u0027)"},{"line_number":105,"context_line":"                rule[\u0027versioned_object.version\u0027] \u003d \u00271.0\u0027"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        def filter_normalized_cidr_from_rules(rules):"},{"line_number":108,"context_line":"            sg_rule \u003d SecurityGroupRule()"},{"line_number":109,"context_line":"            for rule in rules:"},{"line_number":110,"context_line":"                rule_version \u003d versionutils.convert_version_to_tuple("}],"source_content_type":"text/x-python","patch_set":19,"id":"07603589_7781bcc7","line":107,"range":{"start_line":107,"start_character":19,"end_line":107,"end_character":34},"updated":"2020-12-23 06:14:03.000000000","message":"method seems does not deal with normalized_cidr","commit_id":"8023440c0968ccfb9db2e7dfe1676c951f9ded5f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"34d8d0c5a9348405eb0f4da592c17691c40402b3","unresolved":true,"context_lines":[{"line_number":104,"context_line":"                    rule[\u0027versioned_object.data\u0027], \u00271.0\u0027)"},{"line_number":105,"context_line":"                rule[\u0027versioned_object.version\u0027] \u003d \u00271.0\u0027"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        def filter_normalized_cidr_from_rules(rules):"},{"line_number":108,"context_line":"            sg_rule \u003d SecurityGroupRule()"},{"line_number":109,"context_line":"            for rule in rules:"},{"line_number":110,"context_line":"                rule_version \u003d versionutils.convert_version_to_tuple("}],"source_content_type":"text/x-python","patch_set":19,"id":"96dcdff5_d1063802","line":107,"range":{"start_line":107,"start_character":19,"end_line":107,"end_character":34},"in_reply_to":"07603589_7781bcc7","updated":"2021-01-07 11:24:19.000000000","message":"It is not explicitly but by making rule to be compatible with version 1.1 it in fact removes normalized cidr from the rule","commit_id":"8023440c0968ccfb9db2e7dfe1676c951f9ded5f"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"e6c2a93c998a44da16fb599c7166a31c75da414e","unresolved":true,"context_lines":[{"line_number":111,"context_line":"                    rule[\u0027versioned_object.version\u0027])"},{"line_number":112,"context_line":"                if rule_version \u003e (1, 1):"},{"line_number":113,"context_line":"                    sg_rule.obj_make_compatible("},{"line_number":114,"context_line":"                        rule[\u0027versioned_object.data\u0027], \u00271.1\u0027)"},{"line_number":115,"context_line":"                    rule[\u0027versioned_object.version\u0027] \u003d \u00271.1\u0027"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        if _target_version \u003c (1, 1):"}],"source_content_type":"text/x-python","patch_set":19,"id":"63ddbef2_569a7abb","line":114,"range":{"start_line":114,"start_character":56,"end_line":114,"end_character":59},"updated":"2020-12-23 06:14:03.000000000","message":"1.3?","commit_id":"8023440c0968ccfb9db2e7dfe1676c951f9ded5f"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"34d8d0c5a9348405eb0f4da592c17691c40402b3","unresolved":true,"context_lines":[{"line_number":111,"context_line":"                    rule[\u0027versioned_object.version\u0027])"},{"line_number":112,"context_line":"                if rule_version \u003e (1, 1):"},{"line_number":113,"context_line":"                    sg_rule.obj_make_compatible("},{"line_number":114,"context_line":"                        rule[\u0027versioned_object.data\u0027], \u00271.1\u0027)"},{"line_number":115,"context_line":"                    rule[\u0027versioned_object.version\u0027] \u003d \u00271.1\u0027"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        if _target_version \u003c (1, 1):"}],"source_content_type":"text/x-python","patch_set":19,"id":"aa0db4c1_0503023b","line":114,"range":{"start_line":114,"start_character":56,"end_line":114,"end_character":59},"in_reply_to":"63ddbef2_569a7abb","updated":"2021-01-07 11:24:19.000000000","message":"No, it\u0027s ok because it is version of the SecurityGroupRule OVO, not SecurityGroup","commit_id":"8023440c0968ccfb9db2e7dfe1676c951f9ded5f"}],"neutron/tests/fullstack/resources/machine.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"68e681e29d29c07b7dae1c6b7928a3112d4bdf25","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.addCleanup(self._stop_async_dhclient)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def _start_async_dhclient(self):"},{"line_number":139,"context_line":"        cmd \u003d [\"dhclient\", #\u0027-sf\u0027, self.NO_RESOLV_CONF_DHCLIENT_SCRIPT_PATH,"},{"line_number":140,"context_line":"               \u0027--no-pid\u0027, \u0027-d\u0027, self.port.name]"},{"line_number":141,"context_line":"        self.dhclient_async \u003d async_process.AsyncProcess("},{"line_number":142,"context_line":"            cmd, run_as_root\u003dTrue, respawn_interval\u003d5,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_fdce4859","line":139,"updated":"2020-09-03 01:08:56.000000000","message":"pep8: E261 at least two spaces before inline comment","commit_id":"50f88da00fc0cf04f94cb7cab1878e363a45eacf"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"68e681e29d29c07b7dae1c6b7928a3112d4bdf25","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        self.addCleanup(self._stop_async_dhclient)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def _start_async_dhclient(self):"},{"line_number":139,"context_line":"        cmd \u003d [\"dhclient\", #\u0027-sf\u0027, self.NO_RESOLV_CONF_DHCLIENT_SCRIPT_PATH,"},{"line_number":140,"context_line":"               \u0027--no-pid\u0027, \u0027-d\u0027, self.port.name]"},{"line_number":141,"context_line":"        self.dhclient_async \u003d async_process.AsyncProcess("},{"line_number":142,"context_line":"            cmd, run_as_root\u003dTrue, respawn_interval\u003d5,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_ddc9c451","line":139,"updated":"2020-09-03 01:08:56.000000000","message":"pep8: E262 inline comment should start with \u0027# \u0027","commit_id":"50f88da00fc0cf04f94cb7cab1878e363a45eacf"}],"neutron/tests/fullstack/test_securitygroup.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"68e681e29d29c07b7dae1c6b7928a3112d4bdf25","unresolved":false,"context_lines":[{"line_number":704,"context_line":""},{"line_number":705,"context_line":"        rule \u003d self.safe_client.create_security_group_rule("},{"line_number":706,"context_line":"            project_id, sg[\u0027id\u0027], direction\u003d\u0027ingress\u0027)"},{"line_number":707,"context_line":"        self.assertEqual(None, rule[\u0027normalized_cidr\u0027])"},{"line_number":708,"context_line":"        self.assertEqual(None, rule[\u0027remote_ip_prefix\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_5dde5410","line":707,"updated":"2020-09-03 01:08:56.000000000","message":"pep8: H203: Use assertIs(Not)None to check for None","commit_id":"50f88da00fc0cf04f94cb7cab1878e363a45eacf"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"68e681e29d29c07b7dae1c6b7928a3112d4bdf25","unresolved":false,"context_lines":[{"line_number":704,"context_line":""},{"line_number":705,"context_line":"        rule \u003d self.safe_client.create_security_group_rule("},{"line_number":706,"context_line":"            project_id, sg[\u0027id\u0027], direction\u003d\u0027ingress\u0027)"},{"line_number":707,"context_line":"        self.assertEqual(None, rule[\u0027normalized_cidr\u0027])"},{"line_number":708,"context_line":"        self.assertEqual(None, rule[\u0027remote_ip_prefix\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_7ddb5820","line":707,"updated":"2020-09-03 01:08:56.000000000","message":"pep8: N536: Use assertIsNone rather than assertEqual to check for None values","commit_id":"50f88da00fc0cf04f94cb7cab1878e363a45eacf"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"68e681e29d29c07b7dae1c6b7928a3112d4bdf25","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        rule \u003d self.safe_client.create_security_group_rule("},{"line_number":706,"context_line":"            project_id, sg[\u0027id\u0027], direction\u003d\u0027ingress\u0027)"},{"line_number":707,"context_line":"        self.assertEqual(None, rule[\u0027normalized_cidr\u0027])"},{"line_number":708,"context_line":"        self.assertEqual(None, rule[\u0027remote_ip_prefix\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_9de8ecb3","line":708,"updated":"2020-09-03 01:08:56.000000000","message":"pep8: H203: Use assertIs(Not)None to check for None","commit_id":"50f88da00fc0cf04f94cb7cab1878e363a45eacf"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"68e681e29d29c07b7dae1c6b7928a3112d4bdf25","unresolved":false,"context_lines":[{"line_number":705,"context_line":"        rule \u003d self.safe_client.create_security_group_rule("},{"line_number":706,"context_line":"            project_id, sg[\u0027id\u0027], direction\u003d\u0027ingress\u0027)"},{"line_number":707,"context_line":"        self.assertEqual(None, rule[\u0027normalized_cidr\u0027])"},{"line_number":708,"context_line":"        self.assertEqual(None, rule[\u0027remote_ip_prefix\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_bde5f0de","line":708,"updated":"2020-09-03 01:08:56.000000000","message":"pep8: N536: Use assertIsNone rather than assertEqual to check for None values","commit_id":"50f88da00fc0cf04f94cb7cab1878e363a45eacf"}],"neutron/tests/unit/extensions/test_security_groups_normalized_cidr.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"23863d88ad179bdafb029c2e56cda8747e092553","unresolved":false,"context_lines":[{"line_number":34,"context_line":"class TestPlugin(test_securitygroup.SecurityGroupTestPlugin):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    supported_extension_aliases \u003d [\u0027security-group\u0027,"},{"line_number":37,"context_line":"                                   \u0027security-groups-normalized-cidr\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class TestSecurityGroupsNormalizedCidr("}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_d96f6190","line":37,"updated":"2020-10-14 14:59:19.000000000","message":"I think we can use security_groups_normalized_cidr.ALIAS","commit_id":"4778961ed29731ce03bd897ba2bbfab5aab1045c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"bd2acfd28ba7c06afed1a12a67a6c0839844fe95","unresolved":false,"context_lines":[{"line_number":34,"context_line":"class TestPlugin(test_securitygroup.SecurityGroupTestPlugin):"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    supported_extension_aliases \u003d [\u0027security-group\u0027,"},{"line_number":37,"context_line":"                                   \u0027security-groups-normalized-cidr\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"class TestSecurityGroupsNormalizedCidr("}],"source_content_type":"text/x-python","patch_set":6,"id":"3f65232a_c1ebe3ad","line":37,"in_reply_to":"7f6b1bfe_d96f6190","updated":"2020-10-22 20:56:21.000000000","message":"Done","commit_id":"4778961ed29731ce03bd897ba2bbfab5aab1045c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"23863d88ad179bdafb029c2e56cda8747e092553","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        with self.security_group(name, description) as sg:"},{"line_number":52,"context_line":"            sg_id \u003d sg[\u0027security_group\u0027][\u0027id\u0027]"},{"line_number":53,"context_line":"            remote_ip_prefix \u003d \u002710.0.0.120/24\u0027"},{"line_number":54,"context_line":"            rule \u003d self._build_security_group_rule("},{"line_number":55,"context_line":"                sg_id,"},{"line_number":56,"context_line":"                \u0027ingress\u0027, \u0027tcp\u0027,"},{"line_number":57,"context_line":"                remote_ip_prefix\u003dremote_ip_prefix)"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_590991db","line":54,"updated":"2020-10-14 14:59:19.000000000","message":"nit: we can create several rules, even with different IPs but same CIDR.","commit_id":"4778961ed29731ce03bd897ba2bbfab5aab1045c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"bd2acfd28ba7c06afed1a12a67a6c0839844fe95","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        with self.security_group(name, description) as sg:"},{"line_number":52,"context_line":"            sg_id \u003d sg[\u0027security_group\u0027][\u0027id\u0027]"},{"line_number":53,"context_line":"            remote_ip_prefix \u003d \u002710.0.0.120/24\u0027"},{"line_number":54,"context_line":"            rule \u003d self._build_security_group_rule("},{"line_number":55,"context_line":"                sg_id,"},{"line_number":56,"context_line":"                \u0027ingress\u0027, \u0027tcp\u0027,"},{"line_number":57,"context_line":"                remote_ip_prefix\u003dremote_ip_prefix)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f65232a_e1ffff64","line":54,"in_reply_to":"7f6b1bfe_590991db","updated":"2020-10-22 20:56:21.000000000","message":"Done","commit_id":"4778961ed29731ce03bd897ba2bbfab5aab1045c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"23863d88ad179bdafb029c2e56cda8747e092553","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                res_sg[\u0027security_group_rule\u0027][\u0027normalized_cidr\u0027]"},{"line_number":64,"context_line":"            )"},{"line_number":65,"context_line":"            self.assertEqual("},{"line_number":66,"context_line":"                \u002710.0.0.120/24\u0027,"},{"line_number":67,"context_line":"                res_sg[\u0027security_group_rule\u0027][\u0027remote_ip_prefix\u0027]"},{"line_number":68,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f6b1bfe_795f2de5","line":66,"range":{"start_line":66,"start_character":16,"end_line":66,"end_character":31},"updated":"2020-10-14 14:59:19.000000000","message":"small nit: \"remote_ip_prefix\", because you created before this variable","commit_id":"4778961ed29731ce03bd897ba2bbfab5aab1045c"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"bd2acfd28ba7c06afed1a12a67a6c0839844fe95","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                res_sg[\u0027security_group_rule\u0027][\u0027normalized_cidr\u0027]"},{"line_number":64,"context_line":"            )"},{"line_number":65,"context_line":"            self.assertEqual("},{"line_number":66,"context_line":"                \u002710.0.0.120/24\u0027,"},{"line_number":67,"context_line":"                res_sg[\u0027security_group_rule\u0027][\u0027remote_ip_prefix\u0027]"},{"line_number":68,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f65232a_21f9f77f","line":66,"range":{"start_line":66,"start_character":16,"end_line":66,"end_character":31},"in_reply_to":"7f6b1bfe_795f2de5","updated":"2020-10-22 20:56:21.000000000","message":"Done","commit_id":"4778961ed29731ce03bd897ba2bbfab5aab1045c"}],"neutron/tests/unit/objects/test_securitygroup.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8111a7085716c8783073b813c090213b29982afb","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class SecurityGroupDbObjTestCase(test_base.BaseDbObjectTestCase,"},{"line_number":61,"context_line":"                                 testlib_api.SqlTestCase):"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    _test_class \u003d securitygroup.SecurityGroup"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f621f24_3c66502b","line":61,"updated":"2020-11-18 11:42:38.000000000","message":"You are forgetting the obj_make_compatible test. This test should include a valid rule inside the SG (by default is not created).","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"187a0b556d432fee56dfbdb795feb93bfdccc133","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"class SecurityGroupDbObjTestCase(test_base.BaseDbObjectTestCase,"},{"line_number":61,"context_line":"                                 testlib_api.SqlTestCase):"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    _test_class \u003d securitygroup.SecurityGroup"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"fffc6b78_83a9e1e0","line":61,"in_reply_to":"1f621f24_3c66502b","updated":"2020-11-23 11:27:22.000000000","message":"Done","commit_id":"bf9548a5abdca9bee27a8924cc7c3921fbb9e4b6"}]}
