コード例 #1
0
ファイル: driver.py プロジェクト: kevin-zhangsen/badam
 def create_snapshot(self, snapshot):
     """Create a snapshot."""
     provider_volume_id = self._get_provider_volumeID_from_snapshot(
         snapshot)
     provider_volumes = self.adpter.list_volumes(
         ex_volume_ids=[provider_volume_id])
     if not provider_volumes:
         LOG.error('provider_volume %s is not found' % provider_volume_id)
         raise exception.VolumeNotFound(volume_id=snapshot['volume_id'])
     elif len(provider_volumes) > 1:
         LOG.error('volume %s has more than one provider_volume' %
                   snapshot['volume_id'])
         raise exception_ex.ProviderMultiVolumeError(
             volume_id=snapshot['volume_id'])
     provider_snapshot = self.adpter.create_volume_snapshot(
         provider_volumes[0], snapshot['name'])
     if not provider_snapshot:
         raise exception_ex.ProviderCreateSnapshotError(
             snapshot_id=snapshot['id'])
     create_tags_func = getattr(self.adpter, 'ex_create_tags')
     if create_tags_func:
         create_tags_func(provider_snapshot,
                          {'hybrid_cloud_snapshot_id': snapshot['id']})
     ctx = cinder.context.get_admin_context()
     if ctx:
         self.db.snapshot_metadata_update(
             ctx, snapshot['id'],
             {'provider_snapshot_id': provider_snapshot.id}, False)
     model_update = {'provider_location': provider_snapshot.id}
     return model_update
コード例 #2
0
    def delete_volume(self, volume):
        """Delete a volume."""
        provider_volume_id = self._get_provider_volumeid_from_volume(volume)
        if not provider_volume_id:
            LOG.error('NO Mapping between cinder volume and provider volume')
            return

        provider_volumes = self.adpter.list_volumes(ex_volume_ids=[provider_volume_id])
        if not provider_volumes:
            LOG.error('provider_volume  is not found')
            return
            #raise exception.VolumeNotFound(volume_id=volume['id'])
        elif len(provider_volumes) > 1:
            LOG.error('volume %s has more than one provider_volume' % volume['id'])
            raise exception_ex.ProviderMultiVolumeError(volume_id=volume['id'])
        delete_ret = self.adpter.destroy_volume(provider_volumes[0])
        LOG.info("deleted volume return%d" % delete_ret)