)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"aff1950b7bedc951738ee29385b61d17fb495db1","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     whoami-rajat \u003crajatdhasmana@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-02-02 01:36:51 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add block storage work cleanup command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the ``block storage work cleanup`` command that"},{"line_number":10,"context_line":"allow operators to cleanup resources (volumes and snapshots) with"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"cef9cc7c_c484bbfb","line":7,"range":{"start_line":7,"start_character":18,"end_line":7,"end_character":30},"updated":"2023-02-02 14:51:41.000000000","message":"What does \u0027work\u0027 relate to? Do we need it? Could we just say \u0027block storage cleanup\u0027, or split this into \u0027volume cleanup\u0027 and \u0027volume snapshot cleanup\u0027 commands?","commit_id":"c608e05f25f259b79c97b9d1d8f49e55056b2d3b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"4f197c01adf2dad9941921ff396b176c7d9d52d3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     whoami-rajat \u003crajatdhasmana@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-02-02 01:36:51 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add block storage work cleanup command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the ``block storage work cleanup`` command that"},{"line_number":10,"context_line":"allow operators to cleanup resources (volumes and snapshots) with"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"e7164072_259b145a","line":7,"range":{"start_line":7,"start_character":18,"end_line":7,"end_character":30},"in_reply_to":"21180636_032350de","updated":"2023-02-16 09:02:15.000000000","message":"Done","commit_id":"c608e05f25f259b79c97b9d1d8f49e55056b2d3b"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"37893fdbc894f1d51c9de2ed1de27b3fcce7c013","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     whoami-rajat \u003crajatdhasmana@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-02-02 01:36:51 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add block storage work cleanup command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the ``block storage work cleanup`` command that"},{"line_number":10,"context_line":"allow operators to cleanup resources (volumes and snapshots) with"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"21180636_032350de","line":7,"range":{"start_line":7,"start_character":18,"end_line":7,"end_character":30},"in_reply_to":"468bae8a_e87dbe19","updated":"2023-02-14 14:47:16.000000000","message":"Gotcha. In that case, I\u0027d probably drop the work big and just stick with \u0027block storage cleanup\u0027. The use of workers is an implementation detail that we don\u0027t need to expose to the end-user IMO. It\u0027d be different if you could create/delete a generic \"worker\" resource but you can\u0027t","commit_id":"c608e05f25f259b79c97b9d1d8f49e55056b2d3b"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2361140871e5648e5acb176dda54b004c7398dd3","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     whoami-rajat \u003crajatdhasmana@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2023-02-02 01:36:51 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add block storage work cleanup command"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds the ``block storage work cleanup`` command that"},{"line_number":10,"context_line":"allow operators to cleanup resources (volumes and snapshots) with"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"468bae8a_e87dbe19","line":7,"range":{"start_line":7,"start_character":18,"end_line":7,"end_character":30},"in_reply_to":"cef9cc7c_c484bbfb","updated":"2023-02-03 20:11:03.000000000","message":"It relates to the concept of workers we have in cinder. For a resource (volume/snapshot) operation, we create a DB record in the workers table that allows us to track the status of the resource operation and also helps clean up the resource in case of failure with the help of this API.\nDefinitely we don\u0027t want to split this up into two commands since the only difference will be a parameter value for which we will be introducing a lot of redundant code.\n\nRegarding the command name, I don\u0027t have a strong opinion here, honestly i just referenced the cinderclient command for this and it made sense because of the concept of workers on the API side. but I don\u0027t want to take decisions on behalf of cinder team since it would be difficult to change the command later. I will ask cinder team to provide feedback on this as well.","commit_id":"c608e05f25f259b79c97b9d1d8f49e55056b2d3b"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"583d4470_246f32c2","updated":"2023-02-16 18:13:58.000000000","message":"Looks much better, thanks. There\u0027s a bit of cleanup needed now that \u0027block storage\u0027 is the resource (rather than \u0027block storage work\u0027). As always, let me know if it\u0027s unclear","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"6f656bed_fa4bfe4b","updated":"2023-02-17 12:22:29.000000000","message":"Thanks Stephen","commit_id":"2be359677908b81d9985917fd78f9c6897759fb9"}],"doc/source/cli/command-objects/block-storage-workers.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":true,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Block Storage Workers"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Block Storage v3"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9c2ebdf2_b8b9359f","line":2,"updated":"2023-02-16 18:13:58.000000000","message":"These should be lower case. Also, it should simply read \u0027block storage\u0027 since \u0027cleanup\u0027 is now an action on the \u0027block storage\u0027 (i.e. the service) resource.\n\nDitto for the filename","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":2,"context_line":"Block Storage Workers"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"Block Storage v3"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c8fa9b09_e02ef571","line":2,"in_reply_to":"9c2ebdf2_b8b9359f","updated":"2023-02-17 12:22:29.000000000","message":"Done","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"}],"openstackclient/tests/unit/volume/v3/test_block_storage_workers.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":true,"context_lines":[{"line_number":19,"context_line":"from openstackclient.volume.v3 import block_storage_workers"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class TestBlockStorageWorkers(volume_fakes.TestVolume):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def setUp(self):"},{"line_number":25,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"d498614f_01ad7dce","line":22,"updated":"2023-02-16 18:13:58.000000000","message":"nit:\n\n  TestBlockStorage ?\n\nAlso, should we drop the \u0027_workers\u0027 suffix from the filename?","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from openstackclient.volume.v3 import block_storage_workers"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class TestBlockStorageWorkers(volume_fakes.TestVolume):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    def setUp(self):"},{"line_number":25,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"a98f867d_7a508e5e","line":22,"in_reply_to":"d498614f_01ad7dce","updated":"2023-02-17 12:22:29.000000000","message":"This sounds very vague and the reason for naming it workers is because of the workers file used from cinderclient to be mocked. but this is only used inside this file so I don\u0027t have strong opinion on this.","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":true,"context_lines":[{"line_number":29,"context_line":"        self.worker_mock.reset_mock()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class TestBlockStorageWorkCleanup(TestBlockStorageWorkers):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    cleaning, unavailable \u003d volume_fakes.create_work_cleanup_records()"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"12e2156b_a4069252","line":32,"range":{"start_line":32,"start_character":22,"end_line":32,"end_character":26},"updated":"2023-02-16 18:13:58.000000000","message":"nit: drop Work?","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.worker_mock.reset_mock()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class TestBlockStorageWorkCleanup(TestBlockStorageWorkers):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    cleaning, unavailable \u003d volume_fakes.create_work_cleanup_records()"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ac0b2b07_f722f75a","line":32,"range":{"start_line":32,"start_character":22,"end_line":32,"end_character":26},"in_reply_to":"12e2156b_a4069252","updated":"2023-02-17 12:22:29.000000000","message":"Done","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"}],"openstackclient/volume/v3/block_storage_workers.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    return (column_headers, combined_data)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class BlockStorageWorkCleanup(command.Lister):"},{"line_number":42,"context_line":"    \"\"\"Do block storage worker cleanup."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    This command requires ``--os-volume-api-version`` 3.24 or greater."}],"source_content_type":"text/x-python","patch_set":3,"id":"d9a4682d_c1aa82d5","line":41,"range":{"start_line":41,"start_character":6,"end_line":41,"end_character":29},"updated":"2023-02-16 18:13:58.000000000","message":"Drop \u0027Work\u0027? Also, we should drop the \u0027_workers\u0027 suffix in the filename","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    return (column_headers, combined_data)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"class BlockStorageWorkCleanup(command.Lister):"},{"line_number":42,"context_line":"    \"\"\"Do block storage worker cleanup."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    This command requires ``--os-volume-api-version`` 3.24 or greater."}],"source_content_type":"text/x-python","patch_set":3,"id":"efc73f7d_4aa2153a","line":41,"range":{"start_line":41,"start_character":6,"end_line":41,"end_character":29},"in_reply_to":"d9a4682d_c1aa82d5","updated":"2023-02-17 12:22:29.000000000","message":"Done","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":true,"context_lines":[{"line_number":50,"context_line":"            \u0027--cluster\u0027,"},{"line_number":51,"context_line":"            metavar\u003d\u0027\u003ccluster\u003e\u0027,"},{"line_number":52,"context_line":"            help\u003d_(\u0027Name of block storage cluster in which cleanup needs \u0027"},{"line_number":53,"context_line":"                   \u0027to be performed (name only)\u0027)"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \"--host\","}],"source_content_type":"text/x-python","patch_set":3,"id":"3c5f1ab7_1e0f6978","line":53,"updated":"2023-02-16 18:13:58.000000000","message":"I assume we can\u0027t look this up if the user gives an ID? Do they have IDs?","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":true,"context_lines":[{"line_number":50,"context_line":"            \u0027--cluster\u0027,"},{"line_number":51,"context_line":"            metavar\u003d\u0027\u003ccluster\u003e\u0027,"},{"line_number":52,"context_line":"            help\u003d_(\u0027Name of block storage cluster in which cleanup needs \u0027"},{"line_number":53,"context_line":"                   \u0027to be performed (name only)\u0027)"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \"--host\","}],"source_content_type":"text/x-python","patch_set":3,"id":"bb141252_2b107b36","line":53,"in_reply_to":"3c5f1ab7_1e0f6978","updated":"2023-02-17 12:22:29.000000000","message":"That\u0027s correct. cluster only accepts name field[1]. They do have an ID in the database but it\u0027s an integer field and not exposed to the end user[2].\n\n[1] https://docs.openstack.org/api-ref/block-storage/v3/?expanded\u003dshow-cluster-details-detail#show-cluster-details\n\n[2] https://github.com/openstack/cinder/blob/d6fd72b47d2b19794afb0865f4c9cdabc299788b/cinder/api/v3/views/clusters.py#L54-L58","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6759a0526242271c9b1a8b1e5a22e4ee697cbb06","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            \u0027--cluster\u0027,"},{"line_number":51,"context_line":"            metavar\u003d\u0027\u003ccluster\u003e\u0027,"},{"line_number":52,"context_line":"            help\u003d_(\u0027Name of block storage cluster in which cleanup needs \u0027"},{"line_number":53,"context_line":"                   \u0027to be performed (name only)\u0027)"},{"line_number":54,"context_line":"        )"},{"line_number":55,"context_line":"        parser.add_argument("},{"line_number":56,"context_line":"            \"--host\","}],"source_content_type":"text/x-python","patch_set":3,"id":"71da6f14_3b1c3e9f","line":53,"in_reply_to":"bb141252_2b107b36","updated":"2023-02-17 13:02:55.000000000","message":"Okay, good to know,","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":true,"context_lines":[{"line_number":56,"context_line":"            \"--host\","},{"line_number":57,"context_line":"            metavar\u003d\"\u003chost\u003e\","},{"line_number":58,"context_line":"            default\u003dNone,"},{"line_number":59,"context_line":"            help\u003d_(\"Host where the service resides. (name only)\")"},{"line_number":60,"context_line":"        )"},{"line_number":61,"context_line":"        parser.add_argument("},{"line_number":62,"context_line":"            \u0027--binary\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5b751d69_d38c119d","line":59,"updated":"2023-02-16 18:13:58.000000000","message":"Ditto","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6759a0526242271c9b1a8b1e5a22e4ee697cbb06","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            \"--host\","},{"line_number":57,"context_line":"            metavar\u003d\"\u003chost\u003e\","},{"line_number":58,"context_line":"            default\u003dNone,"},{"line_number":59,"context_line":"            help\u003d_(\"Host where the service resides. (name only)\")"},{"line_number":60,"context_line":"        )"},{"line_number":61,"context_line":"        parser.add_argument("},{"line_number":62,"context_line":"            \u0027--binary\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1915c8dd_ca073f66","line":59,"in_reply_to":"39ffac88_1f7dd6f5","updated":"2023-02-17 13:02:55.000000000","message":"Ack","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":true,"context_lines":[{"line_number":56,"context_line":"            \"--host\","},{"line_number":57,"context_line":"            metavar\u003d\"\u003chost\u003e\","},{"line_number":58,"context_line":"            default\u003dNone,"},{"line_number":59,"context_line":"            help\u003d_(\"Host where the service resides. (name only)\")"},{"line_number":60,"context_line":"        )"},{"line_number":61,"context_line":"        parser.add_argument("},{"line_number":62,"context_line":"            \u0027--binary\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"39ffac88_1f7dd6f5","line":59,"in_reply_to":"5b751d69_d38c119d","updated":"2023-02-17 12:22:29.000000000","message":"Host is not an actual resource in cinder but a format which is HOST@BACKEND#POOL.","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":true,"context_lines":[{"line_number":74,"context_line":"                \u0027be up, if set to false services need to be down. \u0027"},{"line_number":75,"context_line":"                \u0027Default is None, which means up/down status is ignored.\u0027"},{"line_number":76,"context_line":"            )"},{"line_number":77,"context_line":"        )"},{"line_number":78,"context_line":"        parser.add_argument("},{"line_number":79,"context_line":"            \u0027--disabled\u0027,"},{"line_number":80,"context_line":"            metavar\u003d\u0027\u003cTrue|true|False|false\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"07b18977_1fa4dc1d","line":77,"updated":"2023-02-16 18:13:58.000000000","message":"Oh, we don\u0027t do this. We do boolean sets.\n\n  --up\n  --down\n\nThe default would be neither, obviously.","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":false,"context_lines":[{"line_number":74,"context_line":"                \u0027be up, if set to false services need to be down. \u0027"},{"line_number":75,"context_line":"                \u0027Default is None, which means up/down status is ignored.\u0027"},{"line_number":76,"context_line":"            )"},{"line_number":77,"context_line":"        )"},{"line_number":78,"context_line":"        parser.add_argument("},{"line_number":79,"context_line":"            \u0027--disabled\u0027,"},{"line_number":80,"context_line":"            metavar\u003d\u0027\u003cTrue|true|False|false\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"6cf7afc8_4969aec1","line":77,"in_reply_to":"07b18977_1fa4dc1d","updated":"2023-02-17 12:22:29.000000000","message":"Done","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":true,"context_lines":[{"line_number":80,"context_line":"            metavar\u003d\u0027\u003cTrue|true|False|false\u003e\u0027,"},{"line_number":81,"context_line":"            default\u003dNone,"},{"line_number":82,"context_line":"            help\u003d_(\u0027Filter by disabled status.\u0027)"},{"line_number":83,"context_line":"        )"},{"line_number":84,"context_line":"        parser.add_argument("},{"line_number":85,"context_line":"            \u0027--resource-id\u0027,"},{"line_number":86,"context_line":"            metavar\u003d\u0027\u003cresource-id\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"2c97278d_f287a57b","line":83,"updated":"2023-02-16 18:13:58.000000000","message":"Ditto. This should be\n\n  --enabled\n  --disabled","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            metavar\u003d\u0027\u003cTrue|true|False|false\u003e\u0027,"},{"line_number":81,"context_line":"            default\u003dNone,"},{"line_number":82,"context_line":"            help\u003d_(\u0027Filter by disabled status.\u0027)"},{"line_number":83,"context_line":"        )"},{"line_number":84,"context_line":"        parser.add_argument("},{"line_number":85,"context_line":"            \u0027--resource-id\u0027,"},{"line_number":86,"context_line":"            metavar\u003d\u0027\u003cresource-id\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"6d826745_daada337","line":83,"in_reply_to":"2c97278d_f287a57b","updated":"2023-02-17 12:22:29.000000000","message":"Done","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            type\u003dint,"},{"line_number":99,"context_line":"            default\u003dNone,"},{"line_number":100,"context_line":"            help\u003d_("},{"line_number":101,"context_line":"                \u0027The service id field from the DB, not the uuid of the \u0027"},{"line_number":102,"context_line":"                \u0027service.\u0027"},{"line_number":103,"context_line":"            )"},{"line_number":104,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"093dfab0_873759c8","line":101,"range":{"start_line":101,"start_character":29,"end_line":101,"end_character":31},"updated":"2023-02-16 18:13:58.000000000","message":"nit: ID","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            type\u003dint,"},{"line_number":99,"context_line":"            default\u003dNone,"},{"line_number":100,"context_line":"            help\u003d_("},{"line_number":101,"context_line":"                \u0027The service id field from the DB, not the uuid of the \u0027"},{"line_number":102,"context_line":"                \u0027service.\u0027"},{"line_number":103,"context_line":"            )"},{"line_number":104,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"5103d71c_bf488c59","line":101,"range":{"start_line":101,"start_character":59,"end_line":101,"end_character":63},"updated":"2023-02-16 18:13:58.000000000","message":"nit: UUID","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            type\u003dint,"},{"line_number":99,"context_line":"            default\u003dNone,"},{"line_number":100,"context_line":"            help\u003d_("},{"line_number":101,"context_line":"                \u0027The service id field from the DB, not the uuid of the \u0027"},{"line_number":102,"context_line":"                \u0027service.\u0027"},{"line_number":103,"context_line":"            )"},{"line_number":104,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"6e173e38_cae8993f","line":101,"range":{"start_line":101,"start_character":29,"end_line":101,"end_character":31},"in_reply_to":"093dfab0_873759c8","updated":"2023-02-17 12:22:29.000000000","message":"Done","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            type\u003dint,"},{"line_number":99,"context_line":"            default\u003dNone,"},{"line_number":100,"context_line":"            help\u003d_("},{"line_number":101,"context_line":"                \u0027The service id field from the DB, not the uuid of the \u0027"},{"line_number":102,"context_line":"                \u0027service.\u0027"},{"line_number":103,"context_line":"            )"},{"line_number":104,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fe6e8d7_1dfe4e66","line":101,"range":{"start_line":101,"start_character":59,"end_line":101,"end_character":63},"in_reply_to":"5103d71c_bf488c59","updated":"2023-02-17 12:22:29.000000000","message":"Done","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":true,"context_lines":[{"line_number":99,"context_line":"            default\u003dNone,"},{"line_number":100,"context_line":"            help\u003d_("},{"line_number":101,"context_line":"                \u0027The service id field from the DB, not the uuid of the \u0027"},{"line_number":102,"context_line":"                \u0027service.\u0027"},{"line_number":103,"context_line":"            )"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":3,"id":"b119ebc0_ffde65e8","line":102,"updated":"2023-02-16 18:13:58.000000000","message":"Rather than insisting on this, can we be smarter and query the services API if we\u0027re given a UUID?\n\n  if parsed_args.service:\n      if parsed_args.service.isdigit():\n          # use verbatim\n          service_id \u003d parsed_args.service\n      else:\n          service_id \u003d utils.find_resource(\n              volume_client.services,\n              parsed_args.service,\n          ).id\n\n...assuming we expose the ID via the API. I didn\u0027t check.","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"6759a0526242271c9b1a8b1e5a22e4ee697cbb06","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            default\u003dNone,"},{"line_number":100,"context_line":"            help\u003d_("},{"line_number":101,"context_line":"                \u0027The service id field from the DB, not the uuid of the \u0027"},{"line_number":102,"context_line":"                \u0027service.\u0027"},{"line_number":103,"context_line":"            )"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":3,"id":"cad9c94f_86ed3491","line":102,"in_reply_to":"2e0a4bf3_6f5250d2","updated":"2023-02-17 13:02:55.000000000","message":"Oof, not something we can fix here but this feels like an oversight in the cinder API that is probably worthy of a future microversion. Thanks for looking into it.","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":true,"context_lines":[{"line_number":99,"context_line":"            default\u003dNone,"},{"line_number":100,"context_line":"            help\u003d_("},{"line_number":101,"context_line":"                \u0027The service id field from the DB, not the uuid of the \u0027"},{"line_number":102,"context_line":"                \u0027service.\u0027"},{"line_number":103,"context_line":"            )"},{"line_number":104,"context_line":"        )"},{"line_number":105,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":3,"id":"2e0a4bf3_6f5250d2","line":102,"in_reply_to":"b119ebc0_ffde65e8","updated":"2023-02-17 12:22:29.000000000","message":"This took some time to find out.\nSo we have a UUID field in the DB[1] but it is used nowhere.\nThere was a DB migration to add this field[2] and another patch to add DB methods to fetch service by UUID[3] but I haven\u0027t been able to find any place where that DB method is called (the cinder Service OVO calls it but nobody calls Service OVO\u0027s method).\nTwo things here:\n1) we can\u0027t fetch a service by ID because the cleanup object uses the integer field to make DB request[4]\n2) The service APIs doesn\u0027t return service UUID[5]\n\n[1] https://github.com/openstack/cinder/blob/master/cinder/db/sqlalchemy/models.py#L75\n[2] https://review.opendev.org/c/openstack/cinder/+/508209\n[3] https://review.opendev.org/c/openstack/cinder/+/510201\n[4] https://github.com/openstack/cinder/blob/d6fd72b47d2b19794afb0865f4c9cdabc299788b/cinder/objects/cleanup_request.py#L29\n[5] https://docs.openstack.org/api-ref/block-storage/v3/?expanded\u003dshow-cluster-details-detail,list-all-cinder-services-detail#list-all-cinder-services","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"62e6133f48430fccea8af7333feeead9baf7843b","unresolved":true,"context_lines":[{"line_number":122,"context_line":"            disabled\u003dparsed_args.disabled,"},{"line_number":123,"context_line":"            resource_id\u003dparsed_args.resource_id,"},{"line_number":124,"context_line":"            resource_type\u003dparsed_args.resource_type,"},{"line_number":125,"context_line":"            service_id\u003dparsed_args.service_id)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        filters \u003d {k: v for k, v in filters.items() if v is not None}"},{"line_number":128,"context_line":"        cleaning, unavailable \u003d volume_client.workers.clean(**filters)"}],"source_content_type":"text/x-python","patch_set":3,"id":"4719abb0_ca22eeff","line":125,"updated":"2023-02-16 18:13:58.000000000","message":"style nit: any chance of using dict literals instead? Personal preference, admittedly, but they\u0027re a little more \"obvious\"","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7037eff010c2219950f4f8659ac2304924425d57","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            disabled\u003dparsed_args.disabled,"},{"line_number":123,"context_line":"            resource_id\u003dparsed_args.resource_id,"},{"line_number":124,"context_line":"            resource_type\u003dparsed_args.resource_type,"},{"line_number":125,"context_line":"            service_id\u003dparsed_args.service_id)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        filters \u003d {k: v for k, v in filters.items() if v is not None}"},{"line_number":128,"context_line":"        cleaning, unavailable \u003d volume_client.workers.clean(**filters)"}],"source_content_type":"text/x-python","patch_set":3,"id":"f7ef2126_a07227b7","line":125,"in_reply_to":"4719abb0_ca22eeff","updated":"2023-02-17 12:22:29.000000000","message":"Done","commit_id":"0ef814d5b71888452f9e9169f876485604db3353"}]}
