/*
* Copyright (c) 2012-2015 iWave Software LLC
* All Rights Reserved
*/
package com.iwave.ext.linux.command;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.google.common.collect.Maps;
import com.iwave.ext.linux.command.LinuxResultsCommand;
public class GetDeviceLunMappingCommand extends LinuxResultsCommand<Map<String, Integer>> {
private static final Pattern DEVICE_PATTERN = Pattern
.compile("- \\d+:\\d+:\\d+:(\\d+)\\s+(\\w+) ");
private static final String MPATH_NAME = "mpathName";
public GetDeviceLunMappingCommand() {
setCommand(CommandConstants.MULTIPATH);
addArgument("-ll").addVariable(MPATH_NAME);
setRunAsRoot(true);
}
public void setMpathName(String name) {
setVariableValue(MPATH_NAME, name);
}
@Override
public void parseOutput() {
results = Maps.newHashMap();
Matcher m = DEVICE_PATTERN.matcher(getOutput().getStdout());
while (m.find()) {
Integer lunId = Integer.parseInt(m.group(1));
String device = m.group(2);
results.put(device, lunId);
}
}
}