)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3d3bd7e595f4986bafcc4deaedf8d3e5d66ffe00","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update multiattach tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Multiattach tests use legacy format to create multiattach"},{"line_number":10,"context_line":"volumes i.e. provide \"multiattach\u003dTrue\" in request body of"},{"line_number":11,"context_line":"a create volume operation."},{"line_number":12,"context_line":"This patch updates the multiattach tests to use multiattach"},{"line_number":13,"context_line":"volume type, which is the standard way[1], to create"},{"line_number":14,"context_line":"multiattach volumes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"845a3472_baa374fa","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":26},"updated":"2023-03-01 01:29:23.000000000","message":"but this format will still be supported for older microversion? I mean cinder doing this change without microversion bump? if so then it is backward incompatible change and can break existing users like tempest test will be failing.\n\nAny user creating volume with \"multiattach\u003dTrue\" should continue working for older microversion. for new microversion you can deny this request and support only new way.","commit_id":"6d31bd817af31353972892a88317dc860eaba565"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b8508bd9dfbe584b8b0781c7f39792849d5caccc","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update multiattach tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Multiattach tests use legacy format to create multiattach"},{"line_number":10,"context_line":"volumes i.e. provide \"multiattach\u003dTrue\" in request body of"},{"line_number":11,"context_line":"a create volume operation."},{"line_number":12,"context_line":"This patch updates the multiattach tests to use multiattach"},{"line_number":13,"context_line":"volume type, which is the standard way[1], to create"},{"line_number":14,"context_line":"multiattach volumes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"877d43f4_6117242d","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":26},"in_reply_to":"6d586f69_c0f7015a","updated":"2023-03-03 03:22:58.000000000","message":"yeah, thanks for giving more clarity. As discussed in ML also, the old style case of requesting multiattach volume is not a success case as it end up data loss (if any success that is unoknown).\n\n- https://lists.openstack.org/pipermail/openstack-discuss/2023-March/032554.html\n\nI agree now to change this buggy interface without microversion and explain the situation in releasenotes and error message  will be helpful.","commit_id":"6d31bd817af31353972892a88317dc860eaba565"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3348829e397a202865345d4a69b6363704691b43","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update multiattach tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Multiattach tests use legacy format to create multiattach"},{"line_number":10,"context_line":"volumes i.e. provide \"multiattach\u003dTrue\" in request body of"},{"line_number":11,"context_line":"a create volume operation."},{"line_number":12,"context_line":"This patch updates the multiattach tests to use multiattach"},{"line_number":13,"context_line":"volume type, which is the standard way[1], to create"},{"line_number":14,"context_line":"multiattach volumes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"6d586f69_c0f7015a","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":26},"in_reply_to":"845a3472_baa374fa","updated":"2023-03-02 08:10:55.000000000","message":"Thanks for raising this. We discussed this during the cinder meeting yesterday[1] and since the old behavior is a bug, the team favors in removing the old code rather than preserving it and adding a new microversion.\n\n[1] https://meetings.opendev.org/meetings/cinder/2023/cinder.2023-03-01-14.00.log.html#l-53","commit_id":"6d31bd817af31353972892a88317dc860eaba565"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"a0a23903de373b8ee46145d8c5f4e8c8e013118d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update multiattach tests"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Multiattach tests use legacy format to create multiattach"},{"line_number":10,"context_line":"volumes i.e. provide \"multiattach\u003dTrue\" in request body of"},{"line_number":11,"context_line":"a create volume operation."},{"line_number":12,"context_line":"This patch updates the multiattach tests to use multiattach"},{"line_number":13,"context_line":"volume type, which is the standard way[1], to create"},{"line_number":14,"context_line":"multiattach volumes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"c939a1cf_b454ac7e","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":26},"in_reply_to":"877d43f4_6117242d","updated":"2023-03-15 07:47:43.000000000","message":"Done","commit_id":"6d31bd817af31353972892a88317dc860eaba565"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"3d3bd7e595f4986bafcc4deaedf8d3e5d66ffe00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"50ed423a_80693d6e","updated":"2023-03-01 01:29:23.000000000","message":"1 question inline about backward compatibility. ","commit_id":"6d31bd817af31353972892a88317dc860eaba565"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"4be379f119f0dee017c460586dfd4f4e8c551389","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"6959c510_9900180a","updated":"2023-03-03 03:48:19.000000000","message":"Why don\u0027t we need to change them in tempest/api/compute/admin/test_volume_swap.py, too?\n\n~~~\n$ ag \"multiattach\u003d\"\ntempest/api/compute/admin/test_volume_swap.py\n206:        volume1 \u003d self.create_volume(multiattach\u003dTrue)\n214:        volume2 \u003d self.create_volume(multiattach\u003dTrue)\n\ntempest/api/compute/admin/test_volumes_negative.py\n119:        vol1 \u003d self.create_volume(multiattach\u003dTrue)\n120:        vol2 \u003d self.create_volume(multiattach\u003dTrue)\n\ntempest/api/compute/volumes/test_attach_volume.py\n372:        return self.create_volume(multiattach\u003dTrue, **kwargs)\n~~~","commit_id":"6d31bd817af31353972892a88317dc860eaba565"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c7b3a909bb132dc37fa88b10e889ff9ec596dddb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"0591956d_02471223","updated":"2023-03-03 04:39:18.000000000","message":"You are right Masayuki. They run on slow job that is why they are not caught failing.","commit_id":"6d31bd817af31353972892a88317dc860eaba565"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b8508bd9dfbe584b8b0781c7f39792849d5caccc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"880a49cc_1de4b3c0","updated":"2023-03-03 03:22:58.000000000","message":"thanks Rajat, Brian for explaining.","commit_id":"6d31bd817af31353972892a88317dc860eaba565"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fb54c7fd1b05b520abcf1af4093e29aed03d5c44","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"cd99df1f_f3bc2949","in_reply_to":"6959c510_9900180a","updated":"2023-03-03 06:57:31.000000000","message":"Thanks Masayuki, updated the test tempest.api.compute.admin.test_volume_swap.TestMultiAttachVolumeSwap.test_volume_swap_with_multiattach","commit_id":"6d31bd817af31353972892a88317dc860eaba565"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f81f7b3c14bb597bc662bdb806d3988cb24e954a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"645980c6_f45bb2a2","updated":"2023-03-03 16:01:34.000000000","message":"LGTM.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9510ccee09c167233af0739c91f6c1a006de8439","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"34d69b42_fe590d0f","updated":"2023-03-10 15:13:11.000000000","message":"Note inline about another way to handle the cached volume problem.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c71a2b732f94c5501bb4ea5a708767bb2e09f1af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"344a88a1_60a3393f","updated":"2023-03-08 15:56:39.000000000","message":"Thanks gmann for flagging this, I\u0027ve a comment inline which explains the behavior.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"54da8976fbac0fb6512b58b98bfc3305dafe19aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a09175bd_48109a71","updated":"2023-03-03 07:02:14.000000000","message":"Thanks! LGTM","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"1873f17309da346683ffd9187da6560deb379af1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f560836b_052d81df","updated":"2023-03-07 18:33:01.000000000","message":"change looks good to me but let me test the tempest change on top of cinder change to make sure no other test is left.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2724685050abe9adcbea383b35bcbf8096fe2934","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"e98a3b89_f1d26f85","updated":"2023-03-08 02:13:46.000000000","message":"everything else looks ok in my testing patch with cinder change - https://review.opendev.org/c/openstack/tempest/+/876774/1\n\nBut glance-multistore-cinder-import job failing (even in this change) for \nAttachVolumeMultiAttachTest teardown step.\n\nhttps://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_6ba/875372/4/check/glance-multistore-cinder-import/6ba7d59/testr_results.html","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"edd4e6c286c09d514f862dada648a43b57014438","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"cf5e5c8e_b9ac9de0","updated":"2023-03-13 14:30:38.000000000","message":"See comment inline.","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"bbe0c60e9249b1443d6324488656b5f3c414205b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"050f5c20_c77248c2","updated":"2023-03-14 18:40:21.000000000","message":"After reading Ghanshyam\u0027s comments here and on IRC, I\u0027m dropping my objection.","commit_id":"34c7e0c0809426b8e984b6c4842aff067a25b4b0"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a7de8b46f1adc39413979f1dd1f3e92a2d6e1e9a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"162bd65a_07486da8","updated":"2023-03-14 12:22:50.000000000","message":"Comment inline about the devstack proposal (I don\u0027t like it).","commit_id":"34c7e0c0809426b8e984b6c4842aff067a25b4b0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"57886d10d8853d0147e5ddc7686777ec80d3e5f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"237601be_2bef7908","updated":"2023-03-13 18:17:31.000000000","message":"Thanks Brian!","commit_id":"34c7e0c0809426b8e984b6c4842aff067a25b4b0"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"cab329be79bca93672feeef52e00e4fa4983feae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"02d38e7d_7857f39c","updated":"2023-03-14 21:56:06.000000000","message":"to make multiattach volume_type configurable (will be set by devstack in our CI case), let\u0027s add a new config option \u0027volume_type_multiattach\u0027 in tempest like the below one\n- \nhttps://github.com/openstack/tempest/blob/35b4b58d01e0e92a3e5d3dcadba9c874482bcc20/tempest/config.py#L1015","commit_id":"34c7e0c0809426b8e984b6c4842aff067a25b4b0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b6e23da2add2c3a6640b6d7aad43a7dd34e845c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"21fc1592_26bc3a30","in_reply_to":"02d38e7d_7857f39c","updated":"2023-03-15 07:46:19.000000000","message":"Done","commit_id":"34c7e0c0809426b8e984b6c4842aff067a25b4b0"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b6e23da2add2c3a6640b6d7aad43a7dd34e845c3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"9037bc73_4c99ebe0","updated":"2023-03-15 07:46:19.000000000","message":"Thanks Ghanshyam and Brian, did the required changes.","commit_id":"7efa36dbb0de00c8b86ddd0152090f8a494b3ee8"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3149fbccb0d49dbccdde0d4ca627c3741a29352f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0ac67281_724b5ce5","updated":"2023-03-15 11:04:31.000000000","message":"The tempest-full-zed and tempest-full-xena are breaking since the devstack support is only in master (also not merged yet) so possibly we will need to merge and backport the devstack patch for these jobs to pass.","commit_id":"7efa36dbb0de00c8b86ddd0152090f8a494b3ee8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"429abf0a17a47e375cafa7c534a2ee8776e1df8b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"207e6677_000cf0a0","updated":"2023-03-15 18:51:34.000000000","message":"bumping this priority and Rajat or Brian can confirm the stable branch things so that we can backport the devstack change accordingly. ","commit_id":"7efa36dbb0de00c8b86ddd0152090f8a494b3ee8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6c86a55c605bf34fc5f3ad03586bb6b5bd2f8fd3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a9e4c045_a0e75fbd","updated":"2023-03-15 19:06:19.000000000","message":"recheck Got identity error for glance-multistore-cinder-import job","commit_id":"7efa36dbb0de00c8b86ddd0152090f8a494b3ee8"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"429abf0a17a47e375cafa7c534a2ee8776e1df8b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"c200ec66_dd9f56c1","in_reply_to":"0ac67281_724b5ce5","updated":"2023-03-15 18:51:34.000000000","message":"I confirm that tests are passing fine on master as devstack set the volume_type for multiattach. \n\nAs we can see in cinder change, the recommended way to cerate multiattach volume via vilume_type is present in stable branch also we can backport the devstack changes. Please confirm if that is available till stable/xena? if not then we can backport devstack change until that stable branch (cinder support volume_type multiattach way) and use the old way for other stable branch. \n\n- https://review.opendev.org/c/openstack/cinder/+/874865","commit_id":"7efa36dbb0de00c8b86ddd0152090f8a494b3ee8"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"f96e8c49cc8eb7729e180b391f745daafebaaf2a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9ed8a550_3ddd3d42","updated":"2023-03-17 09:36:44.000000000","message":"all depends on merged","commit_id":"b04b102984fa16f4837f63e322baf472c1c76609"},{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"add22e221ae86665fcad4bc4e22d4bcb4adab00a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8316ea1e_85779417","updated":"2023-03-16 16:54:26.000000000","message":"lgtm, waiting with +w until all depends on are merged","commit_id":"b04b102984fa16f4837f63e322baf472c1c76609"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"50e04e179c358d09151d77fa1d662894a2e234c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"86eefc01_2b67909a","updated":"2023-03-16 05:08:22.000000000","message":"with all depends-on changes, we are all good here. \n\nThanks Rajat for all your work to make it ready.","commit_id":"b04b102984fa16f4837f63e322baf472c1c76609"}],"tempest/api/compute/admin/test_volumes_negative.py":[{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"edd4e6c286c09d514f862dada648a43b57014438","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":110,"context_line":"        # an admin client here."},{"line_number":111,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":112,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":115,"context_line":"    @decorators.idempotent_id(\u00277576d497-b7c6-44bd-9cc5-c5b4e50fec71\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7b26d126_d4abe59d","line":112,"updated":"2023-03-13 14:30:38.000000000","message":"Looks like you need to add the admin_volumes_client here (as you do in tempest/api/compute/volumes/test_attach_volume.py):\n\nhttps://zuul.opendev.org/t/openstack/build/0de374dd344a49e78b93918bee83785d","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b6e23da2add2c3a6640b6d7aad43a7dd34e845c3","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":110,"context_line":"        # an admin client here."},{"line_number":111,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":112,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":115,"context_line":"    @decorators.idempotent_id(\u00277576d497-b7c6-44bd-9cc5-c5b4e50fec71\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"49117a90_ce27293f","line":112,"in_reply_to":"1af42f64_79dda85d","updated":"2023-03-15 07:46:19.000000000","message":"Done","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"d2433679cdc2b31fc2816c669ee60661e6228a49","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":110,"context_line":"        # an admin client here."},{"line_number":111,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":112,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":115,"context_line":"    @decorators.idempotent_id(\u00277576d497-b7c6-44bd-9cc5-c5b4e50fec71\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"f85657e2_5ff47522","line":112,"in_reply_to":"7b26d126_d4abe59d","updated":"2023-03-13 18:09:57.000000000","message":"Ah right, I was thinking that we don\u0027t create bootable volumes here so no need of it but we have code that uses the admin volume client in every case so it\u0027s needed. I will add that.","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"57886d10d8853d0147e5ddc7686777ec80d3e5f8","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":110,"context_line":"        # an admin client here."},{"line_number":111,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":112,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":115,"context_line":"    @decorators.idempotent_id(\u00277576d497-b7c6-44bd-9cc5-c5b4e50fec71\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"027c7890_55f84b46","line":112,"in_reply_to":"f85657e2_5ff47522","updated":"2023-03-13 18:17:31.000000000","message":"Done","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"843a9fb4a5ac292d33c2ee638d272c6d813a1bcf","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":110,"context_line":"        # an admin client here."},{"line_number":111,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":112,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @decorators.attr(type\u003d[\u0027negative\u0027])"},{"line_number":115,"context_line":"    @decorators.idempotent_id(\u00277576d497-b7c6-44bd-9cc5-c5b4e50fec71\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af42f64_79dda85d","line":112,"in_reply_to":"f85657e2_5ff47522","updated":"2023-03-13 18:18:44.000000000","message":"good catch, let\u0027s add this a","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"}],"tempest/api/compute/base.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"565427ab5c849dc63bebbd211105c807b16de831","unresolved":true,"context_lines":[{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup("},{"line_number":561,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":562,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion,"},{"line_number":563,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":564,"context_line":"        cls.addClassResourceCleanup("},{"line_number":565,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":566,"context_line":"            cls.admin_volume_types_client.delete_volume_type,"},{"line_number":567,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":568,"context_line":"        return volume_type"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def _detach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"27928ca4_aafd7f18","line":567,"range":{"start_line":560,"start_character":0,"end_line":567,"end_character":30},"updated":"2023-03-08 02:21:19.000000000","message":"failure seems happening consistently in this teardown cleanup. where volume_tpe is in use and this cleanup is not able to delete. I can volume delete is added in addcleanup in create_volume method so that should delete the volume first, wait for volume deletion and then perform the cleanup of volume_type added here.\n\n- https://github.com/openstack/tempest/blob/baa3cc712cbf37a077291f69d8b621bd6f759132/tempest/api/compute/base.py#L547\n\nbut I need to check in log why volume_type is still in use.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"9d3440174618171181feb790716e142d2e64c3eb","unresolved":true,"context_lines":[{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup("},{"line_number":561,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":562,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion,"},{"line_number":563,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":564,"context_line":"        cls.addClassResourceCleanup("},{"line_number":565,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":566,"context_line":"            cls.admin_volume_types_client.delete_volume_type,"},{"line_number":567,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":568,"context_line":"        return volume_type"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def _detach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"d08803b1_7bd99c43","line":567,"range":{"start_line":560,"start_character":0,"end_line":567,"end_character":30},"in_reply_to":"094d1211_cbe88263","updated":"2023-03-08 16:00:53.000000000","message":"We have 2 solutions to the problem,\n\n1) disable image volume cache in the glance-multistore-cinder-import job: This should be doable since the image cache doesn\u0027t have any significance in this gate job and is by default enabled by devstack. This is achieved by the patch  https://review.opendev.org/c/openstack/glance/+/876877\n\n2) pass volume_backend_name while creating the volume type: we can pass volume_backend_name\u003dlvmdriver-1 as an extra specification to the multiattach volume type, this will force the multiattach volume to be created in lvmdriver-1 backend and will consume the existing image volume cache entry without creating a new one. This needs to be tested first.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"abffdd7908f293057fa63996b7a4e38d553e045b","unresolved":false,"context_lines":[{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup("},{"line_number":561,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":562,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion,"},{"line_number":563,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":564,"context_line":"        cls.addClassResourceCleanup("},{"line_number":565,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":566,"context_line":"            cls.admin_volume_types_client.delete_volume_type,"},{"line_number":567,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":568,"context_line":"        return volume_type"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def _detach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"6ac0ab83_a4997e8f","line":567,"range":{"start_line":560,"start_character":0,"end_line":567,"end_character":30},"in_reply_to":"14e3b5fc_00913e07","updated":"2023-03-13 18:12:27.000000000","message":"It is completly fine as this cleanup of volumes will happen at class level teardown (addClassResourceCleanup) not at test level teardown so we are all good here. All resource (volume type, volumes here) associated with these tests are cleaned up at the end which is matching with user operations.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c71a2b732f94c5501bb4ea5a708767bb2e09f1af","unresolved":true,"context_lines":[{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup("},{"line_number":561,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":562,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion,"},{"line_number":563,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":564,"context_line":"        cls.addClassResourceCleanup("},{"line_number":565,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":566,"context_line":"            cls.admin_volume_types_client.delete_volume_type,"},{"line_number":567,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":568,"context_line":"        return volume_type"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def _detach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"094d1211_cbe88263","line":567,"range":{"start_line":560,"start_character":0,"end_line":567,"end_character":30},"in_reply_to":"27928ca4_aafd7f18","updated":"2023-03-08 15:56:39.000000000","message":"I faced the same issue while testing test_boot_from_multiattach_volume locally. However it took me some time to figure out this failure in the gate since the image_volume_cache is enabled in tempest-full-py3 also but the multiattach tests pass there[1]. Following is the explanation.\n\nThe reason for the failure is the image_volume_cache_enabled parameter[2] which is enabled in gate runs. When creating a bootable volume from image, we create a image cache entry internally which is nothing but a clone of the actual volume using the same volume type. During cleanup, the image cache volume is not deleted and still uses the volume type hence the volume type deletion fails.\n\nThis config option image_volume_cache_enabled is also enabled in tempest-full-py3 but the reason why it doesn\u0027t fail there is quite tricky so I will try to compare and explain both the jobs.\n\nNumber of backends:\ntempest-full-py3: 1 LVM backend\nglance-multistore-cinder-import: 2 LVM backends\n\nOther tests that also create bootable volume from image hence creating the cache entry: tempest.api.compute.servers.test_create_server.ServersTestBootFromVolume\n\nExecution order in jobs:\n\n1) tempest-full-py3: When ServersTestBootFromVolume creates the image_cache entry (while performing the create bootable volume from image operation), it is created with lvmdriver-1 backend (we only have 1 backend) which is created without a volume type. The same entry is used for the test_boot_from_multiattach_volume backend (without a volume type) so we don\u0027t have any issues.\n\nLogs from recent run (only 1 log with create_cache_entry): \nhttps://a5a1ebb2da58739a4818-51988972a6d6f0f30aafba2bfab9c470.ssl.cf1.rackcdn.com/876774/1/check/tempest-full-py3/981c95d/controller/logs/screen-c-vol.txt\n\nMar 08 10:30:18.914049 np0033401185 cinder-volume[87331]: INFO cinder.volume.manager [None req-6c3f3897-6766-4785-894c-31a765f36e20 tempest-ServersTestBootFromVolume-1769989128 None] Created volume successfully.\nMar 08 10:30:19.003300 np0033401185 cinder-volume[87331]: DEBUG cinder.image.cache [None req-6c3f3897-6766-4785-894c-31a765f36e20 tempest-ServersTestBootFromVolume-1769989128 None] Creating new image-volume cache entry for image 09ac63bb-3aa2-449c-9fb6-a7f7347b8e17 on np0033401185@lvmdriver-1#lvmdriver-1 {{(pid\u003d87331) create_cache_entry /opt/stack/cinder/cinder/image/cache.py:104}}\nMar 08 10:30:19.033918 np0033401185 cinder-volume[87331]: DEBUG cinder.image.cache [None req-6c3f3897-6766-4785-894c-31a765f36e20 tempest-ServersTestBootFromVolume-1769989128 None] New image-volume cache entry created: {\u0027id\u0027: 1, \u0027image_id\u0027: \u002709ac63bb-3aa2-449c-9fb6-a7f7347b8e17\u0027, \u0027volume_id\u0027: \u002765555c80-86ca-4e1c-8e50-4ccd603f4079\u0027, \u0027host\u0027: \u0027np0033401185@lvmdriver-1#lvmdriver-1\u0027, \u0027size\u0027: 1, \u0027image_updated_at\u0027: datetime.datetime(2023, 3, 8, 10, 22, 58), \u0027last_used\u0027: datetime.datetime(2023, 3, 8, 10, 30, 19, 6970)}. {{(pid\u003d87331) create_cache_entry \n\n\n2) glance-multistore-cinder-import: Same as tempest-full-py3, when ServersTestBootFromVolume creates the image_cache entry (while performing the create bootable volume from image operation), it is created with lvmdriver-1 backend but when test_boot_from_multiattach_volume creates the cache entry, it is created in lvmdriver-2 backend with a volume type. Now the second cache entry is created with the multiattach volume type. Since we don\u0027t/can\u0027t delete this cache entry, the volume type also fails to delete.\n\nLogs from job run (notice there are 2 cache entry logs): https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_e76/876774/1/check/glance-multistore-cinder-import/e76a670/controller/logs/screen-c-vol.txt\n\nFirst cache entry:\n\nMar 08 10:52:33.003496 np0033401335 cinder-volume[85487]: INFO cinder.volume.manager [None req-4332342d-35af-43c9-8159-849f877f762d tempest-ServersTestBootFromVolume-1959798879 None] Created volume successfully.\nMar 08 10:52:33.030644 np0033401335 cinder-volume[85487]: DEBUG cinder.image.cache [None req-4332342d-35af-43c9-8159-849f877f762d tempest-ServersTestBootFromVolume-1959798879 None] Creating new image-volume cache entry for image 0ff67739-c7ae-44db-b979-7c8650ac9feb on np0033401335@lvmdriver-1#lvmdriver-1 {{(pid\u003d85487) create_cache_entry /opt/stack/cinder/cinder/image/cache.py:104}}\nMar 08 10:52:33.041017 np0033401335 cinder-volume[85487]: DEBUG cinder.image.cache [None req-4332342d-35af-43c9-8159-849f877f762d tempest-ServersTestBootFromVolume-1959798879 None] New image-volume cache entry created: {\u0027id\u0027: 1, \u0027image_id\u0027: \u00270ff67739-c7ae-44db-b979-7c8650ac9feb\u0027, \u0027volume_id\u0027: \u00274d7e1ed2-0e3a-425f-b69d-a30e4940c2a6\u0027, \u0027host\u0027: \u0027np0033401335@lvmdriver-1#lvmdriver-1\u0027, \u0027size\u0027: 1, \u0027image_updated_at\u0027: datetime.datetime(2023, 3, 8, 10, 33, 52), \u0027last_used\u0027: datetime.datetime(2023, 3, 8, 10, 52, 33, 35775)}. {{(pid\u003d85487) create_cache_entry \n\nSecond cache entry:\n\nMar 08 10:52:44.529956 np0033401335 cinder-volume[85499]: INFO cinder.volume.manager [None req-816167cc-9542-4d23-8731-bc3ce0bc009f tempest-AttachVolumeMultiAttachTest-2129901008 None] Created volume successfully.\nMar 08 10:52:44.554403 np0033401335 cinder-volume[85499]: DEBUG cinder.image.cache [None req-816167cc-9542-4d23-8731-bc3ce0bc009f tempest-AttachVolumeMultiAttachTest-2129901008 None] Creating new image-volume cache entry for image 0ff67739-c7ae-44db-b979-7c8650ac9feb on np0033401335@lvmdriver-2#lvmdriver-2 {{(pid\u003d85499) create_cache_entry /opt/stack/cinder/cinder/image/cache.py:104}}\nMar 08 10:52:44.561041 np0033401335 cinder-volume[85499]: DEBUG cinder.image.cache [None req-816167cc-9542-4d23-8731-bc3ce0bc009f tempest-AttachVolumeMultiAttachTest-2129901008 None] New image-volume cache entry created: {\u0027id\u0027: 2, \u0027image_id\u0027: \u00270ff67739-c7ae-44db-b979-7c8650ac9feb\u0027, \u0027volume_id\u0027: \u002798c78a3f-a90b-4900-a2ab-3206caacaf19\u0027, \u0027host\u0027: \u0027np0033401335@lvmdriver-2#lvmdriver-2\u0027, \u0027size\u0027: 1, \u0027image_updated_at\u0027: datetime.datetime(2023, 3, 8, 10, 33, 52), \u0027last_used\u0027: datetime.datetime(2023, 3, 8, 10, 52, 44, 556753)}. {{(pid\u003d85499) create_cache_entry \n\n\nI\u0027ve created a DNM patch in glance that disable the image volume cache and the job should pass there[3].\n\n[1] https://a5a1ebb2da58739a4818-51988972a6d6f0f30aafba2bfab9c470.ssl.cf1.rackcdn.com/876774/1/check/tempest-full-py3/981c95d/testr_results.html\n\n[2] https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_e76/876774/1/check/glance-multistore-cinder-import/e76a670/controller/logs/etc/cinder/cinder_conf.txt\n\n[3] https://review.opendev.org/c/openstack/glance/+/876877","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8717cbd8aab4584a7578efe3c0ba9c19d823c707","unresolved":true,"context_lines":[{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup("},{"line_number":561,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":562,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion,"},{"line_number":563,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":564,"context_line":"        cls.addClassResourceCleanup("},{"line_number":565,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":566,"context_line":"            cls.admin_volume_types_client.delete_volume_type,"},{"line_number":567,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":568,"context_line":"        return volume_type"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def _detach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"6d63c36d_993ef7f9","line":567,"range":{"start_line":560,"start_character":0,"end_line":567,"end_character":30},"in_reply_to":"5d3c27a2_948247a2","updated":"2023-03-08 22:07:30.000000000","message":"and I think we should not make test depends on CINDER_IMG_CACHE_ENABLED setting as that can enabled in local/production run and then tempest will fail","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"57886d10d8853d0147e5ddc7686777ec80d3e5f8","unresolved":false,"context_lines":[{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup("},{"line_number":561,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":562,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion,"},{"line_number":563,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":564,"context_line":"        cls.addClassResourceCleanup("},{"line_number":565,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":566,"context_line":"            cls.admin_volume_types_client.delete_volume_type,"},{"line_number":567,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":568,"context_line":"        return volume_type"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def _detach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"275f00de_feef5a40","line":567,"range":{"start_line":560,"start_character":0,"end_line":567,"end_character":30},"in_reply_to":"6ac0ab83_a4997e8f","updated":"2023-03-13 18:17:31.000000000","message":"Ack, maybe I\u0027m just thinking from the user perspective, this sounds about right.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"8f169ba1ecb8db3e9c5fcde23977b9a7ae3720ef","unresolved":true,"context_lines":[{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup("},{"line_number":561,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":562,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion,"},{"line_number":563,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":564,"context_line":"        cls.addClassResourceCleanup("},{"line_number":565,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":566,"context_line":"            cls.admin_volume_types_client.delete_volume_type,"},{"line_number":567,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":568,"context_line":"        return volume_type"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def _detach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"c9c23b0e_99d1b9e5","line":567,"range":{"start_line":560,"start_character":0,"end_line":567,"end_character":30},"in_reply_to":"6d63c36d_993ef7f9","updated":"2023-03-10 05:59:22.000000000","message":"I might have wrongly evaluated the second option since forcing the second image cache creation to first backend (lvmdriver-1) would require the first image cache creation also to first backend (lvmdriver-1) which will require creating another volume type and cleanup of that type will fail. Overall that is not a solution to this problem.\n\nI discussed this with the cinder team and this seems to be a bug on the cinder side that doesn\u0027t allow users to cleanup volume type when no volume is using it (only internal image cache volume is using it). We will discuss this during the PTG and work on a fix. In the meantime, the only solution we have is to disable the image cache feature in the glance-multistore-cinder-import job to allow the cinder change to merge and make it into Antelope release. I will discuss the same with glance team.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"9510ccee09c167233af0739c91f6c1a006de8439","unresolved":true,"context_lines":[{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup("},{"line_number":561,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":562,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion,"},{"line_number":563,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":564,"context_line":"        cls.addClassResourceCleanup("},{"line_number":565,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":566,"context_line":"            cls.admin_volume_types_client.delete_volume_type,"},{"line_number":567,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":568,"context_line":"        return volume_type"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def _detach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"eb181949_88d20035","line":567,"range":{"start_line":560,"start_character":0,"end_line":567,"end_character":30},"in_reply_to":"c9c23b0e_99d1b9e5","updated":"2023-03-10 15:13:11.000000000","message":"Another approach would be to do what we do here in the cinder-tempest-plugin:\n\nhttps://review.opendev.org/c/openstack/cinder-tempest-plugin/+/737380/11/cinder_tempest_plugin/api/volume/base.py#181\n\nnamely, create a specific VT to use for the test, and then during class cleanup, delete any leftover volumes of that type (regardless of what project owns them) before deleting the volume type.  This happens after tests in the class have asserted the correct creation and deletion of all test volumes, which is what we\u0027re really interested in.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"f9f821ba6eb1e1c72ea801af966a616a97296307","unresolved":false,"context_lines":[{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup("},{"line_number":561,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":562,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion,"},{"line_number":563,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":564,"context_line":"        cls.addClassResourceCleanup("},{"line_number":565,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":566,"context_line":"            cls.admin_volume_types_client.delete_volume_type,"},{"line_number":567,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":568,"context_line":"        return volume_type"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def _detach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"14e3b5fc_00913e07","line":567,"range":{"start_line":560,"start_character":0,"end_line":567,"end_character":30},"in_reply_to":"cef457c8_2d9645b0","updated":"2023-03-13 07:02:31.000000000","message":"The suggestion works but seems quite dangerous to delete all volumes associated to a particular volume type. In this case we are doing it in teardown so should be fine but again multiple tests are using this type to create their multiattach volumes so it doesn\u0027t look good.\nThough i agree that disabling image volume cache is a user side change that, if not enabled, will cause the tests to fail and best is to handle it in the test and not rely on the user.\nThe proper fix will be in cinder which will allow us to remove these workarounds so should be good for now.\nUpdated the code to implement Brian\u0027s solution, Thanks Ghanshyam and Brian!","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"363cd850fb2786d46327666208140cf3dab3bcba","unresolved":true,"context_lines":[{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup("},{"line_number":561,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":562,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion,"},{"line_number":563,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":564,"context_line":"        cls.addClassResourceCleanup("},{"line_number":565,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":566,"context_line":"            cls.admin_volume_types_client.delete_volume_type,"},{"line_number":567,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":568,"context_line":"        return volume_type"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def _detach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5d3c27a2_948247a2","line":567,"range":{"start_line":560,"start_character":0,"end_line":567,"end_character":30},"in_reply_to":"d08803b1_7bd99c43","updated":"2023-03-08 22:05:15.000000000","message":"I am not sure about first one, may be glance team can comment. I think 2nd solution seems better.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"9d415f0708867215609252de95ad7f65bc475493","unresolved":true,"context_lines":[{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup("},{"line_number":561,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":562,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion,"},{"line_number":563,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":564,"context_line":"        cls.addClassResourceCleanup("},{"line_number":565,"context_line":"            test_utils.call_and_ignore_notfound_exc,"},{"line_number":566,"context_line":"            cls.admin_volume_types_client.delete_volume_type,"},{"line_number":567,"context_line":"            volume_type[\u0027id\u0027])"},{"line_number":568,"context_line":"        return volume_type"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def _detach_volume(self, server, volume):"}],"source_content_type":"text/x-python","patch_set":4,"id":"cef457c8_2d9645b0","line":567,"range":{"start_line":560,"start_character":0,"end_line":567,"end_character":30},"in_reply_to":"eb181949_88d20035","updated":"2023-03-10 19:31:33.000000000","message":"Thanks Rajat for discussion and I agree that user facing resource should not be tied with the internal cache things. Fixing it in cinder is good from user perspective also.\n\nFor now, instead of disabling the image chache, I like to Brian idea of look for leftover volumes and delete them before volume_type. Let\u0027s go with this solution for now.","commit_id":"be21324593dac98f6190f66cca180adc9ce03c5d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"843a9fb4a5ac292d33c2ee638d272c6d813a1bcf","unresolved":true,"context_lines":[{"line_number":551,"context_line":"                                                volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":552,"context_line":"        return volume"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    @classmethod"},{"line_number":555,"context_line":"    def create_volume_type(cls, name\u003dNone, **kwargs):"},{"line_number":556,"context_line":"        \"\"\"Create a test volume-type\"\"\""},{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup(cls._clear_volume_type, volume_type)"},{"line_number":561,"context_line":"        return volume_type"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"    @classmethod"},{"line_number":564,"context_line":"    def _clear_volume_type(cls, volume_type):"},{"line_number":565,"context_line":"        # If image caching is enabled, we must delete the cached volume"},{"line_number":566,"context_line":"        # before cinder will allow us to delete the volume_type.  This function"},{"line_number":567,"context_line":"        # solves that problem by taking the brute-force approach of deleting"},{"line_number":568,"context_line":"        # any volumes of this volume_type that exist *no matter what project"},{"line_number":569,"context_line":"        # they are in*.  Since this won\u0027t happen until the teardown of the"},{"line_number":570,"context_line":"        # test class, that should be OK."},{"line_number":571,"context_line":"        type_id \u003d volume_type[\u0027id\u0027]"},{"line_number":572,"context_line":"        type_name \u003d volume_type[\u0027name\u0027]"},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"        volumes \u003d cls.admin_volumes_client.list_volumes("},{"line_number":575,"context_line":"            detail\u003dTrue, params\u003d{\u0027all_tenants\u0027: 1})[\u0027volumes\u0027]"},{"line_number":576,"context_line":"        for volume in [v for v in volumes if v[\u0027volume_type\u0027] \u003d\u003d type_name]:"},{"line_number":577,"context_line":"            test_utils.call_and_ignore_notfound_exc("},{"line_number":578,"context_line":"                cls.admin_volumes_client.delete_volume, volume[\u0027id\u0027])"},{"line_number":579,"context_line":"            cls.admin_volumes_client.wait_for_resource_deletion(volume[\u0027id\u0027])"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"        test_utils.call_and_ignore_notfound_exc("},{"line_number":582,"context_line":"            cls.admin_volume_types_client.delete_volume_type, type_id)"},{"line_number":583,"context_line":"        test_utils.call_and_ignore_notfound_exc("},{"line_number":584,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion, type_id)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    def _detach_volume(self, server, volume):"},{"line_number":587,"context_line":"        \"\"\"Helper method to detach a volume."}],"source_content_type":"text/x-python","patch_set":5,"id":"d5820a7b_16b6f0fa","line":584,"range":{"start_line":554,"start_character":0,"end_line":584,"end_character":78},"updated":"2023-03-13 18:18:44.000000000","message":"as we can manage volume_type only with admin, let\u0027s add these in BaseV2ComputeAdminTest class L692","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b6e23da2add2c3a6640b6d7aad43a7dd34e845c3","unresolved":false,"context_lines":[{"line_number":551,"context_line":"                                                volume[\u0027id\u0027], \u0027available\u0027)"},{"line_number":552,"context_line":"        return volume"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    @classmethod"},{"line_number":555,"context_line":"    def create_volume_type(cls, name\u003dNone, **kwargs):"},{"line_number":556,"context_line":"        \"\"\"Create a test volume-type\"\"\""},{"line_number":557,"context_line":"        name \u003d name or data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":558,"context_line":"        volume_type \u003d cls.admin_volume_types_client.create_volume_type("},{"line_number":559,"context_line":"            name\u003dname, **kwargs)[\u0027volume_type\u0027]"},{"line_number":560,"context_line":"        cls.addClassResourceCleanup(cls._clear_volume_type, volume_type)"},{"line_number":561,"context_line":"        return volume_type"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"    @classmethod"},{"line_number":564,"context_line":"    def _clear_volume_type(cls, volume_type):"},{"line_number":565,"context_line":"        # If image caching is enabled, we must delete the cached volume"},{"line_number":566,"context_line":"        # before cinder will allow us to delete the volume_type.  This function"},{"line_number":567,"context_line":"        # solves that problem by taking the brute-force approach of deleting"},{"line_number":568,"context_line":"        # any volumes of this volume_type that exist *no matter what project"},{"line_number":569,"context_line":"        # they are in*.  Since this won\u0027t happen until the teardown of the"},{"line_number":570,"context_line":"        # test class, that should be OK."},{"line_number":571,"context_line":"        type_id \u003d volume_type[\u0027id\u0027]"},{"line_number":572,"context_line":"        type_name \u003d volume_type[\u0027name\u0027]"},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"        volumes \u003d cls.admin_volumes_client.list_volumes("},{"line_number":575,"context_line":"            detail\u003dTrue, params\u003d{\u0027all_tenants\u0027: 1})[\u0027volumes\u0027]"},{"line_number":576,"context_line":"        for volume in [v for v in volumes if v[\u0027volume_type\u0027] \u003d\u003d type_name]:"},{"line_number":577,"context_line":"            test_utils.call_and_ignore_notfound_exc("},{"line_number":578,"context_line":"                cls.admin_volumes_client.delete_volume, volume[\u0027id\u0027])"},{"line_number":579,"context_line":"            cls.admin_volumes_client.wait_for_resource_deletion(volume[\u0027id\u0027])"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"        test_utils.call_and_ignore_notfound_exc("},{"line_number":582,"context_line":"            cls.admin_volume_types_client.delete_volume_type, type_id)"},{"line_number":583,"context_line":"        test_utils.call_and_ignore_notfound_exc("},{"line_number":584,"context_line":"            cls.admin_volume_types_client.wait_for_resource_deletion, type_id)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    def _detach_volume(self, server, volume):"},{"line_number":587,"context_line":"        \"\"\"Helper method to detach a volume."}],"source_content_type":"text/x-python","patch_set":5,"id":"4a0bd697_86c4e139","line":584,"range":{"start_line":554,"start_character":0,"end_line":584,"end_character":78},"in_reply_to":"d5820a7b_16b6f0fa","updated":"2023-03-15 07:46:19.000000000","message":"Removed this in favor of devstack creating the type","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"}],"tempest/api/compute/volumes/test_attach_volume.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"843a9fb4a5ac292d33c2ee638d272c6d813a1bcf","unresolved":true,"context_lines":[{"line_number":338,"context_line":"        # is from a multiattach volume type. Since creating"},{"line_number":339,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":340,"context_line":"        # an admin client here."},{"line_number":341,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":342,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":343,"context_line":"        # The admin volume client is required to clear the"},{"line_number":344,"context_line":"        # image volume cache entry which is created in"},{"line_number":345,"context_line":"        # internal project"},{"line_number":346,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_client_latest"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def _attach_volume_to_servers(self, volume, servers):"},{"line_number":349,"context_line":"        \"\"\"Attaches the given volume to the list of servers."}],"source_content_type":"text/x-python","patch_set":5,"id":"3ffe7e94_3f70eee1","line":346,"range":{"start_line":341,"start_character":0,"end_line":346,"end_character":69},"updated":"2023-03-13 18:18:44.000000000","message":"let\u0027s add these in the BaseV2ComputeAdminTest base class itself where their usages method are otherwise it will be confusing to know where these variable are used and base class having method but not the var needed by them are more error prone.","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":10459,"name":"Luigi Toscano","email":"ltoscano@redhat.com","username":"ltoscano"},"change_message_id":"1e35bbdd9cdfd919b15d789f1eb25265a5ef0f70","unresolved":true,"context_lines":[{"line_number":338,"context_line":"        # is from a multiattach volume type. Since creating"},{"line_number":339,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":340,"context_line":"        # an admin client here."},{"line_number":341,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":342,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":343,"context_line":"        # The admin volume client is required to clear the"},{"line_number":344,"context_line":"        # image volume cache entry which is created in"},{"line_number":345,"context_line":"        # internal project"},{"line_number":346,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_client_latest"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def _attach_volume_to_servers(self, volume, servers):"},{"line_number":349,"context_line":"        \"\"\"Attaches the given volume to the list of servers."}],"source_content_type":"text/x-python","patch_set":5,"id":"a46560e9_d737f80b","line":346,"range":{"start_line":341,"start_character":0,"end_line":346,"end_character":69},"in_reply_to":"1c5b4a47_ec690744","updated":"2023-03-14 10:42:49.000000000","message":"Are we sure we can\u0027t really let the test do it? I went through the logs, but it\u0027s kind of putting an external dependency on a test fixture. Does it mean the test will need to have a new configuration variable with the name of the volume type that can be used?","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c1de9637e24900a06bc49c00592fe71afcb6b992","unresolved":true,"context_lines":[{"line_number":338,"context_line":"        # is from a multiattach volume type. Since creating"},{"line_number":339,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":340,"context_line":"        # an admin client here."},{"line_number":341,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":342,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":343,"context_line":"        # The admin volume client is required to clear the"},{"line_number":344,"context_line":"        # image volume cache entry which is created in"},{"line_number":345,"context_line":"        # internal project"},{"line_number":346,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_client_latest"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def _attach_volume_to_servers(self, volume, servers):"},{"line_number":349,"context_line":"        \"\"\"Attaches the given volume to the list of servers."}],"source_content_type":"text/x-python","patch_set":5,"id":"1c5b4a47_ec690744","line":346,"range":{"start_line":341,"start_character":0,"end_line":346,"end_character":69},"in_reply_to":"3ffe7e94_3f70eee1","updated":"2023-03-13 18:56:27.000000000","message":"as discussed on IRC, volume_type is admin operation but multiattach is not so let\u0027s not make multiattach test as admin tests. As Brian/Rajat mentioned in IRC[1] that in actual scenario volume_type will be created by operator (by admin token) for users so that they can request the multiattach operation, we can do the same in our CI testing also. let\u0027s devstack create the volume_type and tempest will use them.\n\nWe can create the multiattach volume type in lib/cinder[2] if ENABLE_VOLUME_MULTIATTACH is True\n\n[1] https://meetings.opendev.org/irclogs/%23openstack-cinder/%23openstack-cinder.2023-03-13.log.html#t2023-03-13T18:39:39\n\n[2] https://github.com/openstack/devstack/blob/3894077e6c002d5238423a17846bd2c1afc6a00b/lib/cinder#L345","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"32720b4db974e818b5cac52536150073ed3d8485","unresolved":true,"context_lines":[{"line_number":338,"context_line":"        # is from a multiattach volume type. Since creating"},{"line_number":339,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":340,"context_line":"        # an admin client here."},{"line_number":341,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":342,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":343,"context_line":"        # The admin volume client is required to clear the"},{"line_number":344,"context_line":"        # image volume cache entry which is created in"},{"line_number":345,"context_line":"        # internal project"},{"line_number":346,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_client_latest"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def _attach_volume_to_servers(self, volume, servers):"},{"line_number":349,"context_line":"        \"\"\"Attaches the given volume to the list of servers."}],"source_content_type":"text/x-python","patch_set":5,"id":"ecfd1e47_ae48ab81","line":346,"range":{"start_line":341,"start_character":0,"end_line":346,"end_character":69},"in_reply_to":"783fc9fc_7cd8d321","updated":"2023-03-14 18:08:31.000000000","message":"I replied on https://review.opendev.org/c/openstack/devstack/+/877337/comments/1f8d1172_2e258739\n\nWhole point here is not about test can do it or not it is about testing a  non-admin operation (multiattach) as a admin operation because of its pre\u003drequist. My main point is let\u0027s test it the way end user will use multiattach is. If you see nova case of creating server we do the same, 1. devstack create the flavor 2. configure it in tempest.conf 3. tempest test use that flavor to create the servers using non-admin creds.","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"b6e23da2add2c3a6640b6d7aad43a7dd34e845c3","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        # is from a multiattach volume type. Since creating"},{"line_number":339,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":340,"context_line":"        # an admin client here."},{"line_number":341,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":342,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":343,"context_line":"        # The admin volume client is required to clear the"},{"line_number":344,"context_line":"        # image volume cache entry which is created in"},{"line_number":345,"context_line":"        # internal project"},{"line_number":346,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_client_latest"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def _attach_volume_to_servers(self, volume, servers):"},{"line_number":349,"context_line":"        \"\"\"Attaches the given volume to the list of servers."}],"source_content_type":"text/x-python","patch_set":5,"id":"463904b0_a0cbc9d6","line":346,"range":{"start_line":341,"start_character":0,"end_line":346,"end_character":69},"in_reply_to":"9705db81_03df3bf9","updated":"2023-03-15 07:46:19.000000000","message":"Done","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"a7de8b46f1adc39413979f1dd1f3e92a2d6e1e9a","unresolved":true,"context_lines":[{"line_number":338,"context_line":"        # is from a multiattach volume type. Since creating"},{"line_number":339,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":340,"context_line":"        # an admin client here."},{"line_number":341,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":342,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":343,"context_line":"        # The admin volume client is required to clear the"},{"line_number":344,"context_line":"        # image volume cache entry which is created in"},{"line_number":345,"context_line":"        # internal project"},{"line_number":346,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_client_latest"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def _attach_volume_to_servers(self, volume, servers):"},{"line_number":349,"context_line":"        \"\"\"Attaches the given volume to the list of servers."}],"source_content_type":"text/x-python","patch_set":5,"id":"783fc9fc_7cd8d321","line":346,"range":{"start_line":341,"start_character":0,"end_line":346,"end_character":69},"in_reply_to":"a46560e9_d737f80b","updated":"2023-03-14 12:22:50.000000000","message":"I\u0027ve been thinking about this, and I wonder whether we should move this kind of test (that requires admin intervention) to the \u0027tempest.api.volume.admin\u0027 package.  There\u0027s already a precedent for this:\n\nhttps://opendev.org/openstack/tempest/src/branch/master/tempest/api/volume/admin/test_volume_type_access.py\n\nThese tests are checking to see if a regular end-user can access/not access private volume types.  The admin creates the volume-type and sets the access, and then the regular user tries to use the volume type.  So I\u0027d argue that it makes sense for the multiattach tests, which require admin and regular end-user collaboration, to be in the \u0027admin\u0027 package as well.","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"bbe0c60e9249b1443d6324488656b5f3c414205b","unresolved":true,"context_lines":[{"line_number":338,"context_line":"        # is from a multiattach volume type. Since creating"},{"line_number":339,"context_line":"        # a volume type is an admin only operation, we need"},{"line_number":340,"context_line":"        # an admin client here."},{"line_number":341,"context_line":"        cls.admin_volume_types_client \u003d\\"},{"line_number":342,"context_line":"            cls.os_admin.volume_types_client_latest"},{"line_number":343,"context_line":"        # The admin volume client is required to clear the"},{"line_number":344,"context_line":"        # image volume cache entry which is created in"},{"line_number":345,"context_line":"        # internal project"},{"line_number":346,"context_line":"        cls.admin_volumes_client \u003d cls.os_admin.volumes_client_latest"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    def _attach_volume_to_servers(self, volume, servers):"},{"line_number":349,"context_line":"        \"\"\"Attaches the given volume to the list of servers."}],"source_content_type":"text/x-python","patch_set":5,"id":"9705db81_03df3bf9","line":346,"range":{"start_line":341,"start_character":0,"end_line":346,"end_character":69},"in_reply_to":"ecfd1e47_ae48ab81","updated":"2023-03-14 18:40:21.000000000","message":"I guess the key issue is that we should be consistent with tempest design patterns and tempest user expectations, so on that basis, I don\u0027t object to your proposal.","commit_id":"f5aef62f255551ab1cb3973861fce669b0a0a46d"}]}
