)]}'
{"tempest/common/waiters.py":[{"author":{"_account_id":9366,"name":"Andrew Kerr","email":"andrew.kerr@netapp.com","username":"andrew-kerr"},"change_message_id":"64a22636496c0d5f3fc6aa97d2db8cd28ecab1bf","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            raise exceptions.TimeoutException(message)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"def wait_for_volume_type(client, volume_id, new_volume_type):"},{"line_number":190,"context_line":"    \"\"\"Waits for a Volume to have a new volume type.\"\"\""},{"line_number":191,"context_line":"    body \u003d client.show_volume(volume_id)[\u0027volume\u0027]"},{"line_number":192,"context_line":"    current_volume_type \u003d body[\u0027volume_type\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_ee4cbbc9","line":189,"range":{"start_line":189,"start_character":4,"end_line":189,"end_character":24},"updated":"2016-06-14 17:02:40.000000000","message":"This name may be a little confusing, as it could sound like you\u0027re waiting for a volume_type to become available.  Maybe a minor tweak to \"wait_for_volume_retype\" could help avoid any confusion.","commit_id":"0edf49d7616a6c46cd2f0f7605571023eb4d0b24"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"1819fa407fd568ad763ac4cef6a3ec5511598bf0","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            raise exceptions.TimeoutException(message)"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"def wait_for_volume_type(client, volume_id, new_volume_type):"},{"line_number":190,"context_line":"    \"\"\"Waits for a Volume to have a new volume type.\"\"\""},{"line_number":191,"context_line":"    body \u003d client.show_volume(volume_id)[\u0027volume\u0027]"},{"line_number":192,"context_line":"    current_volume_type \u003d body[\u0027volume_type\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_eb065fcc","line":189,"range":{"start_line":189,"start_character":4,"end_line":189,"end_character":24},"in_reply_to":"7aa08908_ee4cbbc9","updated":"2016-06-14 21:18:52.000000000","message":"I will change.","commit_id":"0edf49d7616a6c46cd2f0f7605571023eb4d0b24"}],"tempest/scenario/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f21f21219ea3465a8c1a90645f60c2e9a693768","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        cls.orchestration_client \u003d cls.manager.orchestration_client"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        if CONF.volume_feature_enabled.api_v1:"},{"line_number":85,"context_line":"            cls.volumes_client \u003d cls.manager.volumes_client"},{"line_number":86,"context_line":"            cls.admin_volume_client \u003d cls.manager.volumes_client"},{"line_number":87,"context_line":"            cls.snapshots_client \u003d cls.manager.snapshots_client"},{"line_number":88,"context_line":"        else:"},{"line_number":89,"context_line":"            cls.volumes_client \u003d cls.manager.volumes_v2_client"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_57d8ad53","line":86,"range":{"start_line":85,"start_character":12,"end_line":86,"end_character":64},"updated":"2016-06-20 23:39:32.000000000","message":"How are these any different? What makes the latter an admin client? Did you mean to copy how admin_volume_types_client is created in the EncryptionScenarioTest?","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"25d72f4f20211aa6b971e4d4b69fbf4ad1d45acf","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        cls.orchestration_client \u003d cls.manager.orchestration_client"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        if CONF.volume_feature_enabled.api_v1:"},{"line_number":85,"context_line":"            cls.volumes_client \u003d cls.manager.volumes_client"},{"line_number":86,"context_line":"            cls.admin_volume_client \u003d cls.manager.volumes_client"},{"line_number":87,"context_line":"            cls.snapshots_client \u003d cls.manager.snapshots_client"},{"line_number":88,"context_line":"        else:"},{"line_number":89,"context_line":"            cls.volumes_client \u003d cls.manager.volumes_v2_client"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_475ab851","line":86,"range":{"start_line":85,"start_character":12,"end_line":86,"end_character":64},"in_reply_to":"5a9d85d2_57d8ad53","updated":"2016-06-22 17:25:52.000000000","message":"Yes, I actually don\u0027t need that admin_volume_client. Thanks.","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f21f21219ea3465a8c1a90645f60c2e9a693768","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":287,"context_line":"        if not client:"},{"line_number":288,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":289,"context_line":"        if not name:"},{"line_number":290,"context_line":"            name \u003d \u0027generic\u0027"},{"line_number":291,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_77a169a9","line":288,"range":{"start_line":288,"start_character":26,"end_line":288,"end_character":51},"updated":"2016-06-20 23:39:32.000000000","message":"This isn\u0027t actually defined in ScenarioTest but in sub-classes, which is probably not the pattern we want.","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"25d72f4f20211aa6b971e4d4b69fbf4ad1d45acf","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":287,"context_line":"        if not client:"},{"line_number":288,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":289,"context_line":"        if not name:"},{"line_number":290,"context_line":"            name \u003d \u0027generic\u0027"},{"line_number":291,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_8ac4a75f","line":288,"range":{"start_line":288,"start_character":26,"end_line":288,"end_character":51},"in_reply_to":"5a9d85d2_77a169a9","updated":"2016-06-22 17:25:52.000000000","message":"Moving it up cause an issue. See L#1399 comment.","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f21f21219ea3465a8c1a90645f60c2e9a693768","unresolved":false,"context_lines":[{"line_number":290,"context_line":"            name \u003d \u0027generic\u0027"},{"line_number":291,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        LOG.debug(\"Creating a volume type: %s\", randomized_name)"},{"line_number":294,"context_line":"        body \u003d client.create_volume_type("},{"line_number":295,"context_line":"            name\u003drandomized_name)[\u0027volume_type\u0027]"},{"line_number":296,"context_line":"        self.assertIn(\u0027id\u0027, body)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_3777e13b","line":293,"updated":"2016-06-20 23:39:32.000000000","message":"Maybe throw the backend_name in here?","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"25d72f4f20211aa6b971e4d4b69fbf4ad1d45acf","unresolved":false,"context_lines":[{"line_number":290,"context_line":"            name \u003d \u0027generic\u0027"},{"line_number":291,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        LOG.debug(\"Creating a volume type: %s\", randomized_name)"},{"line_number":294,"context_line":"        body \u003d client.create_volume_type("},{"line_number":295,"context_line":"            name\u003drandomized_name)[\u0027volume_type\u0027]"},{"line_number":296,"context_line":"        self.assertIn(\u0027id\u0027, body)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_934a1eab","line":293,"in_reply_to":"5a9d85d2_3777e13b","updated":"2016-06-22 17:25:52.000000000","message":"Done","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f21f21219ea3465a8c1a90645f60c2e9a693768","unresolved":false,"context_lines":[{"line_number":1393,"context_line":"    @classmethod"},{"line_number":1394,"context_line":"    def setup_clients(cls):"},{"line_number":1395,"context_line":"        super(VolumeScenarioTest, cls).setup_clients()"},{"line_number":1396,"context_line":"        if CONF.volume_feature_enabled.api_v1:"},{"line_number":1397,"context_line":"            cls.admin_volume_types_client \u003d cls.os_adm.volume_types_client"},{"line_number":1398,"context_line":"        else:"},{"line_number":1399,"context_line":"            cls.admin_volume_types_client \u003d cls.os_adm.volume_types_v2_client"},{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":""},{"line_number":1402,"context_line":"class EncryptionScenarioTest(ScenarioTest):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_37a0819f","line":1399,"range":{"start_line":1396,"start_character":8,"end_line":1399,"end_character":77},"updated":"2016-06-20 23:39:32.000000000","message":"I\u0027m pretty sure this needs to happen in setup_clients in ScenaroiTest.","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"25d72f4f20211aa6b971e4d4b69fbf4ad1d45acf","unresolved":false,"context_lines":[{"line_number":1393,"context_line":"    @classmethod"},{"line_number":1394,"context_line":"    def setup_clients(cls):"},{"line_number":1395,"context_line":"        super(VolumeScenarioTest, cls).setup_clients()"},{"line_number":1396,"context_line":"        if CONF.volume_feature_enabled.api_v1:"},{"line_number":1397,"context_line":"            cls.admin_volume_types_client \u003d cls.os_adm.volume_types_client"},{"line_number":1398,"context_line":"        else:"},{"line_number":1399,"context_line":"            cls.admin_volume_types_client \u003d cls.os_adm.volume_types_v2_client"},{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":""},{"line_number":1402,"context_line":"class EncryptionScenarioTest(ScenarioTest):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_8ee2fe01","line":1399,"range":{"start_line":1396,"start_character":8,"end_line":1399,"end_character":77},"in_reply_to":"5a9d85d2_37a0819f","updated":"2016-06-22 17:25:52.000000000","message":"If I move as-is (with cls.os_adm) other scenario tests fail:\n  File \"/opt/stack/tempest/tempest/scenario/manager.py\", line 86, in setup_clients\n    cls.admin_volume_types_client \u003d cls.os_adm.volume_types_client\nAttributeError: type object \u0027TestVolumeBootPatternV2\u0027 has no attribute \u0027os_adm\u0027\n\nAnd If I change to cls.manager, these tests will fail:\ntempest.lib.exceptions.Forbidden: Forbidden\nDetails: {u\u0027message\u0027: u\"Policy doesn\u0027t allow volume_extension:types_manage to be performed.\", u\u0027code\u0027: 403}","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"de9d7e9f35199643bc601874f868608aa1c3c4b0","unresolved":false,"context_lines":[{"line_number":290,"context_line":""},{"line_number":291,"context_line":"        LOG.debug((\"Creating a volume type: %s on backend %s\") %"},{"line_number":292,"context_line":"                  (randomized_name, backend_name))"},{"line_number":293,"context_line":"        body \u003d client.create_volume_type("},{"line_number":294,"context_line":"            name\u003drandomized_name)[\u0027volume_type\u0027]"},{"line_number":295,"context_line":"        self.assertIn(\u0027id\u0027, body)"},{"line_number":296,"context_line":"        self.addCleanup(client.delete_volume_type, body[\u0027id\u0027])"},{"line_number":297,"context_line":"        return body"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_e0e5bcdc","line":294,"range":{"start_line":293,"start_character":0,"end_line":294,"end_character":48},"updated":"2016-09-27 18:19:13.000000000","message":"How is this triggering the migration? This should be passing extra_specs\u003d{\u0027volume_backend_name\u0027:backend_name}.","commit_id":"0289bcabe3cf34f2a87e5910d51021920257b7a8"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"1b88977b625aa8437a5aa93482fae6364a3a7272","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        volume \u003d self.volumes_client.show_volume(volume[\u0027id\u0027])[\u0027volume\u0027]"},{"line_number":242,"context_line":"        return volume"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":245,"context_line":"        if not client:"},{"line_number":246,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":247,"context_line":"        if not name:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a77a97e_d72345bb","line":244,"updated":"2016-11-18 17:26:13.000000000","message":"might be nice to optionally be able to add extra_specs in this call?","commit_id":"ab02099071d60a2f7efd4369b663de7158ac962d"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b6d59da5f0b1c4d3266aa52a80e9df0babf20822","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        volume \u003d self.volumes_client.show_volume(volume[\u0027id\u0027])[\u0027volume\u0027]"},{"line_number":242,"context_line":"        return volume"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":245,"context_line":"        if not client:"},{"line_number":246,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":247,"context_line":"        if not name:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a77a97e_ae5ab64e","line":244,"in_reply_to":"7a77a97e_d72345bb","updated":"2016-11-21 16:44:52.000000000","message":"Yeah, it would be useful but as I\u0027m not using, better leave to someone that actually needs to implement it.","commit_id":"ab02099071d60a2f7efd4369b663de7158ac962d"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"7237f2d3b6d1af1b5bcb4b190364de6dd4a2cc2c","unresolved":false,"context_lines":[{"line_number":1375,"context_line":"            timeout\u003dCONF.baremetal.unprovision_timeout)"},{"line_number":1376,"context_line":""},{"line_number":1377,"context_line":""},{"line_number":1378,"context_line":"class VolumeScenarioTest(ScenarioTest):"},{"line_number":1379,"context_line":"    \"\"\"Base class for volume scenario tests\"\"\""},{"line_number":1380,"context_line":""},{"line_number":1381,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a74a57a_418753b4","line":1378,"updated":"2016-11-29 15:02:46.000000000","message":"We\u0027re trying to move away from deep class inheritance as it makes test code harder to debug and maintain.\nYou could create a ~ setup_volume_client helper, which could be used by any test that requires to use volume clients.","commit_id":"db2adaed73009a2a863a8a506a5f4b05b8a09fdc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"65aa7b1227f89a22751b6d63468e0413d83d1b9c","unresolved":false,"context_lines":[{"line_number":1375,"context_line":"            timeout\u003dCONF.baremetal.unprovision_timeout)"},{"line_number":1376,"context_line":""},{"line_number":1377,"context_line":""},{"line_number":1378,"context_line":"class VolumeScenarioTest(ScenarioTest):"},{"line_number":1379,"context_line":"    \"\"\"Base class for volume scenario tests\"\"\""},{"line_number":1380,"context_line":""},{"line_number":1381,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_a2d0d054","line":1378,"in_reply_to":"5a74a57a_418753b4","updated":"2016-12-02 14:08:11.000000000","message":"Ok, I moved this to the test class. Not really know why we did like this.","commit_id":"db2adaed73009a2a863a8a506a5f4b05b8a09fdc"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"31b57ad6057d954da0040c33841099c28033f4a1","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":245,"context_line":"        if not client:"},{"line_number":246,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":247,"context_line":"        if not name:"},{"line_number":248,"context_line":"            name \u003d \u0027generic\u0027"},{"line_number":249,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        LOG.debug((\"Creating a volume type: %s on backend %s\") %"},{"line_number":252,"context_line":"                  (randomized_name, backend_name))"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5201f7_e813a25a","line":249,"range":{"start_line":247,"start_character":0,"end_line":249,"end_character":71},"updated":"2017-01-03 06:25:13.000000000","message":"how about:\nif not name:\n    name \u003d data_utils.rand_name(self.__class__.__name__ + \u0027-volume-type\u0027)","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"1aa70e7338a60712a2cc19afd0e08aa997129a33","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":245,"context_line":"        if not client:"},{"line_number":246,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":247,"context_line":"        if not name:"},{"line_number":248,"context_line":"            name \u003d \u0027generic\u0027"},{"line_number":249,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        LOG.debug((\"Creating a volume type: %s on backend %s\") %"},{"line_number":252,"context_line":"                  (randomized_name, backend_name))"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a3c09a3_171eda5e","line":249,"range":{"start_line":247,"start_character":0,"end_line":249,"end_character":71},"in_reply_to":"ba5201f7_e813a25a","updated":"2017-01-17 13:27:33.000000000","message":"Done","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"4bb483b1c6cdb549601bed7ae9d5d696105d0f82","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        volume \u003d self.volumes_client.show_volume(volume[\u0027id\u0027])[\u0027volume\u0027]"},{"line_number":249,"context_line":"        return volume"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":252,"context_line":"        if not client:"},{"line_number":253,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":254,"context_line":"        if not name:"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_a6e66f41","line":251,"range":{"start_line":251,"start_character":8,"end_line":251,"end_character":26},"updated":"2017-01-18 14:30:34.000000000","message":"This looks like the same helper from EncryptionScenarioTest, plus the backend, so I think you should remove the one in EncryptionScenarioTest.","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"96884e6b2da58b7ad28c6fc833c0ec2a1fcf26f9","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        volume \u003d self.volumes_client.show_volume(volume[\u0027id\u0027])[\u0027volume\u0027]"},{"line_number":249,"context_line":"        return volume"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":252,"context_line":"        if not client:"},{"line_number":253,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":254,"context_line":"        if not name:"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a3905b3_dfb918cd","line":251,"range":{"start_line":251,"start_character":8,"end_line":251,"end_character":26},"in_reply_to":"5a3905b3_1fce40b4","updated":"2017-01-20 11:23:20.000000000","message":"meh... indeed, sorry silly comment","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"74cf7ee2db1248efec39916bbc0f8792b7d7e02e","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        volume \u003d self.volumes_client.show_volume(volume[\u0027id\u0027])[\u0027volume\u0027]"},{"line_number":249,"context_line":"        return volume"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":252,"context_line":"        if not client:"},{"line_number":253,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":254,"context_line":"        if not name:"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a3905b3_1fce40b4","line":251,"range":{"start_line":251,"start_character":8,"end_line":251,"end_character":26},"in_reply_to":"5a3905b3_ea2ad57d","updated":"2017-01-20 11:15:39.000000000","message":"I think you already removed.","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"c14abb62247ff24a4ceb1da7605e98f29a62614c","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        volume \u003d self.volumes_client.show_volume(volume[\u0027id\u0027])[\u0027volume\u0027]"},{"line_number":249,"context_line":"        return volume"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":252,"context_line":"        if not client:"},{"line_number":253,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":254,"context_line":"        if not name:"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a3905b3_ea2ad57d","line":251,"range":{"start_line":251,"start_character":8,"end_line":251,"end_character":26},"in_reply_to":"7a3c09a3_a6e66f41","updated":"2017-01-19 11:03:34.000000000","message":"This one[1]? They are fairly different though they share the concept of creating a volume type. Make they common will only bring their differences inside the same function. I don\u0027t think it worth the work.\n\n[1] https://github.com/openstack/tempest/blob/master/tempest/scenario/manager.py#L1262-L1273","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"98067951e2413aff6482c9498d596a41240f0d20","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":252,"context_line":"        if not client:"},{"line_number":253,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":254,"context_line":"        if not name:"},{"line_number":255,"context_line":"            class_name \u003d self.__class__.__name__"},{"line_number":256,"context_line":"            name \u003d data_utils.rand_name(class_name + \u0027-volume-type\u0027)"},{"line_number":257,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        LOG.debug(\"Creating a volume type: %s on backend %s\","},{"line_number":260,"context_line":"                  randomized_name, backend_name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_8cca9819","line":257,"range":{"start_line":254,"start_character":0,"end_line":257,"end_character":71},"updated":"2017-01-18 01:56:17.000000000","message":"I think if name is specified, we needn\u0027t change it to a random name again.","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"c9ff4621fe1564587274c54334f2c6fc8d7f6fb7","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":252,"context_line":"        if not client:"},{"line_number":253,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":254,"context_line":"        if not name:"},{"line_number":255,"context_line":"            class_name \u003d self.__class__.__name__"},{"line_number":256,"context_line":"            name \u003d data_utils.rand_name(class_name + \u0027-volume-type\u0027)"},{"line_number":257,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        LOG.debug(\"Creating a volume type: %s on backend %s\","},{"line_number":260,"context_line":"                  randomized_name, backend_name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a3905b3_504e52c2","line":257,"range":{"start_line":254,"start_character":0,"end_line":257,"end_character":71},"in_reply_to":"7a3c09a3_6bfb7279","updated":"2017-01-19 01:57:25.000000000","message":"Yes Andrea, we should always have random names.:) And here I think maybe we can generate random name before calling the function if necessary, because we may do something like this:\n    name \u003d data_utils.rand_name(class_name + \u0027-first\u0027)\n    volume_type \u003d self.create_volume_type(name\u003dname)\n    self.assertEqual(name, volume_type[\u0027name\u0027])","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"4bb483b1c6cdb549601bed7ae9d5d696105d0f82","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    def create_volume_type(self, client\u003dNone, name\u003dNone, backend_name\u003dNone):"},{"line_number":252,"context_line":"        if not client:"},{"line_number":253,"context_line":"            client \u003d self.admin_volume_types_client"},{"line_number":254,"context_line":"        if not name:"},{"line_number":255,"context_line":"            class_name \u003d self.__class__.__name__"},{"line_number":256,"context_line":"            name \u003d data_utils.rand_name(class_name + \u0027-volume-type\u0027)"},{"line_number":257,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        LOG.debug(\"Creating a volume type: %s on backend %s\","},{"line_number":260,"context_line":"                  randomized_name, backend_name)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_6bfb7279","line":257,"range":{"start_line":254,"start_character":0,"end_line":257,"end_character":71},"in_reply_to":"7a3c09a3_8cca9819","updated":"2017-01-18 14:30:34.000000000","message":"We always need a random part in all names, to avoid duplicates. The reason for having \"name\" as well is to make it easier when debugging to understand from which test a certain volume comes from.","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"98067951e2413aff6482c9498d596a41240f0d20","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            name \u003d data_utils.rand_name(class_name + \u0027-volume-type\u0027)"},{"line_number":257,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        LOG.debug(\"Creating a volume type: %s on backend %s\","},{"line_number":260,"context_line":"                  randomized_name, backend_name)"},{"line_number":261,"context_line":"        extra_specs \u003d {}"},{"line_number":262,"context_line":"        if backend_name:"},{"line_number":263,"context_line":"            extra_specs \u003d {\"volume_backend_name\": backend_name}"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_2cafe42a","line":260,"range":{"start_line":259,"start_character":0,"end_line":260,"end_character":48},"updated":"2017-01-18 01:56:17.000000000","message":"if backend_name is None, will the print message look a bit strange?","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"4bb483b1c6cdb549601bed7ae9d5d696105d0f82","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            name \u003d data_utils.rand_name(class_name + \u0027-volume-type\u0027)"},{"line_number":257,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        LOG.debug(\"Creating a volume type: %s on backend %s\","},{"line_number":260,"context_line":"                  randomized_name, backend_name)"},{"line_number":261,"context_line":"        extra_specs \u003d {}"},{"line_number":262,"context_line":"        if backend_name:"},{"line_number":263,"context_line":"            extra_specs \u003d {\"volume_backend_name\": backend_name}"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_cb71c60d","line":260,"range":{"start_line":259,"start_character":0,"end_line":260,"end_character":48},"in_reply_to":"7a3c09a3_2cafe42a","updated":"2017-01-18 14:30:34.000000000","message":"NIT: heh I guess you could print \"default\" instead of None here :)","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"88da10384a90dedbcb9db561c69adb695ed6ebac","unresolved":false,"context_lines":[{"line_number":256,"context_line":"            name \u003d data_utils.rand_name(class_name + \u0027-volume-type\u0027)"},{"line_number":257,"context_line":"        randomized_name \u003d data_utils.rand_name(\u0027scenario-type-\u0027 + name)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        LOG.debug(\"Creating a volume type: %s on backend %s\","},{"line_number":260,"context_line":"                  randomized_name, backend_name)"},{"line_number":261,"context_line":"        extra_specs \u003d {}"},{"line_number":262,"context_line":"        if backend_name:"},{"line_number":263,"context_line":"            extra_specs \u003d {\"volume_backend_name\": backend_name}"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_34cffb56","line":260,"range":{"start_line":259,"start_character":0,"end_line":260,"end_character":48},"in_reply_to":"7a3c09a3_cb71c60d","updated":"2017-01-19 10:38:12.000000000","message":"I think this is exactly what is needed to the debug message here. I want to be able to know exactly what the user is passing, no matter what that is. The output may be dirt, but is just a debug anyway.","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"}],"tempest/scenario/test_volume_migrate_attached.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"eea6121c454b63695a90836889480f52ec454f7d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # breathing room to get through deletes in the time allotted."},{"line_number":40,"context_line":"    TIMEOUT_SCALING_FACTOR \u003d 2"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @classmethod"},{"line_number":45,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_f7c7ae0f","line":42,"updated":"2016-06-13 17:09:04.000000000","message":"Seems odd that you need to specify these here, they are also in the parent class.","commit_id":"0edf49d7616a6c46cd2f0f7605571023eb4d0b24"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"1819fa407fd568ad763ac4cef6a3ec5511598bf0","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # breathing room to get through deletes in the time allotted."},{"line_number":40,"context_line":"    TIMEOUT_SCALING_FACTOR \u003d 2"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    @classmethod"},{"line_number":45,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_ab6a977e","line":42,"in_reply_to":"7aa08908_f7c7ae0f","updated":"2016-06-14 21:18:52.000000000","message":"You are right. I\u0027ll remove.","commit_id":"0edf49d7616a6c46cd2f0f7605571023eb4d0b24"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"28fc7bc995506d071c248b066618a55e0a244d0e","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        if not CONF.volume_feature_enabled.multi_backend:"},{"line_number":46,"context_line":"            raise cls.skipException(\"Cinder multi-backend feature disabled\")"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        if len(CONF.volume.backend_names) \u003c 2:"},{"line_number":49,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":50,"context_line":"                                    \"backend names\")"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_7f6e6eca","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":46},"updated":"2016-06-20 17:22:52.000000000","message":"This config option existed before this change, but it\u0027s not used in the normal gate jobs:\n\nhttp://logs.openstack.org/73/328673/1/check/gate-tempest-dsvm-full/d2e8a67/console.html.gz#_2016-06-12_13_28_29_392068\n\nSo what job is already using this?","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"5b6e2a0d905496bbea1863543daa68eb18a44465","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        if not CONF.volume_feature_enabled.multi_backend:"},{"line_number":46,"context_line":"            raise cls.skipException(\"Cinder multi-backend feature disabled\")"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        if len(CONF.volume.backend_names) \u003c 2:"},{"line_number":49,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":50,"context_line":"                                    \"backend names\")"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_b42594ac","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":46},"in_reply_to":"5a9d85d2_7f6e6eca","updated":"2016-06-20 20:09:07.000000000","message":"The gate-tempest-dsvm-full job \"uses\" this, by running tempest/api/volume/admin/test_multi_backend. But the test is then skipped, because the 2 backends are not set.\nThis is why I wanted to find a way to just set 2 backends, which I\u0027ve attempted in:\nhttps://review.openstack.org/#/c/330678/\nAfter getting that in as an experimental, we (cinder test working group) figured we could more easily get it merged, and then move the config to run on more jobs, including the one for this patch.\nI\u0027m open to any ideas on how and where to configure conf settings, make changes to jobs, etc.","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7c05e441a2d8349c40089acb3a200facc4276837","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        if not CONF.volume_feature_enabled.multi_backend:"},{"line_number":46,"context_line":"            raise cls.skipException(\"Cinder multi-backend feature disabled\")"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        if len(CONF.volume.backend_names) \u003c 2:"},{"line_number":49,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":50,"context_line":"                                    \"backend names\")"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_dc096233","line":48,"range":{"start_line":48,"start_character":8,"end_line":48,"end_character":46},"in_reply_to":"5a9d85d2_b42594ac","updated":"2016-06-20 23:11:17.000000000","message":"Yeah I poked around on it today too, the only other jobs that set CINDER_ENABLED_BACKENDS today are the ceph job and a drbd job, but neither appear to run the multibackend tests because it\u0027s not configured properly, which the dependent devstack change should fix.\n\nAlso, the DNM patch that tests this passed:\n\nhttp://logs.openstack.org/40/331840/2/check/gate-tempest-dsvm-full/8350f8d/console.html#_2016-06-20_21_48_34_014272","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f21f21219ea3465a8c1a90645f60c2e9a693768","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                                  imageRef\u003dimg_uuid,"},{"line_number":57,"context_line":"                                  volume_type\u003dvolume_type)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _get_bdm(self, vol_id, delete_on_termination\u003dFalse):"},{"line_number":60,"context_line":"        # NOTE(gfidente): the syntax for block_device_mapping is"},{"line_number":61,"context_line":"        # dev_name\u003did:type:size:delete_on_terminate"},{"line_number":62,"context_line":"        # where type needs to be \"snap\" if the server is booted"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_77dde913","line":59,"updated":"2016-06-20 23:39:32.000000000","message":"I\u0027m not sure we should copy this method, I always thought this was better:\n\nhttps://github.com/openstack/tempest/blob/master/tempest/common/compute.py#L104","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"25d72f4f20211aa6b971e4d4b69fbf4ad1d45acf","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                                  imageRef\u003dimg_uuid,"},{"line_number":57,"context_line":"                                  volume_type\u003dvolume_type)"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def _get_bdm(self, vol_id, delete_on_termination\u003dFalse):"},{"line_number":60,"context_line":"        # NOTE(gfidente): the syntax for block_device_mapping is"},{"line_number":61,"context_line":"        # dev_name\u003did:type:size:delete_on_terminate"},{"line_number":62,"context_line":"        # where type needs to be \"snap\" if the server is booted"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_790dd33d","line":59,"in_reply_to":"5a9d85d2_77dde913","updated":"2016-06-22 17:25:52.000000000","message":"I can use that pattern, but then it fails if I don\u0027t send a device name. I\u0027ll use the pattern, but with the dev name.","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f21f21219ea3465a8c1a90645f60c2e9a693768","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # where type needs to be \"snap\" if the server is booted"},{"line_number":63,"context_line":"        # from a snapshot, size instead can be safely left empty"},{"line_number":64,"context_line":"        bd_map \u003d [{"},{"line_number":65,"context_line":"            \u0027device_name\u0027: \u0027vda\u0027,"},{"line_number":66,"context_line":"            \u0027volume_id\u0027: vol_id,"},{"line_number":67,"context_line":"            \u0027delete_on_termination\u0027: str(int(delete_on_termination))}]"},{"line_number":68,"context_line":"        return {\u0027block_device_mapping\u0027: bd_map}"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_77b689dd","line":65,"updated":"2016-06-20 23:39:32.000000000","message":"We shouldn\u0027t specify device_name, it\u0027s ignored for the libvirt driver since liberty.","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"25d72f4f20211aa6b971e4d4b69fbf4ad1d45acf","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        # where type needs to be \"snap\" if the server is booted"},{"line_number":63,"context_line":"        # from a snapshot, size instead can be safely left empty"},{"line_number":64,"context_line":"        bd_map \u003d [{"},{"line_number":65,"context_line":"            \u0027device_name\u0027: \u0027vda\u0027,"},{"line_number":66,"context_line":"            \u0027volume_id\u0027: vol_id,"},{"line_number":67,"context_line":"            \u0027delete_on_termination\u0027: str(int(delete_on_termination))}]"},{"line_number":68,"context_line":"        return {\u0027block_device_mapping\u0027: bd_map}"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_b930db02","line":65,"in_reply_to":"5a9d85d2_77b689dd","updated":"2016-06-22 17:25:52.000000000","message":"I get failure without the dev name:\nTraceback (most recent call last):\n  File \"/opt/stack/tempest/tempest/test.py\", line 111, in wrapper\n    return f(self, *func_args, **func_kwargs)\n  File \"/opt/stack/tempest/tempest/scenario/test_volume_migrate_attached.py\", line 133, in test_volume_migrate_attached\n    keypair, security_group)\n  File \"/opt/stack/tempest/tempest/scenario/test_volume_migrate_attached.py\", line 89, in _boot_instance_from_volume\n    **create_kwargs)\n  File \"/opt/stack/tempest/tempest/scenario/manager.py\", line 240, in create_server\n    image_id\u003dimage_id, **kwargs)\n  File \"/opt/stack/tempest/tempest/common/compute.py\", line 118, in create_test_server\n    **kwargs)\n  File \"/opt/stack/tempest/tempest/lib/services/compute/servers_client.py\", line 67, in create_server\n    resp, body \u003d self.post(\u0027servers\u0027, post_body)\n  File \"/opt/stack/tempest/tempest/lib/common/rest_client.py\", line 266, in post\n    return self.request(\u0027POST\u0027, url, extra_headers, headers, body, chunked)\n  File \"/opt/stack/tempest/tempest/lib/services/compute/base_compute_client.py\", line 53, in request\n    method, url, extra_headers, headers, body, chunked)\n  File \"/opt/stack/tempest/tempest/lib/common/rest_client.py\", line 660, in request\n    resp, resp_body)\n  File \"/opt/stack/tempest/tempest/lib/common/rest_client.py\", line 763, in _error_checker\n    raise exceptions.BadRequest(resp_body, resp\u003dresp)\ntempest.lib.exceptions.BadRequest: Bad request\nDetails: {u\u0027message\u0027: u\u0027Block Device Mapping is Invalid: Boot sequence for the instance and image/block device mapping combination is not valid.\u0027, u\u0027code\u0027: 400}","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f21f21219ea3465a8c1a90645f60c2e9a693768","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                                       volume_id, new_volume_type)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @test.idempotent_id(\u0027deadd2c2-beef-4dce-98be-f86765ff311b\u0027)"},{"line_number":111,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":112,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027)"},{"line_number":113,"context_line":"    def test_volume_migrate_attached(self):"},{"line_number":114,"context_line":"        LOG.info(\"Creating keypair and security group\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_179d8565","line":111,"updated":"2016-06-20 23:39:32.000000000","message":"Hmm, not sure if this should be set, it makes this run during grenade jobs. Probably ask mtreinish or sdague.","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"25d72f4f20211aa6b971e4d4b69fbf4ad1d45acf","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                                       volume_id, new_volume_type)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    @test.idempotent_id(\u0027deadd2c2-beef-4dce-98be-f86765ff311b\u0027)"},{"line_number":111,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":112,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027)"},{"line_number":113,"context_line":"    def test_volume_migrate_attached(self):"},{"line_number":114,"context_line":"        LOG.info(\"Creating keypair and security group\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_ab19a27b","line":111,"in_reply_to":"5a9d85d2_179d8565","updated":"2016-06-22 17:25:52.000000000","message":"I\u0027ll remove. I don\u0027t think this should run for grenade.","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f21f21219ea3465a8c1a90645f60c2e9a693768","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        self.assertEqual(timestamp, timestamp2)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        # delete instance"},{"line_number":150,"context_line":"        self._delete_server(instance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a9d85d2_973a1535","line":150,"updated":"2016-06-20 23:39:32.000000000","message":"This should probably be a self.addCleanup(self._delete_server, instance) call after the server is created so you don\u0027t leak resources.","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":7173,"name":"Scott DAngelo","email":"scott.dangelo@gmail.com","username":"scottda"},"change_message_id":"25d72f4f20211aa6b971e4d4b69fbf4ad1d45acf","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        self.assertEqual(timestamp, timestamp2)"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"        # delete instance"},{"line_number":150,"context_line":"        self._delete_server(instance)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3aaa91ec_215e7176","line":150,"in_reply_to":"5a9d85d2_973a1535","updated":"2016-06-22 17:25:52.000000000","message":"Done","commit_id":"93ca63b641c2942ed19faa4a3221ca5e05da0b86"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d024be603976015d38eeabde9931a1fd449a2c61","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _volume_retype_with_migration(self, volume_id, new_volume_type):"},{"line_number":95,"context_line":"        migration_policy \u003d \u0027on-demand\u0027"},{"line_number":96,"context_line":"        self.volumes_client.retype_volume("},{"line_number":97,"context_line":"            volume_id, new_type\u003dnew_volume_type,"},{"line_number":98,"context_line":"            migration_policy\u003dmigration_policy)"},{"line_number":99,"context_line":"        waiters.wait_for_volume_retype(self.volumes_client,"},{"line_number":100,"context_line":"                                       volume_id, new_volume_type)"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a89bdaa_426af41b","line":98,"range":{"start_line":96,"start_character":8,"end_line":98,"end_character":46},"updated":"2016-09-02 19:57:18.000000000","message":"What does this do under the covers in cinder exactly? I\u0027m following an instance through the n-cpu logs in https://review.openstack.org/#/c/331840/ that\u0027s testing this change and I\u0027m not seeing any volumes being swapped. Does the retype create a copy of the volume and swap the attachments in nova, or is that a different operation (migration)?","commit_id":"0289bcabe3cf34f2a87e5910d51021920257b7a8"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"de9d7e9f35199643bc601874f868608aa1c3c4b0","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _volume_retype_with_migration(self, volume_id, new_volume_type):"},{"line_number":95,"context_line":"        migration_policy \u003d \u0027on-demand\u0027"},{"line_number":96,"context_line":"        self.volumes_client.retype_volume("},{"line_number":97,"context_line":"            volume_id, new_type\u003dnew_volume_type,"},{"line_number":98,"context_line":"            migration_policy\u003dmigration_policy)"},{"line_number":99,"context_line":"        waiters.wait_for_volume_retype(self.volumes_client,"},{"line_number":100,"context_line":"                                       volume_id, new_volume_type)"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_c07c40ee","line":98,"range":{"start_line":96,"start_character":8,"end_line":98,"end_character":46},"in_reply_to":"9a89bdaa_426af41b","updated":"2016-09-27 18:19:13.000000000","message":"The types crated should have the volume_backend_name in order to work properly. See, my comment in scenario/manager.py.","commit_id":"0289bcabe3cf34f2a87e5910d51021920257b7a8"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b082fc4f0da8022199c8f3d42fad422f9ddf1b5c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":50,"context_line":"                                    \"backend names\")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _create_volume_from_image(self, volume_type\u003dNone):"},{"line_number":53,"context_line":"        img_uuid \u003d CONF.compute.image_ref"},{"line_number":54,"context_line":"        vol_name \u003d data_utils.rand_name(\u0027volume-origin\u0027)"},{"line_number":55,"context_line":"        return self.create_volume(name\u003dvol_name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a77a97e_dd8b3c1d","line":52,"updated":"2016-11-21 10:23:11.000000000","message":"You don\"t need to introduce a new function.\n\ncreate_volume will already pick a random name if no name is passed. No need to duplicate this behavior.\n\nJust call self.create_volume(imageRef\u003dCONF.compute.image_ref, etc.) inline in your tests.","commit_id":"ab02099071d60a2f7efd4369b663de7158ac962d"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b6d59da5f0b1c4d3266aa52a80e9df0babf20822","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":50,"context_line":"                                    \"backend names\")"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _create_volume_from_image(self, volume_type\u003dNone):"},{"line_number":53,"context_line":"        img_uuid \u003d CONF.compute.image_ref"},{"line_number":54,"context_line":"        vol_name \u003d data_utils.rand_name(\u0027volume-origin\u0027)"},{"line_number":55,"context_line":"        return self.create_volume(name\u003dvol_name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a77a97e_6b16d056","line":52,"in_reply_to":"7a77a97e_dd8b3c1d","updated":"2016-11-21 16:44:52.000000000","message":"Good point.","commit_id":"ab02099071d60a2f7efd4369b663de7158ac962d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b082fc4f0da8022199c8f3d42fad422f9ddf1b5c","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair\u003dNone,"},{"line_number":60,"context_line":"                                   security_group\u003dNone,"},{"line_number":61,"context_line":"                                   delete_on_termination\u003dFalse):"},{"line_number":62,"context_line":"        create_kwargs \u003d dict()"},{"line_number":63,"context_line":"        if keypair:"},{"line_number":64,"context_line":"            create_kwargs[\u0027key_name\u0027] \u003d keypair[\u0027name\u0027]"},{"line_number":65,"context_line":"        if security_group:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a77a97e_1d8774d8","line":62,"updated":"2016-11-21 10:23:11.000000000","message":"That dict is not needed. Tempest has methods/and functions that take **kwargs arguments (I am talking about create_server()), just to do this. If you really want a new _boot_instance_from_volume method, it should take some **kwargs and your tests would pass key_name and security_groups in the kwargs.","commit_id":"ab02099071d60a2f7efd4369b663de7158ac962d"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b6d59da5f0b1c4d3266aa52a80e9df0babf20822","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair\u003dNone,"},{"line_number":60,"context_line":"                                   security_group\u003dNone,"},{"line_number":61,"context_line":"                                   delete_on_termination\u003dFalse):"},{"line_number":62,"context_line":"        create_kwargs \u003d dict()"},{"line_number":63,"context_line":"        if keypair:"},{"line_number":64,"context_line":"            create_kwargs[\u0027key_name\u0027] \u003d keypair[\u0027name\u0027]"},{"line_number":65,"context_line":"        if security_group:"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a77a97e_8ec97a5d","line":62,"in_reply_to":"7a77a97e_1d8774d8","updated":"2016-11-21 16:44:52.000000000","message":"Done","commit_id":"ab02099071d60a2f7efd4369b663de7158ac962d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b082fc4f0da8022199c8f3d42fad422f9ddf1b5c","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":76,"context_line":"            **create_kwargs)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _delete_server(self, server):"},{"line_number":79,"context_line":"        self.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":80,"context_line":"        waiters.wait_for_server_termination(self.servers_client, server[\u0027id\u0027])"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7a77a97e_7de4e8ab","line":78,"updated":"2016-11-21 10:23:11.000000000","message":"Please inline this function. No need to introduce a new function for 2 lines of code only used once.\n\nAs a reviewer, I start reading the test code. If there\u0027s a function I don\"t know, then I have to search the whole tempest code base to search where it is defined. The fewer new function you introduce, the more you reuse existing code, the more reviewers are helped.","commit_id":"ab02099071d60a2f7efd4369b663de7158ac962d"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b6d59da5f0b1c4d3266aa52a80e9df0babf20822","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":76,"context_line":"            **create_kwargs)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _delete_server(self, server):"},{"line_number":79,"context_line":"        self.servers_client.delete_server(server[\u0027id\u0027])"},{"line_number":80,"context_line":"        waiters.wait_for_server_termination(self.servers_client, server[\u0027id\u0027])"},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7a77a97e_0ec64a16","line":78,"in_reply_to":"7a77a97e_7de4e8ab","updated":"2016-11-21 16:44:52.000000000","message":"This is because we need to add a waiter. I added the deletion inline.","commit_id":"ab02099071d60a2f7efd4369b663de7158ac962d"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"b082fc4f0da8022199c8f3d42fad422f9ddf1b5c","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        instance \u003d self._boot_instance_from_volume(volume_origin[\u0027id\u0027],"},{"line_number":118,"context_line":"                                                   keypair, security_group)"},{"line_number":119,"context_line":"        LOG.info(\"Booted instance: %s\" % instance)"},{"line_number":120,"context_line":"        self.addCleanup(self._delete_server, instance)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        # write content to volume on instance"},{"line_number":123,"context_line":"        LOG.info(\"Setting timestamp in instance %s\" % instance)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a77a97e_fd9d580b","line":120,"updated":"2016-11-21 10:23:11.000000000","message":"Instead of calling a function, just do\nself.addCleanup(waiters.wait_for_server_termination, ..\nself.addCleanup(self.servers_client.delete_server, ...","commit_id":"ab02099071d60a2f7efd4369b663de7158ac962d"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"b6d59da5f0b1c4d3266aa52a80e9df0babf20822","unresolved":false,"context_lines":[{"line_number":117,"context_line":"        instance \u003d self._boot_instance_from_volume(volume_origin[\u0027id\u0027],"},{"line_number":118,"context_line":"                                                   keypair, security_group)"},{"line_number":119,"context_line":"        LOG.info(\"Booted instance: %s\" % instance)"},{"line_number":120,"context_line":"        self.addCleanup(self._delete_server, instance)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        # write content to volume on instance"},{"line_number":123,"context_line":"        LOG.info(\"Setting timestamp in instance %s\" % instance)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a77a97e_ce80d28e","line":120,"in_reply_to":"7a77a97e_fd9d580b","updated":"2016-11-21 16:44:52.000000000","message":"Done","commit_id":"ab02099071d60a2f7efd4369b663de7158ac962d"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"7237f2d3b6d1af1b5bcb4b190364de6dd4a2cc2c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    @test.services(\u0027compute\u0027, \u0027volume\u0027)"},{"line_number":89,"context_line":"    def test_volume_migrate_attached(self):"},{"line_number":90,"context_line":"        LOG.info(\"Creating keypair and security group\")"},{"line_number":91,"context_line":"        keypair \u003d self.create_keypair()"},{"line_number":92,"context_line":"        security_group \u003d self._create_security_group()"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        # create volume types"},{"line_number":95,"context_line":"        LOG.info(\"Creating Volume types\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a74a57a_7cecf6ba","line":92,"range":{"start_line":91,"start_character":0,"end_line":92,"end_character":54},"updated":"2016-11-29 15:02:46.000000000","message":"You could have these created automatically for you via \"validation resources\" but in fact this is much more readable :)","commit_id":"db2adaed73009a2a863a8a506a5f4b05b8a09fdc"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"fe3de0bf2c30cbad981b7f6bddaf63963644455d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        instance \u003d self._boot_instance_from_volume(volume_origin[\u0027id\u0027],"},{"line_number":105,"context_line":"                                                   keypair, security_group)"},{"line_number":106,"context_line":"        LOG.info(\"Booted instance: %s\" % instance)"},{"line_number":107,"context_line":"        self.addCleanup(waiters.wait_for_server_termination,"},{"line_number":108,"context_line":"                        self.servers_client, instance[\u0027id\u0027])"},{"line_number":109,"context_line":"        self.addCleanup(self.servers_client.delete_server, instance[\u0027id\u0027])"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # write content to volume on instance"},{"line_number":112,"context_line":"        LOG.info(\"Setting timestamp in instance %s\" % instance)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5a74a57a_6013490e","line":109,"range":{"start_line":107,"start_character":0,"end_line":109,"end_character":74},"updated":"2016-11-30 05:23:22.000000000","message":"I think we don\u0027t need to do this because ScenarioTest.create_server() does it in the class.\n\nhttps://github.com/openstack/tempest/blob/master/tempest/scenario/manager.py#L211-L214","commit_id":"db2adaed73009a2a863a8a506a5f4b05b8a09fdc"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"65aa7b1227f89a22751b6d63468e0413d83d1b9c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        instance \u003d self._boot_instance_from_volume(volume_origin[\u0027id\u0027],"},{"line_number":105,"context_line":"                                                   keypair, security_group)"},{"line_number":106,"context_line":"        LOG.info(\"Booted instance: %s\" % instance)"},{"line_number":107,"context_line":"        self.addCleanup(waiters.wait_for_server_termination,"},{"line_number":108,"context_line":"                        self.servers_client, instance[\u0027id\u0027])"},{"line_number":109,"context_line":"        self.addCleanup(self.servers_client.delete_server, instance[\u0027id\u0027])"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # write content to volume on instance"},{"line_number":112,"context_line":"        LOG.info(\"Setting timestamp in instance %s\" % instance)"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a71b18c_e2b488f3","line":109,"range":{"start_line":107,"start_character":0,"end_line":109,"end_character":74},"in_reply_to":"5a74a57a_6013490e","updated":"2016-12-02 14:08:11.000000000","message":"Ow that\u0027s right.","commit_id":"db2adaed73009a2a863a8a506a5f4b05b8a09fdc"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"95767e6afc62b7c5addb5633fee53f397e3adcc7","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        instance \u003d self._boot_instance_from_volume(volume_origin[\u0027id\u0027],"},{"line_number":105,"context_line":"                                                   keypair, security_group)"},{"line_number":106,"context_line":"        LOG.info(\"Booted instance: %s\" % instance)"},{"line_number":107,"context_line":"        self.addCleanup(waiters.wait_for_server_termination,"},{"line_number":108,"context_line":"                        self.servers_client, instance[\u0027id\u0027])"},{"line_number":109,"context_line":"        self.addCleanup(self.servers_client.delete_server, instance[\u0027id\u0027])"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"        # write content to volume on instance"},{"line_number":112,"context_line":"        LOG.info(\"Setting timestamp in instance %s\" % instance)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1a6eadb0_54ac0634","line":109,"range":{"start_line":107,"start_character":0,"end_line":109,"end_character":74},"in_reply_to":"5a74a57a_6013490e","updated":"2016-12-14 11:33:54.000000000","message":"Well since this is a scenario test and there is only one test in the class, I guess this is ok. However the volume created by this test is not a resource shared with other tests, so it should be delete at the end of test rather than at the end of the class. \nAnyways, one cleanup happens, so this is not a show stopper.","commit_id":"db2adaed73009a2a863a8a506a5f4b05b8a09fdc"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"463eb01ede7ffc55c2f264ed64a5c776adab45bd","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # Boot from volume scenario is quite slow, and needs extra"},{"line_number":38,"context_line":"    # breathing room to get through deletes in the time allotted."},{"line_number":39,"context_line":"    TIMEOUT_SCALING_FACTOR \u003d 2"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6eadb0_5e90a043","line":39,"updated":"2016-12-14 12:27:06.000000000","message":"Please remove this, it shouldn\"t be needed. It was copy pasted from TestVolumeBootPattern which is much more time consuming than this test","commit_id":"693511c9dab02a98aa12e6ec6a5da6662895a519"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"c0683597bc411af9e3639a243769f61161fc6b25","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        LOG.info(\"Retyping Volume %s to new type %s\" % (volume_origin[\u0027id\u0027],"},{"line_number":126,"context_line":"                                                        dest_type))"},{"line_number":127,"context_line":"        self._volume_retype_with_migration(volume_origin[\u0027id\u0027], dest_type)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        # check the content of written file"},{"line_number":130,"context_line":"        LOG.info(\"Getting timestamp in postmigrated instance %s\" % instance)"},{"line_number":131,"context_line":"        timestamp2 \u003d self.get_timestamp(ip_instance,"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6eadb0_be5e1474","line":128,"updated":"2016-12-14 12:31:27.000000000","message":"We might try to drop the caches, or enforce direct i/o here.","commit_id":"693511c9dab02a98aa12e6ec6a5da6662895a519"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"e1ae793d659152e24c7938c7ef4265d75e220c8f","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        LOG.info(\"Retyping Volume %s to new type %s\" % (volume_origin[\u0027id\u0027],"},{"line_number":126,"context_line":"                                                        dest_type))"},{"line_number":127,"context_line":"        self._volume_retype_with_migration(volume_origin[\u0027id\u0027], dest_type)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        # check the content of written file"},{"line_number":130,"context_line":"        LOG.info(\"Getting timestamp in postmigrated instance %s\" % instance)"},{"line_number":131,"context_line":"        timestamp2 \u003d self.get_timestamp(ip_instance,"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6eadb0_bc6ffcc3","line":128,"in_reply_to":"1a6eadb0_214bc9ca","updated":"2016-12-14 12:55:49.000000000","message":"as root \u0027echo 3 \u003e /proc/sys/vm/drop_caches\u0027 , is usually enough on linux.\n\nSeveral command , for example dd usually has arguments to enforce direct i/o.","commit_id":"693511c9dab02a98aa12e6ec6a5da6662895a519"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"2d7e899c06d4d042e18f821dd34c9215678dd8fa","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        LOG.info(\"Retyping Volume %s to new type %s\" % (volume_origin[\u0027id\u0027],"},{"line_number":126,"context_line":"                                                        dest_type))"},{"line_number":127,"context_line":"        self._volume_retype_with_migration(volume_origin[\u0027id\u0027], dest_type)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        # check the content of written file"},{"line_number":130,"context_line":"        LOG.info(\"Getting timestamp in postmigrated instance %s\" % instance)"},{"line_number":131,"context_line":"        timestamp2 \u003d self.get_timestamp(ip_instance,"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6eadb0_5c17c8ec","line":128,"in_reply_to":"1a6eadb0_bc6ffcc3","updated":"2016-12-14 13:00:28.000000000","message":"Hmmm, but why the direct I/O would that needed? I don\u0027t see how that would influence in the test correctness.","commit_id":"693511c9dab02a98aa12e6ec6a5da6662895a519"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"25cc6b9b26dd14214fce74597319efddc5f17a2c","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        LOG.info(\"Retyping Volume %s to new type %s\" % (volume_origin[\u0027id\u0027],"},{"line_number":126,"context_line":"                                                        dest_type))"},{"line_number":127,"context_line":"        self._volume_retype_with_migration(volume_origin[\u0027id\u0027], dest_type)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        # check the content of written file"},{"line_number":130,"context_line":"        LOG.info(\"Getting timestamp in postmigrated instance %s\" % instance)"},{"line_number":131,"context_line":"        timestamp2 \u003d self.get_timestamp(ip_instance,"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a6eadb0_214bc9ca","line":128,"in_reply_to":"1a6eadb0_be5e1474","updated":"2016-12-14 12:47:39.000000000","message":"?? how is this done?","commit_id":"693511c9dab02a98aa12e6ec6a5da6662895a519"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"31b57ad6057d954da0040c33841099c28033f4a1","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    \"\"\"This test case attempts to reproduce the following steps:"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"     * Create 2 volume types representing 2 different backends"},{"line_number":29,"context_line":"     * Create in Cinder some bootable volume importing a Glance image using"},{"line_number":30,"context_line":"     *   volume_type_1"},{"line_number":31,"context_line":"     * Boot an instance from the bootable volume"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5201f7_bbb002f6","line":28,"range":{"start_line":28,"start_character":42,"end_line":28,"end_character":62},"updated":"2017-01-03 06:25:13.000000000","message":"what will happen if 2 same backends are defined in tempest.conf?","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"dfa0ef1772c7784b7c19ecc0949642cde340c9bb","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # Boot from volume scenario is quite slow, and needs extra"},{"line_number":38,"context_line":"    # breathing room to get through deletes in the time allotted."},{"line_number":39,"context_line":"    TIMEOUT_SCALING_FACTOR \u003d 2"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5201f7_8e5b1a54","line":39,"updated":"2016-12-30 15:54:40.000000000","message":"Like I said in PS15: Please remove this, it shouldn\"t be needed. It was copy pasted from TestVolumeBootPattern which is much more time consuming than this test","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"1aa70e7338a60712a2cc19afd0e08aa997129a33","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # Boot from volume scenario is quite slow, and needs extra"},{"line_number":38,"context_line":"    # breathing room to get through deletes in the time allotted."},{"line_number":39,"context_line":"    TIMEOUT_SCALING_FACTOR \u003d 2"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7a3c09a3_3c0f3d89","line":39,"in_reply_to":"ba5201f7_8e5b1a54","updated":"2017-01-17 13:27:33.000000000","message":"Done","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4671467c420f3eb3ba376e26fd580b435cf98a8c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        if not CONF.volume_feature_enabled.multi_backend:"},{"line_number":55,"context_line":"            raise cls.skipException(\"Cinder multi-backend feature disabled\")"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if len(CONF.volume.backend_names) \u003c 2:"},{"line_number":58,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":59,"context_line":"                                    \"backend names\")"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair, security_group):"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5201f7_8ec15a83","line":59,"range":{"start_line":57,"start_character":0,"end_line":59,"end_character":52},"updated":"2016-12-30 15:04:12.000000000","message":"ditto as https://review.openstack.org/#/c/195443/80/tempest/api/volume/admin/test_volume_retype_with_migration.py","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"1aa70e7338a60712a2cc19afd0e08aa997129a33","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        if not CONF.volume_feature_enabled.multi_backend:"},{"line_number":55,"context_line":"            raise cls.skipException(\"Cinder multi-backend feature disabled\")"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        if len(CONF.volume.backend_names) \u003c 2:"},{"line_number":58,"context_line":"            raise cls.skipException(\"Requires at least two different \""},{"line_number":59,"context_line":"                                    \"backend names\")"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair, security_group):"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"7a3c09a3_bc1b2dc9","line":59,"range":{"start_line":57,"start_character":0,"end_line":59,"end_character":52},"in_reply_to":"ba5201f7_8ec15a83","updated":"2017-01-17 13:27:33.000000000","message":"Done","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"31b57ad6057d954da0040c33841099c28033f4a1","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        key_name \u003d keypair[\u0027name\u0027]"},{"line_number":64,"context_line":"        security_groups \u003d [{\u0027name\u0027: security_group[\u0027name\u0027]}]"},{"line_number":65,"context_line":"        block_device_mapping \u003d [{\u0027device_name\u0027: \u0027vda\u0027, \u0027volume_id\u0027: vol_id,"},{"line_number":66,"context_line":"                                 \u0027delete_on_termination\u0027: \u00270\u0027}]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        return self.create_server(image_id\u003d\u0027\u0027, wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":69,"context_line":"                                  key_name\u003dkey_name,"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5201f7_bb87220e","line":66,"range":{"start_line":66,"start_character":58,"end_line":66,"end_character":61},"updated":"2017-01-03 06:25:13.000000000","message":"FALSE","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"1aa70e7338a60712a2cc19afd0e08aa997129a33","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        key_name \u003d keypair[\u0027name\u0027]"},{"line_number":64,"context_line":"        security_groups \u003d [{\u0027name\u0027: security_group[\u0027name\u0027]}]"},{"line_number":65,"context_line":"        block_device_mapping \u003d [{\u0027device_name\u0027: \u0027vda\u0027, \u0027volume_id\u0027: vol_id,"},{"line_number":66,"context_line":"                                 \u0027delete_on_termination\u0027: \u00270\u0027}]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        return self.create_server(image_id\u003d\u0027\u0027, wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":69,"context_line":"                                  key_name\u003dkey_name,"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a3c09a3_9c7591fb","line":66,"range":{"start_line":66,"start_character":58,"end_line":66,"end_character":61},"in_reply_to":"ba5201f7_bb87220e","updated":"2017-01-17 13:27:33.000000000","message":"Done","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"4671467c420f3eb3ba376e26fd580b435cf98a8c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                  block_device_mapping\u003dblock_device_mapping)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _create_types(self):"},{"line_number":74,"context_line":"        backend_names \u003d CONF.volume.backend_names"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        backend_source \u003d backend_names[0]"},{"line_number":77,"context_line":"        backend_dest \u003d backend_names[1]"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5201f7_cebb620d","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":49},"updated":"2016-12-30 15:04:12.000000000","message":"ditto as https://review.openstack.org/#/c/195443/80/tempest/api/volume/admin/test_volume_retype_with_migration.py","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"1aa70e7338a60712a2cc19afd0e08aa997129a33","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                  block_device_mapping\u003dblock_device_mapping)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def _create_types(self):"},{"line_number":74,"context_line":"        backend_names \u003d CONF.volume.backend_names"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        backend_source \u003d backend_names[0]"},{"line_number":77,"context_line":"        backend_dest \u003d backend_names[1]"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a3c09a3_5c56c95c","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":49},"in_reply_to":"ba5201f7_cebb620d","updated":"2017-01-17 13:27:33.000000000","message":"Done","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"31b57ad6057d954da0040c33841099c28033f4a1","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        LOG.info(\"Created Volume types: %(src)s -\u003e %(src_be)s, %(dst)s \""},{"line_number":83,"context_line":"                 \"-\u003e %(dst_be)s\" % {\u0027src\u0027: source_body[\u0027name\u0027],"},{"line_number":84,"context_line":"                                    \u0027src_be\u0027: backend_source,"},{"line_number":85,"context_line":"                                    \u0027dst\u0027: dest_body[\u0027name\u0027],"},{"line_number":86,"context_line":"                                    \u0027dst_be\u0027: backend_dest})"},{"line_number":87,"context_line":"        return source_body[\u0027name\u0027], dest_body[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5201f7_c8aa5ed4","line":84,"range":{"start_line":84,"start_character":37,"end_line":84,"end_character":43},"updated":"2017-01-03 06:25:13.000000000","message":"seems better to use src_backend as variable name","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"1aa70e7338a60712a2cc19afd0e08aa997129a33","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        LOG.info(\"Created Volume types: %(src)s -\u003e %(src_be)s, %(dst)s \""},{"line_number":83,"context_line":"                 \"-\u003e %(dst_be)s\" % {\u0027src\u0027: source_body[\u0027name\u0027],"},{"line_number":84,"context_line":"                                    \u0027src_be\u0027: backend_source,"},{"line_number":85,"context_line":"                                    \u0027dst\u0027: dest_body[\u0027name\u0027],"},{"line_number":86,"context_line":"                                    \u0027dst_be\u0027: backend_dest})"},{"line_number":87,"context_line":"        return source_body[\u0027name\u0027], dest_body[\u0027name\u0027]"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a3c09a3_dc4b9985","line":84,"range":{"start_line":84,"start_character":37,"end_line":84,"end_character":43},"in_reply_to":"ba5201f7_c8aa5ed4","updated":"2017-01-17 13:27:33.000000000","message":"Done","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"31b57ad6057d954da0040c33841099c28033f4a1","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                 \"-\u003e %(dst_be)s\" % {\u0027src\u0027: source_body[\u0027name\u0027],"},{"line_number":84,"context_line":"                                    \u0027src_be\u0027: backend_source,"},{"line_number":85,"context_line":"                                    \u0027dst\u0027: dest_body[\u0027name\u0027],"},{"line_number":86,"context_line":"                                    \u0027dst_be\u0027: backend_dest})"},{"line_number":87,"context_line":"        return source_body[\u0027name\u0027], dest_body[\u0027name\u0027]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def _volume_retype_with_migration(self, volume_id, new_volume_type):"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5201f7_e8af22e1","line":86,"range":{"start_line":86,"start_character":37,"end_line":86,"end_character":43},"updated":"2017-01-03 06:25:13.000000000","message":"ditto","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"1aa70e7338a60712a2cc19afd0e08aa997129a33","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                 \"-\u003e %(dst_be)s\" % {\u0027src\u0027: source_body[\u0027name\u0027],"},{"line_number":84,"context_line":"                                    \u0027src_be\u0027: backend_source,"},{"line_number":85,"context_line":"                                    \u0027dst\u0027: dest_body[\u0027name\u0027],"},{"line_number":86,"context_line":"                                    \u0027dst_be\u0027: backend_dest})"},{"line_number":87,"context_line":"        return source_body[\u0027name\u0027], dest_body[\u0027name\u0027]"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def _volume_retype_with_migration(self, volume_id, new_volume_type):"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a3c09a3_9c7f51aa","line":86,"range":{"start_line":86,"start_character":37,"end_line":86,"end_character":43},"in_reply_to":"ba5201f7_e8af22e1","updated":"2017-01-17 13:27:33.000000000","message":"Done","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"31b57ad6057d954da0040c33841099c28033f4a1","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        LOG.info(\"Booted instance: %s\" % instance)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        # write content to volume on instance"},{"line_number":119,"context_line":"        LOG.info(\"Setting timestamp in instance %s\" % instance)"},{"line_number":120,"context_line":"        ip_instance \u003d self.get_server_ip(instance)"},{"line_number":121,"context_line":"        timestamp \u003d self.create_timestamp(ip_instance,"},{"line_number":122,"context_line":"                                          private_key\u003dkeypair[\u0027private_key\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"ba5201f7_9bb09edf","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":63},"updated":"2017-01-03 06:25:13.000000000","message":"instance is entire server info, not server id, so the print message maybe too long.","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"1aa70e7338a60712a2cc19afd0e08aa997129a33","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        LOG.info(\"Booted instance: %s\" % instance)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        # write content to volume on instance"},{"line_number":119,"context_line":"        LOG.info(\"Setting timestamp in instance %s\" % instance)"},{"line_number":120,"context_line":"        ip_instance \u003d self.get_server_ip(instance)"},{"line_number":121,"context_line":"        timestamp \u003d self.create_timestamp(ip_instance,"},{"line_number":122,"context_line":"                                          private_key\u003dkeypair[\u0027private_key\u0027])"}],"source_content_type":"text/x-python","patch_set":17,"id":"7a3c09a3_5c7969c7","line":119,"range":{"start_line":119,"start_character":8,"end_line":119,"end_character":63},"in_reply_to":"ba5201f7_9bb09edf","updated":"2017-01-17 13:27:33.000000000","message":"Done","commit_id":"1a8d58698315229b41aa6818d7d40d5578b0d030"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"98067951e2413aff6482c9498d596a41240f0d20","unresolved":false,"context_lines":[{"line_number":34,"context_line":"     * Check written content of migrated volume"},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_cc11005f","line":37,"range":{"start_line":37,"start_character":4,"end_line":37,"end_character":38},"updated":"2017-01-18 01:56:17.000000000","message":"already defined in super","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"88da10384a90dedbcb9db561c69adb695ed6ebac","unresolved":false,"context_lines":[{"line_number":34,"context_line":"     * Check written content of migrated volume"},{"line_number":35,"context_line":"    \"\"\""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    credentials \u003d [\u0027primary\u0027, \u0027admin\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def setup_clients(cls):"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_3dac3b35","line":37,"range":{"start_line":37,"start_character":4,"end_line":37,"end_character":38},"in_reply_to":"7a3c09a3_cc11005f","updated":"2017-01-19 10:38:12.000000000","message":"No is not. The test does not work without this credentials.","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"98067951e2413aff6482c9498d596a41240f0d20","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                                    \"backend names\")"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair, security_group):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        key_name \u003d keypair[\u0027name\u0027]"},{"line_number":60,"context_line":"        security_groups \u003d [{\u0027name\u0027: security_group[\u0027name\u0027]}]"},{"line_number":61,"context_line":"        block_device_mapping \u003d [{\u0027device_name\u0027: \u0027vda\u0027, \u0027volume_id\u0027: vol_id,"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_471de964","line":58,"updated":"2017-01-18 01:56:17.000000000","message":"blank line","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"88da10384a90dedbcb9db561c69adb695ed6ebac","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                                    \"backend names\")"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _boot_instance_from_volume(self, vol_id, keypair, security_group):"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        key_name \u003d keypair[\u0027name\u0027]"},{"line_number":60,"context_line":"        security_groups \u003d [{\u0027name\u0027: security_group[\u0027name\u0027]}]"},{"line_number":61,"context_line":"        block_device_mapping \u003d [{\u0027device_name\u0027: \u0027vda\u0027, \u0027volume_id\u0027: vol_id,"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_5d80278c","line":58,"in_reply_to":"7a3c09a3_471de964","updated":"2017-01-19 10:38:12.000000000","message":"Done","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"98067951e2413aff6482c9498d596a41240f0d20","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                                  security_groups\u003dsecurity_groups,"},{"line_number":67,"context_line":"                                  block_device_mapping\u003dblock_device_mapping)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _create_types(self):"},{"line_number":70,"context_line":"        backend_names \u003d CONF.volume.backend_names"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        backend_source \u003d backend_names[0]"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_675d8514","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":21},"updated":"2017-01-18 01:56:17.000000000","message":"better to rename to _create_volume_types ?","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"88da10384a90dedbcb9db561c69adb695ed6ebac","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                                  security_groups\u003dsecurity_groups,"},{"line_number":67,"context_line":"                                  block_device_mapping\u003dblock_device_mapping)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _create_types(self):"},{"line_number":70,"context_line":"        backend_names \u003d CONF.volume.backend_names"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        backend_source \u003d backend_names[0]"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_7d7de3b0","line":69,"range":{"start_line":69,"start_character":8,"end_line":69,"end_character":21},"in_reply_to":"7a3c09a3_675d8514","updated":"2017-01-19 10:38:12.000000000","message":"Done","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"98067951e2413aff6482c9498d596a41240f0d20","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # create an instance from volume"},{"line_number":105,"context_line":"        LOG.info(\"Booting instance from volume\")"},{"line_number":106,"context_line":"        img_uuid \u003d CONF.compute.image_ref"},{"line_number":107,"context_line":"        volume_origin \u003d self.create_volume(imageRef\u003dimg_uuid,"},{"line_number":108,"context_line":"                                           volume_type\u003dsource_type)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_47908995","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":16},"updated":"2017-01-18 01:56:17.000000000","message":"no need to use a variable to express CONF.compute.image_ref?","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"88da10384a90dedbcb9db561c69adb695ed6ebac","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        # create an instance from volume"},{"line_number":105,"context_line":"        LOG.info(\"Booting instance from volume\")"},{"line_number":106,"context_line":"        img_uuid \u003d CONF.compute.image_ref"},{"line_number":107,"context_line":"        volume_origin \u003d self.create_volume(imageRef\u003dimg_uuid,"},{"line_number":108,"context_line":"                                           volume_type\u003dsource_type)"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_fd155349","line":106,"range":{"start_line":106,"start_character":8,"end_line":106,"end_character":16},"in_reply_to":"7a3c09a3_47908995","updated":"2017-01-19 10:38:12.000000000","message":"Done","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"98067951e2413aff6482c9498d596a41240f0d20","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        instance \u003d self._boot_instance_from_volume(volume_origin[\u0027id\u0027],"},{"line_number":111,"context_line":"                                                   keypair, security_group)"},{"line_number":112,"context_line":"        LOG.info(\"Booted instance: %s\", instance[\u0027id\u0027])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # write content to volume on instance"},{"line_number":115,"context_line":"        LOG.info(\"Setting timestamp in instance %s\", instance)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_07c841a5","line":112,"range":{"start_line":112,"start_character":7,"end_line":112,"end_character":55},"updated":"2017-01-18 01:56:17.000000000","message":"seems not very necessary to print this","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"88da10384a90dedbcb9db561c69adb695ed6ebac","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        instance \u003d self._boot_instance_from_volume(volume_origin[\u0027id\u0027],"},{"line_number":111,"context_line":"                                                   keypair, security_group)"},{"line_number":112,"context_line":"        LOG.info(\"Booted instance: %s\", instance[\u0027id\u0027])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # write content to volume on instance"},{"line_number":115,"context_line":"        LOG.info(\"Setting timestamp in instance %s\", instance)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_480f832e","line":112,"range":{"start_line":112,"start_character":7,"end_line":112,"end_character":55},"in_reply_to":"7a3c09a3_07c841a5","updated":"2017-01-19 10:38:12.000000000","message":"Done","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"98067951e2413aff6482c9498d596a41240f0d20","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        LOG.info(\"Booted instance: %s\", instance[\u0027id\u0027])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # write content to volume on instance"},{"line_number":115,"context_line":"        LOG.info(\"Setting timestamp in instance %s\", instance)"},{"line_number":116,"context_line":"        ip_instance \u003d self.get_server_ip(instance)"},{"line_number":117,"context_line":"        timestamp \u003d self.create_timestamp(ip_instance,"},{"line_number":118,"context_line":"                                          private_key\u003dkeypair[\u0027private_key\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_47bec9ff","line":115,"range":{"start_line":115,"start_character":53,"end_line":115,"end_character":61},"updated":"2017-01-18 01:56:17.000000000","message":"instance[\u0027id\u0027] ?","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"88da10384a90dedbcb9db561c69adb695ed6ebac","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        LOG.info(\"Booted instance: %s\", instance[\u0027id\u0027])"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        # write content to volume on instance"},{"line_number":115,"context_line":"        LOG.info(\"Setting timestamp in instance %s\", instance)"},{"line_number":116,"context_line":"        ip_instance \u003d self.get_server_ip(instance)"},{"line_number":117,"context_line":"        timestamp \u003d self.create_timestamp(ip_instance,"},{"line_number":118,"context_line":"                                          private_key\u003dkeypair[\u0027private_key\u0027])"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_681c3f6b","line":115,"range":{"start_line":115,"start_character":53,"end_line":115,"end_character":61},"in_reply_to":"7a3c09a3_47bec9ff","updated":"2017-01-19 10:38:12.000000000","message":"Done","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"98067951e2413aff6482c9498d596a41240f0d20","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        self._volume_retype_with_migration(volume_origin[\u0027id\u0027], dest_type)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        # check the content of written file"},{"line_number":126,"context_line":"        LOG.info(\"Getting timestamp in postmigrated instance %s\", instance)"},{"line_number":127,"context_line":"        timestamp2 \u003d self.get_timestamp(ip_instance,"},{"line_number":128,"context_line":"                                        private_key\u003dkeypair[\u0027private_key\u0027])"},{"line_number":129,"context_line":"        self.assertEqual(timestamp, timestamp2)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_67b90515","line":126,"range":{"start_line":126,"start_character":66,"end_line":126,"end_character":74},"updated":"2017-01-18 01:56:17.000000000","message":"instance[\u0027id\u0027]?","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":10058,"name":"Erlon R. Cruz","email":"erlon.rodrigues.cruz@canonical.com","username":"sombrafam"},"change_message_id":"88da10384a90dedbcb9db561c69adb695ed6ebac","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        self._volume_retype_with_migration(volume_origin[\u0027id\u0027], dest_type)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"        # check the content of written file"},{"line_number":126,"context_line":"        LOG.info(\"Getting timestamp in postmigrated instance %s\", instance)"},{"line_number":127,"context_line":"        timestamp2 \u003d self.get_timestamp(ip_instance,"},{"line_number":128,"context_line":"                                        private_key\u003dkeypair[\u0027private_key\u0027])"},{"line_number":129,"context_line":"        self.assertEqual(timestamp, timestamp2)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7a3c09a3_283957d9","line":126,"range":{"start_line":126,"start_character":66,"end_line":126,"end_character":74},"in_reply_to":"7a3c09a3_67b90515","updated":"2017-01-19 10:38:12.000000000","message":"Done","commit_id":"081d77fa60e5b6e724b87eb0ab014b64457eb5ba"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a6e7ed92eff5e09a8a7a871d2ad44618ea6bad38","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        return source_body[\u0027name\u0027], dest_body[\u0027name\u0027]"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _volume_retype_with_migration(self, volume_id, new_volume_type):"},{"line_number":86,"context_line":"        migration_policy \u003d \u0027on-demand\u0027"},{"line_number":87,"context_line":"        self.volumes_client.retype_volume("},{"line_number":88,"context_line":"            volume_id, new_type\u003dnew_volume_type,"},{"line_number":89,"context_line":"            migration_policy\u003dmigration_policy)"},{"line_number":90,"context_line":"        waiters.wait_for_volume_retype(self.volumes_client,"},{"line_number":91,"context_line":"                                       volume_id, new_volume_type)"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"5a3905b3_d202ef08","line":89,"range":{"start_line":86,"start_character":0,"end_line":89,"end_character":46},"updated":"2017-01-20 11:32:45.000000000","message":"we do not need to cleanup the migrated volume like done in https://review.openstack.org/#/c/195443/89/tempest/api/volume/admin/test_volume_retype_with_migration.py","commit_id":"19c1d87464eaca931b700917809cc0996e81d093"}]}
