Beispiel #1
0
 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,
     }
Beispiel #2
0
 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,
         })
Beispiel #3
0
    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