/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.emc.sa.service.vmware.block.tasks;
import static com.emc.sa.util.ArrayUtil.safeArrayCopy;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.emc.sa.engine.ExecutionTask;
import com.iwave.ext.vmware.HostStorageAPI;
import com.vmware.vim25.HostHostBusAdapter;
import com.vmware.vim25.HostInternetScsiHba;
import com.vmware.vim25.mo.HostSystem;
public class AddInternetScsiTargets extends ExecutionTask<Void> {
private HostSystem host;
private Map<String, HostHostBusAdapter> hbas;
private String[] addresses;
public AddInternetScsiTargets(HostSystem host, Map<String, HostHostBusAdapter> hbas, String[] addresses) {
this.host = host;
this.hbas = hbas;
this.addresses = safeArrayCopy(addresses);
provideDetailArgs(StringUtils.join(addresses, ", "), host.getName());
}
@Override
public void execute() throws Exception {
HostStorageAPI hostStorageAPI = new HostStorageAPI(host);
for (String iqn : hbas.keySet()) {
HostHostBusAdapter hba = hbas.get(iqn);
if (hba instanceof HostInternetScsiHba) {
debug("Adding iSCSI send targets %s for HBA %s [%s]", StringUtils.join(addresses, ", "),
hba.getDevice(), iqn);
hostStorageAPI.addInternetScsiSendTargets((HostInternetScsiHba) hba, addresses);
}
}
hostStorageAPI.rescanHBAs();
}
}