Search in sources :

Example 1 with VolumeUpdateCompleter

use of com.emc.storageos.volumecontroller.impl.block.taskcompleter.VolumeUpdateCompleter in project coprhd-controller by CoprHD.

the class VnxMaskingOrchestrator method exportGroupChangePolicyAndLimits.

@Override
public void exportGroupChangePolicyAndLimits(URI storageURI, URI exportMaskURI, URI exportGroupURI, List<URI> volumeURIs, URI newVpoolURI, boolean rollback, String token) throws Exception {
    // EXportGroup and ExportMask URIs will be null for VNX.
    VolumeUpdateCompleter taskCompleter = new VolumeUpdateCompleter(volumeURIs, token);
    StorageSystem storage = _dbClient.queryObject(StorageSystem.class, storageURI);
    VirtualPool newVpool = _dbClient.queryObject(VirtualPool.class, newVpoolURI);
    BlockStorageDevice device = getDevice();
    device.updatePolicyAndLimits(storage, null, volumeURIs, newVpool, rollback, taskCompleter);
}
Also used : BlockStorageDevice(com.emc.storageos.volumecontroller.BlockStorageDevice) VirtualPool(com.emc.storageos.db.client.model.VirtualPool) VolumeUpdateCompleter(com.emc.storageos.volumecontroller.impl.block.taskcompleter.VolumeUpdateCompleter) StorageSystem(com.emc.storageos.db.client.model.StorageSystem)

Example 2 with VolumeUpdateCompleter

use of com.emc.storageos.volumecontroller.impl.block.taskcompleter.VolumeUpdateCompleter in project coprhd-controller by CoprHD.

the class HDSMaskingOrchestrator method exportGroupChangePolicyAndLimits.

@Override
public void exportGroupChangePolicyAndLimits(URI storageURI, URI exportMaskURI, URI exportGroupURI, List<URI> volumeURIs, URI newVpoolURI, boolean rollback, String token) throws Exception {
    // ExportGroup and ExportMask URIs will be null for HDS.
    VolumeUpdateCompleter taskCompleter = new VolumeUpdateCompleter(volumeURIs, token);
    StorageSystem storage = _dbClient.queryObject(StorageSystem.class, storageURI);
    VirtualPool newVpool = _dbClient.queryObject(VirtualPool.class, newVpoolURI);
    BlockStorageDevice device = getDevice();
    device.updatePolicyAndLimits(storage, null, volumeURIs, newVpool, rollback, taskCompleter);
}
Also used : BlockStorageDevice(com.emc.storageos.volumecontroller.BlockStorageDevice) VirtualPool(com.emc.storageos.db.client.model.VirtualPool) VolumeUpdateCompleter(com.emc.storageos.volumecontroller.impl.block.taskcompleter.VolumeUpdateCompleter) StorageSystem(com.emc.storageos.db.client.model.StorageSystem)

Example 3 with VolumeUpdateCompleter

use of com.emc.storageos.volumecontroller.impl.block.taskcompleter.VolumeUpdateCompleter in project coprhd-controller by CoprHD.

the class VmaxMaskingOrchestrator method changeAutoTieringPolicy.

@Override
public void changeAutoTieringPolicy(URI storageURI, List<URI> volumeURIs, URI newVpoolURI, boolean rollback, String token) throws Exception {
    VolumeUpdateCompleter taskCompleter = new VolumeUpdateCompleter(volumeURIs, token);
    StorageSystem storage = _dbClient.queryObject(StorageSystem.class, storageURI);
    VirtualPool newVpool = _dbClient.queryObject(VirtualPool.class, newVpoolURI);
    BlockStorageDevice device = getDevice();
    device.updatePolicyAndLimits(storage, null, volumeURIs, newVpool, rollback, taskCompleter);
}
Also used : BlockStorageDevice(com.emc.storageos.volumecontroller.BlockStorageDevice) VirtualPool(com.emc.storageos.db.client.model.VirtualPool) VolumeUpdateCompleter(com.emc.storageos.volumecontroller.impl.block.taskcompleter.VolumeUpdateCompleter) StorageSystem(com.emc.storageos.db.client.model.StorageSystem)

Example 4 with VolumeUpdateCompleter

use of com.emc.storageos.volumecontroller.impl.block.taskcompleter.VolumeUpdateCompleter in project coprhd-controller by CoprHD.

the class BlockDeviceController method modifyVolumes.

/**
 * {@inheritDoc} NOTE NOTE: The signature here MUST match the Workflow.Method modifyVolumesMethod just above (except
 * opId).
 * Currently this workflow step is used only for Hitachi Thin Volumes modification to update volume tieringPolicy.
 * Hitachi allows setting of tieringpolicy at LDEV level, hence We should have a LDEV id of a LogicalUnit.
 * But LDEV is only created after we LogicalUnit is created. Hence createVolumes workflow includes creation of LU
 * (i.e. LDEV)
 * And LDEV modification (to set tieringPolicy.)
 */
