/*
* Copyright 2015 EMC Corporation
* All Rights Reserved
*/
package com.emc.sa.service.vmware.block.tasks;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import com.emc.sa.engine.ExecutionTask;
import com.iwave.ext.vmware.VMwareUtils;
import com.vmware.vim25.HostScsiDisk;
import com.vmware.vim25.mo.HostSystem;
public class DetachLunsFromHost extends ExecutionTask<Void> {
private final HostSystem host;
private final List<HostScsiDisk> disks;
public DetachLunsFromHost(HostSystem host, List<HostScsiDisk> disks) {
this.host = host;
this.disks = disks;
List<String> deviceNames = new ArrayList<>();
for (HostScsiDisk disk : disks) {
deviceNames.add(disk.getDeviceName());
}
String lunsString = StringUtils.join(deviceNames, ',');
provideDetailArgs(lunsString, host.getName());
}
@Override
public void execute() throws Exception {
for (HostScsiDisk disk : disks) {
if (!VMwareUtils.isDiskOff(disk)) {
info("Detaching Scsi Lun : %s", disk.getCanonicalName());
host.getHostStorageSystem().detachScsiLun(disk.getUuid());
logInfo("detach.host.scsi.lun", disk.getDeviceName(), host.getName());
} else {
info("Disk %s is not in a valid state to detach", disk.getCanonicalName());
}
}
}
}