def create_volume(self, volume): appliance_name = volume_utils.extract_host(volume.host, "pool") appliance_id = self.appliances_to_ids_map[appliance_name] LOG.debug( "Create PowerStore volume %(volume_name)s of size " "%(volume_size)s GiB with id %(volume_id)s on appliance " "%(appliance_name)s.", { "volume_name": volume.name, "volume_size": volume.size, "volume_id": volume.id, "appliance_name": appliance_name, }) size_in_bytes = utils.gib_to_bytes(volume.size) provider_id = self.client.create_volume(appliance_id, volume.name, size_in_bytes) LOG.debug( "Successfully created PowerStore volume %(volume_name)s of " "size %(volume_size)s GiB with id %(volume_id)s on " "appliance %(appliance_name)s. " "PowerStore volume id: %(volume_provider_id)s.", { "volume_name": volume.name, "volume_size": volume.size, "volume_id": volume.id, "appliance_name": appliance_name, "volume_provider_id": provider_id, }) return { "provider_id": provider_id, }
def extend_volume(self, volume, new_size): LOG.debug( "Extend PowerStore volume %(volume_name)s of size " "%(volume_size)s GiB with id %(volume_id)s to " "%(volume_new_size)s GiB. " "PowerStore volume id: %(volume_provider_id)s.", { "volume_name": volume.name, "volume_size": volume.size, "volume_id": volume.id, "volume_new_size": new_size, "volume_provider_id": volume.provider_id, }) size_in_bytes = utils.gib_to_bytes(new_size) self.client.extend_volume(volume.provider_id, size_in_bytes) LOG.debug( "Successfully extended PowerStore volume %(volume_name)s " "of size %(volume_size)s GiB with id " "%(volume_id)s to %(volume_new_size)s GiB. " "PowerStore volume id: %(volume_provider_id)s.", { "volume_name": volume.name, "volume_size": volume.size, "volume_id": volume.id, "volume_new_size": new_size, "volume_provider_id": volume.provider_id, })
def _create_volume_from_source(self, volume, source): """Create PowerStore volume from source (snapshot or another volume). :param volume: OpenStack volume object :param source: OpenStack source snapshot or volume :return: newly created PowerStore volume id """ if isinstance(source, Snapshot): entity = "snapshot" source_size = source.volume_size else: entity = "volume" source_size = source.size volume_provider_id = self.client.clone_volume_or_snapshot( volume.name, source.provider_id, entity) if volume.size > source_size: size_in_bytes = utils.gib_to_bytes(volume.size) self.client.extend_volume(volume_provider_id, size_in_bytes) return volume_provider_id