)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"f72e2cfe0d4dcbae7378f25826bda795df4134bd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f64103a5_70da41ff","updated":"2022-03-15 12:19:00.000000000","message":"recheck","commit_id":"2ec27387243f66b730e9eb9150ef600afa7737b4"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ae7fb46af71211bde7bbdd45af73681ebcebc3c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b56a0594_18a3fb01","updated":"2022-03-15 12:41:43.000000000","message":"thank you for the patch, although one inline question/thought","commit_id":"2ec27387243f66b730e9eb9150ef600afa7737b4"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"7bbef0f38daa7b89d48748bd4ea60608eedb9de8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3d1c2696_4402e883","updated":"2022-03-15 16:04:08.000000000","message":"Are we sure there is a problem?","commit_id":"cd0276f3ac634f3057e5193ee97d6e888b05c192"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"08ff152e8b05e1b4889b3dbf196a7c280090ed2f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e8a8e851_3583a389","in_reply_to":"3d1c2696_4402e883","updated":"2022-03-15 16:57:19.000000000","message":"Hi , \nThe main problem is here that they dont implement waiter for create namespace which means we can create it and ask for a list and it will not find anything\nBut in addition to that \"delete\" actions and moving to next stage when we dont know if its was deleted or not may be an issue (sending an ignore its a bad workaround IMO).\n\nI dont think ignore and catch exception is the right way here but i am not going to change it.\n\nI think i will add a waiter and it may solve us the issue for cases.","commit_id":"cd0276f3ac634f3057e5193ee97d6e888b05c192"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"90a13b49cc7556297f9d141bd7f6d158cfd7dba8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ae52c1d3_1ca51f37","in_reply_to":"7cc76e0d_16a6ef10","updated":"2022-03-17 06:12:49.000000000","message":"if you tun the test alone without any others in parallel , all works !","commit_id":"cd0276f3ac634f3057e5193ee97d6e888b05c192"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"407c05216a7cb519a9ba68f6ad0a5f803d31ad30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e7f7c127_3205e092","in_reply_to":"9cad823a_e86a1d25","updated":"2022-03-17 01:04:15.000000000","message":"I am little lost here. this test does not list namespace with any filter, instead it does list all the resources with specifying any name in filter. So glance will return the list of namespace whatever they have in their DB.\n\n- https://review.opendev.org/c/openstack/tempest/+/833750/3/tempest/api/image/v2/admin/test_images_metadefs_namespaces.py#b45\n\nand then this test check if created namespace is there in the returned list of namespace and assert on that.\n\n- https://review.opendev.org/c/openstack/tempest/+/833750/3/tempest/api/image/v2/admin/test_images_metadefs_namespaces.py#b47\n\nare you getting failure in that line 47?\n\nI am sure by running the delete in parallel via script can give you 404 but let\u0027s try to execute tests and see if there is any such parrallel request we are running in this test.","commit_id":"cd0276f3ac634f3057e5193ee97d6e888b05c192"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"acd9253d82f36b016af8d5f07e81d40374b2af00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9cad823a_e86a1d25","in_reply_to":"ba7c7626_aaadd5bc","updated":"2022-03-15 20:44:29.000000000","message":"Sure , \nWe have failures in this test case , it fails with : bodys \u003d self.namespaces_client.list_namespaces()[\u0027namespaces\u0027]\n\nThe issue here is that the traceback shows a namespace could not be found ... but the missing namespace was not created by this testcase. it was reported as not found when running namespace_list commands.\n\ntempest.lib.exceptions.NotFound: Object not found\nDetails: {\u0027message\u0027: \u0027Could not find namespace tempest-test-ns-1400159289\u003cbr /\u003e\u003cbr /\u003e\\n\\n\\n\u0027, \u0027code\u0027: \u0027404 Not Found\u0027, \u0027title\u0027: \u0027Not Found\u0027}\n\nSo after digging more looks like when we are trying to list namespaces while others being deleted , the api return that a namespace could not be found but it was in the list before ....\n\n\na dummy script to reproduce was create 20 namespaces ,  verify all appear and run in the background delete \u0026 and list_namespaces in the background... in that case we managed to reproduce this problem.\n\nmore logs:\nrequest-id\u0027: \u0027req-d5e125d7-23ec-45b0-b178-3d056c7d3d83\u0027, \u0027date\u0027: \u0027Sun, 13 Mar 2022 17:07:51 GMT\u0027, \u0027connection\u0027: \u0027close\u0027, \u0027status\u0027: \u0027201\u0027, \u0027content-location\u0027: \u0027http://10.0.0.118:9292/v2/metadefs/namespaces\u0027}\n        Body: b\u0027{\"namespace\": \"tempest-namespace-541670613\", \"display_name\": \"tempest-namespace-541670613\", \"description\": \"Tempest\", \"visibility\": \"public\", \"protected\": true, \"owner\": \"910604ec7cf74a6b8ab2be55c773ab66\", \"created_at\": \"2022-03-13T17:07:51Z\", \"updated_at\": \"2022-03-13T17:07:51Z\", \"resource_type_associations\": [{\"name\": \"OS::Cinder::Volume\"}], \"self\": \"/v2/metadefs/namespaces/tempest-namespace-541670613\", \"schema\": \"/v2/schemas/metadefs/namespace\"}\u0027\n2022-03-13 17:07:52,008 303509 INFO     [tempest.lib.common.rest_client] Request (MetadataNamespacesTest:test_basic_metadata_definition_namespaces): 404 GET http://10.0.0.118:9292/v2/metadefs/namespaces 0.065s\n2022-03-13 17:07:52,009 303509 DEBUG    [tempest.lib.common.rest_client] Request - Headers: {\u0027Content-Type\u0027: \u0027application/json\u0027, \u0027Accept\u0027: \u0027application/json\u0027, \u0027X-Auth-Token\u0027: \u0027\u003comitted\u003e\u0027}\n        Body: None\n    Response - Headers: {\u0027content-length\u0027: \u0027131\u0027, \u0027content-type\u0027: \u0027application/json\u0027, \u0027x-openstack-request-id\u0027: \u0027req-6ccc0452-39a4-4190-ab8c-321327838e9c\u0027, \u0027date\u0027: \u0027Sun, 13 Mar 2022 17:07:52 GMT\u0027, \u0027connection\u0027: \u0027close\u0027, \u0027status\u0027: \u0027404\u0027, \u0027content-location\u0027: \u0027http://10.0.0.118:9292/v2/metadefs/namespaces\u0027}\n        Body: b\u0027{\"message\": \"Could not find namespace tempest-test-ns-1400159289\u003cbr /\u003e\u003cbr /\u003e\\\\n\\\\n\\\\n\", \"code\": \"404 Not Found\", \"title\": \"Not Found\"}\u0027\n2022-03-13 17:07:52,122 303509 INFO     [tempest.lib.common.rest_client] Request (MetadataNamespacesTest:_run_cleanups): 200 GET http://10.0.0.118:9292/v2/metadefs/namespaces/tempest-namespace-541670613 0.110s\n2022-03-13 17:07:52,122 303509 DEBUG    [tempest.lib.common.rest_client] Request - Headers: {\u0027Content-Type\u0027: \u0027application/json\u0027, \u0027Accept\u0027: \u0027application/json\u0027, \u0027X-Auth-Token\u0027: \u0027\u003comitted\u003e\u0027}\n        Body: None\n    Response - Headers: {\u0027content-length\u0027: \u0027528\u0027, \u0027content-type\u0027: \u0027application/json\u0027, \u0027x-openstack-request-id\u0027: \u0027req-8537abbc-54ef-42b2-89bf-aa66a14071c3\u0027, \u0027date\u0027: \u0027Sun, 13 Mar 2022 17:07:52 GMT\u0027, \u0027connection\u0027: \u0027close\u0027, \u0027status\u0027: \u0027200\u0027, \u0027content-location\u0027: \u0027http://10.0.0.118:9292/v2/metadefs/namespaces/tempest-namespace-541670613\u0027}\n        Body: b\u0027{\"namespace\": \"tempest-namespace-541670613\", \"display_name\": \"tempest-namespace-541670613\", \"description\": \"Tempest\", \"visibility\": \"public\", \"protected\": true, \"owner\": \"910604ec7cf74a6b8ab2be55c773ab66\", \"created_at\": \"2022-03-13T17:07:51Z\", \"updated_at\": \"2022-03-13T17:07:51Z\", \"resource_type_associations\": [{\"name\": \"OS::Cinder::Volume\", \"created_at\": \"2022-03-13T17:07:51Z\", \"updated_at\": \"2022-03-13T17:07:51Z\"}], \"self\": \"/v2/metadefs/namespaces/tempest-namespace-541670613\", \"schema\": \"/v2/schemas/metadefs/namespace\"}\u0027\n2022-03-13 17:07:52,165 303509 INFO     [tempest.lib.common.rest_client] Request (MetadataNamespacesTest:_run_cleanups): 200 PUT http://10.0.0.118:9292/v2/metadefs/namespaces/tempest-","commit_id":"cd0276f3ac634f3057e5193ee97d6e888b05c192"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"ba2c21d0828b7b541caa655009ab00cb9ea1d986","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"7cc76e0d_16a6ef10","in_reply_to":"e7f7c127_3205e092","updated":"2022-03-17 06:11:10.000000000","message":"Yes , see the traceback reported by tempest, the \"Not found\" name does not belong to the test as i understand\n\nTraceback (most recent call last):\n  File \"/usr/lib/python3.6/site-packages/tempest/api/image/v2/test_images_metadefs_namespaces.py\", line 44, in test_basic_metadata_definition_namespaces\n    bodys \u003d self.namespaces_client.list_namespaces()[\u0027namespaces\u0027]\n  File \"/usr/lib/python3.6/site-packages/tempest/lib/services/image/v2/namespaces_client.py\", line 45, in list_namespaces\n    resp, body \u003d self.get(url)\n  File \"/usr/lib/python3.6/site-packages/tempest/lib/common/rest_client.py\", line 298, in get\n    return self.request(\u0027GET\u0027, url, extra_headers, headers)\n  File \"/usr/lib/python3.6/site-packages/tempest/lib/common/rest_client.py\", line 687, in request\n    self._error_checker(resp, resp_body)\n  File \"/usr/lib/python3.6/site-packages/tempest/lib/common/rest_client.py\", line 793, in _error_checker\n    raise exceptions.NotFound(resp_body, resp\u003dresp)\ntempest.lib.exceptions.NotFound: Object not found\nDetails: {\u0027message\u0027: \u0027Could not find namespace tempest-test-ns-1612737172\u003cbr /\u003e\u003cbr /\u003e\\n\\n\\n\u0027, \u0027code\u0027: \u0027404 Not Found\u0027, \u0027title\u0027: \u0027Not Found\u0027}","commit_id":"cd0276f3ac634f3057e5193ee97d6e888b05c192"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"21177053c262d6403ccad4ce0e81e6efe0e24bc4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ba7c7626_aaadd5bc","in_reply_to":"e8a8e851_3583a389","updated":"2022-03-15 20:07:52.000000000","message":"yeah, cleanup is correct as Luigi explained.\n\nOn waiting for the namespace creation, is it async operation? From api-ref and its return code 201 means resource is created during API call itself and no task pending in backgroud\n\n-https://docs.openstack.org/api-ref//image/v2/metadefs-index.html?expanded\u003dcreate-namespace-detail#metadata-definition-namespaces\n\nIn that case we do not need any waiter here. Can you please point me to the failure log where you are seeing the issue?","commit_id":"cd0276f3ac634f3057e5193ee97d6e888b05c192"},{"author":{"_account_id":30025,"name":"Vida Haririan","display_name":"Vida Haririan","email":"vhariria@redhat.com","username":"vhari"},"change_message_id":"a08b9c9bad2969aa1cde24dccc3e69e6225357ae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"91ea27f8_1d419096","updated":"2022-04-12 13:49:08.000000000","message":"Final changes look good. ","commit_id":"739e7533877adee77e763f6579ce55959c81a130"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7fe874ea4938ffa7d9c35887bc97748c66fbed12","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"08ed49bf_998f0a88","updated":"2022-04-13 22:17:29.000000000","message":"recheck git issue is fixed","commit_id":"739e7533877adee77e763f6579ce55959c81a130"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a348795db34f2f73fbecbf67f35380109aba1183","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1c514e40_142c3cdc","updated":"2022-04-14 17:59:22.000000000","message":"recheck tempest fix merged","commit_id":"739e7533877adee77e763f6579ce55959c81a130"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"df3f3356241e2cd201a7145a901b21ab657a9dbd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"45e191ac_673dbd4e","updated":"2022-04-12 09:31:53.000000000","message":"thanks, the waiter fixes the race condition, +2\n\nsituation which is avoided by the waiter:\n1. delete_namespace is called as part of the test\n2. test execution continues -\u003e cleanup is executed\n3. delete_namespace is called again as part of the cleanup\n4. for whatever reason the service serves first the second delete_namespace call (which was done as part of the cleanup)\n5. namespace is deleted by the cleanup, not by the test case which results in 404 for the delete_namespace call from the test case\n6. test case failed\n","commit_id":"739e7533877adee77e763f6579ce55959c81a130"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a78818d9a0f6ae6f611520d1561a9a3cf66cd2d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a509b2a8_e98135cb","updated":"2022-04-12 16:42:20.000000000","message":"thanks, waiting form deletion lgtm.","commit_id":"739e7533877adee77e763f6579ce55959c81a130"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"389427d961f8bd0b58eb22147bbe2a75c81eb850","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b909b83e_9cba104e","updated":"2022-04-14 13:22:59.000000000","message":"this needs to wait for https://review.opendev.org/c/openstack/tempest/+/837775/2","commit_id":"739e7533877adee77e763f6579ce55959c81a130"}],"tempest/api/image/v2/admin/test_images_metadefs_namespaces.py":[{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"8ae7fb46af71211bde7bbdd45af73681ebcebc3c","unresolved":true,"context_lines":[{"line_number":68,"context_line":"    def _cleanup_namespace(self, namespace_name):"},{"line_number":69,"context_line":"        body \u003d self.namespaces_client.show_namespace(namespace_name)"},{"line_number":70,"context_line":"        self.assertEqual(namespace_name, body[\u0027namespace\u0027])"},{"line_number":71,"context_line":"        body \u003d self.namespaces_client.update_namespace("},{"line_number":72,"context_line":"            namespace\u003dnamespace_name,"},{"line_number":73,"context_line":"            description\u003d\u0027Tempest\u0027,"},{"line_number":74,"context_line":"            visibility\u003d\u0027private\u0027,"},{"line_number":75,"context_line":"            display_name\u003dnamespace_name,"},{"line_number":76,"context_line":"            protected\u003dFalse)"},{"line_number":77,"context_line":"        self.namespaces_client.delete_namespace(namespace_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"72aadb73_198a3ba7","side":"PARENT","line":76,"range":{"start_line":71,"start_character":8,"end_line":76,"end_character":28},"updated":"2022-03-15 12:41:43.000000000","message":"I don\u0027t think we can delete this, what if the test fails (or it gets killed) right after its creation - at that moment the namespace is protected which will raise an exception - see the line 53 of the test.","commit_id":"5c556626d16c2a4c6ee9c9da45d4954db6f83f27"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"b6934ea6d1e3d66cae7751efca6d117c210d3b38","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def _cleanup_namespace(self, namespace_name):"},{"line_number":69,"context_line":"        body \u003d self.namespaces_client.show_namespace(namespace_name)"},{"line_number":70,"context_line":"        self.assertEqual(namespace_name, body[\u0027namespace\u0027])"},{"line_number":71,"context_line":"        body \u003d self.namespaces_client.update_namespace("},{"line_number":72,"context_line":"            namespace\u003dnamespace_name,"},{"line_number":73,"context_line":"            description\u003d\u0027Tempest\u0027,"},{"line_number":74,"context_line":"            visibility\u003d\u0027private\u0027,"},{"line_number":75,"context_line":"            display_name\u003dnamespace_name,"},{"line_number":76,"context_line":"            protected\u003dFalse)"},{"line_number":77,"context_line":"        self.namespaces_client.delete_namespace(namespace_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7b88b1cc_37de064f","side":"PARENT","line":76,"range":{"start_line":71,"start_character":8,"end_line":76,"end_character":28},"in_reply_to":"72aadb73_198a3ba7","updated":"2022-03-15 12:54:24.000000000","message":"Ack , good point , the cleanup should update_namespace only when protected\u003dTrue, otherwise not needed . i can leave it as is.","commit_id":"5c556626d16c2a4c6ee9c9da45d4954db6f83f27"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"7bbef0f38daa7b89d48748bd4ea60608eedb9de8","unresolved":true,"context_lines":[{"line_number":62,"context_line":"            protected\u003dFalse)"},{"line_number":63,"context_line":"        self.assertEqual(\u0027private\u0027, body[\u0027visibility\u0027])"},{"line_number":64,"context_line":"        self.assertEqual(False, body[\u0027protected\u0027])"},{"line_number":65,"context_line":"        # now able to delete the non-protected namespace"},{"line_number":66,"context_line":"        self.namespaces_client.delete_namespace(namespace_name)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _cleanup_namespace(self, namespace_name):"}],"source_content_type":"text/x-python","patch_set":3,"id":"2dc874b1_4ad7ae3a","side":"PARENT","line":65,"updated":"2022-03-15 16:04:08.000000000","message":"I don\u0027t think removing this is correct. This call here is part of the test and shows whether the user can delete the namespace after updating its properties, so it can\u0027t go away.\n\nIf the cleanup is called (which uses call_and_ignore_notfound_exc, so it doesn\u0027t matter if the object is around), then it means this code is never reached.","commit_id":"5c556626d16c2a4c6ee9c9da45d4954db6f83f27"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"cdd2290b619de7a70a47ab9dd4200c40df900ff6","unresolved":true,"context_lines":[{"line_number":62,"context_line":"            protected\u003dFalse)"},{"line_number":63,"context_line":"        self.assertEqual(\u0027private\u0027, body[\u0027visibility\u0027])"},{"line_number":64,"context_line":"        self.assertEqual(False, body[\u0027protected\u0027])"},{"line_number":65,"context_line":"        # now able to delete the non-protected namespace"},{"line_number":66,"context_line":"        self.namespaces_client.delete_namespace(namespace_name)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _cleanup_namespace(self, namespace_name):"}],"source_content_type":"text/x-python","patch_set":3,"id":"0f8a8c65_49518490","side":"PARENT","line":65,"updated":"2022-04-11 19:29:54.000000000","message":"Please keep the comment on line 65, it\u0027s part of the testing","commit_id":"5c556626d16c2a4c6ee9c9da45d4954db6f83f27"},{"author":{"_account_id":11075,"name":"Benny Kopilov","email":"bkopilov@redhat.com","username":"bkopilov"},"change_message_id":"399f65f1f399d8655c8ce75437f699eee7a2ef21","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            protected\u003dFalse)"},{"line_number":63,"context_line":"        self.assertEqual(\u0027private\u0027, body[\u0027visibility\u0027])"},{"line_number":64,"context_line":"        self.assertEqual(False, body[\u0027protected\u0027])"},{"line_number":65,"context_line":"        # now able to delete the non-protected namespace"},{"line_number":66,"context_line":"        self.namespaces_client.delete_namespace(namespace_name)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _cleanup_namespace(self, namespace_name):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fadff142_a69bc13f","side":"PARENT","line":65,"in_reply_to":"0f8a8c65_49518490","updated":"2022-04-11 19:34:20.000000000","message":"ok fixing","commit_id":"5c556626d16c2a4c6ee9c9da45d4954db6f83f27"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"5a75e535e91bb3d2a463ce29a2740acd7ea67c05","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            protected\u003dFalse)"},{"line_number":63,"context_line":"        self.assertEqual(\u0027private\u0027, body[\u0027visibility\u0027])"},{"line_number":64,"context_line":"        self.assertEqual(False, body[\u0027protected\u0027])"},{"line_number":65,"context_line":"        # now able to delete the non-protected namespace"},{"line_number":66,"context_line":"        self.namespaces_client.delete_namespace(namespace_name)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def _cleanup_namespace(self, namespace_name):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9d1005b7_199ac809","side":"PARENT","line":65,"in_reply_to":"2dc874b1_4ad7ae3a","updated":"2022-04-12 14:21:19.000000000","message":"Fixed in the newer revision by adding a waiter on the final deletion.","commit_id":"5c556626d16c2a4c6ee9c9da45d4954db6f83f27"}]}