@Override
public void modifyVolumes(URI systemURI, URI poolURI, List<URI> volumeURIs, String opId) throws ControllerException {
    List<Volume> volumes = new ArrayList<Volume>();
    try {
        StorageSystem storageSystem = _dbClient.queryObject(StorageSystem.class, systemURI);
        List<VolumeTaskCompleter> volumeCompleters = new ArrayList<VolumeTaskCompleter>();
        Iterator<URI> volumeURIsIter = volumeURIs.iterator();
        StringBuilder logMsgBuilder = new StringBuilder(String.format("moidfyVolumes start - Array:%s Pool:%s", systemURI.toString(), poolURI.toString()));
        while (volumeURIsIter.hasNext()) {
            URI volumeURI = volumeURIsIter.next();
            logMsgBuilder.append(String.format("%nVolume:%s", volumeURI.toString()));
            Volume volume = _dbClient.queryObject(Volume.class, volumeURI);
            volumes.add(volume);
            VolumeUpdateCompleter volumeCompleter = new VolumeUpdateCompleter(volumeURI, opId);
            volumeCompleters.add(volumeCompleter);
        }
        _log.info(logMsgBuilder.toString());
        StoragePool storagePool = _dbClient.queryObject(StoragePool.class, poolURI);
        MultiVolumeTaskCompleter completer = new MultiVolumeTaskCompleter(volumeURIs, volumeCompleters, opId);
        WorkflowStepCompleter.stepExecuting(completer.getOpId());
        getDevice(storageSystem.getSystemType()).doModifyVolumes(storageSystem, storagePool, opId, volumes, completer);
        logMsgBuilder = new StringBuilder(String.format("modifyVolumes end - Array:%s Pool:%s", systemURI.toString(), poolURI.toString()));
        volumeURIsIter = volumeURIs.iterator();
        while (volumeURIsIter.hasNext()) {
            logMsgBuilder.append(String.format("%nVolume:%s", volumeURIsIter.next().toString()));
        }
        _log.info(logMsgBuilder.toString());
    } catch (InternalException e) {
        _log.error(String.format("modifyVolumes Failed - Array: %s Pool:%s Volume:%s", systemURI.toString(), poolURI.toString(), Joiner.on("\t").join(volumeURIs)));
        doFailTask(Volume.class, volumeURIs, opId, e);
        WorkflowStepCompleter.stepFailed(opId, e);
    } catch (Exception e) {
        _log.error(String.format("modifyVolumes Failed - Array: %s Pool:%s Volume:%s", systemURI.toString(), poolURI.toString(), Joiner.on("\t").join(volumeURIs)));
        ServiceError serviceError = DeviceControllerException.errors.jobFailed(e);
        doFailTask(Volume.class, volumeURIs, opId, serviceError);
        WorkflowStepCompleter.stepFailed(opId, serviceError);
    }
}
Also used : ServiceError(com.emc.storageos.svcs.errorhandling.model.ServiceError) StoragePool(com.emc.storageos.db.client.model.StoragePool) ArrayList(java.util.ArrayList) NamedURI(com.emc.storageos.db.client.model.NamedURI) FCTN_MIRROR_TO_URI(com.emc.storageos.db.client.util.CommonTransformerFunctions.FCTN_MIRROR_TO_URI) URI(java.net.URI) MultiVolumeTaskCompleter(com.emc.storageos.volumecontroller.impl.block.taskcompleter.MultiVolumeTaskCompleter) InternalException(com.emc.storageos.svcs.errorhandling.resources.InternalException) BaseCollectionException(com.emc.storageos.plugins.BaseCollectionException) ControllerException(com.emc.storageos.volumecontroller.ControllerException) WorkflowException(com.emc.storageos.workflow.WorkflowException) DatabaseException(com.emc.storageos.db.exceptions.DatabaseException) DeviceControllerException(com.emc.storageos.exceptions.DeviceControllerException) DataBindingException(javax.xml.bind.DataBindingException) InternalException(com.emc.storageos.svcs.errorhandling.resources.InternalException) VolumeTaskCompleter(com.emc.storageos.volumecontroller.impl.block.taskcompleter.VolumeTaskCompleter) MultiVolumeTaskCompleter(com.emc.storageos.volumecontroller.impl.block.taskcompleter.MultiVolumeTaskCompleter) Volume(com.emc.storageos.db.client.model.Volume) VolumeUpdateCompleter(com.emc.storageos.volumecontroller.impl.block.taskcompleter.VolumeUpdateCompleter) StorageSystem(com.emc.storageos.db.client.model.StorageSystem)

Aggregations

StorageSystem (com.emc.storageos.db.client.model.StorageSystem)4 VolumeUpdateCompleter (com.emc.storageos.volumecontroller.impl.block.taskcompleter.VolumeUpdateCompleter)4 VirtualPool (com.emc.storageos.db.client.model.VirtualPool)3 BlockStorageDevice (com.emc.storageos.volumecontroller.BlockStorageDevice)3 NamedURI (com.emc.storageos.db.client.model.NamedURI)1 StoragePool (com.emc.storageos.db.client.model.StoragePool)1 Volume (com.emc.storageos.db.client.model.Volume)1 FCTN_MIRROR_TO_URI (com.emc.storageos.db.client.util.CommonTransformerFunctions.FCTN_MIRROR_TO_URI)1 DatabaseException (com.emc.storageos.db.exceptions.DatabaseException)1 DeviceControllerException (com.emc.storageos.exceptions.DeviceControllerException)1 BaseCollectionException (com.emc.storageos.plugins.BaseCollectionException)1 ServiceError (com.emc.storageos.svcs.errorhandling.model.ServiceError)1 InternalException (com.emc.storageos.svcs.errorhandling.resources.InternalException)1 ControllerException (com.emc.storageos.volumecontroller.ControllerException)1 MultiVolumeTaskCompleter (com.emc.storageos.volumecontroller.impl.block.taskcompleter.MultiVolumeTaskCompleter)1 VolumeTaskCompleter (com.emc.storageos.volumecontroller.impl.block.taskcompleter.VolumeTaskCompleter)1 WorkflowException (com.emc.storageos.workflow.WorkflowException)1 URI (java.net.URI)1 ArrayList (java.util.ArrayList)1 DataBindingException (javax.xml.bind.DataBindingException)1