def ddtest_create_bootable_volume_from_last_of_3_snapshots_of_a_server( self, image, flavor, volume_type=BlockstorageDatasets.default_volume_type_model()): self.create_bootable_volume_from_third_snapshot_of_server_test( image, flavor, volume_type)
def ddtest_verify_data_on_custom_snapshot_after_copy_to_volume( self, image, flavor, volume_type=BlockstorageDatasets.default_volume_type_model()): """This test currently only works for Linux images""" # Create a server original_server = self.new_server( name=self.random_server_name(), image=image.id, flavor=flavor.id, add_cleanup=False) # Connect to server original_server_connection = self.connect_to_instance( original_server) # Write data to the root disk file_name = random_string("original_data") file_content = "a" * 1024 self.create_remote_file( original_server_connection, '/', file_name, file_content) original_server_connection.filesystem_sync() # Get hash of remote file original_hash = self.get_remote_file_md5_hash( original_server_connection, '/', file_name) # Create a snapshot of the server server_snapshot = self.make_server_snapshot(original_server) # Create a bootable volume from the server snapshot bootable_volume = self.create_volume_from_image_test( volume_type, server_snapshot) # Create block device mapping bdm = self.compute.servers.behaviors.create_block_device_mapping_v1( bootable_volume.id_, True, 'vda', bootable_volume.size, volume_type.id_) # Boot a server from the volume new_bfv_server = self.servers.behaviors.create_active_server( name=self.random_server_name(), flavor_ref=flavor.id, block_device_mapping=bdm).entity assert new_bfv_server is not None, ( "Unable to build a server from volume '{volume}' and flavor " "'{flavor}' with block device mapping: {bdm}".format( volume=bootable_volume.id_, flavor=flavor.id, bdm=bdm)) # Setup remote instance client new_bfv_server_conn = self.connect_to_instance( new_bfv_server, os_type='linux') # Get hash of remote file restored_hash = self.get_remote_file_md5_hash( new_bfv_server_conn, '/', file_name) assert original_hash == restored_hash, ( 'Restored data hash "{0}" did not match original data hash "{1}"' .format(restored_hash, original_hash))