)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"31d938f522487ec997668ef5d8c5431d4301fb4c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"b3949a9b_53d7c85e","updated":"2024-06-10 14:51:06.000000000","message":"recheck functional test fix merged now","commit_id":"9efc0a02786796dc0c66740a76ca88eabce148fd"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"daa381930e93142fc33cff218b2243e8dba1af6c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0e46be23_7d82871e","updated":"2024-06-05 07:38:52.000000000","message":"recheck unrelated failure in test_volume_attachment","commit_id":"9efc0a02786796dc0c66740a76ca88eabce148fd"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"2d360fd543b2d1208fba6545c0a183c4a2b13615","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"9026f9bb_d49d4c6d","updated":"2024-07-05 06:08:06.000000000","message":"recheck unrelated job openstacksdk-functional-devstack-networking-ext failed","commit_id":"353ef831c8b684b4e94f51cb9a29712509899386"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"7ed0333a_b3054a5a","updated":"2024-09-10 13:40:19.000000000","message":"On closer inspection, there\u0027s quite a lot of work needed here still, I\u0027m afraid 😞","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"71d61358f672efb4eb81618e7b0edc0dda4dc5bd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"87c14d35_ce0f6b42","updated":"2024-09-10 13:13:58.000000000","message":"There\u0027s an empty functional test file. Did you forget to populate that? I think it would be useful to add it since it proves that things \"actually work\".","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a80a8381_977987b5","updated":"2024-09-19 10:19:28.000000000","message":"Thanks Stephen","commit_id":"3dc5a10a8af6fa6c2fbcfb6cd324db21fd8650de"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2502adce4d41dc763a52b0dc82a3159d02dbccf6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"17b810d5_5808b17a","updated":"2024-09-19 17:16:03.000000000","message":"Couple of comments on the functional test, but this is looking much better.","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"617fbf7db3f586d64ae329ac4d8f0e78487f28b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"4d979743_31ca0da2","updated":"2024-09-20 08:37:09.000000000","message":"Thanks Stephen","commit_id":"51d1d7872a7d0f5cde8855c27371b7c7bc665d10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3dfe1ebf7b2842b7704122815bf80a0504e09636","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"b2890f05_59ab2edc","updated":"2024-12-18 08:40:49.000000000","message":"Thanks Stephen, can you take another look at this patch?","commit_id":"1cc397991d5f089b348f963ab12f9b0200c289f4"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"7f2cfe8b85b984cd1550865a0bbedfcba5edb252","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"4a9560fa_f35288bf","updated":"2024-10-06 11:02:49.000000000","message":"recheck compute and attachment tests failed which are unrelated to this patch","commit_id":"1cc397991d5f089b348f963ab12f9b0200c289f4"}],"openstack/block_storage/v3/_proxy.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":540,"context_line":""},{"line_number":541,"context_line":"        :returns: List of default types associated to projects."},{"line_number":542,"context_line":"        \"\"\""},{"line_number":543,"context_line":"        res \u003d self._get(_default_type.DefaultType, requires_id\u003dFalse)"},{"line_number":544,"context_line":"        return res.list_default_types(self)"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"    def show_default_type(self, project_id):"},{"line_number":547,"context_line":"        \"\"\"Show default type for a project."}],"source_content_type":"text/x-python","patch_set":6,"id":"cab1870c_4fd03360","line":544,"range":{"start_line":543,"start_character":0,"end_line":544,"end_character":43},"updated":"2024-09-10 13:40:19.000000000","message":"Based on comments on the next file, you should just be able to call:\n\n\n```suggestion\n        return self._list(_default_type.DefaultType)\n```","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":540,"context_line":""},{"line_number":541,"context_line":"        :returns: List of default types associated to projects."},{"line_number":542,"context_line":"        \"\"\""},{"line_number":543,"context_line":"        res \u003d self._get(_default_type.DefaultType, requires_id\u003dFalse)"},{"line_number":544,"context_line":"        return res.list_default_types(self)"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"    def show_default_type(self, project_id):"},{"line_number":547,"context_line":"        \"\"\"Show default type for a project."}],"source_content_type":"text/x-python","patch_set":6,"id":"55a2490f_0efd74b4","line":544,"range":{"start_line":543,"start_character":0,"end_line":544,"end_character":43},"in_reply_to":"cab1870c_4fd03360","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":543,"context_line":"        res \u003d self._get(_default_type.DefaultType, requires_id\u003dFalse)"},{"line_number":544,"context_line":"        return res.list_default_types(self)"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"    def show_default_type(self, project_id):"},{"line_number":547,"context_line":"        \"\"\"Show default type for a project."},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"        :param str project_id: The ID of the project to get the default"}],"source_content_type":"text/x-python","patch_set":6,"id":"a2cb2a5a_8812370b","line":546,"range":{"start_line":546,"start_character":32,"end_line":546,"end_character":42},"updated":"2024-09-10 13:40:19.000000000","message":"```suggestion\n    def show_default_type(self, project):\n```","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":543,"context_line":"        res \u003d self._get(_default_type.DefaultType, requires_id\u003dFalse)"},{"line_number":544,"context_line":"        return res.list_default_types(self)"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"    def show_default_type(self, project_id):"},{"line_number":547,"context_line":"        \"\"\"Show default type for a project."},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"        :param str project_id: The ID of the project to get the default"}],"source_content_type":"text/x-python","patch_set":6,"id":"bc4f21cc_8cab705d","line":546,"range":{"start_line":546,"start_character":32,"end_line":546,"end_character":42},"in_reply_to":"a2cb2a5a_8812370b","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":546,"context_line":"    def show_default_type(self, project_id):"},{"line_number":547,"context_line":"        \"\"\"Show default type for a project."},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"        :param str project_id: The ID of the project to get the default"},{"line_number":550,"context_line":"            volume type for."},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"        :returns: Default type associated to a project."},{"line_number":553,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"b1fb82f9_af4f370b","line":550,"range":{"start_line":549,"start_character":0,"end_line":550,"end_character":28},"updated":"2024-09-10 13:40:19.000000000","message":"```suggestion\n        :param project: The value can be either the ID of a project or a\n            :class:`~openstack.identity.v3.project.Project` instance.\n```","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":546,"context_line":"    def show_default_type(self, project_id):"},{"line_number":547,"context_line":"        \"\"\"Show default type for a project."},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"        :param str project_id: The ID of the project to get the default"},{"line_number":550,"context_line":"            volume type for."},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"        :returns: Default type associated to a project."},{"line_number":553,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"c5488ab8_82dfa014","line":550,"range":{"start_line":549,"start_character":0,"end_line":550,"end_character":28},"in_reply_to":"b1fb82f9_af4f370b","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":551,"context_line":""},{"line_number":552,"context_line":"        :returns: Default type associated to a project."},{"line_number":553,"context_line":"        \"\"\""},{"line_number":554,"context_line":"        res \u003d self._get(_default_type.DefaultType, requires_id\u003dFalse)"},{"line_number":555,"context_line":"        return res.show_default_type(self, project_id)"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"    def set_default_type(self, type, project_id):"},{"line_number":558,"context_line":"        \"\"\"Set default type for a project."}],"source_content_type":"text/x-python","patch_set":6,"id":"cbf792c5_09c9f43d","line":555,"range":{"start_line":554,"start_character":0,"end_line":555,"end_character":54},"updated":"2024-09-10 13:40:19.000000000","message":"```suggestion\n        project_id \u003d resource.Resource._get_id(project)\n        return self._get(_default_type.DefaultType, project_id)\n```","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":551,"context_line":""},{"line_number":552,"context_line":"        :returns: Default type associated to a project."},{"line_number":553,"context_line":"        \"\"\""},{"line_number":554,"context_line":"        res \u003d self._get(_default_type.DefaultType, requires_id\u003dFalse)"},{"line_number":555,"context_line":"        return res.show_default_type(self, project_id)"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"    def set_default_type(self, type, project_id):"},{"line_number":558,"context_line":"        \"\"\"Set default type for a project."}],"source_content_type":"text/x-python","patch_set":6,"id":"73c3f22d_671f2d43","line":555,"range":{"start_line":554,"start_character":0,"end_line":555,"end_character":54},"in_reply_to":"cbf792c5_09c9f43d","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":554,"context_line":"        res \u003d self._get(_default_type.DefaultType, requires_id\u003dFalse)"},{"line_number":555,"context_line":"        return res.show_default_type(self, project_id)"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"    def set_default_type(self, type, project_id):"},{"line_number":558,"context_line":"        \"\"\"Set default type for a project."},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"        :param type: The value can be either the ID of a type or a"}],"source_content_type":"text/x-python","patch_set":6,"id":"0c6ccb4d_912ba268","line":557,"updated":"2024-09-10 13:40:19.000000000","message":"Project is \"higher level\" so we should put that first.\n\n```suggestion\n    def set_default_type(self, project, type):\n```","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        res \u003d self._get(_default_type.DefaultType, requires_id\u003dFalse)"},{"line_number":555,"context_line":"        return res.show_default_type(self, project_id)"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"    def set_default_type(self, type, project_id):"},{"line_number":558,"context_line":"        \"\"\"Set default type for a project."},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"        :param type: The value can be either the ID of a type or a"}],"source_content_type":"text/x-python","patch_set":6,"id":"06f86496_47d34d16","line":557,"in_reply_to":"0c6ccb4d_912ba268","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":557,"context_line":"    def set_default_type(self, type, project_id):"},{"line_number":558,"context_line":"        \"\"\"Set default type for a project."},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"        :param type: The value can be either the ID of a type or a"},{"line_number":561,"context_line":"            :class:`~openstack.block_storage.v3.type.Type` instance."},{"line_number":562,"context_line":"        :param str project_id: The ID of the project to set the default"},{"line_number":563,"context_line":"            volume type for."},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        :returns: Dictionary of project ID and it\u0027s associated default type."},{"line_number":566,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"d2ee71dd_635d0629","line":563,"range":{"start_line":560,"start_character":0,"end_line":563,"end_character":28},"updated":"2024-09-10 13:40:19.000000000","message":"```suggestion\n        :param project: The value can be either the ID of a project or a\n            :class:`~openstack.identity.v3.project.Project` instance.\n        :param type: The value can be either the ID of a type or a\n            :class:`~openstack.block_storage.v3.type.Type` instance.\n```","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":557,"context_line":"    def set_default_type(self, type, project_id):"},{"line_number":558,"context_line":"        \"\"\"Set default type for a project."},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"        :param type: The value can be either the ID of a type or a"},{"line_number":561,"context_line":"            :class:`~openstack.block_storage.v3.type.Type` instance."},{"line_number":562,"context_line":"        :param str project_id: The ID of the project to set the default"},{"line_number":563,"context_line":"            volume type for."},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        :returns: Dictionary of project ID and it\u0027s associated default type."},{"line_number":566,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"8b1fa641_0cdb7e54","line":563,"range":{"start_line":560,"start_character":0,"end_line":563,"end_character":28},"in_reply_to":"d2ee71dd_635d0629","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        :returns: Dictionary of project ID and it\u0027s associated default type."},{"line_number":566,"context_line":"        \"\"\""},{"line_number":567,"context_line":"        res \u003d self._get_resource(_default_type.DefaultType, type)"},{"line_number":568,"context_line":"        return res.set_default_type(self, project_id, type)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def unset_default_type(self, project_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ae17b13_6695d819","line":567,"updated":"2024-09-10 13:40:19.000000000","message":"This is a type, not a default type. You\u0027re looking for the wrong thing.\n\n```suggestion\n        type_id \u003d resource.Resource._get_id(type)\n        project_id \u003d resource.Resource._get_id(project)\n        return self._create(\n            _default_type.DefaultType,\n            id\u003dproject_id,\n            volume_type\u003dtype_id,\n        )\n```","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        :returns: Dictionary of project ID and it\u0027s associated default type."},{"line_number":566,"context_line":"        \"\"\""},{"line_number":567,"context_line":"        res \u003d self._get_resource(_default_type.DefaultType, type)"},{"line_number":568,"context_line":"        return res.set_default_type(self, project_id, type)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def unset_default_type(self, project_id):"}],"source_content_type":"text/x-python","patch_set":6,"id":"223ef5ca_47499fa8","line":567,"in_reply_to":"5ae17b13_6695d819","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":567,"context_line":"        res \u003d self._get_resource(_default_type.DefaultType, type)"},{"line_number":568,"context_line":"        return res.set_default_type(self, project_id, type)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def unset_default_type(self, project_id):"},{"line_number":571,"context_line":"        \"\"\"Unset default type for a project."},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        :param type: The value can be either the ID of a type or a"}],"source_content_type":"text/x-python","patch_set":6,"id":"91a47240_c454a6b7","line":570,"range":{"start_line":570,"start_character":33,"end_line":570,"end_character":43},"updated":"2024-09-10 13:40:19.000000000","message":"```suggestion\n    def unset_default_type(self, project):\n```","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":567,"context_line":"        res \u003d self._get_resource(_default_type.DefaultType, type)"},{"line_number":568,"context_line":"        return res.set_default_type(self, project_id, type)"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"    def unset_default_type(self, project_id):"},{"line_number":571,"context_line":"        \"\"\"Unset default type for a project."},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        :param type: The value can be either the ID of a type or a"}],"source_content_type":"text/x-python","patch_set":6,"id":"2b7d3341_1e03d1d6","line":570,"range":{"start_line":570,"start_character":33,"end_line":570,"end_character":43},"in_reply_to":"91a47240_c454a6b7","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":570,"context_line":"    def unset_default_type(self, project_id):"},{"line_number":571,"context_line":"        \"\"\"Unset default type for a project."},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        :param type: The value can be either the ID of a type or a"},{"line_number":574,"context_line":"            :class:`~openstack.block_storage.v3.type.Type` instance."},{"line_number":575,"context_line":"        :param str project_id: The ID of the project to unset the default"},{"line_number":576,"context_line":"            volume type for."},{"line_number":577,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e0eac01c_7033e882","line":574,"range":{"start_line":573,"start_character":0,"end_line":574,"end_character":68},"updated":"2024-09-10 13:40:19.000000000","message":"Drop this: there\u0027s no `type` parameter.","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":570,"context_line":"    def unset_default_type(self, project_id):"},{"line_number":571,"context_line":"        \"\"\"Unset default type for a project."},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        :param type: The value can be either the ID of a type or a"},{"line_number":574,"context_line":"            :class:`~openstack.block_storage.v3.type.Type` instance."},{"line_number":575,"context_line":"        :param str project_id: The ID of the project to unset the default"},{"line_number":576,"context_line":"            volume type for."},{"line_number":577,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"c5def5f5_a6f184bc","line":574,"range":{"start_line":573,"start_character":0,"end_line":574,"end_character":68},"in_reply_to":"e0eac01c_7033e882","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        :param type: The value can be either the ID of a type or a"},{"line_number":574,"context_line":"            :class:`~openstack.block_storage.v3.type.Type` instance."},{"line_number":575,"context_line":"        :param str project_id: The ID of the project to unset the default"},{"line_number":576,"context_line":"            volume type for."},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        :returns: ``None``"},{"line_number":579,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"0ba53c0f_6e6e9eab","line":576,"range":{"start_line":575,"start_character":0,"end_line":576,"end_character":28},"updated":"2024-09-10 13:40:19.000000000","message":"```suggestion\n        :param project: The value can be either the ID of a project or a\n            :class:`~openstack.identity.v3.project.Project` instance.\n```","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":572,"context_line":""},{"line_number":573,"context_line":"        :param type: The value can be either the ID of a type or a"},{"line_number":574,"context_line":"            :class:`~openstack.block_storage.v3.type.Type` instance."},{"line_number":575,"context_line":"        :param str project_id: The ID of the project to unset the default"},{"line_number":576,"context_line":"            volume type for."},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        :returns: ``None``"},{"line_number":579,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"0e85ba4a_294073b0","line":576,"range":{"start_line":575,"start_character":0,"end_line":576,"end_character":28},"in_reply_to":"0ba53c0f_6e6e9eab","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        :returns: ``None``"},{"line_number":579,"context_line":"        \"\"\""},{"line_number":580,"context_line":"        res \u003d self._get_resource(_default_type.DefaultType, type)"},{"line_number":581,"context_line":"        return res.unset_default_type(self, project_id)"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"    # \u003d\u003d\u003d\u003d\u003d\u003d VOLUMES \u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-python","patch_set":6,"id":"f961bd38_438a799e","line":580,"updated":"2024-09-10 13:40:19.000000000","message":"NOTE: `type` is undefined here. The fact this slipped through suggests functional tests would be helpful here 😄","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        :returns: ``None``"},{"line_number":579,"context_line":"        \"\"\""},{"line_number":580,"context_line":"        res \u003d self._get_resource(_default_type.DefaultType, type)"},{"line_number":581,"context_line":"        return res.unset_default_type(self, project_id)"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"    # \u003d\u003d\u003d\u003d\u003d\u003d VOLUMES \u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-python","patch_set":6,"id":"d7cf1ccb_ea591b85","line":580,"in_reply_to":"f961bd38_438a799e","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        :returns: ``None``"},{"line_number":579,"context_line":"        \"\"\""},{"line_number":580,"context_line":"        res \u003d self._get_resource(_default_type.DefaultType, type)"},{"line_number":581,"context_line":"        return res.unset_default_type(self, project_id)"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"    # \u003d\u003d\u003d\u003d\u003d\u003d VOLUMES \u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":584,"context_line":"    def get_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":6,"id":"563f5833_16e8995d","line":581,"range":{"start_line":580,"start_character":0,"end_line":581,"end_character":55},"updated":"2024-09-10 13:40:19.000000000","message":"```suggestion\n        project_id \u003d resource.Resource._get_id(project)\n        self._delete(_default_type.DefaultType, project_id)\n```","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        :returns: ``None``"},{"line_number":579,"context_line":"        \"\"\""},{"line_number":580,"context_line":"        res \u003d self._get_resource(_default_type.DefaultType, type)"},{"line_number":581,"context_line":"        return res.unset_default_type(self, project_id)"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":"    # \u003d\u003d\u003d\u003d\u003d\u003d VOLUMES \u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":584,"context_line":"    def get_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":6,"id":"86a309b4_5b16a278","line":581,"range":{"start_line":580,"start_character":0,"end_line":581,"end_character":55},"in_reply_to":"563f5833_16e8995d","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"d32dd148640277ccd97bc934d5324d35cfe10dd2","unresolved":true,"context_lines":[{"line_number":543,"context_line":""},{"line_number":544,"context_line":"        :returns: List of default types associated to projects."},{"line_number":545,"context_line":"        \"\"\""},{"line_number":546,"context_line":"        return self._list(_default_type.DefaultType)"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    def show_default_type(self, project):"},{"line_number":549,"context_line":"        \"\"\"Show default type for a project."}],"source_content_type":"text/x-python","patch_set":8,"id":"6a9c3a76_22b78608","line":546,"updated":"2024-09-19 17:24:28.000000000","message":"If I try to run this, I get the following:\n\n```\n\u003e\u003e\u003e import openstack\n\u003e\u003e\u003e conn \u003d openstack.connect(\u0027devstack-admin\u0027)\n\u003e\u003e\u003e list(conn.block_storage.default_types())\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  File \"/home/stephenfin/Development/openstack/openstacksdk/openstack/resource.py\", line 2100, in list\n    exceptions.raise_from_response(response)\n  File \"/home/stephenfin/Development/openstack/openstacksdk/openstack/exceptions.py\", line 244, in raise_from_response\n    raise cls(\nopenstack.exceptions.NotFoundException: NotFoundException: 404: Client Error for url: http://10.0.108.50/volume/v3/39dd709f93a242a5a0b2642ff9381040/default-types, The resource could not be found.\u003cbr /\u003e\u003cbr /\u003e\n```\n\nHave I missed something? This is bog-standard DevStack deployment with the auto-generated `clouds.yaml` file.\n\nLater: It seems this API (rather reasonably) does not expect project ID to be included in the URL https://docs.openstack.org/api-ref/block-storage/v3/#create-or-update-a-default-volume-type I wonder how we have tackled this elsewhere?","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"703aa8fa04f4db36dc2dd897af2b15fade8eed49","unresolved":true,"context_lines":[{"line_number":543,"context_line":""},{"line_number":544,"context_line":"        :returns: List of default types associated to projects."},{"line_number":545,"context_line":"        \"\"\""},{"line_number":546,"context_line":"        return self._list(_default_type.DefaultType)"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    def show_default_type(self, project):"},{"line_number":549,"context_line":"        \"\"\"Show default type for a project."}],"source_content_type":"text/x-python","patch_set":8,"id":"6c15bb1a_d632d255","line":546,"in_reply_to":"22214e26_2ad87dd5","updated":"2024-09-24 13:43:18.000000000","message":"That sounds good, yes.\n\n(A new microversion just for this would have been better but that ship has sailed 🚢)","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"aced04ef206fc443dc5a751093c50f02e4f0b1f0","unresolved":true,"context_lines":[{"line_number":543,"context_line":""},{"line_number":544,"context_line":"        :returns: List of default types associated to projects."},{"line_number":545,"context_line":"        \"\"\""},{"line_number":546,"context_line":"        return self._list(_default_type.DefaultType)"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    def show_default_type(self, project):"},{"line_number":549,"context_line":"        \"\"\"Show default type for a project."}],"source_content_type":"text/x-python","patch_set":8,"id":"22214e26_2ad87dd5","line":546,"in_reply_to":"45e8040a_8320c8f2","updated":"2024-09-24 13:15:03.000000000","message":"you are right, i missed that OSC and SDK support all openstack versions.\nThe changes in the cinder patch should have been part of MV 3.67 which is available in Yoga. since yoga and zed are unmaintained, I will propose backports till Antelope at least to maintain compatibility and add a check here for MV 3.67, does that sound good?","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"617fbf7db3f586d64ae329ac4d8f0e78487f28b3","unresolved":true,"context_lines":[{"line_number":543,"context_line":""},{"line_number":544,"context_line":"        :returns: List of default types associated to projects."},{"line_number":545,"context_line":"        \"\"\""},{"line_number":546,"context_line":"        return self._list(_default_type.DefaultType)"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    def show_default_type(self, project):"},{"line_number":549,"context_line":"        \"\"\"Show default type for a project."}],"source_content_type":"text/x-python","patch_set":8,"id":"a8352750_5e874180","line":546,"in_reply_to":"6a9c3a76_22b78608","updated":"2024-09-20 08:37:09.000000000","message":"You are right that it didn\u0027t expect a project_id BEFORE but now that is fixed in [1]. Can you check if the change in included in your deployment?\nAlso i tested similar set of commands in my env and it seems to be working fine.\n\n    \u003e\u003e\u003e import openstack\n    \u003e\u003e\u003e conn \u003d openstack.connect(\u0027devstack-admin\u0027)\n    \u003e\u003e\u003e list(conn.block_storage.default_types())\n    []\n\n\n[1] https://review.opendev.org/c/openstack/cinder/+/920308","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"3dfe1ebf7b2842b7704122815bf80a0504e09636","unresolved":false,"context_lines":[{"line_number":543,"context_line":""},{"line_number":544,"context_line":"        :returns: List of default types associated to projects."},{"line_number":545,"context_line":"        \"\"\""},{"line_number":546,"context_line":"        return self._list(_default_type.DefaultType)"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    def show_default_type(self, project):"},{"line_number":549,"context_line":"        \"\"\"Show default type for a project."}],"source_content_type":"text/x-python","patch_set":8,"id":"5660309d_7cfc009b","line":546,"in_reply_to":"6c15bb1a_d632d255","updated":"2024-12-18 08:40:49.000000000","message":"The patch is merged till 2023.1 (Antelope) and proposed for unmaintained branches (Zed and Yoga) as well.\n\nhttps://review.opendev.org/c/openstack/cinder/+/930863","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7dfa159dc97932c63f030380bacda1357559b20f","unresolved":true,"context_lines":[{"line_number":543,"context_line":""},{"line_number":544,"context_line":"        :returns: List of default types associated to projects."},{"line_number":545,"context_line":"        \"\"\""},{"line_number":546,"context_line":"        return self._list(_default_type.DefaultType)"},{"line_number":547,"context_line":""},{"line_number":548,"context_line":"    def show_default_type(self, project):"},{"line_number":549,"context_line":"        \"\"\"Show default type for a project."}],"source_content_type":"text/x-python","patch_set":8,"id":"45e8040a_8320c8f2","line":546,"in_reply_to":"a8352750_5e874180","updated":"2024-09-24 12:15:53.000000000","message":"Oh, that\u0027s not good. That change really feels like it should have gotten a microversion. As things stand, we have no way to discover whether the cloud has that patch or not, which means it\u0027s going to \"randomly\" fail on some clouds.\n\nWe can merge this as-is, but I think it would be better to leave some kind of breadcrumb here for when people invariably complain. Either or a comment or a try-catch-reraise with a warning?","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"}],"openstack/block_storage/v3/default_type.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e92d3cc61960091ab8e4a6349a5fd9a8192c2b7b","unresolved":true,"context_lines":[{"line_number":34,"context_line":"    #: The UUID for an existing volume type."},{"line_number":35,"context_line":"    volume_type_id \u003d resource.Body(\"volume_type_id\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def list_default_types(self, session):"},{"line_number":38,"context_line":"        \"\"\"List default volume types for projects."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        :param session: The session to use for making this request."},{"line_number":41,"context_line":"        :returns: Default types for projects."},{"line_number":42,"context_line":"        \"\"\""},{"line_number":43,"context_line":"        url \u003d self.base_path"},{"line_number":44,"context_line":"        microversion \u003d self._get_microversion(session, action\u003d\u0027fetch\u0027)"},{"line_number":45,"context_line":"        resp \u003d session.get(url, microversion\u003dmicroversion)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        exceptions.raise_from_response(resp)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        return resp.json().get(\"default_types\", [])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def show_default_type(self, session, project_id):"},{"line_number":52,"context_line":"        \"\"\"Show default volume type for a project."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        :param session: The session to use for making this request."},{"line_number":55,"context_line":"        :param project_id: The project to get default type for."},{"line_number":56,"context_line":"        :returns: Default type for a project."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        url \u003d utils.urljoin(self.base_path, project_id)"},{"line_number":59,"context_line":"        microversion \u003d self._get_microversion(session, action\u003d\u0027fetch\u0027)"},{"line_number":60,"context_line":"        resp \u003d session.get(url, microversion\u003dmicroversion)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        exceptions.raise_from_response(resp)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return resp.json().get(\"default_type\", [])"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def set_default_type(self, session, project_id, volume_type_id):"},{"line_number":67,"context_line":"        \"\"\"Set default volume type for a project."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        :param session: The session to use for making this request."},{"line_number":70,"context_line":"        :param project_id: The project to set default for."},{"line_number":71,"context_line":"        :returns: DefaultType object"},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        url \u003d utils.urljoin(self.base_path, project_id)"},{"line_number":74,"context_line":"        microversion \u003d self._get_microversion(session, action\u003d\u0027create\u0027)"},{"line_number":75,"context_line":"        body \u003d {\"default_type\": {\"volume_type\": volume_type_id}}"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        resp \u003d session.put(url, json\u003dbody, microversion\u003dmicroversion)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        exceptions.raise_from_response(resp)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # Since the DefaultType object also returns id, name and location,"},{"line_number":82,"context_line":"        # we just return the response dict here"},{"line_number":83,"context_line":"        return resp.json().get(\"default_type\", [])"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def unset_default_type(self, session, project_id):"},{"line_number":86,"context_line":"        \"\"\"Unset default volume type for a project."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        :param session: The session to use for making this request."},{"line_number":89,"context_line":"        :param project_id: The project to unset default for."},{"line_number":90,"context_line":"        \"\"\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        url \u003d utils.urljoin(self.base_path, project_id)"},{"line_number":93,"context_line":"        microversion \u003d self._get_microversion(session, action\u003d\u0027delete\u0027)"},{"line_number":94,"context_line":"        resp \u003d session.delete(url, microversion\u003dmicroversion)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        exceptions.raise_from_response(resp)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9cadc4ab_f3560976","line":96,"range":{"start_line":37,"start_character":0,"end_line":96,"end_character":44},"updated":"2024-09-10 13:40:19.000000000","message":"This is all wrong. `Resource` defines `list`, `fetch`, `delete` and `create` methods that you should be able to use. You should just use those. Can you delete these? You just need to indicate somewhere (likely the proxy layer) that the \"ID\" for a default type is actually a project ID.","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    #: The UUID for an existing volume type."},{"line_number":35,"context_line":"    volume_type_id \u003d resource.Body(\"volume_type_id\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def list_default_types(self, session):"},{"line_number":38,"context_line":"        \"\"\"List default volume types for projects."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        :param session: The session to use for making this request."},{"line_number":41,"context_line":"        :returns: Default types for projects."},{"line_number":42,"context_line":"        \"\"\""},{"line_number":43,"context_line":"        url \u003d self.base_path"},{"line_number":44,"context_line":"        microversion \u003d self._get_microversion(session, action\u003d\u0027fetch\u0027)"},{"line_number":45,"context_line":"        resp \u003d session.get(url, microversion\u003dmicroversion)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        exceptions.raise_from_response(resp)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        return resp.json().get(\"default_types\", [])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def show_default_type(self, session, project_id):"},{"line_number":52,"context_line":"        \"\"\"Show default volume type for a project."},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        :param session: The session to use for making this request."},{"line_number":55,"context_line":"        :param project_id: The project to get default type for."},{"line_number":56,"context_line":"        :returns: Default type for a project."},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":"        url \u003d utils.urljoin(self.base_path, project_id)"},{"line_number":59,"context_line":"        microversion \u003d self._get_microversion(session, action\u003d\u0027fetch\u0027)"},{"line_number":60,"context_line":"        resp \u003d session.get(url, microversion\u003dmicroversion)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        exceptions.raise_from_response(resp)"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        return resp.json().get(\"default_type\", [])"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def set_default_type(self, session, project_id, volume_type_id):"},{"line_number":67,"context_line":"        \"\"\"Set default volume type for a project."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        :param session: The session to use for making this request."},{"line_number":70,"context_line":"        :param project_id: The project to set default for."},{"line_number":71,"context_line":"        :returns: DefaultType object"},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        url \u003d utils.urljoin(self.base_path, project_id)"},{"line_number":74,"context_line":"        microversion \u003d self._get_microversion(session, action\u003d\u0027create\u0027)"},{"line_number":75,"context_line":"        body \u003d {\"default_type\": {\"volume_type\": volume_type_id}}"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        resp \u003d session.put(url, json\u003dbody, microversion\u003dmicroversion)"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        exceptions.raise_from_response(resp)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        # Since the DefaultType object also returns id, name and location,"},{"line_number":82,"context_line":"        # we just return the response dict here"},{"line_number":83,"context_line":"        return resp.json().get(\"default_type\", [])"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def unset_default_type(self, session, project_id):"},{"line_number":86,"context_line":"        \"\"\"Unset default volume type for a project."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        :param session: The session to use for making this request."},{"line_number":89,"context_line":"        :param project_id: The project to unset default for."},{"line_number":90,"context_line":"        \"\"\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        url \u003d utils.urljoin(self.base_path, project_id)"},{"line_number":93,"context_line":"        microversion \u003d self._get_microversion(session, action\u003d\u0027delete\u0027)"},{"line_number":94,"context_line":"        resp \u003d session.delete(url, microversion\u003dmicroversion)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        exceptions.raise_from_response(resp)"}],"source_content_type":"text/x-python","patch_set":6,"id":"e6b7382f_c87faf9b","line":96,"range":{"start_line":37,"start_character":0,"end_line":96,"end_character":44},"in_reply_to":"9cadc4ab_f3560976","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2502adce4d41dc763a52b0dc82a3159d02dbccf6","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    ):"},{"line_number":46,"context_line":"        body \u003d self._body.dirty"},{"line_number":47,"context_line":"        # Set operation expects volume_type instead of"},{"line_number":48,"context_line":"        # volume_type_id"},{"line_number":49,"context_line":"        if body.get(\u0027volume_type_id\u0027):"},{"line_number":50,"context_line":"            body[\u0027volume_type\u0027] \u003d body.pop(\u0027volume_type_id\u0027)"},{"line_number":51,"context_line":"        # When setting a default type, we want the ID to be"}],"source_content_type":"text/x-python","patch_set":8,"id":"5c4baa33_716bb8a6","line":48,"updated":"2024-09-19 17:16:03.000000000","message":"😞","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"}],"openstack/tests/functional/block_storage/v3/test_default_type.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"71d61358f672efb4eb81618e7b0edc0dda4dc5bd","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b8ef271a_452c939f","updated":"2024-09-10 13:13:58.000000000","message":"Did this get lost in the post?","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"fcab1032dc310daef4395dc0e2884a103e03f2d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"11287d43_c60966ff","in_reply_to":"b8ef271a_452c939f","updated":"2024-09-19 10:19:28.000000000","message":"Done","commit_id":"06d13a2f3f0fabe157448daeb4163182641efb10"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2502adce4d41dc763a52b0dc82a3159d02dbccf6","unresolved":true,"context_lines":[{"line_number":25,"context_line":"        self._set_operator_cloud(block_storage_api_version\u003d\u00273\u0027)"},{"line_number":26,"context_line":"        self.PROJECT_ID \u003d self.operator_cloud.identity.create_project("},{"line_number":27,"context_line":"            name\u003dself.PROJECT_NAME"},{"line_number":28,"context_line":"        ).id"},{"line_number":29,"context_line":"        self.VOLUME_TYPE_ID \u003d self.operator_cloud.block_storage.create_type("},{"line_number":30,"context_line":"            name\u003dself.TYPE_NAME"},{"line_number":31,"context_line":"        ).id"}],"source_content_type":"text/x-python","patch_set":8,"id":"d724a7ce_600828e1","line":28,"updated":"2024-09-19 17:16:03.000000000","message":"You need to clean this up on teardown. You may wish to rebase on to of https://review.opendev.org/c/openstack/openstacksdk/+/929560 which will do this for you: you simply need to call `create_temporary_project` here.","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"617fbf7db3f586d64ae329ac4d8f0e78487f28b3","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        self._set_operator_cloud(block_storage_api_version\u003d\u00273\u0027)"},{"line_number":26,"context_line":"        self.PROJECT_ID \u003d self.operator_cloud.identity.create_project("},{"line_number":27,"context_line":"            name\u003dself.PROJECT_NAME"},{"line_number":28,"context_line":"        ).id"},{"line_number":29,"context_line":"        self.VOLUME_TYPE_ID \u003d self.operator_cloud.block_storage.create_type("},{"line_number":30,"context_line":"            name\u003dself.TYPE_NAME"},{"line_number":31,"context_line":"        ).id"}],"source_content_type":"text/x-python","patch_set":8,"id":"e4024e6c_dd8360fa","line":28,"in_reply_to":"d724a7ce_600828e1","updated":"2024-09-20 08:37:09.000000000","message":"Done","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2502adce4d41dc763a52b0dc82a3159d02dbccf6","unresolved":true,"context_lines":[{"line_number":29,"context_line":"        self.VOLUME_TYPE_ID \u003d self.operator_cloud.block_storage.create_type("},{"line_number":30,"context_line":"            name\u003dself.TYPE_NAME"},{"line_number":31,"context_line":"        ).id"},{"line_number":32,"context_line":"        default_type \u003d self.conn.block_storage.set_default_type("},{"line_number":33,"context_line":"            self.PROJECT_ID,"},{"line_number":34,"context_line":"            self.VOLUME_TYPE_ID,"},{"line_number":35,"context_line":"        )"},{"line_number":36,"context_line":"        assert isinstance(default_type, _default_types.DefaultType)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def tearDown(self):"},{"line_number":39,"context_line":"        sot \u003d self.conn.block_storage.unset_default_type(self.PROJECT_ID)"}],"source_content_type":"text/x-python","patch_set":8,"id":"925eb98d_94330b73","line":36,"range":{"start_line":32,"start_character":0,"end_line":36,"end_character":67},"updated":"2024-09-19 17:16:03.000000000","message":"If you combine the below tests into one, you should probably move this and the delete call into that test case. I think the only thing we should be doing in setUp is creating the project.","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2502adce4d41dc763a52b0dc82a3159d02dbccf6","unresolved":true,"context_lines":[{"line_number":33,"context_line":"            self.PROJECT_ID,"},{"line_number":34,"context_line":"            self.VOLUME_TYPE_ID,"},{"line_number":35,"context_line":"        )"},{"line_number":36,"context_line":"        assert isinstance(default_type, _default_types.DefaultType)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def tearDown(self):"},{"line_number":39,"context_line":"        sot \u003d self.conn.block_storage.unset_default_type(self.PROJECT_ID)"}],"source_content_type":"text/x-python","patch_set":8,"id":"38011f67_21408ea4","line":36,"range":{"start_line":36,"start_character":8,"end_line":36,"end_character":25},"updated":"2024-09-19 17:16:03.000000000","message":"Probably better to use rich comparisons since we\u0027re using stestr, not pytest\n\n```suggestion\n        self.assertIsInstance(default_type, _default_types.DefaultType)\n```\n\nhere and below.","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"617fbf7db3f586d64ae329ac4d8f0e78487f28b3","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            self.PROJECT_ID,"},{"line_number":34,"context_line":"            self.VOLUME_TYPE_ID,"},{"line_number":35,"context_line":"        )"},{"line_number":36,"context_line":"        assert isinstance(default_type, _default_types.DefaultType)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def tearDown(self):"},{"line_number":39,"context_line":"        sot \u003d self.conn.block_storage.unset_default_type(self.PROJECT_ID)"}],"source_content_type":"text/x-python","patch_set":8,"id":"aeeb652f_353adea5","line":36,"range":{"start_line":36,"start_character":8,"end_line":36,"end_character":25},"in_reply_to":"38011f67_21408ea4","updated":"2024-09-20 08:37:09.000000000","message":"Done","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"617fbf7db3f586d64ae329ac4d8f0e78487f28b3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.VOLUME_TYPE_ID \u003d self.operator_cloud.block_storage.create_type("},{"line_number":30,"context_line":"            name\u003dself.TYPE_NAME"},{"line_number":31,"context_line":"        ).id"},{"line_number":32,"context_line":"        default_type \u003d self.conn.block_storage.set_default_type("},{"line_number":33,"context_line":"            self.PROJECT_ID,"},{"line_number":34,"context_line":"            self.VOLUME_TYPE_ID,"},{"line_number":35,"context_line":"        )"},{"line_number":36,"context_line":"        assert isinstance(default_type, _default_types.DefaultType)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def tearDown(self):"},{"line_number":39,"context_line":"        sot \u003d self.conn.block_storage.unset_default_type(self.PROJECT_ID)"}],"source_content_type":"text/x-python","patch_set":8,"id":"67112722_cfa799fd","line":36,"range":{"start_line":32,"start_character":0,"end_line":36,"end_character":67},"in_reply_to":"925eb98d_94330b73","updated":"2024-09-20 08:37:09.000000000","message":"Done","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2502adce4d41dc763a52b0dc82a3159d02dbccf6","unresolved":true,"context_lines":[{"line_number":40,"context_line":"        self.assertIsNone(sot)"},{"line_number":41,"context_line":"        super().tearDown()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_get(self):"},{"line_number":44,"context_line":"        default_type \u003d self.conn.block_storage.show_default_type("},{"line_number":45,"context_line":"            self.PROJECT_ID"},{"line_number":46,"context_line":"        )"},{"line_number":47,"context_line":"        assert isinstance(default_type, _default_types.DefaultType)"},{"line_number":48,"context_line":"        self.assertEqual(self.VOLUME_TYPE_ID, default_type.volume_type_id)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_list(self):"},{"line_number":51,"context_line":"        default_types \u003d self.conn.block_storage.default_types()"},{"line_number":52,"context_line":"        for default_type in default_types:"},{"line_number":53,"context_line":"            assert isinstance(default_type, _default_types.DefaultType)"},{"line_number":54,"context_line":"            self.assertEqual(self.PROJECT_ID, default_type.project_id)"},{"line_number":55,"context_line":"            self.assertEqual(self.VOLUME_TYPE_ID, default_type.volume_type_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"c25495e1_c3d30002","line":55,"range":{"start_line":43,"start_character":0,"end_line":55,"end_character":78},"updated":"2024-09-19 17:16:03.000000000","message":"Can you combine these into a single test called `test_default_type`? There\u0027s no real benefit to running them separately and there\u0027s a very real cost in set-up time","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"617fbf7db3f586d64ae329ac4d8f0e78487f28b3","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.assertIsNone(sot)"},{"line_number":41,"context_line":"        super().tearDown()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def test_get(self):"},{"line_number":44,"context_line":"        default_type \u003d self.conn.block_storage.show_default_type("},{"line_number":45,"context_line":"            self.PROJECT_ID"},{"line_number":46,"context_line":"        )"},{"line_number":47,"context_line":"        assert isinstance(default_type, _default_types.DefaultType)"},{"line_number":48,"context_line":"        self.assertEqual(self.VOLUME_TYPE_ID, default_type.volume_type_id)"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_list(self):"},{"line_number":51,"context_line":"        default_types \u003d self.conn.block_storage.default_types()"},{"line_number":52,"context_line":"        for default_type in default_types:"},{"line_number":53,"context_line":"            assert isinstance(default_type, _default_types.DefaultType)"},{"line_number":54,"context_line":"            self.assertEqual(self.PROJECT_ID, default_type.project_id)"},{"line_number":55,"context_line":"            self.assertEqual(self.VOLUME_TYPE_ID, default_type.volume_type_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ee99155e_b741587d","line":55,"range":{"start_line":43,"start_character":0,"end_line":55,"end_character":78},"in_reply_to":"c25495e1_c3d30002","updated":"2024-09-20 08:37:09.000000000","message":"Done","commit_id":"34c0f0acab12173ca3683f2e28144e9b8603e063"}]}
