)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"58e9a41140f7a9ca7c612a1eaa9051a861d75a80","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add tests for boot instance with the specified volume type"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is to add tests of boot instance with the specified volume type."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements blueprint: boot-instance-specific-storage-backend"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I39a35d7d64bd4062615cc7a98d7e4aa7fd3badb3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_d9b06590","line":10,"updated":"2018-10-11 14:02:10.000000000","message":"Add:\n\nDepends-On: https://review.openstack.org/606398/","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26490,"name":"Jason SUN","email":"sunjia@inspur.com","username":"sunjia"},"change_message_id":"9dbcd891a783ffe6c7ec88cb00311f77ed482b1b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add tests for boot instance with the specified volume type"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is to add tests of boot instance with the specified volume type."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements blueprint: boot-instance-specific-storage-backend"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I39a35d7d64bd4062615cc7a98d7e4aa7fd3badb3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_7d9d676a","line":10,"in_reply_to":"3f79a3b5_d9b06590","updated":"2018-10-12 09:57:57.000000000","message":"Done","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd67ea0d5aa912e1fc6beae98da176603cd5be7e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is to add tests of boot instance with the specified volume type."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Depends-On: https://review.openstack.org/606398/"},{"line_number":12,"context_line":"Depends-On: https://review.openstack.org/610032/"},{"line_number":13,"context_line":"Depends-On: https://review.openstack.org/610349/"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements blueprint: boot-instance-specific-storage-backend"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f79a3b5_bc797afb","line":13,"range":{"start_line":11,"start_character":0,"end_line":13,"end_character":48},"updated":"2018-10-16 14:59:36.000000000","message":"These are all merged now.","commit_id":"2813e392095bcba94873e3ae1df3755745cd085b"}],"releasenotes/notes/add-show-default-volume-type-api-to-v3-types-client-0b01729586031aba.yaml":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e70675b2bed8ded2ed4906e10eb9b6ab9c112bf5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add show default volume type API to v3 types_client library."},{"line_number":5,"context_line":"    This feature enables the possibility without specify volume type to"},{"line_number":6,"context_line":"    create a volume-backend instance."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f79a3b5_3a81f2a0","line":5,"range":{"start_line":5,"start_character":49,"end_line":5,"end_character":56},"updated":"2018-10-16 11:04:10.000000000","message":"specifying","commit_id":"74da1626ab1d966710026ee1bf21d8d2a950e8aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dae9bc107731456ecd53c14e55b1783f6ec19329","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add show default volume type API to v3 types_client library."},{"line_number":5,"context_line":"    This feature enables the possibility without specify volume type to"},{"line_number":6,"context_line":"    create a volume-backend instance."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"3f79a3b5_6defb61b","line":5,"range":{"start_line":5,"start_character":49,"end_line":5,"end_character":56},"in_reply_to":"3f79a3b5_3a81f2a0","updated":"2018-10-16 11:19:57.000000000","message":"Done","commit_id":"74da1626ab1d966710026ee1bf21d8d2a950e8aa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd67ea0d5aa912e1fc6beae98da176603cd5be7e","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add show default volume type API to v3 types_client library."},{"line_number":5,"context_line":"    This feature enables the possibility without specifying volume"},{"line_number":6,"context_line":"    type to create a volume-backend instance."}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3f79a3b5_3c200af8","line":6,"range":{"start_line":5,"start_character":4,"end_line":6,"end_character":45},"updated":"2018-10-16 14:59:36.000000000","message":"I\u0027m not sure this is helpful to the release note, it just sort of confuses me.","commit_id":"2813e392095bcba94873e3ae1df3755745cd085b"}],"tempest/api/compute/admin/test_create_server_specify_volume_type.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"979765bb64c612f7dcec17b228b5cebe28138ba5","unresolved":false,"context_lines":[{"line_number":17,"context_line":"CONF \u003d config.CONF"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ServersTestSpecifyVolumeType(base.BaseV2ComputeAdminTest):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.67\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_c106f821","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":34},"updated":"2018-10-15 03:36:09.000000000","message":"This class name should end in V267. Example: http://git.openstack.org/cgit/openstack/tempest/tree/tempest/api/compute/admin/test_aggregates.py#n235","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"08a8a38d8d4403fd03e63772ee48a99f0ef23bee","unresolved":false,"context_lines":[{"line_number":17,"context_line":"CONF \u003d config.CONF"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ServersTestSpecifyVolumeType(base.BaseV2ComputeAdminTest):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.67\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_1606711c","line":20,"range":{"start_line":20,"start_character":6,"end_line":20,"end_character":34},"in_reply_to":"3f79a3b5_c106f821","updated":"2018-10-15 07:01:00.000000000","message":"Done","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c0cc30be53fe5f86f52383371df80130afd6fffe","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ServersTestSpecifyVolumeType(base.BaseV2ComputeAdminTest):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.67\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @classmethod"},{"line_number":24,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_b3954f8a","line":21,"range":{"start_line":21,"start_character":4,"end_line":21,"end_character":29},"updated":"2018-10-15 04:02:55.000000000","message":"doc/source/microversion_testing.rst should be modified accordingly","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b0e67aada5d236df7601c885788217a7ea6d3517","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ServersTestSpecifyVolumeType(base.BaseV2ComputeAdminTest):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.67\u0027"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    @classmethod"},{"line_number":24,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_09a2d6fb","line":21,"range":{"start_line":21,"start_character":4,"end_line":21,"end_character":29},"in_reply_to":"3f79a3b5_b3954f8a","updated":"2018-10-15 07:18:34.000000000","message":"Yeah, good point, this depends-on [1] to be merged.\n[1] https://review.openstack.org/#/c/610349/.","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"979765bb64c612f7dcec17b228b5cebe28138ba5","unresolved":false,"context_lines":[{"line_number":27,"context_line":"            skip_msg \u003d (\"%s skipped as Cinder is not available\" % cls.__name__)"},{"line_number":28,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"},{"line_number":31,"context_line":"    def setup_credentials(cls):"},{"line_number":32,"context_line":"        super(ServersTestSpecifyVolumeType, cls).setup_credentials()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_61012407","line":32,"range":{"start_line":30,"start_character":0,"end_line":32,"end_character":68},"updated":"2018-10-15 03:36:09.000000000","message":"Please remove.","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"08a8a38d8d4403fd03e63772ee48a99f0ef23bee","unresolved":false,"context_lines":[{"line_number":27,"context_line":"            skip_msg \u003d (\"%s skipped as Cinder is not available\" % cls.__name__)"},{"line_number":28,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"},{"line_number":31,"context_line":"    def setup_credentials(cls):"},{"line_number":32,"context_line":"        super(ServersTestSpecifyVolumeType, cls).setup_credentials()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"},{"line_number":35,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_7616c54c","line":32,"range":{"start_line":30,"start_character":0,"end_line":32,"end_character":68},"in_reply_to":"3f79a3b5_61012407","updated":"2018-10-15 07:01:00.000000000","message":"Done","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c0cc30be53fe5f86f52383371df80130afd6fffe","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":55,"context_line":"        volume_type_name \u003d self.volume_type[\u0027name\u0027]"},{"line_number":56,"context_line":"        bdm \u003d [{"},{"line_number":57,"context_line":"            \u0027uuid\u0027: image_id,"},{"line_number":58,"context_line":"            \u0027source_type\u0027: \u0027image\u0027,"},{"line_number":59,"context_line":"            \u0027destination_type\u0027: \u0027volume\u0027,"},{"line_number":60,"context_line":"            \u0027volume_type\u0027: volume_type_name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_b3da2f76","line":57,"range":{"start_line":57,"start_character":20,"end_line":57,"end_character":28},"updated":"2018-10-15 04:02:55.000000000","message":"seems CONF.compute.image_ref can be used directly here.","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b0e67aada5d236df7601c885788217a7ea6d3517","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":55,"context_line":"        volume_type_name \u003d self.volume_type[\u0027name\u0027]"},{"line_number":56,"context_line":"        bdm \u003d [{"},{"line_number":57,"context_line":"            \u0027uuid\u0027: image_id,"},{"line_number":58,"context_line":"            \u0027source_type\u0027: \u0027image\u0027,"},{"line_number":59,"context_line":"            \u0027destination_type\u0027: \u0027volume\u0027,"},{"line_number":60,"context_line":"            \u0027volume_type\u0027: volume_type_name,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_69b90a14","line":57,"range":{"start_line":57,"start_character":20,"end_line":57,"end_character":28},"in_reply_to":"3f79a3b5_b3da2f76","updated":"2018-10-15 07:18:34.000000000","message":"Yeah, I think setting a variable here is better, debugging is easy, and the code is more readable. :P\nIf you insist, I can modify it.","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c0cc30be53fe5f86f52383371df80130afd6fffe","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":68,"context_line":"        fetched_volume_type \u003d self.volumes_client.show_volume("},{"line_number":69,"context_line":"            attachments[0][\u0027volumeId\u0027])[\u0027volume\u0027][\u0027volume_type\u0027]"},{"line_number":70,"context_line":"        self.assertEqual(1, len(attachments))"},{"line_number":71,"context_line":"        self.assertEqual(volume_type_name, fetched_volume_type)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db67\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_13f0c3fb","line":70,"range":{"start_line":70,"start_character":8,"end_line":70,"end_character":45},"updated":"2018-10-15 04:02:55.000000000","message":"This should be moved up before #L68","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b0e67aada5d236df7601c885788217a7ea6d3517","unresolved":false,"context_lines":[{"line_number":67,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":68,"context_line":"        fetched_volume_type \u003d self.volumes_client.show_volume("},{"line_number":69,"context_line":"            attachments[0][\u0027volumeId\u0027])[\u0027volume\u0027][\u0027volume_type\u0027]"},{"line_number":70,"context_line":"        self.assertEqual(1, len(attachments))"},{"line_number":71,"context_line":"        self.assertEqual(volume_type_name, fetched_volume_type)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db67\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_89b4a61e","line":70,"range":{"start_line":70,"start_character":8,"end_line":70,"end_character":45},"in_reply_to":"3f79a3b5_13f0c3fb","updated":"2018-10-15 07:18:34.000000000","message":"Done","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c0cc30be53fe5f86f52383371df80130afd6fffe","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertEqual(volume_type_name, fetched_volume_type)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db67\u0027)"},{"line_number":74,"context_line":"    def test_create_server_without_specify_volume_type(self):"},{"line_number":75,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":76,"context_line":"        # Get default volume type"},{"line_number":77,"context_line":"        default_volume_type \u003d \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_b3c30f8a","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":54},"updated":"2018-10-15 04:02:55.000000000","message":"similar like test_create_server_specify_volume_type","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"b0e67aada5d236df7601c885788217a7ea6d3517","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.assertEqual(volume_type_name, fetched_volume_type)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db67\u0027)"},{"line_number":74,"context_line":"    def test_create_server_without_specify_volume_type(self):"},{"line_number":75,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":76,"context_line":"        # Get default volume type"},{"line_number":77,"context_line":"        default_volume_type \u003d \\"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_e953dadc","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":54},"in_reply_to":"3f79a3b5_b3c30f8a","updated":"2018-10-15 07:18:34.000000000","message":"I think what you mean is that the two methods are similar in logic, but for the sake of clarity, I think it is good to write two methods?","commit_id":"1c5fcbef54ab9096390ae4a8f5b968687f088aef"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e70675b2bed8ded2ed4906e10eb9b6ab9c112bf5","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # If the new volume_type is used by the target volume, it can not"},{"line_number":69,"context_line":"        # be deleted, so need to delete the volume generated by the instance"},{"line_number":70,"context_line":"        # creation."},{"line_number":71,"context_line":"        self.volumes_client.delete_volume(attachments[0][\u0027volumeId\u0027])"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db67\u0027)"},{"line_number":74,"context_line":"    def test_create_server_without_specify_volume_type(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_adff0efe","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":69},"updated":"2018-10-16 11:04:10.000000000","message":"Need a waiter to wait for volume deletion after L71: \n\nself.volumes_client.wait_for_resource_deletion(attachments[0][\u0027volumeId\u0027])\n\nElse you get data race on trying to delete volume type as the volume still hasn\u0027t fully deleted.","commit_id":"74da1626ab1d966710026ee1bf21d8d2a950e8aa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0d9ff90c088873493cb369a726364a6dd06e2077","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # If the new volume_type is used by the target volume, it can not"},{"line_number":69,"context_line":"        # be deleted, so need to delete the volume generated by the instance"},{"line_number":70,"context_line":"        # creation."},{"line_number":71,"context_line":"        self.volumes_client.delete_volume(attachments[0][\u0027volumeId\u0027])"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db67\u0027)"},{"line_number":74,"context_line":"    def test_create_server_without_specify_volume_type(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_1c7bce28","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":69},"in_reply_to":"3f79a3b5_2d43fe12","updated":"2018-10-16 14:52:49.000000000","message":"Umm, note that nova creates the volume and because of \"\u0027delete_on_termination\u0027: True\" above, nova will detach and delete the volume when the server is being deleted. So we don\u0027t actually have to explicitly delete the volume here. You can wait for it to be gone though if you care, but you\u0027d have to wait for the server to be gone first, and that\u0027s handled by the base class because of create_test_server(). So what you have here is going to fail because you can\u0027t delete an in-use server.","commit_id":"74da1626ab1d966710026ee1bf21d8d2a950e8aa"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dae9bc107731456ecd53c14e55b1783f6ec19329","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # If the new volume_type is used by the target volume, it can not"},{"line_number":69,"context_line":"        # be deleted, so need to delete the volume generated by the instance"},{"line_number":70,"context_line":"        # creation."},{"line_number":71,"context_line":"        self.volumes_client.delete_volume(attachments[0][\u0027volumeId\u0027])"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db67\u0027)"},{"line_number":74,"context_line":"    def test_create_server_without_specify_volume_type(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_2d43fe12","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":69},"in_reply_to":"3f79a3b5_adff0efe","updated":"2018-10-16 11:19:57.000000000","message":"Yeah. I think we have to wait for the volume to be gone otherwise the normal teardown will fail since it will race with our call  might still exist.","commit_id":"74da1626ab1d966710026ee1bf21d8d2a950e8aa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"71e30e4bafe6048c34b8cab04c492e7c7b5a7dec","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # If the new volume_type is used by the target volume, it can not"},{"line_number":69,"context_line":"        # be deleted, so need to delete the volume generated by the instance"},{"line_number":70,"context_line":"        # creation."},{"line_number":71,"context_line":"        self.volumes_client.delete_volume(attachments[0][\u0027volumeId\u0027])"},{"line_number":72,"context_line":"        # We have to wait for the volume to be gone otherwise the"},{"line_number":73,"context_line":"        # normal teardown will fail since it will race with our call"},{"line_number":74,"context_line":"        # might still exist."}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_fc6b7250","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":69},"updated":"2018-10-16 14:53:38.000000000","message":"See my comment from PS10 - you can\u0027t delete an in-use volume.","commit_id":"2813e392095bcba94873e3ae1df3755745cd085b"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"76e706ebac34eb0b0a3333a4215854a028241a0f","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # If the new volume_type is used by the target volume, it can not"},{"line_number":69,"context_line":"        # be deleted, so need to delete the volume generated by the instance"},{"line_number":70,"context_line":"        # creation."},{"line_number":71,"context_line":"        self.volumes_client.delete_volume(attachments[0][\u0027volumeId\u0027])"},{"line_number":72,"context_line":"        # We have to wait for the volume to be gone otherwise the"},{"line_number":73,"context_line":"        # normal teardown will fail since it will race with our call"},{"line_number":74,"context_line":"        # might still exist."}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_5d2e16ab","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":69},"in_reply_to":"3f79a3b5_bcddfa13","updated":"2018-10-17 00:35:25.000000000","message":"Yeah, because of the deleted_on_termination\u003dTrue flag on the bdm, this volume will be deleted when the server is deleted, but it doesnot.\nThere is still an error at [1]. I think there is still some logic that I have not considered.\n\n[1]http://logs.openstack.org/57/609357/12/check/tempest-full/bc81e12/job-output.txt.gz#_2018-10-16_18_40_51_770499","commit_id":"2813e392095bcba94873e3ae1df3755745cd085b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"30f7bfa9216031d530ee1920eaa7b61293f845b7","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        # If the new volume_type is used by the target volume, it can not"},{"line_number":69,"context_line":"        # be deleted, so need to delete the volume generated by the instance"},{"line_number":70,"context_line":"        # creation."},{"line_number":71,"context_line":"        self.volumes_client.delete_volume(attachments[0][\u0027volumeId\u0027])"},{"line_number":72,"context_line":"        # We have to wait for the volume to be gone otherwise the"},{"line_number":73,"context_line":"        # normal teardown will fail since it will race with our call"},{"line_number":74,"context_line":"        # might still exist."}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_bcddfa13","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":69},"in_reply_to":"3f79a3b5_fc6b7250","updated":"2018-10-16 14:54:58.000000000","message":"If you need to wait for the volume to be gone before you delete the volume type, then you need to explicitly delete the server and wait for it to be gone, then the volume should also be gone (because nova-compute should delete it) and then normal teardown to delete the volume_type can resume.","commit_id":"2813e392095bcba94873e3ae1df3755745cd085b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ea92eae01eb0bb1dabc466f3b4cc433510da5acc","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        self.volumes_client.wait_for_resource_deletion("},{"line_number":78,"context_line":"            attachments[0][\u0027volumeId\u0027])"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db67\u0027)"},{"line_number":81,"context_line":"    def test_create_server_without_specify_volume_type(self):"},{"line_number":82,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":83,"context_line":"        # Get default volume type"},{"line_number":84,"context_line":"        default_volume_type \u003d \\"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_46bbebc3","line":81,"range":{"start_line":80,"start_character":0,"end_line":81,"end_character":61},"updated":"2019-09-26 22:07:58.000000000","message":"do we need this test ? All other tests create server without  volume_type and if you want to check the return value if no volume_type then it can be done on unit or functional test on nova side.","commit_id":"1eba21bf228d564e63d99913a92833fe49231d56"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"c6e619c37cb820d1320ea9b724562c664e2e60f8","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        self.volumes_client.wait_for_resource_deletion("},{"line_number":78,"context_line":"            attachments[0][\u0027volumeId\u0027])"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db67\u0027)"},{"line_number":81,"context_line":"    def test_create_server_without_specify_volume_type(self):"},{"line_number":82,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":83,"context_line":"        # Get default volume type"},{"line_number":84,"context_line":"        default_volume_type \u003d \\"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_d971fc77","line":81,"range":{"start_line":80,"start_character":0,"end_line":81,"end_character":61},"in_reply_to":"3fa7e38b_46bbebc3","updated":"2019-09-26 23:57:06.000000000","message":"Yeah, the default volume type depends on the local env, that\u0027s test put in nova is ok.","commit_id":"1eba21bf228d564e63d99913a92833fe49231d56"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"14287b032b6c378cb21975a199d838957f6d54f2","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":83,"context_line":"        # Get default volume type"},{"line_number":84,"context_line":"        default_volume_type \u003d \\"},{"line_number":85,"context_line":"            self.volume_types_client.show_default_volume_type()["},{"line_number":86,"context_line":"                \u0027volume_type\u0027][\u0027name\u0027]"},{"line_number":87,"context_line":"        volume_type_name \u003d None"},{"line_number":88,"context_line":"        bdm \u003d [{"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_b11e3973","line":85,"range":{"start_line":85,"start_character":37,"end_line":85,"end_character":61},"updated":"2018-10-19 06:35:39.000000000","message":"Will this always return something? I mean, is \"default volume type\" sure to be present? Is it possible for a system to have no default volume type?","commit_id":"1eba21bf228d564e63d99913a92833fe49231d56"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"c597eb8739f324f03dd875a61b1c44b6923853cf","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":83,"context_line":"        # Get default volume type"},{"line_number":84,"context_line":"        default_volume_type \u003d \\"},{"line_number":85,"context_line":"            self.volume_types_client.show_default_volume_type()["},{"line_number":86,"context_line":"                \u0027volume_type\u0027][\u0027name\u0027]"},{"line_number":87,"context_line":"        volume_type_name \u003d None"},{"line_number":88,"context_line":"        bdm \u003d [{"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_5e453242","line":85,"range":{"start_line":85,"start_character":37,"end_line":85,"end_character":61},"in_reply_to":"3f79a3b5_b11e3973","updated":"2019-09-24 09:35:12.000000000","message":"No, if it\u0027s configured, it will be return.\nhttps://developer.openstack.org/api-ref/block-storage/v3/index.html#show-default-volume-type","commit_id":"1eba21bf228d564e63d99913a92833fe49231d56"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"f6c8ad0cceee26a19c94826e679b428471d1471d","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        # Get default volume type"},{"line_number":84,"context_line":"        default_volume_type \u003d \\"},{"line_number":85,"context_line":"            self.volume_types_client.show_default_volume_type()["},{"line_number":86,"context_line":"                \u0027volume_type\u0027][\u0027name\u0027]"},{"line_number":87,"context_line":"        volume_type_name \u003d None"},{"line_number":88,"context_line":"        bdm \u003d [{"},{"line_number":89,"context_line":"            \u0027uuid\u0027: image_id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_7ee82ee1","line":86,"range":{"start_line":86,"start_character":16,"end_line":86,"end_character":38},"updated":"2019-09-24 09:44:26.000000000","message":"If default volume type not configured, then show_default_volume_type() will return []? And will this raise KeyError exception?","commit_id":"1eba21bf228d564e63d99913a92833fe49231d56"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"df62e22487a1a2f84485e8416bbe4bdc1250a350","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        # Get default volume type"},{"line_number":84,"context_line":"        default_volume_type \u003d \\"},{"line_number":85,"context_line":"            self.volume_types_client.show_default_volume_type()["},{"line_number":86,"context_line":"                \u0027volume_type\u0027][\u0027name\u0027]"},{"line_number":87,"context_line":"        volume_type_name \u003d None"},{"line_number":88,"context_line":"        bdm \u003d [{"},{"line_number":89,"context_line":"            \u0027uuid\u0027: image_id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_3be4efdf","line":86,"range":{"start_line":86,"start_character":16,"end_line":86,"end_character":38},"in_reply_to":"3fa7e38b_7ee82ee1","updated":"2019-09-25 10:19:19.000000000","message":"Done","commit_id":"1eba21bf228d564e63d99913a92833fe49231d56"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"14287b032b6c378cb21975a199d838957f6d54f2","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            \u0027uuid\u0027: image_id,"},{"line_number":90,"context_line":"            \u0027source_type\u0027: \u0027image\u0027,"},{"line_number":91,"context_line":"            \u0027destination_type\u0027: \u0027volume\u0027,"},{"line_number":92,"context_line":"            \u0027volume_type\u0027: volume_type_name,"},{"line_number":93,"context_line":"            \u0027boot_index\u0027: 0,"},{"line_number":94,"context_line":"            \u0027volume_size\u0027: 1,"},{"line_number":95,"context_line":"            \u0027delete_on_termination\u0027: True}]"}],"source_content_type":"text/x-python","patch_set":13,"id":"3f79a3b5_1145ad6f","line":92,"range":{"start_line":92,"start_character":27,"end_line":92,"end_character":43},"updated":"2018-10-19 06:35:39.000000000","message":"Here directly put None will look clearer.","commit_id":"1eba21bf228d564e63d99913a92833fe49231d56"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"c597eb8739f324f03dd875a61b1c44b6923853cf","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            \u0027uuid\u0027: image_id,"},{"line_number":90,"context_line":"            \u0027source_type\u0027: \u0027image\u0027,"},{"line_number":91,"context_line":"            \u0027destination_type\u0027: \u0027volume\u0027,"},{"line_number":92,"context_line":"            \u0027volume_type\u0027: volume_type_name,"},{"line_number":93,"context_line":"            \u0027boot_index\u0027: 0,"},{"line_number":94,"context_line":"            \u0027volume_size\u0027: 1,"},{"line_number":95,"context_line":"            \u0027delete_on_termination\u0027: True}]"}],"source_content_type":"text/x-python","patch_set":13,"id":"3fa7e38b_def5a2ee","line":92,"range":{"start_line":92,"start_character":27,"end_line":92,"end_character":43},"in_reply_to":"3f79a3b5_1145ad6f","updated":"2019-09-24 09:35:12.000000000","message":"Yeah, it\u0027s better.","commit_id":"1eba21bf228d564e63d99913a92833fe49231d56"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"ea92eae01eb0bb1dabc466f3b4cc433510da5acc","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                  \u0027os-volume-type-access:is_public\u0027: True}"},{"line_number":48,"context_line":"        cls.volume_type \u003d cls.volume_types_client.create_volume_type("},{"line_number":49,"context_line":"            **params)[\u0027volume_type\u0027]"},{"line_number":50,"context_line":"        CONF_CINDER.set_override(\"default_volume_type\","},{"line_number":51,"context_line":"                                 cls.volume_type[\u0027name\u0027], \u0027cinder\u0027)"},{"line_number":52,"context_line":"        cls.addClassResourceCleanup("},{"line_number":53,"context_line":"            cls.volume_types_client.delete_volume_type, cls.volume_type[\u0027id\u0027])"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3fa7e38b_26b82fe3","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":67},"updated":"2019-09-26 22:07:58.000000000","message":"you want to set this config option on conder conf? if so then you cannot. Test should work on pre configured env and cannot change the configuration of that env which is risky (even you reset it back).","commit_id":"e594abc3a8caee4f433b0e6a2c842513cbcf7eba"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"c6e619c37cb820d1320ea9b724562c664e2e60f8","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                  \u0027os-volume-type-access:is_public\u0027: True}"},{"line_number":48,"context_line":"        cls.volume_type \u003d cls.volume_types_client.create_volume_type("},{"line_number":49,"context_line":"            **params)[\u0027volume_type\u0027]"},{"line_number":50,"context_line":"        CONF_CINDER.set_override(\"default_volume_type\","},{"line_number":51,"context_line":"                                 cls.volume_type[\u0027name\u0027], \u0027cinder\u0027)"},{"line_number":52,"context_line":"        cls.addClassResourceCleanup("},{"line_number":53,"context_line":"            cls.volume_types_client.delete_volume_type, cls.volume_type[\u0027id\u0027])"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"3fa7e38b_796c889b","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":67},"in_reply_to":"3fa7e38b_26b82fe3","updated":"2019-09-26 23:57:06.000000000","message":"Thanks, I think that\u0027s what I want.","commit_id":"e594abc3a8caee4f433b0e6a2c842513cbcf7eba"}],"tempest/api/compute/servers/test_create_server_specify_volume_type.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b8add60955576ec387f1554745fff242d0a0a7b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_b076dd91","line":2,"range":{"start_line":1,"start_character":0,"end_line":2,"end_character":22},"updated":"2018-10-11 12:49:30.000000000","message":"This can be removed.","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26490,"name":"Jason SUN","email":"sunjia@inspur.com","username":"sunjia"},"change_message_id":"9dbcd891a783ffe6c7ec88cb00311f77ed482b1b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_0252d268","line":2,"range":{"start_line":1,"start_character":0,"end_line":2,"end_character":22},"in_reply_to":"3f79a3b5_b076dd91","updated":"2018-10-12 09:57:57.000000000","message":"Done","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b8add60955576ec387f1554745fff242d0a0a7b","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ServersTestSpecifyVolumeType(base.BaseV2ComputeTest):"},{"line_number":22,"context_line":"    min_microversion \u003d \u00272.67\u0027"},{"line_number":23,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @classmethod"},{"line_number":26,"context_line":"    def setup_credentials(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_f0e5353f","line":23,"updated":"2018-10-11 12:49:30.000000000","message":"I don\u0027t think you need this max_microversion line.","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26490,"name":"Jason SUN","email":"sunjia@inspur.com","username":"sunjia"},"change_message_id":"9dbcd891a783ffe6c7ec88cb00311f77ed482b1b","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ServersTestSpecifyVolumeType(base.BaseV2ComputeTest):"},{"line_number":22,"context_line":"    min_microversion \u003d \u00272.67\u0027"},{"line_number":23,"context_line":"    max_microversion \u003d \u0027latest\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @classmethod"},{"line_number":26,"context_line":"    def setup_credentials(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c247faa3","line":23,"in_reply_to":"3f79a3b5_f0e5353f","updated":"2018-10-12 09:57:57.000000000","message":"Done","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b8add60955576ec387f1554745fff242d0a0a7b","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @classmethod"},{"line_number":26,"context_line":"    def setup_credentials(cls):"},{"line_number":27,"context_line":"        cls.prepare_instance_network()"},{"line_number":28,"context_line":"        super(ServersTestSpecifyVolumeType, cls).setup_credentials()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_f033f5c2","line":27,"range":{"start_line":27,"start_character":12,"end_line":27,"end_character":36},"updated":"2018-10-11 12:49:30.000000000","message":"I\u0027m not sure this is needed unless you plan on SSHing into the guest.","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26490,"name":"Jason SUN","email":"sunjia@inspur.com","username":"sunjia"},"change_message_id":"9dbcd891a783ffe6c7ec88cb00311f77ed482b1b","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @classmethod"},{"line_number":26,"context_line":"    def setup_credentials(cls):"},{"line_number":27,"context_line":"        cls.prepare_instance_network()"},{"line_number":28,"context_line":"        super(ServersTestSpecifyVolumeType, cls).setup_credentials()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_82c34206","line":27,"range":{"start_line":27,"start_character":12,"end_line":27,"end_character":36},"in_reply_to":"3f79a3b5_f033f5c2","updated":"2018-10-12 09:57:57.000000000","message":"Done","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b8add60955576ec387f1554745fff242d0a0a7b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cls.volume_client \u003d cls.volumes_extensions_client"},{"line_number":35,"context_line":"        cls.volume_types_client \u003d cls.os_primary.volume_types_client_latest"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def test_create_server_specify_volume_type(self):"},{"line_number":38,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":39,"context_line":"        volume_type_name \u003d self.volume_types_client.list_volume_types()["},{"line_number":40,"context_line":"            \u0027volume_types\u0027][0].get(\u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_9044011b","line":37,"updated":"2018-10-11 12:49:30.000000000","message":"You need to have the test id decorator on each test, and should also probably have services decorators so these don\u0027t run if cinder isn\u0027t being used.\n\nThe former means adding something like this to each test case:\n\n@decorators.idempotent_id(\u002752e9045a-e90d-4c0d-9087-79d657faffff\u0027)\n\nThe UUID must be unique per test.\n\nFor the latter, you can add a skip check like this on setUp:\n\n@classmethod\n    def skip_checks(cls):\n        super(BaseAttachVolumeTest, cls).skip_checks()\n        if not CONF.service_available.cinder:\n            skip_msg \u003d (\"%s skipped as Cinder is not available\" % cls.__name__)\n            raise cls.skipException(skip_msg)","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26490,"name":"Jason SUN","email":"sunjia@inspur.com","username":"sunjia"},"change_message_id":"9dbcd891a783ffe6c7ec88cb00311f77ed482b1b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cls.volume_client \u003d cls.volumes_extensions_client"},{"line_number":35,"context_line":"        cls.volume_types_client \u003d cls.os_primary.volume_types_client_latest"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def test_create_server_specify_volume_type(self):"},{"line_number":38,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":39,"context_line":"        volume_type_name \u003d self.volume_types_client.list_volume_types()["},{"line_number":40,"context_line":"            \u0027volume_types\u0027][0].get(\u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_22d4aeba","line":37,"in_reply_to":"3f79a3b5_9044011b","updated":"2018-10-12 09:57:57.000000000","message":"Done","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b8add60955576ec387f1554745fff242d0a0a7b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            \u0027volume_type\u0027: volume_type_name,"},{"line_number":46,"context_line":"            \u0027boot_index\u0027: 0,"},{"line_number":47,"context_line":"            \u0027volume_size\u0027: 1,"},{"line_number":48,"context_line":"            \u0027delete_on_termination\u0027: False}]"},{"line_number":49,"context_line":"        server \u003d self.create_test_server("},{"line_number":50,"context_line":"            image_id\u003d\u0027\u0027, block_device_mapping_v2\u003dbdm, wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":51,"context_line":"        attachments \u003d self.servers_client.list_volume_attachments("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_30664dbe","line":48,"range":{"start_line":48,"start_character":37,"end_line":48,"end_character":42},"updated":"2018-10-11 12:49:30.000000000","message":"This is already the default behavior, it would probably be a more interesting test if this was True so the root volume is deleted when the server is deleted.","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26490,"name":"Jason SUN","email":"sunjia@inspur.com","username":"sunjia"},"change_message_id":"9dbcd891a783ffe6c7ec88cb00311f77ed482b1b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            \u0027volume_type\u0027: volume_type_name,"},{"line_number":46,"context_line":"            \u0027boot_index\u0027: 0,"},{"line_number":47,"context_line":"            \u0027volume_size\u0027: 1,"},{"line_number":48,"context_line":"            \u0027delete_on_termination\u0027: False}]"},{"line_number":49,"context_line":"        server \u003d self.create_test_server("},{"line_number":50,"context_line":"            image_id\u003d\u0027\u0027, block_device_mapping_v2\u003dbdm, wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":51,"context_line":"        attachments \u003d self.servers_client.list_volume_attachments("}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_82eca292","line":48,"range":{"start_line":48,"start_character":37,"end_line":48,"end_character":42},"in_reply_to":"3f79a3b5_30664dbe","updated":"2018-10-12 09:57:57.000000000","message":"Done","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b8add60955576ec387f1554745fff242d0a0a7b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":53,"context_line":"        fetched_volume_type \u003d self.volumes_client.show_volume("},{"line_number":54,"context_line":"            attachments[0][\u0027volumeId\u0027])[\u0027volume\u0027][\u0027volume_type\u0027]"},{"line_number":55,"context_line":"        self.addCleanup(self.delete_server, server[\u0027id\u0027])"},{"line_number":56,"context_line":"        self.assertEqual(1, len(attachments))"},{"line_number":57,"context_line":"        self.assertEqual(volume_type_name, fetched_volume_type)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_30fbadbf","line":55,"updated":"2018-10-11 12:49:30.000000000","message":"I\u0027m not sure this is needed, doesn\u0027t create_test_server already handle registering the cleanup callback?","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26490,"name":"Jason SUN","email":"sunjia@inspur.com","username":"sunjia"},"change_message_id":"9dbcd891a783ffe6c7ec88cb00311f77ed482b1b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":53,"context_line":"        fetched_volume_type \u003d self.volumes_client.show_volume("},{"line_number":54,"context_line":"            attachments[0][\u0027volumeId\u0027])[\u0027volume\u0027][\u0027volume_type\u0027]"},{"line_number":55,"context_line":"        self.addCleanup(self.delete_server, server[\u0027id\u0027])"},{"line_number":56,"context_line":"        self.assertEqual(1, len(attachments))"},{"line_number":57,"context_line":"        self.assertEqual(volume_type_name, fetched_volume_type)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_62b5c67c","line":55,"in_reply_to":"3f79a3b5_30fbadbf","updated":"2018-10-12 09:57:57.000000000","message":"Yeah,this isn\u0027t needed.","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b8add60955576ec387f1554745fff242d0a0a7b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            attachments[0][\u0027volumeId\u0027])[\u0027volume\u0027][\u0027volume_type\u0027]"},{"line_number":55,"context_line":"        self.addCleanup(self.delete_server, server[\u0027id\u0027])"},{"line_number":56,"context_line":"        self.assertEqual(1, len(attachments))"},{"line_number":57,"context_line":"        self.assertEqual(volume_type_name, fetched_volume_type)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_create_server_without_specify_volume_type(self):"},{"line_number":60,"context_line":"        image_id \u003d CONF.compute.image_ref"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_901ba11a","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":63},"updated":"2018-10-11 12:49:30.000000000","message":"This isn\u0027t very interesting if there is only one volume type in the system. These tests would probably be better if the resource_setup() creates a unique volume type and then uses that to create the volume-backed server.","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"61266127902d44b92f94e6afd366f9cd4e381127","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            attachments[0][\u0027volumeId\u0027])[\u0027volume\u0027][\u0027volume_type\u0027]"},{"line_number":55,"context_line":"        self.addCleanup(self.delete_server, server[\u0027id\u0027])"},{"line_number":56,"context_line":"        self.assertEqual(1, len(attachments))"},{"line_number":57,"context_line":"        self.assertEqual(volume_type_name, fetched_volume_type)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_create_server_without_specify_volume_type(self):"},{"line_number":60,"context_line":"        image_id \u003d CONF.compute.image_ref"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_6144c448","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":63},"in_reply_to":"3f79a3b5_420c4a43","updated":"2018-10-15 01:20:11.000000000","message":"If this should create a volume type in the evcironment, Cinder needs admin permission, so need to move this file to the admin directory.","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26490,"name":"Jason SUN","email":"sunjia@inspur.com","username":"sunjia"},"change_message_id":"9dbcd891a783ffe6c7ec88cb00311f77ed482b1b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            attachments[0][\u0027volumeId\u0027])[\u0027volume\u0027][\u0027volume_type\u0027]"},{"line_number":55,"context_line":"        self.addCleanup(self.delete_server, server[\u0027id\u0027])"},{"line_number":56,"context_line":"        self.assertEqual(1, len(attachments))"},{"line_number":57,"context_line":"        self.assertEqual(volume_type_name, fetched_volume_type)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test_create_server_without_specify_volume_type(self):"},{"line_number":60,"context_line":"        image_id \u003d CONF.compute.image_ref"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_420c4a43","line":57,"range":{"start_line":57,"start_character":8,"end_line":57,"end_character":63},"in_reply_to":"3f79a3b5_901ba11a","updated":"2018-10-12 09:57:57.000000000","message":"Yeah,creating a unique volume type and then create the volume-backed server will makes this more interesting, i will add this.","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b8add60955576ec387f1554745fff242d0a0a7b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            image_id\u003d\u0027\u0027, block_device_mapping_v2\u003dbdm, wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":72,"context_line":"        attachments \u003d self.servers_client.list_volume_attachments("},{"line_number":73,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":74,"context_line":"        self.addCleanup(self.delete_server, server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(1, len(attachments))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_10d5511b","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":57},"updated":"2018-10-11 12:49:30.000000000","message":"same as above","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26490,"name":"Jason SUN","email":"sunjia@inspur.com","username":"sunjia"},"change_message_id":"9dbcd891a783ffe6c7ec88cb00311f77ed482b1b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"            image_id\u003d\u0027\u0027, block_device_mapping_v2\u003dbdm, wait_until\u003d\u0027ACTIVE\u0027)"},{"line_number":72,"context_line":"        attachments \u003d self.servers_client.list_volume_attachments("},{"line_number":73,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":74,"context_line":"        self.addCleanup(self.delete_server, server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(1, len(attachments))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c2a37a43","line":74,"range":{"start_line":74,"start_character":8,"end_line":74,"end_character":57},"in_reply_to":"3f79a3b5_10d5511b","updated":"2018-10-12 09:57:57.000000000","message":"Done","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":27078,"name":"Manik Bindlish","email":"manikbindlish19@gmail.com","username":"manik"},"change_message_id":"172e63345d48ea3643d7abf78aa2613b2cadad62","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        attachments \u003d self.servers_client.list_volume_attachments("},{"line_number":73,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":74,"context_line":"        self.addCleanup(self.delete_server, server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(1, len(attachments))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_7e1b411b","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":45},"updated":"2018-10-11 04:49:05.000000000","message":"There is no check here for volume type about it\u0027s None value.\nCan\u0027t we add check here too like L[57]. to meet test\u0027s objective?","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26490,"name":"Jason SUN","email":"sunjia@inspur.com","username":"sunjia"},"change_message_id":"9dbcd891a783ffe6c7ec88cb00311f77ed482b1b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        attachments \u003d self.servers_client.list_volume_attachments("},{"line_number":73,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":74,"context_line":"        self.addCleanup(self.delete_server, server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(1, len(attachments))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_6211465c","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":45},"in_reply_to":"3f79a3b5_7e1b411b","updated":"2018-10-12 09:57:57.000000000","message":"Done","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0b8add60955576ec387f1554745fff242d0a0a7b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        attachments \u003d self.servers_client.list_volume_attachments("},{"line_number":73,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":74,"context_line":"        self.addCleanup(self.delete_server, server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(1, len(attachments))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_f0b8d5e8","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":45},"in_reply_to":"3f79a3b5_7e1b411b","updated":"2018-10-11 12:49:30.000000000","message":"The created volume will always have a type because cinder provides a default if one is not specified, and in standard devstack that\u0027s going to be lvm. As noted above, if there is only one volume type in the system, that\u0027s going to be the default and we\u0027ll have the same value for both tests, which makes this less interesting.\n\nWhat you could do in this test is assert that the created volume has the same type as the default from this API:\n\nhttps://developer.openstack.org/api-ref/block-storage/v3/#show-default-volume-type","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":26490,"name":"Jason SUN","email":"sunjia@inspur.com","username":"sunjia"},"change_message_id":"9dbcd891a783ffe6c7ec88cb00311f77ed482b1b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        attachments \u003d self.servers_client.list_volume_attachments("},{"line_number":73,"context_line":"            server[\u0027id\u0027])[\u0027volumeAttachments\u0027]"},{"line_number":74,"context_line":"        self.addCleanup(self.delete_server, server[\u0027id\u0027])"},{"line_number":75,"context_line":"        self.assertEqual(1, len(attachments))"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_c2fffa00","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":45},"in_reply_to":"3f79a3b5_f0b8d5e8","updated":"2018-10-12 09:57:57.000000000","message":"Yes, it\u0027s better.","commit_id":"d8fee998a70046cdffe9a973fdb18e6f504211fb"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3b5b55a7ef752dc14a798bcf9de6c5641507fd6b","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ServersTestSpecifyVolumeType(base.BaseV2ComputeTest):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.67\u0027"},{"line_number":22,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_a3651db2","line":21,"updated":"2018-10-12 13:19:48.000000000","message":"Hmm, for some reason this isn\u0027t being caught in the Rocky job:\n\nhttp://logs.openstack.org/57/609357/4/check/tempest-full-rocky/ab18ab7/job-output.txt.gz#_2018-10-12_10_44_11_778042\n\nMaybe stable/rocky devstack doesn\u0027t have the min and max microversions configured yet.","commit_id":"286ceb413aa5f677ebc0b30051b8918d94a4deeb"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2b9d1fd8810b50e658549aee9440894a5d356b58","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ServersTestSpecifyVolumeType(base.BaseV2ComputeTest):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.67\u0027"},{"line_number":22,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @classmethod"},{"line_number":25,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_742c9900","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":38},"updated":"2018-10-12 15:27:58.000000000","message":"If this test requires admin credentials then it should inherit directly from this instead: https://github.com/openstack/tempest/blob/3fe6cca92833a8aff890b520293227001111a346/tempest/api/compute/base.py#L569","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"1c010e6c19af6b5ad3638afdd6150cfcd8e11dca","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class ServersTestSpecifyVolumeType(base.BaseV2ComputeTest):"},{"line_number":21,"context_line":"    min_microversion \u003d \u00272.67\u0027"},{"line_number":22,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    @classmethod"},{"line_number":25,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_926a9418","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":38},"in_reply_to":"3f79a3b5_742c9900","updated":"2018-10-14 10:30:43.000000000","message":"Yeah it\u0027s better for inherit directly from \"BaseV2ComputeAdminTest\".","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2b9d1fd8810b50e658549aee9440894a5d356b58","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            skip_msg \u003d (\"%s skipped as Cinder is not available\" % cls.__name__)"},{"line_number":29,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def setup_credentials(cls):"},{"line_number":33,"context_line":"        super(ServersTestSpecifyVolumeType, cls).setup_credentials()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_54107dab","line":33,"range":{"start_line":31,"start_character":0,"end_line":33,"end_character":68},"updated":"2018-10-12 15:27:58.000000000","message":"nit: This is superfluous and can be removed. This super-class invocation happens automatically. If no other code is in here but that super-class invocation then this can be dropped.","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"1c010e6c19af6b5ad3638afdd6150cfcd8e11dca","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            skip_msg \u003d (\"%s skipped as Cinder is not available\" % cls.__name__)"},{"line_number":29,"context_line":"            raise cls.skipException(skip_msg)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @classmethod"},{"line_number":32,"context_line":"    def setup_credentials(cls):"},{"line_number":33,"context_line":"        super(ServersTestSpecifyVolumeType, cls).setup_credentials()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_322ce0ff","line":33,"range":{"start_line":31,"start_character":0,"end_line":33,"end_character":68},"in_reply_to":"3f79a3b5_54107dab","updated":"2018-10-14 10:30:43.000000000","message":"Done","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2b9d1fd8810b50e658549aee9440894a5d356b58","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def setup_clients(cls):"},{"line_number":37,"context_line":"        super(ServersTestSpecifyVolumeType, cls).setup_clients()"},{"line_number":38,"context_line":"        cls.client \u003d cls.servers_client"},{"line_number":39,"context_line":"        cls.volume_client \u003d cls.volumes_extensions_client"},{"line_number":40,"context_line":"        cls.volume_types_client \u003d cls.os_admin.volume_types_client_latest"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_348061be","line":38,"range":{"start_line":38,"start_character":7,"end_line":38,"end_character":39},"updated":"2018-10-12 15:27:58.000000000","message":"nit: It is better to just use `self.servers_client` directly below as it is more explicit than `self.client`. So this alias should preferably be removed.","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"1c010e6c19af6b5ad3638afdd6150cfcd8e11dca","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    @classmethod"},{"line_number":36,"context_line":"    def setup_clients(cls):"},{"line_number":37,"context_line":"        super(ServersTestSpecifyVolumeType, cls).setup_clients()"},{"line_number":38,"context_line":"        cls.client \u003d cls.servers_client"},{"line_number":39,"context_line":"        cls.volume_client \u003d cls.volumes_extensions_client"},{"line_number":40,"context_line":"        cls.volume_types_client \u003d cls.os_admin.volume_types_client_latest"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_b265504b","line":38,"range":{"start_line":38,"start_character":7,"end_line":38,"end_character":39},"in_reply_to":"3f79a3b5_348061be","updated":"2018-10-14 10:30:43.000000000","message":"Done","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2b9d1fd8810b50e658549aee9440894a5d356b58","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        volume_type_name \u003d data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":47,"context_line":"        params \u003d {\u0027name\u0027: volume_type_name,"},{"line_number":48,"context_line":"                  \u0027os-volume-type-access:is_public\u0027: True}"},{"line_number":49,"context_line":"        cls.volume_type \u003d cls.volume_types_client.create_volume_type(**params)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db66\u0027)"},{"line_number":52,"context_line":"    def test_create_server_specify_volume_type(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_94dcd5e2","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":78},"updated":"2018-10-12 15:27:58.000000000","message":"Missing a clean up here. Please do:\n\n    cls.volume_type \u003d cls.volume_types_client.create_volume_type(**params)[\u0027volume_type\u0027]\n    self.addResourceCleanup(\n        cls.volume_types_client.delete_volume_type, cls.volume_type[\u0027id\u0027])","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"c95792b83c2644608d25d6569fb7c8e789f24dfe","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        volume_type_name \u003d data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":47,"context_line":"        params \u003d {\u0027name\u0027: volume_type_name,"},{"line_number":48,"context_line":"                  \u0027os-volume-type-access:is_public\u0027: True}"},{"line_number":49,"context_line":"        cls.volume_type \u003d cls.volume_types_client.create_volume_type(**params)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db66\u0027)"},{"line_number":52,"context_line":"    def test_create_server_specify_volume_type(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_b42311bb","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":78},"in_reply_to":"3f79a3b5_94dcd5e2","updated":"2018-10-12 15:29:18.000000000","message":"The cleanup function is actually called \"addClassResourceCleanup\". Sorry for typo.","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"1c010e6c19af6b5ad3638afdd6150cfcd8e11dca","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        volume_type_name \u003d data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":47,"context_line":"        params \u003d {\u0027name\u0027: volume_type_name,"},{"line_number":48,"context_line":"                  \u0027os-volume-type-access:is_public\u0027: True}"},{"line_number":49,"context_line":"        cls.volume_type \u003d cls.volume_types_client.create_volume_type(**params)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db66\u0027)"},{"line_number":52,"context_line":"    def test_create_server_specify_volume_type(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_b2d310d3","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":78},"in_reply_to":"3f79a3b5_94dcd5e2","updated":"2018-10-14 10:30:43.000000000","message":"Yeah, it\u0027s better to this method, and the \"self.addClassResourceCleanup()\" needs to be replaced with \"cls.addClassResourceCleanup()\".","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"1c010e6c19af6b5ad3638afdd6150cfcd8e11dca","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        volume_type_name \u003d data_utils.rand_name(cls.__name__ + \u0027-volume-type\u0027)"},{"line_number":47,"context_line":"        params \u003d {\u0027name\u0027: volume_type_name,"},{"line_number":48,"context_line":"                  \u0027os-volume-type-access:is_public\u0027: True}"},{"line_number":49,"context_line":"        cls.volume_type \u003d cls.volume_types_client.create_volume_type(**params)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db66\u0027)"},{"line_number":52,"context_line":"    def test_create_server_specify_volume_type(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_5516264c","line":49,"range":{"start_line":49,"start_character":8,"end_line":49,"end_character":78},"in_reply_to":"3f79a3b5_b42311bb","updated":"2018-10-14 10:30:43.000000000","message":"Nothing :P","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"2b9d1fd8810b50e658549aee9440894a5d356b58","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db66\u0027)"},{"line_number":52,"context_line":"    def test_create_server_specify_volume_type(self):"},{"line_number":53,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":54,"context_line":"        volume_type_name \u003d self.volume_type[\u0027volume_type\u0027][\u0027name\u0027]"},{"line_number":55,"context_line":"        bdm \u003d [{"},{"line_number":56,"context_line":"            \u0027uuid\u0027: image_id,"},{"line_number":57,"context_line":"            \u0027source_type\u0027: \u0027image\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_d4848db4","line":54,"range":{"start_line":54,"start_character":43,"end_line":54,"end_character":58},"updated":"2018-10-12 15:27:58.000000000","message":"Using example above this can be removed here and below as well.","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"1c010e6c19af6b5ad3638afdd6150cfcd8e11dca","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    @decorators.idempotent_id(\u0027defbaca5-d611-49f5-ae21-56ee25d2db66\u0027)"},{"line_number":52,"context_line":"    def test_create_server_specify_volume_type(self):"},{"line_number":53,"context_line":"        image_id \u003d CONF.compute.image_ref"},{"line_number":54,"context_line":"        volume_type_name \u003d self.volume_type[\u0027volume_type\u0027][\u0027name\u0027]"},{"line_number":55,"context_line":"        bdm \u003d [{"},{"line_number":56,"context_line":"            \u0027uuid\u0027: image_id,"},{"line_number":57,"context_line":"            \u0027source_type\u0027: \u0027image\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f79a3b5_72d9f8ee","line":54,"range":{"start_line":54,"start_character":43,"end_line":54,"end_character":58},"in_reply_to":"3f79a3b5_d4848db4","updated":"2018-10-14 10:30:43.000000000","message":"Done","commit_id":"2d85eb07d1644dbc3b71aec6610c1b9c5597090a"}],"tempest/lib/services/volume/v3/types_client.py":[{"author":{"_account_id":8367,"name":"Arx Cruz","email":"arxcruz@redhat.com","username":"arxcruz"},"change_message_id":"3bc45d5ed2d1f7cb2a5ce734a76182166d75c970","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        self.expected_success(200, resp.status)"},{"line_number":52,"context_line":"        return rest_client.ResponseBody(resp, body)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def show_default_volume_type(self):"},{"line_number":55,"context_line":"        \"\"\"Returns the details of default volume type."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        For a full list of available parameters, please refer to the official"}],"source_content_type":"text/x-python","patch_set":19,"id":"1fa4df85_570a6526","line":54,"updated":"2020-02-25 08:42:59.000000000","message":"This is basically the same call as in show_volume_type, wondering if we can\u0027t just call that one here instead of duplicate code... Unless it\u0027s a tempest pratice","commit_id":"050b777f65c648ffa6a4b47a19eb55d45128edc2"}],"tempest/tests/lib/services/volume/v3/test_volume_types_client.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd67ea0d5aa912e1fc6beae98da176603cd5be7e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 FiberHome Telecommunication Technologies CO.,LTD"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_fc15b295","line":1,"range":{"start_line":1,"start_character":12,"end_line":1,"end_character":16},"updated":"2018-10-16 14:59:36.000000000","message":"2018?","commit_id":"2813e392095bcba94873e3ae1df3755745cd085b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"dd67ea0d5aa912e1fc6beae98da176603cd5be7e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2017 FiberHome Telecommunication Technologies CO.,LTD"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":11,"id":"3f79a3b5_9c76fe0b","line":2,"range":{"start_line":1,"start_character":0,"end_line":2,"end_character":22},"updated":"2018-10-16 14:59:36.000000000","message":"Do you even need this header? It\u0027s not in:\n\nhttps://review.openstack.org/#/c/609357/11/tempest/api/compute/admin/test_create_server_specify_volume_type.py","commit_id":"2813e392095bcba94873e3ae1df3755745cd085b"},{"author":{"_account_id":27078,"name":"Manik Bindlish","email":"manikbindlish19@gmail.com","username":"manik"},"change_message_id":"0be807cf47028aee74ac8e605aefb7b0f4e9fd32","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                                               \u0027volume\u0027,"},{"line_number":36,"context_line":"                                               \u0027regionOne\u0027)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _test_show_default_volume_type(self, bytes_body\u003dFalse):"},{"line_number":39,"context_line":"        self.check_service_client_function("},{"line_number":40,"context_line":"            self.client.show_default_volume_type,"},{"line_number":41,"context_line":"            \u0027tempest.lib.common.rest_client.RestClient.get\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_699a2d76","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":38},"updated":"2018-10-17 11:18:51.000000000","message":"Curious to know about, why helper function made for this.\nWhy can\u0027t we use directly in test.\nIn test L[45], we are just calling this helper function","commit_id":"9b6c973452480b93426fc423456536417c5d3938"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"fa95124f75c1e0ce35ecb27080031771147e47de","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                                               \u0027volume\u0027,"},{"line_number":36,"context_line":"                                               \u0027regionOne\u0027)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def _test_show_default_volume_type(self, bytes_body\u003dFalse):"},{"line_number":39,"context_line":"        self.check_service_client_function("},{"line_number":40,"context_line":"            self.client.show_default_volume_type,"},{"line_number":41,"context_line":"            \u0027tempest.lib.common.rest_client.RestClient.get\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"3f79a3b5_106707bb","line":38,"range":{"start_line":38,"start_character":8,"end_line":38,"end_character":38},"in_reply_to":"3f79a3b5_699a2d76","updated":"2018-10-18 00:37:43.000000000","message":"Yeah, I think this lack a tests case with \"bytes_body\u003dTrue\", I will add that in next patch.","commit_id":"9b6c973452480b93426fc423456536417c5d3938"}]}
