/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.emc.sa.service.windows;
import java.util.List;
import com.emc.sa.engine.ExecutionUtils;
import com.emc.sa.engine.bind.Param;
import com.emc.sa.engine.service.Service;
import com.emc.sa.service.ServiceParams;
import com.emc.sa.service.vipr.block.BlockStorageUtils;
import com.emc.storageos.model.block.BlockObjectRestRep;
@Service("Windows-UnmountBlockVolume")
public class UnmountBlockVolumeService extends WindowsService {
@Param(ServiceParams.VOLUMES)
protected List<String> volumeIds;
private List<UnmountBlockVolumeHelper> unmountBlockVolumeHelpers;
public void init() throws Exception {
super.init();
unmountBlockVolumeHelpers = UnmountBlockVolumeHelper.createHelpers(windowsSystems);
}
@Override
public void precheck() throws Exception {
super.precheck();
List<? extends BlockObjectRestRep> volumes = BlockStorageUtils.getBlockResources(uris(volumeIds));
acquireHostAndClusterLock();
unmountBlockVolumeHelpers.get(0).setVolumes(volumes);
unmountBlockVolumeHelpers.get(0).precheck();
}
@Override
public void execute() {
if (isClustered()) {
unmountBlockVolumeHelpers.get(0).removeVolumesFromCluster();
}
unmountBlockVolumeHelpers.get(0).unmountVolumes();
if (hostId != null) {
ExecutionUtils.addAffectedResource(hostId.toString());
}
}
}