)]}'
{"glance_tempest_plugin/tests/rbac/v2/base.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"2221a0412b85180d5b80e88733ff155cf2123487","unresolved":true,"context_lines":[{"line_number":130,"context_line":"        project_namespaces, alt_namespaces \u003d fixtures.create_namespaces("},{"line_number":131,"context_line":"            self.ns_admin_client, self.ns_alt_admin_client)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        total_namespaces \u003d project_namespaces + alt_namespaces"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        return fixtures.create_objects(self.obj_admin_client,"},{"line_number":136,"context_line":"                                       self.obj_alt_admin_client,"}],"source_content_type":"text/x-python","patch_set":5,"id":"45abb0a7_c56aefef","line":133,"range":{"start_line":133,"start_character":8,"end_line":133,"end_character":62},"updated":"2021-08-27 07:42:03.000000000","message":"Or also check possibility of calling cleanup after this line, so that no need to repeat it in each test?","commit_id":"7887168fad408e870a2b811afb6443a7fab55343"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8ec0e49473eac09238764031a4e3061c0fb23465","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        project_namespaces, alt_namespaces \u003d fixtures.create_namespaces("},{"line_number":131,"context_line":"            self.ns_admin_client, self.ns_alt_admin_client)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        total_namespaces \u003d project_namespaces + alt_namespaces"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"        return fixtures.create_objects(self.obj_admin_client,"},{"line_number":136,"context_line":"                                       self.obj_alt_admin_client,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb7837b_ad832de4","line":133,"range":{"start_line":133,"start_character":8,"end_line":133,"end_character":62},"in_reply_to":"45abb0a7_c56aefef","updated":"2021-08-31 20:40:19.000000000","message":"Ack","commit_id":"7887168fad408e870a2b811afb6443a7fab55343"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"352daebb61c4dee6a07e42bc50ffc9dd6a183463","unresolved":true,"context_lines":[{"line_number":99,"context_line":"        # supports system scope."},{"line_number":100,"context_line":"        cls.admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":101,"context_line":"        cls.alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":102,"context_line":"        cls.ns_admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":103,"context_line":"        cls.ns_alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def do_request(self, method, expected_status\u003d200, client\u003dNone, **payload):"},{"line_number":106,"context_line":"        if not client:"}],"source_content_type":"text/x-python","patch_set":6,"id":"173968e9_0d0029e4","line":103,"range":{"start_line":102,"start_character":8,"end_line":103,"end_character":76},"updated":"2021-08-30 06:43:29.000000000","message":"duplicate, can be used #100 and #101","commit_id":"745f62d9c95e9eaa50ff2641a357a175ae0d203f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8ec0e49473eac09238764031a4e3061c0fb23465","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        # supports system scope."},{"line_number":100,"context_line":"        cls.admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":101,"context_line":"        cls.alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":102,"context_line":"        cls.ns_admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":103,"context_line":"        cls.ns_alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def do_request(self, method, expected_status\u003d200, client\u003dNone, **payload):"},{"line_number":106,"context_line":"        if not client:"}],"source_content_type":"text/x-python","patch_set":6,"id":"b480c0b2_ea27cb08","line":103,"range":{"start_line":102,"start_character":8,"end_line":103,"end_character":76},"in_reply_to":"173968e9_0d0029e4","updated":"2021-08-31 20:40:19.000000000","message":"Ack","commit_id":"745f62d9c95e9eaa50ff2641a357a175ae0d203f"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b47ba1c860d5d4b0e8089541a77066ea41d7baa5","unresolved":true,"context_lines":[{"line_number":129,"context_line":"                test_utils.call_and_ignore_notfound_exc,"},{"line_number":130,"context_line":"                self.admin_client.delete_namespace, namespace[\u0027namespace\u0027])"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    def create_objects(self):"},{"line_number":133,"context_line":"        # Create namespace for two different projects"},{"line_number":134,"context_line":"        project_namespaces, alt_namespaces \u003d fixtures.create_namespaces("},{"line_number":135,"context_line":"            self.admin_client, self.alt_admin_client)"}],"source_content_type":"text/x-python","patch_set":7,"id":"cd89678d_710e5512","line":132,"updated":"2021-08-30 16:10:57.000000000","message":"Similar comment here as in the previous patch about moving this into the metadef test base class.","commit_id":"7d1dc3503a28d0f5c4eede94134ee13d96c23b09"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"1e194e1a1e71ac2cfa32def9a2c304aa6acc4fb1","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        cls.alt_project_id \u003d cls.alt_persona.namespaces_client.project_id"},{"line_number":91,"context_line":"        cls.admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":92,"context_line":"        cls.alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":93,"context_line":"        cls.obj_admin_client \u003d cls.os_project_admin.namespace_objects_client"},{"line_number":94,"context_line":"        cls.obj_alt_admin_client \u003d \\"},{"line_number":95,"context_line":"            cls.os_project_alt_admin.namespace_objects_client"}],"source_content_type":"text/x-python","patch_set":12,"id":"b7764591_0a046322","line":95,"range":{"start_line":93,"start_character":8,"end_line":95,"end_character":61},"updated":"2021-09-09 15:09:35.000000000","message":"I think this you can move to Object specific class as this is related to object only.","commit_id":"f5d15466247ac8aa4de87138161775f9ac340ead"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8d369a352d2c92afa36fc5b03cd180c6a170cf66","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        cls.alt_project_id \u003d cls.alt_persona.namespaces_client.project_id"},{"line_number":91,"context_line":"        cls.admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":92,"context_line":"        cls.alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":93,"context_line":"        cls.obj_admin_client \u003d cls.os_project_admin.namespace_objects_client"},{"line_number":94,"context_line":"        cls.obj_alt_admin_client \u003d \\"},{"line_number":95,"context_line":"            cls.os_project_alt_admin.namespace_objects_client"}],"source_content_type":"text/x-python","patch_set":12,"id":"0832047d_d93f4a9b","line":95,"range":{"start_line":93,"start_character":8,"end_line":95,"end_character":61},"in_reply_to":"b7764591_0a046322","updated":"2021-09-13 09:15:33.000000000","message":"Done","commit_id":"f5d15466247ac8aa4de87138161775f9ac340ead"}],"glance_tempest_plugin/tests/rbac/v2/metadefs/metadef_utils.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"1e194e1a1e71ac2cfa32def9a2c304aa6acc4fb1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":12,"id":"f1764335_046f51af","line":81,"range":{"start_line":61,"start_character":4,"end_line":81,"end_character":0},"updated":"2021-09-09 15:09:35.000000000","message":"ditto, move this to object specific module as this will not be used other than object tests.","commit_id":"f5d15466247ac8aa4de87138161775f9ac340ead"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8d369a352d2c92afa36fc5b03cd180c6a170cf66","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"cc745321_4ef3583a","line":81,"range":{"start_line":61,"start_character":4,"end_line":81,"end_character":0},"in_reply_to":"f1764335_046f51af","updated":"2021-09-13 09:15:33.000000000","message":"Done","commit_id":"f5d15466247ac8aa4de87138161775f9ac340ead"}],"glance_tempest_plugin/tests/rbac/v2/metadefs/test_objects.py":[{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"d8c95a954ef4645a6b9a57d7c97a6bd72c383f51","unresolved":true,"context_lines":[{"line_number":37,"context_line":"        cls.project_id \u003d cls.persona.namespaces_client.project_id"},{"line_number":38,"context_line":"        cls.alt_project_id \u003d cls.alt_persona.namespaces_client.project_id"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        cls.ns_admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":41,"context_line":"        cls.ns_alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":42,"context_line":"        cls.obj_admin_client \u003d cls.os_project_admin.namespace_objects_client"},{"line_number":43,"context_line":"        cls.obj_alt_admin_client \u003d \\"},{"line_number":44,"context_line":"            cls.os_project_alt_admin.namespace_objects_client"}],"source_content_type":"text/x-python","patch_set":3,"id":"3081916c_38bc3dc1","line":41,"range":{"start_line":40,"start_character":8,"end_line":41,"end_character":76},"updated":"2021-08-26 15:42:00.000000000","message":"I think this will be used in all the metadef tests, so its better to move them to base class rather than repeating them in all classes.","commit_id":"b94031f5737c507d05749f6c15eef2eb0a014d25"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"d3656238a35b682c5d15c6b33e2d129ef5dc12da","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        cls.project_id \u003d cls.persona.namespaces_client.project_id"},{"line_number":38,"context_line":"        cls.alt_project_id \u003d cls.alt_persona.namespaces_client.project_id"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        cls.ns_admin_client \u003d cls.os_project_admin.namespaces_client"},{"line_number":41,"context_line":"        cls.ns_alt_admin_client \u003d cls.os_project_alt_admin.namespaces_client"},{"line_number":42,"context_line":"        cls.obj_admin_client \u003d cls.os_project_admin.namespace_objects_client"},{"line_number":43,"context_line":"        cls.obj_alt_admin_client \u003d \\"},{"line_number":44,"context_line":"            cls.os_project_alt_admin.namespace_objects_client"}],"source_content_type":"text/x-python","patch_set":3,"id":"3b5551c8_a69c4768","line":41,"range":{"start_line":40,"start_character":8,"end_line":41,"end_character":76},"in_reply_to":"3081916c_38bc3dc1","updated":"2021-08-26 18:59:52.000000000","message":"Ack","commit_id":"b94031f5737c507d05749f6c15eef2eb0a014d25"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"51ad9f2cd67297decef43f8b9004ad00fffa3cf6","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def test_create_object(self):"},{"line_number":76,"context_line":"        # Make sure admin role of \u0027project\u0027 and \u0027alt_project\u0027 allowed to"},{"line_number":77,"context_line":"        # create objects"},{"line_number":78,"context_line":"        ns_objects \u003d self.create_objects()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_get_object(self):"},{"line_number":81,"context_line":"        ns_objects \u003d self.create_objects()"}],"source_content_type":"text/x-python","patch_set":4,"id":"b087e0b6_2c3b706b","line":78,"updated":"2021-08-26 20:11:50.000000000","message":"You need to call self.cleanup here and pass a namespace to it, so that it will delete both namespace and associated \nOtherwise the data will remain in the local database.\n\nSame for below tests as well.\nFor each test run in local environment from this file, there will be around 50+ namespaces and 100+ objects will remain stale in database.","commit_id":"fb89a85d287fab354460c79736bee5519c177989"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8018554d672e4c8033a0e9e64e8ad86847006051","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def test_create_object(self):"},{"line_number":76,"context_line":"        # Make sure admin role of \u0027project\u0027 and \u0027alt_project\u0027 allowed to"},{"line_number":77,"context_line":"        # create objects"},{"line_number":78,"context_line":"        ns_objects \u003d self.create_objects()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def test_get_object(self):"},{"line_number":81,"context_line":"        ns_objects \u003d self.create_objects()"}],"source_content_type":"text/x-python","patch_set":4,"id":"7ff977a4_eb0165b0","line":78,"in_reply_to":"b087e0b6_2c3b706b","updated":"2021-08-27 06:55:55.000000000","message":"Ack","commit_id":"fb89a85d287fab354460c79736bee5519c177989"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"dc85d43e31cc77a74d7edd112262cfa0da7d71bc","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        cls.member_or_reader_client \u003d cls.persona.namespace_objects_client"},{"line_number":35,"context_line":"        cls.alt_member_or_reader_client \u003d \\"},{"line_number":36,"context_line":"            cls.alt_persona.namespace_objects_client"},{"line_number":37,"context_line":"        cls.project_id \u003d cls.persona.namespaces_client.project_id"},{"line_number":38,"context_line":"        cls.alt_project_id \u003d cls.alt_persona.namespaces_client.project_id"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        cls.obj_admin_client \u003d cls.os_project_admin.namespace_objects_client"},{"line_number":41,"context_line":"        cls.obj_alt_admin_client \u003d \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"e1d997e4_4a2cf5f4","line":38,"range":{"start_line":37,"start_character":8,"end_line":38,"end_character":73},"updated":"2021-08-27 07:05:39.000000000","message":"I think we can move these to base class as well.","commit_id":"7887168fad408e870a2b811afb6443a7fab55343"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"dd5b315217c6bd9c2c10b235cdc47086e645bc15","unresolved":true,"context_lines":[{"line_number":77,"context_line":"        # create objects"},{"line_number":78,"context_line":"        ns_objects \u003d self.create_objects()"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        namespaces \u003d []"},{"line_number":81,"context_line":"        for obj in ns_objects:"},{"line_number":82,"context_line":"            namespaces.append(obj[\u0027namespace\u0027])"},{"line_number":83,"context_line":"        self.cleanup(namespaces, self.alt_admin_client)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def test_get_object(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"0a57ce41_21e6a0db","line":82,"range":{"start_line":80,"start_character":8,"end_line":82,"end_character":47},"updated":"2021-08-27 07:00:19.000000000","message":"instead of doing this, simply return namespaces from create_objects method\n\nnamespaces, ns_objects  \u003d self.create_objects()","commit_id":"7887168fad408e870a2b811afb6443a7fab55343"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"352daebb61c4dee6a07e42bc50ffc9dd6a183463","unresolved":true,"context_lines":[{"line_number":34,"context_line":"        cls.member_or_reader_client \u003d cls.persona.namespace_objects_client"},{"line_number":35,"context_line":"        cls.alt_member_or_reader_client \u003d \\"},{"line_number":36,"context_line":"            cls.alt_persona.namespace_objects_client"},{"line_number":37,"context_line":"        cls.project_id \u003d cls.persona.namespaces_client.project_id"},{"line_number":38,"context_line":"        cls.alt_project_id \u003d cls.alt_persona.namespaces_client.project_id"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        cls.obj_admin_client \u003d cls.os_project_admin.namespace_objects_client"},{"line_number":41,"context_line":"        cls.obj_alt_admin_client \u003d \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"463afbc0_541921b7","line":38,"range":{"start_line":37,"start_character":8,"end_line":38,"end_character":73},"updated":"2021-08-30 06:43:29.000000000","message":"move these two lines to base class","commit_id":"745f62d9c95e9eaa50ff2641a357a175ae0d203f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8ec0e49473eac09238764031a4e3061c0fb23465","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cls.member_or_reader_client \u003d cls.persona.namespace_objects_client"},{"line_number":35,"context_line":"        cls.alt_member_or_reader_client \u003d \\"},{"line_number":36,"context_line":"            cls.alt_persona.namespace_objects_client"},{"line_number":37,"context_line":"        cls.project_id \u003d cls.persona.namespaces_client.project_id"},{"line_number":38,"context_line":"        cls.alt_project_id \u003d cls.alt_persona.namespaces_client.project_id"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        cls.obj_admin_client \u003d cls.os_project_admin.namespace_objects_client"},{"line_number":41,"context_line":"        cls.obj_alt_admin_client \u003d \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"c7ac7a4f_8ce3fc44","line":38,"range":{"start_line":37,"start_character":8,"end_line":38,"end_character":73},"in_reply_to":"463afbc0_541921b7","updated":"2021-08-31 20:40:19.000000000","message":"Done","commit_id":"745f62d9c95e9eaa50ff2641a357a175ae0d203f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"352daebb61c4dee6a07e42bc50ffc9dd6a183463","unresolved":true,"context_lines":[{"line_number":192,"context_line":"            object_name \u003d \"object_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"},{"line_number":195,"context_line":"                    namespace[\u0027owner\u0027] \u003d\u003d self.alt_project_id):"},{"line_number":196,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"            self.do_request(\u0027create_namespace_object\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"77f14455_b04629ae","line":195,"range":{"start_line":195,"start_character":42,"end_line":195,"end_character":61},"updated":"2021-08-30 06:43:29.000000000","message":"this should be project_id","commit_id":"745f62d9c95e9eaa50ff2641a357a175ae0d203f"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8ec0e49473eac09238764031a4e3061c0fb23465","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            object_name \u003d \"object_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"},{"line_number":195,"context_line":"                    namespace[\u0027owner\u0027] \u003d\u003d self.alt_project_id):"},{"line_number":196,"context_line":"                expected_status \u003d exceptions.NotFound"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"            self.do_request(\u0027create_namespace_object\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"cd526e57_426ccfec","line":195,"range":{"start_line":195,"start_character":42,"end_line":195,"end_character":61},"in_reply_to":"77f14455_b04629ae","updated":"2021-08-31 20:40:19.000000000","message":"Ack","commit_id":"745f62d9c95e9eaa50ff2641a357a175ae0d203f"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"de866f98309fd0859b7a0885021b15ddd95c9b9a","unresolved":true,"context_lines":[{"line_number":20,"context_line":"from glance_tempest_plugin.tests.rbac.v2 import base as rbac_base"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d config.CONF"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class MetadefV2RbacObjectsTest(rbac_base.MetadefV2RbacBaseTests,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1af36ddd_d3219e73","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":18},"updated":"2021-08-30 15:00:51.000000000","message":"This is not used, so can be removed","commit_id":"7d1dc3503a28d0f5c4eede94134ee13d96c23b09"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8ec0e49473eac09238764031a4e3061c0fb23465","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from glance_tempest_plugin.tests.rbac.v2 import base as rbac_base"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"CONF \u003d config.CONF"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class MetadefV2RbacObjectsTest(rbac_base.MetadefV2RbacBaseTests,"}],"source_content_type":"text/x-python","patch_set":7,"id":"502992f7_b629ea30","line":23,"range":{"start_line":23,"start_character":0,"end_line":23,"end_character":18},"in_reply_to":"1af36ddd_d3219e73","updated":"2021-08-31 20:40:19.000000000","message":"Done","commit_id":"7d1dc3503a28d0f5c4eede94134ee13d96c23b09"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"de866f98309fd0859b7a0885021b15ddd95c9b9a","unresolved":true,"context_lines":[{"line_number":73,"context_line":"    def test_create_object(self):"},{"line_number":74,"context_line":"        # Make sure admin role of \u0027project\u0027 and \u0027alt_project\u0027 allowed to"},{"line_number":75,"context_line":"        # create objects"},{"line_number":76,"context_line":"        _ \u003d self.create_objects()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_get_object(self):"},{"line_number":79,"context_line":"        ns_objects \u003d self.create_objects()"}],"source_content_type":"text/x-python","patch_set":7,"id":"f24582e3_918b5a26","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":33},"updated":"2021-08-30 15:00:51.000000000","message":"simply write as\nself.create_objects()","commit_id":"7d1dc3503a28d0f5c4eede94134ee13d96c23b09"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8ec0e49473eac09238764031a4e3061c0fb23465","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    def test_create_object(self):"},{"line_number":74,"context_line":"        # Make sure admin role of \u0027project\u0027 and \u0027alt_project\u0027 allowed to"},{"line_number":75,"context_line":"        # create objects"},{"line_number":76,"context_line":"        _ \u003d self.create_objects()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_get_object(self):"},{"line_number":79,"context_line":"        ns_objects \u003d self.create_objects()"}],"source_content_type":"text/x-python","patch_set":7,"id":"0adc7b56_e9f52e2c","line":76,"range":{"start_line":76,"start_character":8,"end_line":76,"end_character":33},"in_reply_to":"f24582e3_918b5a26","updated":"2021-08-31 20:40:19.000000000","message":"Done","commit_id":"7d1dc3503a28d0f5c4eede94134ee13d96c23b09"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b47ba1c860d5d4b0e8089541a77066ea41d7baa5","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        _ \u003d self.create_objects()"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def test_get_object(self):"},{"line_number":79,"context_line":"        ns_objects \u003d self.create_objects()"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # Get all metadef objects with admin role of \u0027project\u0027"},{"line_number":82,"context_line":"        for obj in ns_objects:"}],"source_content_type":"text/x-python","patch_set":7,"id":"5916736f_413e4687","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":42},"updated":"2021-08-30 16:10:57.000000000","message":"Looks like this is performed for every test in the module, making it a good thing to do in setUp (if you want to also have the objects exposed as attributes of the test class so the test can reference them).","commit_id":"7d1dc3503a28d0f5c4eede94134ee13d96c23b09"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5193faefa002dd8b2dc2d1cbdefa285b2160313a","unresolved":true,"context_lines":[{"line_number":183,"context_line":"    def test_create_object(self):"},{"line_number":184,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        def _assertCreateObjects(namespace, owner, client):"},{"line_number":187,"context_line":"            object_name \u003d \"object_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":188,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":189,"context_line":"            if not (namespace[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ae7340c_a96a580f","line":186,"range":{"start_line":186,"start_character":12,"end_line":186,"end_character":32},"updated":"2021-08-30 16:14:41.000000000","message":"Similar comment here as in the previous patches. This seems like a useful utility that could be added to the abstract base class instead of sharing it by inheriting the tests themselves.","commit_id":"7d1dc3503a28d0f5c4eede94134ee13d96c23b09"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5193faefa002dd8b2dc2d1cbdefa285b2160313a","unresolved":true,"context_lines":[{"line_number":209,"context_line":"    def test_get_object(self):"},{"line_number":210,"context_line":"        ns_objects \u003d self.create_objects()"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        def _assertObjectGet(obj, owner, client):"},{"line_number":213,"context_line":"            ns \u003d obj[\u0027namespace\u0027]"},{"line_number":214,"context_line":"            expected_status \u003d 200"},{"line_number":215,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":7,"id":"1cd65b8d_7560da4f","line":212,"range":{"start_line":212,"start_character":12,"end_line":212,"end_character":28},"updated":"2021-08-30 16:14:41.000000000","message":"Same comment here as above.","commit_id":"7d1dc3503a28d0f5c4eede94134ee13d96c23b09"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5193faefa002dd8b2dc2d1cbdefa285b2160313a","unresolved":true,"context_lines":[{"line_number":238,"context_line":"    def test_list_objects(self):"},{"line_number":239,"context_line":"        ns_objects \u003d self.create_objects()"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        def _assertObjectsList(obj, owner, client):"},{"line_number":242,"context_line":"            ns \u003d obj[\u0027namespace\u0027]"},{"line_number":243,"context_line":"            expected_status \u003d 200"},{"line_number":244,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":7,"id":"f32dca05_cb391ad5","line":241,"range":{"start_line":241,"start_character":12,"end_line":241,"end_character":30},"updated":"2021-08-30 16:14:41.000000000","message":"Same comment here as above.","commit_id":"7d1dc3503a28d0f5c4eede94134ee13d96c23b09"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5193faefa002dd8b2dc2d1cbdefa285b2160313a","unresolved":true,"context_lines":[{"line_number":271,"context_line":"    def test_update_object(self):"},{"line_number":272,"context_line":"        ns_objects \u003d self.create_objects()"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        def _assertObjectUpdate(obj, owner, client):"},{"line_number":275,"context_line":"            ns \u003d obj[\u0027namespace\u0027]"},{"line_number":276,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":277,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":7,"id":"1cb1e1ee_94e6c334","line":274,"range":{"start_line":274,"start_character":12,"end_line":274,"end_character":31},"updated":"2021-08-30 16:14:41.000000000","message":"Same comment here as above.","commit_id":"7d1dc3503a28d0f5c4eede94134ee13d96c23b09"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5193faefa002dd8b2dc2d1cbdefa285b2160313a","unresolved":true,"context_lines":[{"line_number":301,"context_line":"    def test_delete_object(self):"},{"line_number":302,"context_line":"        ns_objects \u003d self.create_objects()"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        def _assertObjectDelete(obj, owner, client):"},{"line_number":305,"context_line":"            ns \u003d obj[\u0027namespace\u0027]"},{"line_number":306,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":307,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":7,"id":"7626c8b8_55a9d808","line":304,"range":{"start_line":304,"start_character":12,"end_line":304,"end_character":31},"updated":"2021-08-30 16:14:41.000000000","message":"Same comment here as above.","commit_id":"7d1dc3503a28d0f5c4eede94134ee13d96c23b09"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"1e194e1a1e71ac2cfa32def9a2c304aa6acc4fb1","unresolved":true,"context_lines":[{"line_number":39,"context_line":"        cls.alt_persona \u003d getattr(cls, f\u0027os_{cls.credentials[1]}\u0027)"},{"line_number":40,"context_line":"        cls.client \u003d cls.persona.namespace_objects_client"},{"line_number":41,"context_line":"        cls.alt_client \u003d \\"},{"line_number":42,"context_line":"            cls.alt_persona.namespace_objects_client"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @abc.abstractmethod"},{"line_number":45,"context_line":"    def test_create_object(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"193791f6_c0c5c799","line":42,"updated":"2021-09-09 15:09:35.000000000","message":"You can move those admin clients for objects from base module to here and the crate_objects method from utilities to this class as well.","commit_id":"f5d15466247ac8aa4de87138161775f9ac340ead"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8d369a352d2c92afa36fc5b03cd180c6a170cf66","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        cls.alt_persona \u003d getattr(cls, f\u0027os_{cls.credentials[1]}\u0027)"},{"line_number":40,"context_line":"        cls.client \u003d cls.persona.namespace_objects_client"},{"line_number":41,"context_line":"        cls.alt_client \u003d \\"},{"line_number":42,"context_line":"            cls.alt_persona.namespace_objects_client"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @abc.abstractmethod"},{"line_number":45,"context_line":"    def test_create_object(self):"}],"source_content_type":"text/x-python","patch_set":12,"id":"55df9272_7b7ba99b","line":42,"in_reply_to":"193791f6_c0c5c799","updated":"2021-09-13 09:15:33.000000000","message":"Done","commit_id":"f5d15466247ac8aa4de87138161775f9ac340ead"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"1e194e1a1e71ac2cfa32def9a2c304aa6acc4fb1","unresolved":true,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    credentials \u003d [\u0027project_admin\u0027, \u0027project_alt_admin\u0027]"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def assertObjectsList(self, obj, client, owner\u003dNone):"},{"line_number":76,"context_line":"        ns \u003d obj[\u0027namespace\u0027]"},{"line_number":77,"context_line":"        if owner:"},{"line_number":78,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":12,"id":"429d7c55_73c04b93","line":75,"range":{"start_line":75,"start_character":32,"end_line":75,"end_character":35},"updated":"2021-09-09 15:09:35.000000000","message":"rename it to actual or similar how it is defined in namespaces.","commit_id":"f5d15466247ac8aa4de87138161775f9ac340ead"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"8d369a352d2c92afa36fc5b03cd180c6a170cf66","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    credentials \u003d [\u0027project_admin\u0027, \u0027project_alt_admin\u0027]"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def assertObjectsList(self, obj, client, owner\u003dNone):"},{"line_number":76,"context_line":"        ns \u003d obj[\u0027namespace\u0027]"},{"line_number":77,"context_line":"        if owner:"},{"line_number":78,"context_line":"            if not (ns[\u0027visibility\u0027] \u003d\u003d \u0027public\u0027 or"}],"source_content_type":"text/x-python","patch_set":12,"id":"07a4eef3_ac819f06","line":75,"range":{"start_line":75,"start_character":32,"end_line":75,"end_character":35},"in_reply_to":"429d7c55_73c04b93","updated":"2021-09-13 09:15:33.000000000","message":"Ack","commit_id":"f5d15466247ac8aa4de87138161775f9ac340ead"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5f755130bbb5a7daf2821072e421486709bc37e8","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        cls.objects_client \u003d cls.persona.namespace_objects_client"},{"line_number":48,"context_line":"        cls.alt_objects_client \u003d \\"},{"line_number":49,"context_line":"            cls.alt_persona.namespace_objects_client"},{"line_number":50,"context_line":"        cls.obj_admin_client \u003d cls.os_project_admin.namespace_objects_client"},{"line_number":51,"context_line":"        cls.obj_alt_admin_client \u003d \\"},{"line_number":52,"context_line":"            cls.os_project_alt_admin.namespace_objects_client"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def create_objects(self):"},{"line_number":55,"context_line":"        # Create namespace for two different projects"}],"source_content_type":"text/x-python","patch_set":16,"id":"1d564a8a_852fd88e","line":52,"range":{"start_line":50,"start_character":0,"end_line":52,"end_character":61},"updated":"2021-09-28 16:56:01.000000000","message":"This shouldn\u0027t really make a difference since admin-ness is only checking the role, right?","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"e36956106de238690a52b50b5df227c26168f055","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        cls.objects_client \u003d cls.persona.namespace_objects_client"},{"line_number":48,"context_line":"        cls.alt_objects_client \u003d \\"},{"line_number":49,"context_line":"            cls.alt_persona.namespace_objects_client"},{"line_number":50,"context_line":"        cls.obj_admin_client \u003d cls.os_project_admin.namespace_objects_client"},{"line_number":51,"context_line":"        cls.obj_alt_admin_client \u003d \\"},{"line_number":52,"context_line":"            cls.os_project_alt_admin.namespace_objects_client"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def create_objects(self):"},{"line_number":55,"context_line":"        # Create namespace for two different projects"}],"source_content_type":"text/x-python","patch_set":16,"id":"8aa45838_9344a0d1","line":52,"range":{"start_line":50,"start_character":0,"end_line":52,"end_character":61},"in_reply_to":"1d564a8a_852fd88e","updated":"2021-09-30 10:43:43.000000000","message":"yes, you\u0027re right! At least not required for the Admin tests but for creating objects in every test we need both these admin clients.","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b02f442285a5dfb46eb1222168b392dd2ffb29f7","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        cls.objects_client \u003d cls.persona.namespace_objects_client"},{"line_number":48,"context_line":"        cls.alt_objects_client \u003d \\"},{"line_number":49,"context_line":"            cls.alt_persona.namespace_objects_client"},{"line_number":50,"context_line":"        cls.obj_admin_client \u003d cls.os_project_admin.namespace_objects_client"},{"line_number":51,"context_line":"        cls.obj_alt_admin_client \u003d \\"},{"line_number":52,"context_line":"            cls.os_project_alt_admin.namespace_objects_client"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def create_objects(self):"},{"line_number":55,"context_line":"        # Create namespace for two different projects"}],"source_content_type":"text/x-python","patch_set":16,"id":"d28d02f3_30a9d3b7","line":52,"range":{"start_line":50,"start_character":0,"end_line":52,"end_character":61},"in_reply_to":"73380542_8d02de7a","updated":"2021-10-05 05:56:08.000000000","message":"yes, that\u0027s is why we need separate admin clients here. ;/","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4f3a9bfcee69a09c838535e0b574f65abcc2ec3d","unresolved":true,"context_lines":[{"line_number":47,"context_line":"        cls.objects_client \u003d cls.persona.namespace_objects_client"},{"line_number":48,"context_line":"        cls.alt_objects_client \u003d \\"},{"line_number":49,"context_line":"            cls.alt_persona.namespace_objects_client"},{"line_number":50,"context_line":"        cls.obj_admin_client \u003d cls.os_project_admin.namespace_objects_client"},{"line_number":51,"context_line":"        cls.obj_alt_admin_client \u003d \\"},{"line_number":52,"context_line":"            cls.os_project_alt_admin.namespace_objects_client"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def create_objects(self):"},{"line_number":55,"context_line":"        # Create namespace for two different projects"}],"source_content_type":"text/x-python","patch_set":16,"id":"73380542_8d02de7a","line":52,"range":{"start_line":50,"start_character":0,"end_line":52,"end_character":61},"in_reply_to":"8aa45838_9344a0d1","updated":"2021-10-04 21:57:28.000000000","message":"Ok, I tried looking for a way to do this with a single admin client, but I haven\u0027t found a way to do this yet. It doesn\u0027t look like the glance CLI or API supports a way to pass in the project ID for a namespace object? Just for my own understanding, that\u0027s the reason why we need an entirely separate admin client here, right?","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b4a4d401d0e2c44892e56d6f517093a06d92dbfb","unresolved":true,"context_lines":[{"line_number":58,"context_line":"        client \u003d self.obj_alt_admin_client"},{"line_number":59,"context_line":"        namespace_objects \u003d []"},{"line_number":60,"context_line":"        for ns in namespaces:"},{"line_number":61,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.obj_admin_client.project_id):"},{"line_number":62,"context_line":"                client \u003d self.obj_admin_client"},{"line_number":63,"context_line":"            object_name \u003d \"object_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":64,"context_line":"            namespace_object \u003d client.create_namespace_object("}],"source_content_type":"text/x-python","patch_set":16,"id":"b4f6854f_ef869433","line":61,"range":{"start_line":61,"start_character":42,"end_line":61,"end_character":74},"updated":"2021-09-24 07:52:27.000000000","message":"I think you can directly use self.project_id here.","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"e36956106de238690a52b50b5df227c26168f055","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        client \u003d self.obj_alt_admin_client"},{"line_number":59,"context_line":"        namespace_objects \u003d []"},{"line_number":60,"context_line":"        for ns in namespaces:"},{"line_number":61,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.obj_admin_client.project_id):"},{"line_number":62,"context_line":"                client \u003d self.obj_admin_client"},{"line_number":63,"context_line":"            object_name \u003d \"object_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":64,"context_line":"            namespace_object \u003d client.create_namespace_object("}],"source_content_type":"text/x-python","patch_set":16,"id":"972fb3c1_2b4816df","line":61,"range":{"start_line":61,"start_character":42,"end_line":61,"end_character":74},"in_reply_to":"3fa1fc9d_52579701","updated":"2021-09-30 10:43:43.000000000","message":"Ack","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"9da0e89f0a024fcc8ec73330a6310e878bfed9a1","unresolved":true,"context_lines":[{"line_number":58,"context_line":"        client \u003d self.obj_alt_admin_client"},{"line_number":59,"context_line":"        namespace_objects \u003d []"},{"line_number":60,"context_line":"        for ns in namespaces:"},{"line_number":61,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.obj_admin_client.project_id):"},{"line_number":62,"context_line":"                client \u003d self.obj_admin_client"},{"line_number":63,"context_line":"            object_name \u003d \"object_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":64,"context_line":"            namespace_object \u003d client.create_namespace_object("}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa1fc9d_52579701","line":61,"range":{"start_line":61,"start_character":42,"end_line":61,"end_character":74},"in_reply_to":"b4f6854f_ef869433","updated":"2021-09-24 08:01:30.000000000","message":"I think to do this you need to move line 45 and 46 below 48 and change it to;\ncls.project_id \u003d cls.objects_client.project_id\ncls.alt_project_id \u003d cls.alt_objects_client.project_id","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b4a4d401d0e2c44892e56d6f517093a06d92dbfb","unresolved":true,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    credentials \u003d [\u0027project_admin\u0027, \u0027project_alt_admin\u0027, \u0027primary\u0027]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def test_create_object(self):"},{"line_number":134,"context_line":"        # As this is been covered in other tests for admin role,"},{"line_number":135,"context_line":"        # skipping to test only create objects seperately."},{"line_number":136,"context_line":"        pass"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def test_get_object(self):"},{"line_number":139,"context_line":"        ns_objects \u003d self.create_objects()"}],"source_content_type":"text/x-python","patch_set":16,"id":"52a898eb_d68e3293","line":136,"range":{"start_line":133,"start_character":0,"end_line":136,"end_character":12},"updated":"2021-09-24 07:52:27.000000000","message":"nit: move it to last so that it will justify that it is already tested and that\u0027s why we are skipping it.","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"e36956106de238690a52b50b5df227c26168f055","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    credentials \u003d [\u0027project_admin\u0027, \u0027project_alt_admin\u0027, \u0027primary\u0027]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def test_create_object(self):"},{"line_number":134,"context_line":"        # As this is been covered in other tests for admin role,"},{"line_number":135,"context_line":"        # skipping to test only create objects seperately."},{"line_number":136,"context_line":"        pass"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def test_get_object(self):"},{"line_number":139,"context_line":"        ns_objects \u003d self.create_objects()"}],"source_content_type":"text/x-python","patch_set":16,"id":"c6de45d1_0b6db359","line":136,"range":{"start_line":133,"start_character":0,"end_line":136,"end_character":12},"in_reply_to":"52a898eb_d68e3293","updated":"2021-09-30 10:43:43.000000000","message":"Ack","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5f755130bbb5a7daf2821072e421486709bc37e8","unresolved":true,"context_lines":[{"line_number":143,"context_line":"            resp \u003d self.do_request("},{"line_number":144,"context_line":"                \u0027show_namespace_object\u0027,"},{"line_number":145,"context_line":"                expected_status\u003d200,"},{"line_number":146,"context_line":"                client\u003dself.obj_admin_client,"},{"line_number":147,"context_line":"                namespace\u003dobj[\u0027namespace\u0027][\u0027namespace\u0027],"},{"line_number":148,"context_line":"                object_name\u003dobj[\u0027object\u0027][\u0027name\u0027])"},{"line_number":149,"context_line":"            self.assertEqual(obj[\u0027object\u0027][\u0027name\u0027], resp[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":16,"id":"bb281c99_29376780","line":146,"range":{"start_line":146,"start_character":28,"end_line":146,"end_character":44},"updated":"2021-09-28 16:56:01.000000000","message":"Is this supposed to use the self.objects_client client from setup_clients()?\n\nIt appears we use the self.persona/self.objects_client pattern in the other classes, but here we hard code the obj_admin_client. I\u0027m just wondering if that should be consistent with the other classes.","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"e36956106de238690a52b50b5df227c26168f055","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            resp \u003d self.do_request("},{"line_number":144,"context_line":"                \u0027show_namespace_object\u0027,"},{"line_number":145,"context_line":"                expected_status\u003d200,"},{"line_number":146,"context_line":"                client\u003dself.obj_admin_client,"},{"line_number":147,"context_line":"                namespace\u003dobj[\u0027namespace\u0027][\u0027namespace\u0027],"},{"line_number":148,"context_line":"                object_name\u003dobj[\u0027object\u0027][\u0027name\u0027])"},{"line_number":149,"context_line":"            self.assertEqual(obj[\u0027object\u0027][\u0027name\u0027], resp[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":16,"id":"ed813a36_df3430cc","line":146,"range":{"start_line":146,"start_character":28,"end_line":146,"end_character":44},"in_reply_to":"bb281c99_29376780","updated":"2021-09-30 10:43:43.000000000","message":"yes, self.objects_client would do.","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5f755130bbb5a7daf2821072e421486709bc37e8","unresolved":true,"context_lines":[{"line_number":192,"context_line":"class ProjectMemberTests(MetadefV2RbacObjectsTest,"},{"line_number":193,"context_line":"                         MetadefV2RbacObjectsTemplate):"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    credentials \u003d [\u0027project_member\u0027, \u0027project_alt_member\u0027, \u0027project_admin\u0027,"},{"line_number":196,"context_line":"                   \u0027project_alt_admin\u0027, \u0027primary\u0027]"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def test_create_object(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"d9d65c0b_513688f9","line":195,"range":{"start_line":195,"start_character":38,"end_line":195,"end_character":56},"updated":"2021-09-28 16:56:01.000000000","message":"If we slim down the assertions (comments on line 222 and down), is this persona needed?","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"45cc5fa8e531fe1c3a57c87c4cb5fe4afeb61dcf","unresolved":true,"context_lines":[{"line_number":192,"context_line":"class ProjectMemberTests(MetadefV2RbacObjectsTest,"},{"line_number":193,"context_line":"                         MetadefV2RbacObjectsTemplate):"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    credentials \u003d [\u0027project_member\u0027, \u0027project_alt_member\u0027, \u0027project_admin\u0027,"},{"line_number":196,"context_line":"                   \u0027project_alt_admin\u0027, \u0027primary\u0027]"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    def test_create_object(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"40fa3699_412eb8d1","line":195,"range":{"start_line":195,"start_character":38,"end_line":195,"end_character":56},"in_reply_to":"d9d65c0b_513688f9","updated":"2021-10-01 06:22:07.000000000","message":"Yes, it is required as we need alt_project_id.","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5f755130bbb5a7daf2821072e421486709bc37e8","unresolved":true,"context_lines":[{"line_number":219,"context_line":"        # create objects"},{"line_number":220,"context_line":"        for namespace in namespaces:"},{"line_number":221,"context_line":"            assertCreateObjects(namespace, self.alt_project_id,"},{"line_number":222,"context_line":"                                self.alt_objects_client)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def test_get_object(self):"},{"line_number":225,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"97095f0c_6d7935a9","line":222,"range":{"start_line":222,"start_character":37,"end_line":222,"end_character":55},"updated":"2021-09-28 16:56:01.000000000","message":"This seems redundant with lines 216 - 218 because we\u0027re already testing that a project member:\n\n- gets a 403 when they create an object in a public namespace of their project\n- gets a 403 when they create an object in a private namespace of their project\n- gets a 404 when they create an object in a public namespace outside their project\n- gets a 404 when they create an object in a private namespace outside their project\n\nIs there something lines 219 - 222 tests that we haven\u0027t covered in those 4 cases above? The role assignment between self.project_id and self.os_project_member should be the same as self.alt_project_id and self.alt_project_member. The project id (alt_project_id versus project_id) shouldn\u0027t affect anything here such that we\u0027d need to test it explicitly, right?","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"4f3a9bfcee69a09c838535e0b574f65abcc2ec3d","unresolved":false,"context_lines":[{"line_number":219,"context_line":"        # create objects"},{"line_number":220,"context_line":"        for namespace in namespaces:"},{"line_number":221,"context_line":"            assertCreateObjects(namespace, self.alt_project_id,"},{"line_number":222,"context_line":"                                self.alt_objects_client)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def test_get_object(self):"},{"line_number":225,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"05a2aa3d_d8e356f1","line":222,"range":{"start_line":222,"start_character":37,"end_line":222,"end_character":55},"in_reply_to":"8aa468d3_70e58938","updated":"2021-10-04 21:57:28.000000000","message":"Ack","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"e36956106de238690a52b50b5df227c26168f055","unresolved":true,"context_lines":[{"line_number":219,"context_line":"        # create objects"},{"line_number":220,"context_line":"        for namespace in namespaces:"},{"line_number":221,"context_line":"            assertCreateObjects(namespace, self.alt_project_id,"},{"line_number":222,"context_line":"                                self.alt_objects_client)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    def test_get_object(self):"},{"line_number":225,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"8aa468d3_70e58938","line":222,"range":{"start_line":222,"start_character":37,"end_line":222,"end_character":55},"in_reply_to":"97095f0c_6d7935a9","updated":"2021-09-30 10:43:43.000000000","message":"yeah right! just a correction -\n* gets a 403 when they create an object in a public namespace outside their project\n\nBut yes, if we are covering these 4 cases above then no need to test for the alternate client.","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5f755130bbb5a7daf2821072e421486709bc37e8","unresolved":true,"context_lines":[{"line_number":248,"context_line":"        # objects of it\u0027s own \u0026 only objects having public namespace of"},{"line_number":249,"context_line":"        # \u0027project\u0027"},{"line_number":250,"context_line":"        for obj in ns_objects:"},{"line_number":251,"context_line":"            assertObjectGet(obj, self.alt_project_id, self.alt_objects_client)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    def test_list_objects(self):"},{"line_number":254,"context_line":"        ns_objects \u003d self.create_objects()"}],"source_content_type":"text/x-python","patch_set":16,"id":"9163a2bc_595c6792","line":251,"updated":"2021-09-28 16:56:01.000000000","message":"Similar comment here as above.","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"45cc5fa8e531fe1c3a57c87c4cb5fe4afeb61dcf","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        # objects of it\u0027s own \u0026 only objects having public namespace of"},{"line_number":249,"context_line":"        # \u0027project\u0027"},{"line_number":250,"context_line":"        for obj in ns_objects:"},{"line_number":251,"context_line":"            assertObjectGet(obj, self.alt_project_id, self.alt_objects_client)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    def test_list_objects(self):"},{"line_number":254,"context_line":"        ns_objects \u003d self.create_objects()"}],"source_content_type":"text/x-python","patch_set":16,"id":"c6333a34_3f142b81","line":251,"in_reply_to":"9163a2bc_595c6792","updated":"2021-10-01 06:22:07.000000000","message":"Done","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5f755130bbb5a7daf2821072e421486709bc37e8","unresolved":true,"context_lines":[{"line_number":264,"context_line":"        # \u0027project\u0027"},{"line_number":265,"context_line":"        for obj in ns_objects:"},{"line_number":266,"context_line":"            self.assertObjectsList(obj, self.alt_objects_client,"},{"line_number":267,"context_line":"                                   self.alt_project_id)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def test_update_object(self):"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"3ae93843_0c7a8bd5","line":267,"updated":"2021-09-28 16:56:01.000000000","message":"Same comment here as above.","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"45cc5fa8e531fe1c3a57c87c4cb5fe4afeb61dcf","unresolved":false,"context_lines":[{"line_number":264,"context_line":"        # \u0027project\u0027"},{"line_number":265,"context_line":"        for obj in ns_objects:"},{"line_number":266,"context_line":"            self.assertObjectsList(obj, self.alt_objects_client,"},{"line_number":267,"context_line":"                                   self.alt_project_id)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def test_update_object(self):"},{"line_number":270,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"d659d6ea_c3ef07ea","line":267,"in_reply_to":"3ae93843_0c7a8bd5","updated":"2021-10-01 06:22:07.000000000","message":"Done","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5f755130bbb5a7daf2821072e421486709bc37e8","unresolved":true,"context_lines":[{"line_number":293,"context_line":"        # update objects"},{"line_number":294,"context_line":"        for obj in ns_objects:"},{"line_number":295,"context_line":"            assertObjectUpdate(obj, self.alt_project_id,"},{"line_number":296,"context_line":"                               self.alt_objects_client)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def test_delete_object(self):"},{"line_number":299,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"c24e0dc1_2168e87d","line":296,"updated":"2021-09-28 16:56:01.000000000","message":"Same comment here as above.","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"45cc5fa8e531fe1c3a57c87c4cb5fe4afeb61dcf","unresolved":false,"context_lines":[{"line_number":293,"context_line":"        # update objects"},{"line_number":294,"context_line":"        for obj in ns_objects:"},{"line_number":295,"context_line":"            assertObjectUpdate(obj, self.alt_project_id,"},{"line_number":296,"context_line":"                               self.alt_objects_client)"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def test_delete_object(self):"},{"line_number":299,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"c95199eb_236fd599","line":296,"in_reply_to":"c24e0dc1_2168e87d","updated":"2021-10-01 06:22:07.000000000","message":"Done","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5f755130bbb5a7daf2821072e421486709bc37e8","unresolved":true,"context_lines":[{"line_number":320,"context_line":"        # delete objects"},{"line_number":321,"context_line":"        for obj in ns_objects:"},{"line_number":322,"context_line":"            assertObjectDelete(obj, self.alt_project_id,"},{"line_number":323,"context_line":"                               self.alt_objects_client)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"class ProjectReaderTests(ProjectMemberTests):"}],"source_content_type":"text/x-python","patch_set":16,"id":"8e6941a8_b571194a","line":323,"updated":"2021-09-28 16:56:01.000000000","message":"Same comment here as above.","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"45cc5fa8e531fe1c3a57c87c4cb5fe4afeb61dcf","unresolved":false,"context_lines":[{"line_number":320,"context_line":"        # delete objects"},{"line_number":321,"context_line":"        for obj in ns_objects:"},{"line_number":322,"context_line":"            assertObjectDelete(obj, self.alt_project_id,"},{"line_number":323,"context_line":"                               self.alt_objects_client)"},{"line_number":324,"context_line":""},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"class ProjectReaderTests(ProjectMemberTests):"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a9cfd7a_faf58b9a","line":323,"in_reply_to":"8e6941a8_b571194a","updated":"2021-10-01 06:22:07.000000000","message":"Done","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5f755130bbb5a7daf2821072e421486709bc37e8","unresolved":true,"context_lines":[{"line_number":325,"context_line":""},{"line_number":326,"context_line":"class ProjectReaderTests(ProjectMemberTests):"},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    credentials \u003d [\u0027project_reader\u0027, \u0027project_alt_reader\u0027, \u0027project_admin\u0027,"},{"line_number":329,"context_line":"                   \u0027project_alt_admin\u0027, \u0027primary\u0027]"}],"source_content_type":"text/x-python","patch_set":16,"id":"03df0ef8_bc46f473","line":328,"range":{"start_line":328,"start_character":38,"end_line":328,"end_character":56},"updated":"2021-09-28 16:56:01.000000000","message":"If we address the comments above, is this persona needed?","commit_id":"a140a9e46b7b91a39983d393907fc1741c6e8706"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"61a42f660349dfe8ec1b1fcbc12b9b2577f3ca51","unresolved":true,"context_lines":[{"line_number":61,"context_line":"                ns[\u0027namespace\u0027], name\u003dobject_name,"},{"line_number":62,"context_line":"                description\u003ddata_utils.arbitrary_string())"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"            obj \u003d dict()"},{"line_number":65,"context_line":"            obj[\u0027namespace\u0027] \u003d ns"},{"line_number":66,"context_line":"            obj[\u0027object\u0027] \u003d namespace_object"},{"line_number":67,"context_line":"            namespace_objects.append(obj)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        return namespace_objects"}],"source_content_type":"text/x-python","patch_set":17,"id":"61ecfb05_d312c164","line":66,"range":{"start_line":64,"start_character":12,"end_line":66,"end_character":44},"updated":"2021-10-04 14:02:46.000000000","message":"I think we should maintain consistency, you changed this behavior in https://review.opendev.org/c/openstack/glance-tempest-plugin/+/802793/17/glance_tempest_plugin/tests/rbac/v2/base.py@85 to directly use {}, so same should be done here as well.","commit_id":"4faf64b4136f17bdc7dc9228c5318a6fe4f28636"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b02f442285a5dfb46eb1222168b392dd2ffb29f7","unresolved":false,"context_lines":[{"line_number":61,"context_line":"                ns[\u0027namespace\u0027], name\u003dobject_name,"},{"line_number":62,"context_line":"                description\u003ddata_utils.arbitrary_string())"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"            obj \u003d dict()"},{"line_number":65,"context_line":"            obj[\u0027namespace\u0027] \u003d ns"},{"line_number":66,"context_line":"            obj[\u0027object\u0027] \u003d namespace_object"},{"line_number":67,"context_line":"            namespace_objects.append(obj)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        return namespace_objects"}],"source_content_type":"text/x-python","patch_set":17,"id":"b16fa084_93264684","line":66,"range":{"start_line":64,"start_character":12,"end_line":66,"end_character":44},"in_reply_to":"61ecfb05_d312c164","updated":"2021-10-05 05:56:08.000000000","message":"Ack","commit_id":"4faf64b4136f17bdc7dc9228c5318a6fe4f28636"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8063a315314e807cf1f87da008b5ca187104c94d","unresolved":true,"context_lines":[{"line_number":194,"context_line":"    def test_create_object(self):"},{"line_number":195,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        def assertCreateObjects(namespace, owner, client):"},{"line_number":198,"context_line":"            object_name \u003d \"object_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":199,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":200,"context_line":"            if (namespace[\u0027visibility\u0027] \u003d\u003d \u0027private\u0027 and"}],"source_content_type":"text/x-python","patch_set":17,"id":"9e32fb2f_385716a8","line":197,"updated":"2021-10-04 14:18:06.000000000","message":"Maybe I missed this before, but is there any reason we can\u0027t put these helpers on the base class instead of inline? AFAICT,they don\u0027t need anything from the scope in which they\u0027re defined. De-inlining them would reduce the indent level a bit and make these cases a little easier to read, IMHO.","commit_id":"4faf64b4136f17bdc7dc9228c5318a6fe4f28636"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"79a85301e98eba47c0145762f026b6992afcab68","unresolved":true,"context_lines":[{"line_number":194,"context_line":"    def test_create_object(self):"},{"line_number":195,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        def assertCreateObjects(namespace, owner, client):"},{"line_number":198,"context_line":"            object_name \u003d \"object_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":199,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":200,"context_line":"            if (namespace[\u0027visibility\u0027] \u003d\u003d \u0027private\u0027 and"}],"source_content_type":"text/x-python","patch_set":17,"id":"bd7721a2_360b68ec","line":197,"in_reply_to":"53aba99d_e5a2fe35","updated":"2021-10-11 17:42:02.000000000","message":"Right, I think we\u0027re expressing concern over the buildup of those inlined utilities.\n\nCan you go ahead and propose a cleanup to come after this so there\u0027s a stake in the ground, even if it\u0027s a WIP? Honestly, I think it should be trivial to just do it here, but if you want it as a follow-up, let\u0027s at least get it on the record :)","commit_id":"4faf64b4136f17bdc7dc9228c5318a6fe4f28636"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0010cc9d0da503cadeebf6efce3459913c3eeaff","unresolved":false,"context_lines":[{"line_number":194,"context_line":"    def test_create_object(self):"},{"line_number":195,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        def assertCreateObjects(namespace, owner, client):"},{"line_number":198,"context_line":"            object_name \u003d \"object_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":199,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":200,"context_line":"            if (namespace[\u0027visibility\u0027] \u003d\u003d \u0027private\u0027 and"}],"source_content_type":"text/x-python","patch_set":17,"id":"02e162ec_2d80d3bc","line":197,"in_reply_to":"5848a9fe_59ee9a99","updated":"2021-10-12 13:10:13.000000000","message":"Done","commit_id":"4faf64b4136f17bdc7dc9228c5318a6fe4f28636"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"b02f442285a5dfb46eb1222168b392dd2ffb29f7","unresolved":true,"context_lines":[{"line_number":194,"context_line":"    def test_create_object(self):"},{"line_number":195,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        def assertCreateObjects(namespace, owner, client):"},{"line_number":198,"context_line":"            object_name \u003d \"object_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":199,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":200,"context_line":"            if (namespace[\u0027visibility\u0027] \u003d\u003d \u0027private\u0027 and"}],"source_content_type":"text/x-python","patch_set":17,"id":"af3a58f5_76a35239","line":197,"in_reply_to":"9e32fb2f_385716a8","updated":"2021-10-05 05:56:08.000000000","message":"Well, these helpers are only required particularly for Member and reader tests that\u0027s why kept it here.","commit_id":"4faf64b4136f17bdc7dc9228c5318a6fe4f28636"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e82e871f1a5e328ddae7764ad23e20b7bb4f5925","unresolved":true,"context_lines":[{"line_number":194,"context_line":"    def test_create_object(self):"},{"line_number":195,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        def assertCreateObjects(namespace, owner, client):"},{"line_number":198,"context_line":"            object_name \u003d \"object_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":199,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":200,"context_line":"            if (namespace[\u0027visibility\u0027] \u003d\u003d \u0027private\u0027 and"}],"source_content_type":"text/x-python","patch_set":17,"id":"c6a28d7c_18261597","line":197,"in_reply_to":"af3a58f5_76a35239","updated":"2021-10-07 12:49:03.000000000","message":"Even if they are only shared between the ProjectMember and ProjectReader classes, I\u0027m an advocate for putting shared utilities in a base class that isn\u0027t specific to test cases themselves.\n\nI find that keeping utilities in a separate object from the tests makes the utilities easier to share in the future and promotes better organization. Otherwise, if for some reason we have another set of tests cases to add that would benefit from using assert*Object, they would need to either inherit extra test cases or we\u0027d need to move them to a common place anyway.","commit_id":"4faf64b4136f17bdc7dc9228c5318a6fe4f28636"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"16f0b5137d870ac405484720b5e528f4f5088eba","unresolved":true,"context_lines":[{"line_number":194,"context_line":"    def test_create_object(self):"},{"line_number":195,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        def assertCreateObjects(namespace, owner, client):"},{"line_number":198,"context_line":"            object_name \u003d \"object_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":199,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":200,"context_line":"            if (namespace[\u0027visibility\u0027] \u003d\u003d \u0027private\u0027 and"}],"source_content_type":"text/x-python","patch_set":17,"id":"5848a9fe_59ee9a99","line":197,"in_reply_to":"bd7721a2_360b68ec","updated":"2021-10-12 13:06:41.000000000","message":"ack. \n\nAdded the new WIP patch [1] having changes for namespaces \u0026 objects tests ATM.\nI will update the same for remaining tests\n\n[1]: https://review.opendev.org/c/openstack/glance-tempest-plugin/+/813625/1","commit_id":"4faf64b4136f17bdc7dc9228c5318a6fe4f28636"},{"author":{"_account_id":19138,"name":"Pranali Deore","email":"pdeore@redhat.com","username":"PranaliD"},"change_message_id":"400b07fd1a8084ee78a781d738d626ac52d8d9fb","unresolved":true,"context_lines":[{"line_number":194,"context_line":"    def test_create_object(self):"},{"line_number":195,"context_line":"        namespaces \u003d self.create_namespaces()"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        def assertCreateObjects(namespace, owner, client):"},{"line_number":198,"context_line":"            object_name \u003d \"object_of_%s\" % (namespace[\u0027namespace\u0027])"},{"line_number":199,"context_line":"            expected_status \u003d exceptions.Forbidden"},{"line_number":200,"context_line":"            if (namespace[\u0027visibility\u0027] \u003d\u003d \u0027private\u0027 and"}],"source_content_type":"text/x-python","patch_set":17,"id":"53aba99d_e5a2fe35","line":197,"in_reply_to":"c6a28d7c_18261597","updated":"2021-10-08 05:11:47.000000000","message":"Yeah right!, but in namespaces tests also these utilities are missed to move at common place.\nHow about addressing this for all tests in another followup patch?","commit_id":"4faf64b4136f17bdc7dc9228c5318a6fe4f28636"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"b5cb58e844e19f2b2f7ffd91c3b3a4f23b20c424","unresolved":true,"context_lines":[{"line_number":54,"context_line":"        client \u003d self.os_project_admin.namespace_objects_client"},{"line_number":55,"context_line":"        namespace_objects \u003d []"},{"line_number":56,"context_line":"        for ns in namespaces:"},{"line_number":57,"context_line":"            if ns[\u0027namespace\u0027].startswith(self.project_id):"},{"line_number":58,"context_line":"                client \u003d self.os_project_alt_admin.namespace_objects_client"},{"line_number":59,"context_line":"            object_name \u003d \"object_of_%s\" % (ns[\u0027namespace\u0027])"},{"line_number":60,"context_line":"            namespace_object \u003d client.create_namespace_object("},{"line_number":61,"context_line":"                ns[\u0027namespace\u0027], name\u003dobject_name,"}],"source_content_type":"text/x-python","patch_set":19,"id":"feda1541_ded1826b","line":58,"range":{"start_line":57,"start_character":12,"end_line":58,"end_character":75},"updated":"2021-10-18 14:46:56.000000000","message":"I think we need to correct it in follow up patch;\n\nthis should be self.alt_project_id\n\nThere is no issue, but for project tenant it will create namespace with alt_project \u0027id\u0027 and for alt_project it will create namespace with project \u0027id\u0027.","commit_id":"c9bfadc59b8b2954d69de494e09fc3429a0fd8b9"}]}
