)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"71a9f25d65328621ace8b6bdfb2b881f521054c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b20163e6_b4e5208d","updated":"2023-06-29 15:02:37.000000000","message":"Couple of comments but I need to do a more thorough review. This is going to fail black though. You can avoid this by installing `pre-commit`.\n\n```\nsudo dnf install pre-commit\ncd openstacksdk\npre-commit install\n```\n\nYou can also run `pre-commit` on the last commit like so:\n\n```\npre-commit run --file $(git diff HEAD --name-only)\n``\n\n(or just `pre-commit run -a`, which is probably fast enough here)","commit_id":"25843de75b1e8292543769932a7d3ff787956385"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3852248230693f5afb1ae0d7488972c424fd66ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"26a4376f_66ec1b4a","in_reply_to":"b20163e6_b4e5208d","updated":"2023-06-30 10:27:51.000000000","message":"Done","commit_id":"25843de75b1e8292543769932a7d3ff787956385"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"69bf1c9e07c51b2eb36fb34a29cac0495c8746c1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"328d73b3_e952fccc","updated":"2023-07-07 10:16:02.000000000","message":"-1 Just for visibility: question in https://review.opendev.org/c/openstack/openstacksdk/+/887262/3/openstack/network/v2/default_security_group_rule.py#42","commit_id":"0095d93d27d2c0003f3ad99cab40145e887b4da4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"ea077b79ea1e5d0aaad3239e835d56e986b97da9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"736de678_9076c886","updated":"2023-07-07 12:13:41.000000000","message":"Could you please add the documentation also for proxies and resources?","commit_id":"0095d93d27d2c0003f3ad99cab40145e887b4da4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5e02065b3fec69567d13022368c0874127f90689","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2ce1cf83_cb8ae8b2","in_reply_to":"736de678_9076c886","updated":"2023-07-19 14:17:02.000000000","message":"Done","commit_id":"0095d93d27d2c0003f3ad99cab40145e887b4da4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9836f52606e19bf8ffc1e0904c626dc9b285900f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"983ef35b_e6ecd3d1","updated":"2023-07-24 12:57:21.000000000","message":"+1, thanks, we have to wait anyway for https://review.opendev.org/c/openstack/neutron/+/884474","commit_id":"b02c96974edc3bdf91b4b11afc689569562b6c78"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"9b325a37046e96fcca820f91ba596dc42248e8ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d54c9077_2be26dcd","in_reply_to":"983ef35b_e6ecd3d1","updated":"2023-09-01 07:24:59.000000000","message":"----^ was merged","commit_id":"b02c96974edc3bdf91b4b11afc689569562b6c78"}],"openstack/network/v2/default_security_group_rule.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"71a9f25d65328621ace8b6bdfb2b881f521054c8","unresolved":true,"context_lines":[{"line_number":56,"context_line":"    #: ``remote_address_group_id`` or ``remote_ip_prefix``."},{"line_number":57,"context_line":"    remote_address_group_id \u003d resource.Body(\u0027remote_address_group_id\u0027)"},{"line_number":58,"context_line":"    #: ``ingress`` or ``egress``: The direction in which the security group #:"},{"line_number":59,"context_line":"    # rule will be applied. See \u0027direction\u0027 field in the security group rule"},{"line_number":60,"context_line":"    # API."},{"line_number":61,"context_line":"    direction \u003d resource.Body(\u0027direction\u0027)"},{"line_number":62,"context_line":"    #: The protocol that is matched by the security group rule."}],"source_content_type":"text/x-python","patch_set":2,"id":"cd2693e5_ea5e71fb","line":59,"range":{"start_line":59,"start_character":4,"end_line":59,"end_character":5},"updated":"2023-06-29 15:02:37.000000000","message":"Missing `:`. Below also","commit_id":"25843de75b1e8292543769932a7d3ff787956385"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3852248230693f5afb1ae0d7488972c424fd66ea","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    #: ``remote_address_group_id`` or ``remote_ip_prefix``."},{"line_number":57,"context_line":"    remote_address_group_id \u003d resource.Body(\u0027remote_address_group_id\u0027)"},{"line_number":58,"context_line":"    #: ``ingress`` or ``egress``: The direction in which the security group #:"},{"line_number":59,"context_line":"    # rule will be applied. See \u0027direction\u0027 field in the security group rule"},{"line_number":60,"context_line":"    # API."},{"line_number":61,"context_line":"    direction \u003d resource.Body(\u0027direction\u0027)"},{"line_number":62,"context_line":"    #: The protocol that is matched by the security group rule."}],"source_content_type":"text/x-python","patch_set":2,"id":"70479127_e4db4f5c","line":59,"range":{"start_line":59,"start_character":4,"end_line":59,"end_character":5},"in_reply_to":"cd2693e5_ea5e71fb","updated":"2023-06-30 10:27:51.000000000","message":"Done","commit_id":"25843de75b1e8292543769932a7d3ff787956385"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"66d9fb5beb6ed46de2ee0e8c02925baf086fb17c","unresolved":true,"context_lines":[{"line_number":39,"context_line":"        \u0027used_in_non_default_sg\u0027,"},{"line_number":40,"context_line":"        \u0027sort_dir\u0027,"},{"line_number":41,"context_line":"        \u0027sort_key\u0027,"},{"line_number":42,"context_line":"        ether_type\u003d\u0027ethertype\u0027,"},{"line_number":43,"context_line":"    )"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    # Properties"}],"source_content_type":"text/x-python","patch_set":3,"id":"8535be2c_5ddb3294","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":18},"updated":"2023-06-30 13:41:11.000000000","message":"why ether_type instead of ethertype? I\u0027m curious on this one.","commit_id":"e0283b94fb163f70d1a5d263d7dedb65c790ba73"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"e64397cf603a79d5ce2920431868c31dffa8a6e7","unresolved":true,"context_lines":[{"line_number":39,"context_line":"        \u0027used_in_non_default_sg\u0027,"},{"line_number":40,"context_line":"        \u0027sort_dir\u0027,"},{"line_number":41,"context_line":"        \u0027sort_key\u0027,"},{"line_number":42,"context_line":"        ether_type\u003d\u0027ethertype\u0027,"},{"line_number":43,"context_line":"    )"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    # Properties"}],"source_content_type":"text/x-python","patch_set":3,"id":"80ca9472_f953970a","line":42,"range":{"start_line":42,"start_character":8,"end_line":42,"end_character":18},"in_reply_to":"8535be2c_5ddb3294","updated":"2023-07-07 10:42:21.000000000","message":"it took it from the security group rule API and wanted to be \"consistent\" with it","commit_id":"e0283b94fb163f70d1a5d263d7dedb65c790ba73"}],"openstack/tests/functional/network/v2/test_default_security_group_rule.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"71a9f25d65328621ace8b6bdfb2b881f521054c8","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestDefaultSecurityGroupRule(base.BaseFunctionalTest):"},{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super(TestDefaultSecurityGroupRule, self).setUp()"},{"line_number":22,"context_line":"        if not self.user_cloud._has_neutron_extension("},{"line_number":23,"context_line":"                \"security-groups-default-rules\"):"},{"line_number":24,"context_line":"            self.skipTest(\"Neutron security-groups-default-rules extension \""}],"source_content_type":"text/x-python","patch_set":2,"id":"b029ee4c_c2bb15fc","line":21,"range":{"start_line":21,"start_character":14,"end_line":21,"end_character":48},"updated":"2023-06-29 15:02:37.000000000","message":"nit: don\u0027t need these","commit_id":"25843de75b1e8292543769932a7d3ff787956385"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3852248230693f5afb1ae0d7488972c424fd66ea","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestDefaultSecurityGroupRule(base.BaseFunctionalTest):"},{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super(TestDefaultSecurityGroupRule, self).setUp()"},{"line_number":22,"context_line":"        if not self.user_cloud._has_neutron_extension("},{"line_number":23,"context_line":"                \"security-groups-default-rules\"):"},{"line_number":24,"context_line":"            self.skipTest(\"Neutron security-groups-default-rules extension \""}],"source_content_type":"text/x-python","patch_set":2,"id":"d33d355b_84ae4077","line":21,"range":{"start_line":21,"start_character":14,"end_line":21,"end_character":48},"in_reply_to":"b029ee4c_c2bb15fc","updated":"2023-06-30 10:27:51.000000000","message":"Done","commit_id":"25843de75b1e8292543769932a7d3ff787956385"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"71a9f25d65328621ace8b6bdfb2b881f521054c8","unresolved":true,"context_lines":[{"line_number":45,"context_line":"        self.RULE_ID \u003d rul.id"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def tearDown(self):"},{"line_number":48,"context_line":"        #import remote_pdb; remote_pdb.set_trace(port\u003d1234)"},{"line_number":49,"context_line":"        sot \u003d self.operator_cloud.network.delete_default_security_group_rule("},{"line_number":50,"context_line":"            self.RULE_ID, ignore_missing\u003dFalse"},{"line_number":51,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"131bc498_f9ee316d","line":48,"updated":"2023-06-29 15:02:37.000000000","message":"whoops","commit_id":"25843de75b1e8292543769932a7d3ff787956385"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3852248230693f5afb1ae0d7488972c424fd66ea","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.RULE_ID \u003d rul.id"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def tearDown(self):"},{"line_number":48,"context_line":"        #import remote_pdb; remote_pdb.set_trace(port\u003d1234)"},{"line_number":49,"context_line":"        sot \u003d self.operator_cloud.network.delete_default_security_group_rule("},{"line_number":50,"context_line":"            self.RULE_ID, ignore_missing\u003dFalse"},{"line_number":51,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":2,"id":"35aadaef_e6e01192","line":48,"in_reply_to":"131bc498_f9ee316d","updated":"2023-06-30 10:27:51.000000000","message":"Done","commit_id":"25843de75b1e8292543769932a7d3ff787956385"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"69bf1c9e07c51b2eb36fb34a29cac0495c8746c1","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestDefaultSecurityGroupRule(base.BaseFunctionalTest):"},{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super(TestDefaultSecurityGroupRule, self).setUp()"},{"line_number":22,"context_line":"        if not self.user_cloud._has_neutron_extension("},{"line_number":23,"context_line":"            \"security-groups-default-rules\""},{"line_number":24,"context_line":"        ):"}],"source_content_type":"text/x-python","patch_set":4,"id":"23898f63_1c7606cb","line":21,"range":{"start_line":21,"start_character":8,"end_line":21,"end_character":49},"updated":"2023-07-07 10:16:02.000000000","message":"nit (py3): super().setUp()","commit_id":"0095d93d27d2c0003f3ad99cab40145e887b4da4"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"5e02065b3fec69567d13022368c0874127f90689","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class TestDefaultSecurityGroupRule(base.BaseFunctionalTest):"},{"line_number":20,"context_line":"    def setUp(self):"},{"line_number":21,"context_line":"        super(TestDefaultSecurityGroupRule, self).setUp()"},{"line_number":22,"context_line":"        if not self.user_cloud._has_neutron_extension("},{"line_number":23,"context_line":"            \"security-groups-default-rules\""},{"line_number":24,"context_line":"        ):"}],"source_content_type":"text/x-python","patch_set":4,"id":"16aed2c6_10c52f22","line":21,"range":{"start_line":21,"start_character":8,"end_line":21,"end_character":49},"in_reply_to":"23898f63_1c7606cb","updated":"2023-07-19 14:17:02.000000000","message":"Done","commit_id":"0095d93d27d2c0003f3ad99cab40145e887b4da4"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"584194a4156d1116af752487ee2c0ff9018a92bb","unresolved":true,"context_lines":[{"line_number":48,"context_line":"        )"},{"line_number":49,"context_line":"        self.RULE_ID \u003d rul.id"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def tearDown(self):"},{"line_number":52,"context_line":"        sot \u003d self.operator_cloud.network.delete_default_security_group_rule("},{"line_number":53,"context_line":"            self.RULE_ID, ignore_missing\u003dFalse"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        self.assertIsNone(sot)"},{"line_number":56,"context_line":"        super(TestDefaultSecurityGroupRule, self).tearDown()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_find(self):"},{"line_number":59,"context_line":"        sot \u003d self.operator_cloud.network.find_default_security_group_rule("},{"line_number":60,"context_line":"            self.RULE_ID"},{"line_number":61,"context_line":"        )"},{"line_number":62,"context_line":"        self.assertEqual(self.RULE_ID, sot.id)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def test_get(self):"},{"line_number":65,"context_line":"        sot \u003d self.operator_cloud.network.get_default_security_group_rule("},{"line_number":66,"context_line":"            self.RULE_ID"},{"line_number":67,"context_line":"        )"},{"line_number":68,"context_line":"        self.assertEqual(self.RULE_ID, sot.id)"},{"line_number":69,"context_line":"        self.assertEqual(self.DIR, sot.direction)"},{"line_number":70,"context_line":"        self.assertEqual(self.PROTO, sot.protocol)"},{"line_number":71,"context_line":"        self.assertEqual(self.PORT, sot.port_range_min)"},{"line_number":72,"context_line":"        self.assertEqual(self.PORT, sot.port_range_max)"},{"line_number":73,"context_line":"        self.assertEqual(self.USED_IN_DEFAULT_SG, sot.used_in_default_sg)"},{"line_number":74,"context_line":"        self.assertEqual("},{"line_number":75,"context_line":"            self.USED_IN_NON_DEFAULT_SG, sot.used_in_non_default_sg"},{"line_number":76,"context_line":"        )"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_list(self):"},{"line_number":79,"context_line":"        ids \u003d ["},{"line_number":80,"context_line":"            o.id"},{"line_number":81,"context_line":"            for o in self.operator_cloud.network.default_security_group_rules()"},{"line_number":82,"context_line":"        ]"},{"line_number":83,"context_line":"        self.assertIn(self.RULE_ID, ids)"}],"source_content_type":"text/x-python","patch_set":5,"id":"99f779b2_723e2bdc","line":83,"range":{"start_line":51,"start_character":0,"end_line":83,"end_character":40},"updated":"2023-09-04 12:37:28.000000000","message":"We\u0027ve be migrating away from this style of testing to a single combined test case that tests all operations. The reason being that each of these test cases results in the creation and deletion of a new resource, which is both slow and unnecessary. Rather than doing separate `test_find`, `test_get` and `test_list` methods, consider a simple e.g. `test_default_security_group_rule` method that tests all three in one go.\n\nI was almost certain I\u0027d said this already, but Gerrit says otherwise.","commit_id":"b02c96974edc3bdf91b4b11afc689569562b6c78"}]}
