)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"b2473260b1c1d54e7e52d8910d1d7eba4a930540","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"71e2330d_4c3d627e","updated":"2021-10-13 22:00:42.000000000","message":"Again, mostly nitpicking, could be fixed in a followup \"cleanup\" patch.","commit_id":"91e61f5cdc56d55741b5933d90983c8a38700041"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"703d9e562ec377e1e4ae9909a32c7debf9dda518","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"cf1898d7_42e2db9a","updated":"2021-10-18 14:49:10.000000000","message":"Also need to address/answer Lance\u0027s comments.","commit_id":"4c8f3806305bcac1f91f8d3ac24289843931e355"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"81282f6ab2c24a9429bc5cd197fd482dea5a1056","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"21829746_831166ea","updated":"2021-10-14 19:47:49.000000000","message":"Looks consistent with the previous patches. Just one question inline.","commit_id":"4c8f3806305bcac1f91f8d3ac24289843931e355"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"764411b9a8ecbf61c6dd2605bf8436145b8e7ad5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"f39d267c_8f66ce1b","updated":"2022-04-14 07:06:20.000000000","message":"Thank you,looks good to me!","commit_id":"b9ce167dc7b34d5fe8de56c63a75ae5267e334f8"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"30cdb8ab5e72416caba5175c1572c76c5d63a2d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"486b6070_5639a701","updated":"2022-05-12 16:26:27.000000000","message":"This was just rebased, so I\u0027m proxying the two other +2s this had with my +W","commit_id":"36bda46b74a81242efc3ce915ddeb6d56be9e4e7"}],"glance_tempest_plugin/tests/rbac/v2/metadefs/test_properties.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3b25c9c5e1d69cc40fc7d040f1af39495ad8f7b2","unresolved":true,"context_lines":[{"line_number":100,"context_line":"                                   client\u003dself.prop_admin_client,"},{"line_number":101,"context_line":"                                   namespace\u003dprop[\u0027namespace\u0027][\u0027namespace\u0027])"},{"line_number":102,"context_line":"            self.assertEqual(prop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":103,"context_line":"                             [*resp[\u0027properties\u0027]][0])"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        # list all metadef properties with admin role of \u0027alt_project\u0027"},{"line_number":106,"context_line":"        for prop in ns_properties:"}],"source_content_type":"text/x-python","patch_set":3,"id":"117b5b5c_f29a6a29","line":103,"range":{"start_line":103,"start_character":30,"end_line":103,"end_character":35},"updated":"2021-08-31 15:08:44.000000000","message":"why *resp?","commit_id":"c1b92ae63692c7755850ac681e0b4ae6ab815d12"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"7b8d0661e55bab7270fa66ab34e2c4ac3a613e2a","unresolved":true,"context_lines":[{"line_number":100,"context_line":"                                   client\u003dself.prop_admin_client,"},{"line_number":101,"context_line":"                                   namespace\u003dprop[\u0027namespace\u0027][\u0027namespace\u0027])"},{"line_number":102,"context_line":"            self.assertEqual(prop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":103,"context_line":"                             [*resp[\u0027properties\u0027]][0])"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        # list all metadef properties with admin role of \u0027alt_project\u0027"},{"line_number":106,"context_line":"        for prop in ns_properties:"}],"source_content_type":"text/x-python","patch_set":3,"id":"a6d9be83_1f141a14","line":103,"range":{"start_line":103,"start_character":30,"end_line":103,"end_character":35},"in_reply_to":"117b5b5c_f29a6a29","updated":"2021-09-01 13:10:56.000000000","message":"This is because the list resp is {\u0027properties\u0027: {\u0027property_name\u0027: {\u0027name\u0027: \u0027property_name\u0027, \u0027type\u0027: \u0027integer\u0027, \u0027title\u0027: \u0027property\u0027}}} and to just get the key of dict *resp is required","commit_id":"c1b92ae63692c7755850ac681e0b4ae6ab815d12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3b25c9c5e1d69cc40fc7d040f1af39495ad8f7b2","unresolved":true,"context_lines":[{"line_number":119,"context_line":"                            expected_status\u003d200,"},{"line_number":120,"context_line":"                            namespace\u003dprop[\u0027namespace\u0027][\u0027namespace\u0027],"},{"line_number":121,"context_line":"                            client\u003dself.prop_admin_client,"},{"line_number":122,"context_line":"                            title\u003d\"UPDATE_Property\","},{"line_number":123,"context_line":"                            property_name\u003dprop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":124,"context_line":"                            name\u003dprop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":125,"context_line":"                            type\u003d\"string\","},{"line_number":126,"context_line":"                            description\u003ddata_utils.arbitrary_string())"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # update all metadef properties with admin role of \u0027alt_project\u0027"},{"line_number":129,"context_line":"        for prop in ns_properties:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa8d56b7_d9f8e41d","line":126,"range":{"start_line":122,"start_character":28,"end_line":126,"end_character":69},"updated":"2021-08-31 15:08:44.000000000","message":"I think we should update only one attribute of property,\neither title, type or description\n\nNo need to update all attributes.","commit_id":"c1b92ae63692c7755850ac681e0b4ae6ab815d12"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"7b8d0661e55bab7270fa66ab34e2c4ac3a613e2a","unresolved":true,"context_lines":[{"line_number":119,"context_line":"                            expected_status\u003d200,"},{"line_number":120,"context_line":"                            namespace\u003dprop[\u0027namespace\u0027][\u0027namespace\u0027],"},{"line_number":121,"context_line":"                            client\u003dself.prop_admin_client,"},{"line_number":122,"context_line":"                            title\u003d\"UPDATE_Property\","},{"line_number":123,"context_line":"                            property_name\u003dprop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":124,"context_line":"                            name\u003dprop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":125,"context_line":"                            type\u003d\"string\","},{"line_number":126,"context_line":"                            description\u003ddata_utils.arbitrary_string())"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        # update all metadef properties with admin role of \u0027alt_project\u0027"},{"line_number":129,"context_line":"        for prop in ns_properties:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5e9b9150_4f07469d","line":126,"range":{"start_line":122,"start_character":28,"end_line":126,"end_character":69},"in_reply_to":"fa8d56b7_d9f8e41d","updated":"2021-09-01 13:10:56.000000000","message":"These are the mandatory attributed needs to be passed to the api","commit_id":"c1b92ae63692c7755850ac681e0b4ae6ab815d12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"3b25c9c5e1d69cc40fc7d040f1af39495ad8f7b2","unresolved":true,"context_lines":[{"line_number":131,"context_line":"                            expected_status\u003d200,"},{"line_number":132,"context_line":"                            namespace\u003dprop[\u0027namespace\u0027][\u0027namespace\u0027],"},{"line_number":133,"context_line":"                            client\u003dself.prop_alt_admin_client,"},{"line_number":134,"context_line":"                            title\u003d\"UPDATE_Property\","},{"line_number":135,"context_line":"                            property_name\u003dprop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":136,"context_line":"                            name\u003dprop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":137,"context_line":"                            type\u003d\"string\","},{"line_number":138,"context_line":"                            description\u003ddata_utils.arbitrary_string())"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def test_delete_properties(self):"},{"line_number":141,"context_line":"        ns_properties \u003d self.create_properties()"}],"source_content_type":"text/x-python","patch_set":3,"id":"c7b6af42_4b20becb","line":138,"range":{"start_line":134,"start_character":28,"end_line":138,"end_character":70},"updated":"2021-08-31 15:08:44.000000000","message":"ditto","commit_id":"c1b92ae63692c7755850ac681e0b4ae6ab815d12"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"20fd0f1a5f14b9f51623c0fab2823c785259eefc","unresolved":true,"context_lines":[{"line_number":131,"context_line":"                            expected_status\u003d200,"},{"line_number":132,"context_line":"                            namespace\u003dprop[\u0027namespace\u0027][\u0027namespace\u0027],"},{"line_number":133,"context_line":"                            client\u003dself.prop_alt_admin_client,"},{"line_number":134,"context_line":"                            title\u003d\"UPDATE_Property\","},{"line_number":135,"context_line":"                            property_name\u003dprop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":136,"context_line":"                            name\u003dprop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":137,"context_line":"                            type\u003d\"string\","},{"line_number":138,"context_line":"                            description\u003ddata_utils.arbitrary_string())"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def test_delete_properties(self):"},{"line_number":141,"context_line":"        ns_properties \u003d self.create_properties()"}],"source_content_type":"text/x-python","patch_set":3,"id":"d99bb980_318e9808","line":138,"range":{"start_line":134,"start_character":28,"end_line":138,"end_character":70},"in_reply_to":"c7b6af42_4b20becb","updated":"2022-04-13 05:14:19.000000000","message":"Kindly please see the reply for similar comment at line #126","commit_id":"c1b92ae63692c7755850ac681e0b4ae6ab815d12"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5e7d1eaf79b74c0c4733cd8ed99d83067334d43e","unresolved":true,"context_lines":[{"line_number":188,"context_line":"    def test_create_property(self):"},{"line_number":189,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        def _assertPropertyCreate(namespace, owner, client):"},{"line_number":192,"context_line":"            property_name \u003d \"property_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":193,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":194,"context_line":"            if not (namespace[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":3,"id":"b0fbf8e7_df7e2147","line":191,"range":{"start_line":191,"start_character":12,"end_line":191,"end_character":33},"updated":"2021-08-30 16:24:09.000000000","message":"Similar comment here as the preceding patches.\n\nConsider adding this to the base implementation instead of the test module directly.","commit_id":"c1b92ae63692c7755850ac681e0b4ae6ab815d12"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"20fd0f1a5f14b9f51623c0fab2823c785259eefc","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    def test_create_property(self):"},{"line_number":189,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        def _assertPropertyCreate(namespace, owner, client):"},{"line_number":192,"context_line":"            property_name \u003d \"property_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":193,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":194,"context_line":"            if not (namespace[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":3,"id":"33ce8b08_60bc846d","line":191,"range":{"start_line":191,"start_character":12,"end_line":191,"end_character":33},"in_reply_to":"b0fbf8e7_df7e2147","updated":"2022-04-13 05:14:19.000000000","message":"Done","commit_id":"c1b92ae63692c7755850ac681e0b4ae6ab815d12"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5e7d1eaf79b74c0c4733cd8ed99d83067334d43e","unresolved":true,"context_lines":[{"line_number":205,"context_line":"        # Make sure non admin role of \u0027project\u0027 forbidden to"},{"line_number":206,"context_line":"        # create properties"},{"line_number":207,"context_line":"        for namespace in namespaces:"},{"line_number":208,"context_line":"            _assertPropertyCreate(namespace, self.project_id,"},{"line_number":209,"context_line":"                                  self.member_or_reader_client)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        # Make sure non admin role of \u0027alt_project\u0027 forbidden to"}],"source_content_type":"text/x-python","patch_set":3,"id":"8c8aff78_b0412fff","line":208,"updated":"2021-08-30 16:24:09.000000000","message":"This is just my preference, but I like having tests list out explicit outcomes:\n\n  self.do_request(\u0027create_namespace_property\u0027,\n                  expected_status\u003dexceptions.NotFound,\n                  namespace\u003dnamespace_foo[\u0027namespace\u0027],\n                  title\u003d\"property\",\n                  type\u003d\u0027integer\u0027,\n                  name\u003dproperty_name,\n                  client\u003dself.member_or_reader_client)\n  self.do_request(\u0027create_namespace_property\u0027,\n                  expected_status\u003dexceptions.Forbidden,\n                  namespace\u003dnamespace_bar[\u0027namespace\u0027],\n                  title\u003d\"property\",\n                  type\u003d\u0027integer\u0027,\n                  name\u003dproperty_name,\n                  client\u003dself.member_or_reader_client)\n\nI find this easier to read and ensure the test is correct since everything is declared in the test case and it doesn\u0027t rely on test logic (the if statement at line 194) to make sure the test is doing the right thing.\n\nBut, I know different people have different thoughts on this approach since it does lead to longer tests. Just wanted to share in case it\u0027s useful here.","commit_id":"c1b92ae63692c7755850ac681e0b4ae6ab815d12"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"7b8d0661e55bab7270fa66ab34e2c4ac3a613e2a","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        # Make sure non admin role of \u0027project\u0027 forbidden to"},{"line_number":206,"context_line":"        # create properties"},{"line_number":207,"context_line":"        for namespace in namespaces:"},{"line_number":208,"context_line":"            _assertPropertyCreate(namespace, self.project_id,"},{"line_number":209,"context_line":"                                  self.member_or_reader_client)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        # Make sure non admin role of \u0027alt_project\u0027 forbidden to"}],"source_content_type":"text/x-python","patch_set":3,"id":"433ecc46_8b688413","line":208,"in_reply_to":"8c8aff78_b0412fff","updated":"2021-09-01 13:10:56.000000000","message":"Ack","commit_id":"c1b92ae63692c7755850ac681e0b4ae6ab815d12"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7f66c424ca1c4108b2f26ec329f4a4ed66bef20a","unresolved":true,"context_lines":[{"line_number":60,"context_line":"        namespace_properties \u003d []"},{"line_number":61,"context_line":"        for ns in namespaces:"},{"line_number":62,"context_line":"            if ns[\u0027namespace\u0027].startswith("},{"line_number":63,"context_line":"                self.properties_admin_client.project_id):"},{"line_number":64,"context_line":"                client \u003d self.properties_admin_client"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"            property_name \u003d \"prop_of_%s\" % (ns[\u0027namespace\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"dc5c9257_0a61364a","line":63,"range":{"start_line":63,"start_character":16,"end_line":63,"end_character":55},"updated":"2021-09-24 07:57:12.000000000","message":"nit: self.project_id","commit_id":"f08cc9c8f6a29d368f2e0fda1c4dbc21f2212358"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"20fd0f1a5f14b9f51623c0fab2823c785259eefc","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        namespace_properties \u003d []"},{"line_number":61,"context_line":"        for ns in namespaces:"},{"line_number":62,"context_line":"            if ns[\u0027namespace\u0027].startswith("},{"line_number":63,"context_line":"                self.properties_admin_client.project_id):"},{"line_number":64,"context_line":"                client \u003d self.properties_admin_client"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"            property_name \u003d \"prop_of_%s\" % (ns[\u0027namespace\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"6c64e990_6fa75057","line":63,"range":{"start_line":63,"start_character":16,"end_line":63,"end_character":55},"in_reply_to":"dc5c9257_0a61364a","updated":"2022-04-13 05:14:19.000000000","message":"Done","commit_id":"f08cc9c8f6a29d368f2e0fda1c4dbc21f2212358"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"7f66c424ca1c4108b2f26ec329f4a4ed66bef20a","unresolved":true,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    credentials \u003d [\u0027project_admin\u0027, \u0027project_alt_admin\u0027, \u0027primary\u0027]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def test_create_property(self):"},{"line_number":137,"context_line":"        # As this is been covered in other tests for admin role,"},{"line_number":138,"context_line":"        # skipping to test only create properties seperately."},{"line_number":139,"context_line":"        pass"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def test_get_properties(self):"},{"line_number":142,"context_line":"        ns_properties \u003d self.create_properties()"}],"source_content_type":"text/x-python","patch_set":9,"id":"f902bf82_cf1af487","line":139,"range":{"start_line":136,"start_character":0,"end_line":139,"end_character":12},"updated":"2021-09-24 07:57:12.000000000","message":"ditto, move this to end.","commit_id":"f08cc9c8f6a29d368f2e0fda1c4dbc21f2212358"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"20fd0f1a5f14b9f51623c0fab2823c785259eefc","unresolved":true,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    credentials \u003d [\u0027project_admin\u0027, \u0027project_alt_admin\u0027, \u0027primary\u0027]"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def test_create_property(self):"},{"line_number":137,"context_line":"        # As this is been covered in other tests for admin role,"},{"line_number":138,"context_line":"        # skipping to test only create properties seperately."},{"line_number":139,"context_line":"        pass"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def test_get_properties(self):"},{"line_number":142,"context_line":"        ns_properties \u003d self.create_properties()"}],"source_content_type":"text/x-python","patch_set":9,"id":"71cd2517_c69c8284","line":139,"range":{"start_line":136,"start_character":0,"end_line":139,"end_character":12},"in_reply_to":"f902bf82_cf1af487","updated":"2022-04-13 05:14:19.000000000","message":"keeping it at the start as the this method in the previously merged patches are at the start. But if it really needs to be moved then I will do that for all tests in the follow up patch[1]\n\n[1]: https://review.opendev.org/c/openstack/glance-tempest-plugin/+/813625/2","commit_id":"f08cc9c8f6a29d368f2e0fda1c4dbc21f2212358"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"b2473260b1c1d54e7e52d8910d1d7eba4a930540","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":11,"id":"4b2bc543_9b5a71b3","line":1,"range":{"start_line":1,"start_character":11,"end_line":1,"end_character":16},"updated":"2021-10-13 22:00:42.000000000","message":"Don\u0027t we want a Copyright line here?","commit_id":"91e61f5cdc56d55741b5933d90983c8a38700041"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"20fd0f1a5f14b9f51623c0fab2823c785259eefc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"# not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"# a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":11,"id":"af522118_94110863","line":1,"range":{"start_line":1,"start_character":11,"end_line":1,"end_character":16},"in_reply_to":"4b2bc543_9b5a71b3","updated":"2022-04-13 05:14:19.000000000","message":"Done","commit_id":"91e61f5cdc56d55741b5933d90983c8a38700041"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"b2473260b1c1d54e7e52d8910d1d7eba4a930540","unresolved":true,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        return namespace_properties"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def assertPropertyList(self, actual_prop, client, owner\u003dNone):"},{"line_number":70,"context_line":"        ns \u003d actual_prop[\u0027namespace\u0027]"},{"line_number":71,"context_line":"        if owner:"},{"line_number":72,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":11,"id":"dfa4f5b7_1af4f6e7","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":26},"updated":"2021-10-13 22:00:42.000000000","message":"It would be nice to avoid camlCase and use snake_case instead, but we can fix all these in a followup patch.","commit_id":"91e61f5cdc56d55741b5933d90983c8a38700041"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b97dca259db9d7d5677c4b78beee3c6b82ec0c28","unresolved":true,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        return namespace_properties"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def assertPropertyList(self, actual_prop, client, owner\u003dNone):"},{"line_number":70,"context_line":"        ns \u003d actual_prop[\u0027namespace\u0027]"},{"line_number":71,"context_line":"        if owner:"},{"line_number":72,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":11,"id":"f1ee037d_6506ae4e","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":26},"in_reply_to":"dfa4f5b7_1af4f6e7","updated":"2022-03-01 13:42:56.000000000","message":"ack, I already posted a followup patch where I\u0027ve have addressed some refactoring as suggested on previously merged patches, So will have this change in that patch as wel.","commit_id":"91e61f5cdc56d55741b5933d90983c8a38700041"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"30cdb8ab5e72416caba5175c1572c76c5d63a2d4","unresolved":true,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        return namespace_properties"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def assertPropertyList(self, actual_prop, client, owner\u003dNone):"},{"line_number":70,"context_line":"        ns \u003d actual_prop[\u0027namespace\u0027]"},{"line_number":71,"context_line":"        if owner:"},{"line_number":72,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":11,"id":"97feddb5_d80755ec","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":26},"in_reply_to":"f1ee037d_6506ae4e","updated":"2022-05-12 16:26:27.000000000","message":"This is mirroring the unittest method convention, which I think is appropriate, FWIW.","commit_id":"91e61f5cdc56d55741b5933d90983c8a38700041"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"b2473260b1c1d54e7e52d8910d1d7eba4a930540","unresolved":true,"context_lines":[{"line_number":70,"context_line":"        ns \u003d actual_prop[\u0027namespace\u0027]"},{"line_number":71,"context_line":"        if owner:"},{"line_number":72,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":73,"context_line":"                    ns[\u0027owner\u0027] \u003d\u003d owner):"},{"line_number":74,"context_line":"                resp \u003d self.do_request(\u0027list_namespace_properties\u0027,"},{"line_number":75,"context_line":"                                       expected_status\u003dexceptions.NotFound,"},{"line_number":76,"context_line":"                                       client\u003dclient,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1d09cbb4_9baad3fe","line":73,"range":{"start_line":73,"start_character":35,"end_line":73,"end_character":40},"updated":"2021-10-13 22:00:42.000000000","message":"This if condition can fit on one line.","commit_id":"91e61f5cdc56d55741b5933d90983c8a38700041"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"20fd0f1a5f14b9f51623c0fab2823c785259eefc","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        ns \u003d actual_prop[\u0027namespace\u0027]"},{"line_number":71,"context_line":"        if owner:"},{"line_number":72,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":73,"context_line":"                    ns[\u0027owner\u0027] \u003d\u003d owner):"},{"line_number":74,"context_line":"                resp \u003d self.do_request(\u0027list_namespace_properties\u0027,"},{"line_number":75,"context_line":"                                       expected_status\u003dexceptions.NotFound,"},{"line_number":76,"context_line":"                                       client\u003dclient,"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f3c4c1d_71efdff4","line":73,"range":{"start_line":73,"start_character":35,"end_line":73,"end_character":40},"in_reply_to":"1d09cbb4_9baad3fe","updated":"2022-04-13 05:14:19.000000000","message":"Done","commit_id":"91e61f5cdc56d55741b5933d90983c8a38700041"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"81282f6ab2c24a9429bc5cd197fd482dea5a1056","unresolved":true,"context_lines":[{"line_number":28,"context_line":"        # of invalid results if these tests are executed concurrently, to avoid"},{"line_number":29,"context_line":"        # such conflicts we are using locking to execute metadef tests"},{"line_number":30,"context_line":"        # serially."},{"line_number":31,"context_line":"        self.useFixture(fixtures.LockFixture(\u0027metadef_namespaces\u0027))"},{"line_number":32,"context_line":"        super(MetadefV2RbacPropertiesTest, self).setUp()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":12,"id":"64e0ed05_0d5d0b99","line":31,"updated":"2021-10-14 19:47:49.000000000","message":"Note for reviewers.\n\nBased on discussions in previous patches, I think we\u0027re going to clean this up in a separate fix.\n\nThe primary concern here is that a locking approach is going to make the tests take longer, which will only get worse as we implement support for system personas and increase test coverage for those cases.","commit_id":"4c8f3806305bcac1f91f8d3ac24289843931e355"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"20fd0f1a5f14b9f51623c0fab2823c785259eefc","unresolved":true,"context_lines":[{"line_number":28,"context_line":"        # of invalid results if these tests are executed concurrently, to avoid"},{"line_number":29,"context_line":"        # such conflicts we are using locking to execute metadef tests"},{"line_number":30,"context_line":"        # serially."},{"line_number":31,"context_line":"        self.useFixture(fixtures.LockFixture(\u0027metadef_namespaces\u0027))"},{"line_number":32,"context_line":"        super(MetadefV2RbacPropertiesTest, self).setUp()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":12,"id":"eaf77ec3_a674afcd","line":31,"in_reply_to":"64e0ed05_0d5d0b99","updated":"2022-04-13 05:14:19.000000000","message":"Removed the lock in the lasted patch set","commit_id":"4c8f3806305bcac1f91f8d3ac24289843931e355"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"703d9e562ec377e1e4ae9909a32c7debf9dda518","unresolved":true,"context_lines":[{"line_number":56,"context_line":"        client \u003d self.os_project_admin.namespace_properties_client"},{"line_number":57,"context_line":"        namespace_properties \u003d []"},{"line_number":58,"context_line":"        for ns in namespaces:"},{"line_number":59,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.project_id):"},{"line_number":60,"context_line":"                client \u003d self.os_project_alt_admin.namespace_properties_client"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"            property_name \u003d \"prop_of_%s\" % (ns[\u0027namespace\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"15bd74de_041c34ed","line":59,"range":{"start_line":59,"start_character":42,"end_line":59,"end_character":57},"updated":"2021-10-18 14:49:10.000000000","message":"this should be self.alt_project_id","commit_id":"4c8f3806305bcac1f91f8d3ac24289843931e355"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"20fd0f1a5f14b9f51623c0fab2823c785259eefc","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        client \u003d self.os_project_admin.namespace_properties_client"},{"line_number":57,"context_line":"        namespace_properties \u003d []"},{"line_number":58,"context_line":"        for ns in namespaces:"},{"line_number":59,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.project_id):"},{"line_number":60,"context_line":"                client \u003d self.os_project_alt_admin.namespace_properties_client"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"            property_name \u003d \"prop_of_%s\" % (ns[\u0027namespace\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"157ca4a5_ed13b5fc","line":59,"range":{"start_line":59,"start_character":42,"end_line":59,"end_character":57},"in_reply_to":"15bd74de_041c34ed","updated":"2022-04-13 05:14:19.000000000","message":"Done","commit_id":"4c8f3806305bcac1f91f8d3ac24289843931e355"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"81282f6ab2c24a9429bc5cd197fd482dea5a1056","unresolved":true,"context_lines":[{"line_number":221,"context_line":"        def assertPropertyGet(actual_prop, client, owner\u003dNone):"},{"line_number":222,"context_line":"            ns \u003d actual_prop[\u0027namespace\u0027]"},{"line_number":223,"context_line":"            expected_status \u003d 200"},{"line_number":224,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":225,"context_line":"                    ns[\u0027owner\u0027] \u003d\u003d owner):"},{"line_number":226,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"6cc0a3b2_0f158d55","line":224,"range":{"start_line":224,"start_character":15,"end_line":224,"end_character":18},"updated":"2021-10-14 19:47:49.000000000","message":"nit: I commented on this in a previous patch, but we can probably address it later if needed since it\u0027s nit picky.\n\nI think removing the NOT makes this easier to read:\n\n  expected_status \u003d exceptions.NotFound\n  if ns[\u0027visibility\u0027] or ns[\u0027owner\u0027] \u003d\u003d owner:\n      expected_status \u003d 200","commit_id":"4c8f3806305bcac1f91f8d3ac24289843931e355"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b97dca259db9d7d5677c4b78beee3c6b82ec0c28","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        def assertPropertyGet(actual_prop, client, owner\u003dNone):"},{"line_number":222,"context_line":"            ns \u003d actual_prop[\u0027namespace\u0027]"},{"line_number":223,"context_line":"            expected_status \u003d 200"},{"line_number":224,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"},{"line_number":225,"context_line":"                    ns[\u0027owner\u0027] \u003d\u003d owner):"},{"line_number":226,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":227,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"e06350d9_61071d23","line":224,"range":{"start_line":224,"start_character":15,"end_line":224,"end_character":18},"in_reply_to":"6cc0a3b2_0f158d55","updated":"2022-03-01 13:42:56.000000000","message":"Ack","commit_id":"4c8f3806305bcac1f91f8d3ac24289843931e355"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"81282f6ab2c24a9429bc5cd197fd482dea5a1056","unresolved":true,"context_lines":[{"line_number":263,"context_line":"                            description\u003ddata_utils.arbitrary_string(),"},{"line_number":264,"context_line":"                            namespace\u003dns[\u0027namespace\u0027],"},{"line_number":265,"context_line":"                            property_name\u003dactual_prop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":266,"context_line":"                            title\u003d\"UPDATE_Property\","},{"line_number":267,"context_line":"                            type\u003d\"string\","},{"line_number":268,"context_line":"                            client\u003dclient)"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"93d054ac_bc417206","line":266,"range":{"start_line":266,"start_character":35,"end_line":266,"end_character":50},"updated":"2021-10-14 19:47:49.000000000","message":"Do properties have uniqueness constraints?","commit_id":"4c8f3806305bcac1f91f8d3ac24289843931e355"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b97dca259db9d7d5677c4b78beee3c6b82ec0c28","unresolved":true,"context_lines":[{"line_number":263,"context_line":"                            description\u003ddata_utils.arbitrary_string(),"},{"line_number":264,"context_line":"                            namespace\u003dns[\u0027namespace\u0027],"},{"line_number":265,"context_line":"                            property_name\u003dactual_prop[\u0027property\u0027][\u0027name\u0027],"},{"line_number":266,"context_line":"                            title\u003d\"UPDATE_Property\","},{"line_number":267,"context_line":"                            type\u003d\"string\","},{"line_number":268,"context_line":"                            client\u003dclient)"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"38ffc09d_5196e1b9","line":266,"range":{"start_line":266,"start_character":35,"end_line":266,"end_character":50},"in_reply_to":"93d054ac_bc417206","updated":"2022-03-01 13:42:56.000000000","message":"Yes, the name \u0026 the namespace_id are UNIQUE.\nThe remaining values goes into property\u0027s json_schema.","commit_id":"4c8f3806305bcac1f91f8d3ac24289843931e355"}]}
