def test_upload_image(self, fake_transfer, fake_rw_handles_VmdkReadHandle): context = mock.Mock() image_id = mock.Mock() owner_id = mock.Mock() session = mock.Mock() vm = mock.Mock() image_service = mock.Mock() timeout_secs = 10 image_size = 1000 host = '127.0.0.1' port = 443 file_path = '/fake_path' is_public = False image_name = 'fake_image' image_version = 1 fake_VmdkReadHandle = 'fake_VmdkReadHandle' fake_rw_handles_VmdkReadHandle.return_value = fake_VmdkReadHandle image_transfer.upload_image(context, timeout_secs, image_service, image_id, owner_id, session=session, host=host, port=port, vm=vm, vmdk_file_path=file_path, vmdk_size=image_size, is_public=is_public, image_name=image_name, image_version=image_version) fake_rw_handles_VmdkReadHandle.assert_called_once_with( session, host, port, vm, file_path, image_size) image_metadata = { 'disk_format': 'vmdk', 'is_public': is_public, 'name': image_name, 'status': 'active', 'container_format': 'bare', 'size': 0, 'properties': { 'vmware_image_version': image_version, 'vmware_disktype': 'streamOptimized', 'owner_id': owner_id } } fake_transfer.assert_called_once_with(context, timeout_secs, fake_VmdkReadHandle, 0, image_service=image_service, image_id=image_id, image_meta=image_metadata)
def test_upload_image(self, fake_transfer, fake_rw_handles_VmdkReadHandle): context = mock.Mock() image_id = mock.Mock() owner_id = mock.Mock() session = mock.Mock() vm = mock.Mock() image_service = mock.Mock() timeout_secs = 10 image_size = 1000 host = '127.0.0.1' port = 443 file_path = '/fake_path' is_public = False image_name = 'fake_image' image_version = 1 fake_VmdkReadHandle = 'fake_VmdkReadHandle' fake_rw_handles_VmdkReadHandle.return_value = fake_VmdkReadHandle image_transfer.upload_image(context, timeout_secs, image_service, image_id, owner_id, session=session, host=host, port=port, vm=vm, vmdk_file_path=file_path, vmdk_size=image_size, is_public=is_public, image_name=image_name, image_version=image_version) fake_rw_handles_VmdkReadHandle.assert_called_once_with(session, host, port, vm, file_path, image_size) image_metadata = {'disk_format': 'vmdk', 'is_public': is_public, 'name': image_name, 'status': 'active', 'container_format': 'bare', 'size': 0, 'properties': {'vmware_image_version': image_version, 'vmware_disktype': 'streamOptimized', 'owner_id': owner_id}} fake_transfer.assert_called_once_with(context, timeout_secs, fake_VmdkReadHandle, 0, image_service=image_service, image_id=image_id, image_meta=image_metadata)
def copy_volume_to_image(self, context, volume, image_service, image_meta): """Copy the volume to the specified image. :param context: Security/policy info for the request. :param volume: The volume to copy. :param image_service: The image service to use. :param image_meta: Information about the image. :returns: Model updates. """ self._validate_disk_format(image_meta['disk_format']) fcd_loc = vops.FcdLocation.from_provider_location( volume.provider_location) hosts = self.volumeops.get_connected_hosts(fcd_loc.ds_ref()) host = vim_util.get_moref(hosts[0], 'HostSystem') LOG.debug("Selected host: %(host)s for downloading fcd: %(fcd_loc)s.", { 'host': host, 'fcd_loc': fcd_loc }) attached = False try: create_params = {vmdk.CREATE_PARAM_DISK_LESS: True} backing = self._create_backing(volume, host, create_params) self.volumeops.attach_fcd(backing, fcd_loc) attached = True vmdk_file_path = self.volumeops.get_vmdk_path(backing) conf = self.configuration # retrieve store information from extra-specs store_id = volume.volume_type.extra_specs.get( 'image_service:store_id') # TODO (whoami-rajat): Remove store_id and base_image_ref # parameters when oslo.vmware calls volume_utils wrapper of # upload_volume instead of image_utils.upload_volume image_transfer.upload_image( context, conf.vmware_image_transfer_timeout_secs, image_service, image_meta['id'], volume.project_id, session=self.session, host=conf.vmware_host_ip, port=conf.vmware_host_port, vm=backing, vmdk_file_path=vmdk_file_path, vmdk_size=volume.size * units.Gi, image_name=image_meta['name'], store_id=store_id, base_image_ref=volume_utils.get_base_image_ref(volume)) finally: if attached: self.volumeops.detach_fcd(backing, fcd_loc) backing = self.volumeops.get_backing_by_uuid(volume.id) if backing: self._delete_temp_backing(backing)
def test_upload_image(self, fake_transfer, fake_rw_handles_VmdkReadHandle): context = mock.sentinel.context image_id = mock.sentinel.image_id owner_id = mock.sentinel.owner_id session = mock.sentinel.session vm = mock.sentinel.vm image_service = mock.Mock() timeout_secs = 10 image_size = 1000 host = '127.0.0.1' port = 443 file_path = '/fake_path' # TODO(vbala) Remove this after we delete the keyword argument # 'is_public' from all client code. is_public = False image_name = 'fake_image' image_version = 1 fake_VmdkReadHandle = mock.Mock() fake_rw_handles_VmdkReadHandle.return_value = fake_VmdkReadHandle image_transfer.upload_image(context, timeout_secs, image_service, image_id, owner_id, session=session, host=host, port=port, vm=vm, vmdk_file_path=file_path, vmdk_size=image_size, is_public=is_public, image_name=image_name, image_version=image_version) fake_rw_handles_VmdkReadHandle.assert_called_once_with( session, host, port, vm, file_path, image_size) ver_str = six.text_type(image_version) image_metadata = { 'disk_format': 'vmdk', 'name': image_name, 'properties': { 'vmware_image_version': ver_str, 'vmware_disktype': 'streamOptimized', 'owner_id': owner_id } } image_service.update.assert_called_once_with(context, image_id, image_metadata, data=fake_VmdkReadHandle)
def test_upload_image(self, fake_transfer, fake_rw_handles_VmdkReadHandle): context = mock.sentinel.context image_id = mock.sentinel.image_id owner_id = mock.sentinel.owner_id session = mock.sentinel.session vm = mock.sentinel.vm image_service = mock.Mock() timeout_secs = 10 image_size = 1000 host = '127.0.0.1' port = 443 file_path = '/fake_path' # TODO(vbala) Remove this after we delete the keyword argument # 'is_public' from all client code. is_public = False image_name = 'fake_image' image_version = 1 fake_VmdkReadHandle = mock.Mock() fake_rw_handles_VmdkReadHandle.return_value = fake_VmdkReadHandle image_transfer.upload_image(context, timeout_secs, image_service, image_id, owner_id, session=session, host=host, port=port, vm=vm, vmdk_file_path=file_path, vmdk_size=image_size, is_public=is_public, image_name=image_name, image_version=image_version) fake_rw_handles_VmdkReadHandle.assert_called_once_with(session, host, port, vm, file_path, image_size) ver_str = six.text_type(image_version) image_metadata = {'disk_format': 'vmdk', 'name': image_name, 'properties': {'vmware_image_version': ver_str, 'vmware_disktype': 'streamOptimized', 'owner_id': owner_id}} image_service.update.assert_called_once_with(context, image_id, image_metadata, data=fake_VmdkReadHandle)
def copy_volume_to_image(self, context, volume, image_service, image_meta): """Copy the volume to the specified image. :param context: Security/policy info for the request. :param volume: The volume to copy. :param image_service: The image service to use. :param image_meta: Information about the image. :returns: Model updates. """ self._validate_disk_format(image_meta['disk_format']) fcd_loc = vops.FcdLocation.from_provider_location( volume.provider_location) hosts = self.volumeops.get_connected_hosts(fcd_loc.ds_ref()) host = vim_util.get_moref(hosts[0], 'HostSystem') LOG.debug("Selected host: %(host)s for downloading fcd: %(fcd_loc)s.", {'host': host, 'fcd_loc': fcd_loc}) attached = False try: create_params = {vmdk.CREATE_PARAM_DISK_LESS: True} backing = self._create_backing(volume, host, create_params) self.volumeops.attach_fcd(backing, fcd_loc) attached = True vmdk_file_path = self.volumeops.get_vmdk_path(backing) conf = self.configuration image_transfer.upload_image( context, conf.vmware_image_transfer_timeout_secs, image_service, image_meta['id'], volume.project_id, session=self.session, host=conf.vmware_host_ip, port=conf.vmware_host_port, vm=backing, vmdk_file_path=vmdk_file_path, vmdk_size=volume.size * units.Gi, image_name=image_meta['name']) finally: if attached: self.volumeops.detach_fcd(backing, fcd_loc) backing = self.volumeops.get_backing_by_uuid(volume.id) if backing: self._delete_temp_backing(backing)