)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"b8640a334efb5349f232df9f101124c3424642e0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6a906a6e_68a32e1a","updated":"2026-09-16 06:27:53.000000000","message":"recheck tempest-slow-py3 failure","commit_id":"982cd1efc9a3019c05efdb3717f8473ab7da9b1f"},{"author":{"_account_id":36743,"name":"ranikim","display_name":"jihyeonkim","email":"jh011.kim@samsung.com","username":"ranikim"},"change_message_id":"1b27bb391d08f3d9de5fad9b247ed4b9d0de06a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"e6efcdea_7e135567","updated":"2026-09-17 13:22:29.000000000","message":"Thanks for the update. The JSON parsing now preserves the PowerMax-style extra-spec key, and the added tests cover both the parsing and create_volume_type path. I ran `tox -e py -- tempest.tests.test_scenario_manager` and `tox -e pep8` locally; both passed.","commit_id":"76bb8ad57d0e0afa5a2bec013228179680c62015"}],"tempest/config.py":[{"author":{"_account_id":36743,"name":"ranikim","display_name":"jihyeonkim","email":"jh011.kim@samsung.com","username":"ranikim"},"change_message_id":"8b9c0d8bfb34b4227faa61527325a602b1472081","unresolved":true,"context_lines":[{"line_number":1106,"context_line":"                    \"If both values are not specified, Tempest avoids tests \""},{"line_number":1107,"context_line":"                    \"which require a microversion. Valid values are string \""},{"line_number":1108,"context_line":"                    \"with format \u0027X.Y\u0027 or string \u0027latest\u0027\",),"},{"line_number":1109,"context_line":"    cfg.DictOpt(\u0027dynamic_volume_type_extra_specs\u0027,"},{"line_number":1110,"context_line":"                default\u003d{},"},{"line_number":1111,"context_line":"                help\u003d\u0027Dictionary of extra specs to apply to dynamically \u0027"},{"line_number":1112,"context_line":"                     \u0027created volume types. Format: {\"key\": \"value\"} \u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ab55a146_04400a5f","line":1109,"updated":"2026-09-17 11:56:26.000000000","message":"I tried parsing these values with `DictOpt`. The JSON example in the help text becomes `{\u0027{\"key\"\u0027: \u0027\"value\"}\u0027}` instead of `{\u0027key\u0027: \u0027value\u0027}`, and `storagetype:portgroupname:my-port-group` becomes `{\u0027storagetype\u0027: \u0027portgroupname:my-port-group\u0027}`. This changes the PowerMax extra-spec key before it is passed to Cinder.\n\nCould we use a representation that preserves `:` in keys and add a test for this case?","commit_id":"982cd1efc9a3019c05efdb3717f8473ab7da9b1f"},{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"1822fdab3ee0a9e3893fd802e0ad73d2300e24de","unresolved":true,"context_lines":[{"line_number":1106,"context_line":"                    \"If both values are not specified, Tempest avoids tests \""},{"line_number":1107,"context_line":"                    \"which require a microversion. Valid values are string \""},{"line_number":1108,"context_line":"                    \"with format \u0027X.Y\u0027 or string \u0027latest\u0027\",),"},{"line_number":1109,"context_line":"    cfg.DictOpt(\u0027dynamic_volume_type_extra_specs\u0027,"},{"line_number":1110,"context_line":"                default\u003d{},"},{"line_number":1111,"context_line":"                help\u003d\u0027Dictionary of extra specs to apply to dynamically \u0027"},{"line_number":1112,"context_line":"                     \u0027created volume types. Format: {\"key\": \"value\"} \u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"dbcb9a2f_9b6b062b","line":1109,"in_reply_to":"ab55a146_04400a5f","updated":"2026-09-17 12:03:28.000000000","message":"Thanks for catching this. DictOpt treats `:` as the key/value\nseparator, so it cannot preserve Cinder extra-spec keys containing\ncolons. I will change the option to StrOpt containing a JSON object and\nexplicitly decode it before passing the extra specs to Cinder. I will\nalso add a test using\n`{\"storagetype:portgroupname\": \"my-port-group\"}` to verify that the\ncomplete key is preserved.","commit_id":"982cd1efc9a3019c05efdb3717f8473ab7da9b1f"},{"author":{"_account_id":31779,"name":"Jean Pierre Roquesalane","display_name":"happystacker","email":"jeanpierre.roquesalane@dell.com","username":"happystacker"},"change_message_id":"803339f8e6f12d29a515b140f343b0aa46ef3d06","unresolved":false,"context_lines":[{"line_number":1106,"context_line":"                    \"If both values are not specified, Tempest avoids tests \""},{"line_number":1107,"context_line":"                    \"which require a microversion. Valid values are string \""},{"line_number":1108,"context_line":"                    \"with format \u0027X.Y\u0027 or string \u0027latest\u0027\",),"},{"line_number":1109,"context_line":"    cfg.DictOpt(\u0027dynamic_volume_type_extra_specs\u0027,"},{"line_number":1110,"context_line":"                default\u003d{},"},{"line_number":1111,"context_line":"                help\u003d\u0027Dictionary of extra specs to apply to dynamically \u0027"},{"line_number":1112,"context_line":"                     \u0027created volume types. Format: {\"key\": \"value\"} \u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"bea8b61e_b53c3f25","line":1109,"in_reply_to":"dbcb9a2f_9b6b062b","updated":"2026-09-17 12:55:30.000000000","message":"Done","commit_id":"982cd1efc9a3019c05efdb3717f8473ab7da9b1f"}]}
