/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.iwave.ext.linux.command;
import java.util.Collection;
import org.apache.commons.lang.text.StrBuilder;
import com.iwave.ext.command.CommandException;
import com.iwave.ext.linux.model.HBAInfo;
public class RescanHBAsCommand extends LinuxCommand {
private static final String HOSTS = "hosts";
private static final String SLEEP_TIME = "sleepTime";
public RescanHBAsCommand() {
StringBuilder sb = new StringBuilder();
sb.append("for host in ${hosts}; do ");
sb.append(" echo \"- - -\" > /sys/class/scsi_host/$host/scan; ");
sb.append("done; ");
sb.append("sleep ${sleepTime}; ");
setCommand(sb.toString());
// Default sleep time to 10s
setSleepTime(10);
setRunAsRoot(true);
}
public void setSleepTime(int sleepTime) {
setVariableValue(SLEEP_TIME, String.valueOf(sleepTime));
}
public void setHostIds(Collection<Integer> hostIds) {
StrBuilder sb = new StrBuilder();
for (Integer hostId : hostIds) {
sb.appendSeparator(' ');
sb.append("host").append(hostId);
}
setVariableValue(HOSTS, sb.toString());
}
public void setHbas(Collection<HBAInfo> hbas) {
StrBuilder sb = new StrBuilder();
for (HBAInfo hba : hbas) {
sb.appendSeparator(' ');
sb.append("host").append(hba.getHostId());
}
setVariableValue(HOSTS, sb.toString());
}
@Override
protected void validateCommandLine() throws CommandException {
requireVariableValues(HOSTS, SLEEP_TIME);
}
}