/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.emc.sa.service.vmware.block.tasks;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import com.emc.sa.engine.ExecutionTask;
import com.google.common.collect.Lists;
import com.iwave.ext.vmware.HostStorageAPI;
import com.vmware.vim25.HostScsiDisk;
import com.vmware.vim25.mo.HostSystem;
public class SetMultipathPolicy extends ExecutionTask<Void> {
private Map<HostSystem, HostScsiDisk> hostDisks;
private String multipathPolicy;
public SetMultipathPolicy(Map<HostSystem, HostScsiDisk> hostDisks, String multipathPolicy) {
this.hostDisks = hostDisks;
this.multipathPolicy = multipathPolicy;
List<String> names = Lists.newArrayList();
for (HostSystem host : hostDisks.keySet()) {
names.add(host.getName());
}
provideDetailArgs(multipathPolicy, StringUtils.join(names, ", "));
}
@Override
public void execute() throws Exception {
debug("Executing: %s", getDetail());
for (HostSystem host : hostDisks.keySet()) {
HostStorageAPI storageAPI = new HostStorageAPI(host);
storageAPI.setMultipathPolicy(hostDisks.get(host), multipathPolicy);
}
}
}