mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-04 20:29:27 +01:00
bug 11307: Add BumpUpPriorityCommand
This commit is contained in:
parent
dfd36e4ae2
commit
3549067d55
@ -40,6 +40,7 @@ import org.apache.commons.codec.binary.Base64;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.api.Answer;
|
||||
import com.cloud.agent.api.BumpUpPriorityCommand;
|
||||
import com.cloud.agent.api.CheckRouterAnswer;
|
||||
import com.cloud.agent.api.CheckRouterCommand;
|
||||
import com.cloud.agent.api.Command;
|
||||
@ -91,6 +92,7 @@ public class VirtualRoutingResource implements Manager {
|
||||
private String _publicEthIf;
|
||||
private String _privateEthIf;
|
||||
private String _getRouterStatusPath;
|
||||
private String _bumpUpPriorityPath;
|
||||
|
||||
|
||||
private int _timeout;
|
||||
@ -125,6 +127,8 @@ public class VirtualRoutingResource implements Manager {
|
||||
return execute ((CheckRouterCommand)cmd);
|
||||
} else if (cmd instanceof SetFirewallRulesCommand) {
|
||||
return execute((SetFirewallRulesCommand)cmd);
|
||||
} else if (cmd instanceof BumpUpPriorityCommand) {
|
||||
return execute((BumpUpPriorityCommand)cmd);
|
||||
} else {
|
||||
return Answer.createUnsupportedCommandAnswer(cmd);
|
||||
}
|
||||
@ -433,6 +437,18 @@ public class VirtualRoutingResource implements Manager {
|
||||
return new CheckRouterAnswer(cmd, result, true);
|
||||
}
|
||||
|
||||
protected Answer execute(BumpUpPriorityCommand cmd) {
|
||||
final String routerPrivateIPAddress = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
|
||||
final Script command = new Script(_bumpUpPriorityPath, _timeout, s_logger);
|
||||
final OutputInterpreter.OneLineParser parser = new OutputInterpreter.OneLineParser();
|
||||
command.add(routerPrivateIPAddress);
|
||||
String result = command.execute(parser);
|
||||
if (result != null) {
|
||||
return new Answer(cmd, false, "BumpUpPriorityCommand failed: " + result);
|
||||
}
|
||||
return new Answer(cmd, true, null);
|
||||
}
|
||||
|
||||
protected Answer execute(final CheckConsoleProxyLoadCommand cmd) {
|
||||
return executeProxyLoadScan(cmd, cmd.getProxyVmId(), cmd.getProxyVmName(), cmd.getProxyManagementIp(), cmd.getProxyCmdPort());
|
||||
}
|
||||
@ -754,6 +770,11 @@ public class VirtualRoutingResource implements Manager {
|
||||
}
|
||||
_privateEthIf = _privateEthIf.toLowerCase();
|
||||
|
||||
_bumpUpPriorityPath = findScript("bumpUpPriority.sh");
|
||||
if(_bumpUpPriorityPath == null) {
|
||||
throw new ConfigurationException("Unable to find bumpUpPriority.sh");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -35,6 +35,7 @@ import com.cloud.agent.api.AttachVolumeAnswer;
|
||||
import com.cloud.agent.api.AttachVolumeCommand;
|
||||
import com.cloud.agent.api.BackupSnapshotAnswer;
|
||||
import com.cloud.agent.api.BackupSnapshotCommand;
|
||||
import com.cloud.agent.api.BumpUpPriorityCommand;
|
||||
import com.cloud.agent.api.CheckHealthAnswer;
|
||||
import com.cloud.agent.api.CheckHealthCommand;
|
||||
import com.cloud.agent.api.CheckOnHostAnswer;
|
||||
@ -387,6 +388,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
||||
answer = execute((CheckRouterCommand) cmd);
|
||||
} else if (cmd instanceof SetFirewallRulesCommand) {
|
||||
answer = execute((SetFirewallRulesCommand)cmd);
|
||||
} else if (cmd instanceof BumpUpPriorityCommand) {
|
||||
answer = execute((BumpUpPriorityCommand)cmd);
|
||||
} else {
|
||||
answer = Answer.createUnsupportedCommandAnswer(cmd);
|
||||
}
|
||||
@ -929,6 +932,38 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
|
||||
return new CheckRouterAnswer(cmd, result.second(), true);
|
||||
}
|
||||
|
||||
protected Answer execute(BumpUpPriorityCommand cmd) {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Executing resource BumpUpPriorityCommand: " + _gson.toJson(cmd));
|
||||
s_logger.debug("Run command on domR " + cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP) + ", /root/bumpup_priority.sh ");
|
||||
}
|
||||
|
||||
Pair<Boolean, String> result;
|
||||
try {
|
||||
VmwareManager mgr = getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME);
|
||||
result = SshHelper.sshExecute(cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP), DEFAULT_DOMR_SSHPORT, "root", mgr.getSystemVMKeyFile(), null,
|
||||
"/root/bumpup_priority.sh ");
|
||||
|
||||
if (!result.first()) {
|
||||
s_logger.error("BumpUpPriority command on domR " + cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP) + " failed, message: " + result.second());
|
||||
|
||||
return new Answer(cmd, false, "BumpUpPriorityCommand failed due to " + result.second());
|
||||
}
|
||||
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("BumpUpPriorityCommand on domain router " + cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP) + " completed");
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
String msg = "BumpUpPriorityCommand failed due to " + VmwareHelper.getExceptionMessage(e);
|
||||
s_logger.error(msg);
|
||||
return new Answer(cmd, false, msg);
|
||||
}
|
||||
if (result.second() == null || result.second().isEmpty()) {
|
||||
return new Answer(cmd, true, result.second());
|
||||
}
|
||||
return new Answer(cmd, false, result.second());
|
||||
}
|
||||
|
||||
protected Answer execute(VmDataCommand cmd) {
|
||||
if (s_logger.isInfoEnabled()) {
|
||||
s_logger.info("Executing resource VmDataCommand: " + _gson.toJson(cmd));
|
||||
|
||||
@ -61,6 +61,7 @@ import com.cloud.agent.api.AttachVolumeAnswer;
|
||||
import com.cloud.agent.api.AttachVolumeCommand;
|
||||
import com.cloud.agent.api.BackupSnapshotAnswer;
|
||||
import com.cloud.agent.api.BackupSnapshotCommand;
|
||||
import com.cloud.agent.api.BumpUpPriorityCommand;
|
||||
import com.cloud.agent.api.CheckHealthAnswer;
|
||||
import com.cloud.agent.api.CheckHealthCommand;
|
||||
import com.cloud.agent.api.CheckOnHostAnswer;
|
||||
@ -502,6 +503,8 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
|
||||
return execute((CheckRouterCommand)cmd);
|
||||
} else if (cmd instanceof SetFirewallRulesCommand) {
|
||||
return execute((SetFirewallRulesCommand)cmd);
|
||||
} else if (cmd instanceof BumpUpPriorityCommand) {
|
||||
return execute((BumpUpPriorityCommand)cmd);
|
||||
} else {
|
||||
return Answer.createUnsupportedCommandAnswer(cmd);
|
||||
}
|
||||
@ -1221,6 +1224,16 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
|
||||
}
|
||||
return new CheckRouterAnswer(cmd, result, true);
|
||||
}
|
||||
|
||||
private Answer execute(BumpUpPriorityCommand cmd) {
|
||||
Connection conn = getConnection();
|
||||
String args = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
|
||||
String result = callHostPlugin(conn, "vmops", "bumpUpPriority", "args", args);
|
||||
if (result == null || result.isEmpty()) {
|
||||
return new Answer(cmd, false, "BumpUpPriorityCommand failed");
|
||||
}
|
||||
return new Answer(cmd, true, result);
|
||||
}
|
||||
|
||||
protected MaintainAnswer execute(MaintainCommand cmd) {
|
||||
Connection conn = getConnection();
|
||||
|
||||
@ -1125,6 +1125,21 @@ def checkRouter(session, args):
|
||||
|
||||
return txt
|
||||
|
||||
@echo
|
||||
def bumpUpPriority(session, args):
|
||||
sargs = args['args']
|
||||
cmd = sargs.split(' ')
|
||||
cmd.insert(0, "/opt/xensource/bin/bumpUpPriority.sh")
|
||||
cmd.insert(0, "/bin/bash")
|
||||
try:
|
||||
txt = util.pread2(cmd)
|
||||
txt = 'success'
|
||||
except:
|
||||
util.SMlog("bump up priority fail! ")
|
||||
txt = ''
|
||||
|
||||
return txt
|
||||
|
||||
if __name__ == "__main__":
|
||||
XenAPIPlugin.dispatch({"pingtest": pingtest, "setup_iscsi":setup_iscsi, "gethostvmstats": gethostvmstats,
|
||||
"getvncport": getvncport, "getgateway": getgateway, "preparemigration": preparemigration,
|
||||
@ -1138,4 +1153,5 @@ if __name__ == "__main__":
|
||||
"default_network_rules_systemvm":default_network_rules_systemvm,
|
||||
"get_rule_logs_for_vms":get_rule_logs_for_vms,
|
||||
"setLinkLocalIP":setLinkLocalIP, "lt2p_vpn":lt2p_vpn,
|
||||
"cleanup_rules":cleanup_rules, "checkRouter": checkRouter})
|
||||
"cleanup_rules":cleanup_rules, "checkRouter":checkRouter,
|
||||
"bumpUpPriority":bumpUpPriority })
|
||||
|
||||
@ -46,3 +46,4 @@ upgrade_snapshot.sh=..,0755,/opt/xensource/bin
|
||||
cloud-clean-vlan.sh=..,0755,/opt/xensource/bin
|
||||
cloud-prepare-upgrade.sh=..,0755,/opt/xensource/bin
|
||||
getRouterStatus.sh=../../../../network/domr/,0755,/opt/xensource/bin
|
||||
bumpUpPriority.sh=../../../../network/domr/,0755,/opt/xensource/bin
|
||||
|
||||
@ -46,3 +46,4 @@ upgrade_snapshot.sh=..,0755,/opt/xensource/bin
|
||||
cloud-clean-vlan.sh=..,0755,/opt/xensource/bin
|
||||
cloud-prepare-upgrade.sh=..,0755,/opt/xensource/bin
|
||||
getRouterStatus.sh=../../../../network/domr/,0755,/opt/xensource/bin
|
||||
bumpUpPriority.sh=../../../../network/domr/,0755,/opt/xensource/bin
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user