You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ja...@apache.org on 2013/06/25 15:12:22 UTC
git commit: updated refs/heads/master-6-17-stable to 1a2b570
Updated Branches:
refs/heads/master-6-17-stable 15561e6fc -> 1a2b57052
CLOUDSTACK-3003 Fixed static route issue in vpc vmware
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/1a2b5705
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/1a2b5705
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/1a2b5705
Branch: refs/heads/master-6-17-stable
Commit: 1a2b57052947cb9824a88ca5d4e9b977e188e119
Parents: 15561e6
Author: Jayapal <ja...@apache.org>
Authored: Tue Jun 25 18:37:40 2013 +0530
Committer: Jayapal <ja...@apache.org>
Committed: Tue Jun 25 18:37:52 2013 +0530
----------------------------------------------------------------------
.../vmware/resource/VmwareResource.java | 50 ++++++++++++++++++++
1 file changed, 50 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/1a2b5705/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index 20e02b2..068192b 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -160,6 +160,8 @@ import com.cloud.agent.api.routing.SetSourceNatAnswer;
import com.cloud.agent.api.routing.SetSourceNatCommand;
import com.cloud.agent.api.routing.SetStaticNatRulesAnswer;
import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
+import com.cloud.agent.api.routing.SetStaticRouteAnswer;
+import com.cloud.agent.api.routing.SetStaticRouteCommand;
import com.cloud.agent.api.routing.Site2SiteVpnCfgCommand;
import com.cloud.agent.api.routing.VmDataCommand;
import com.cloud.agent.api.routing.VpnUsersCfgCommand;
@@ -520,6 +522,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
return execute((ScaleVmCommand) cmd);
} else if (clz == PvlanSetupCommand.class) {
return execute((PvlanSetupCommand) cmd);
+ } else if (clz == SetStaticRouteCommand.class) {
+ answer = execute((SetStaticRouteCommand) cmd);
} else {
answer = Answer.createUnsupportedCommandAnswer(cmd);
}
@@ -635,6 +639,52 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
return answer;
}
+ private SetStaticRouteAnswer execute(SetStaticRouteCommand cmd) {
+ if (s_logger.isInfoEnabled()) {
+ s_logger.info("Executing resource SetStaticRouteCommand: " + _gson.toJson(cmd));
+ }
+
+ boolean endResult = true;
+
+ String controlIp = getRouterSshControlIp(cmd);
+ String args = "";
+ String[] results = new String[cmd.getStaticRoutes().length];
+ int i = 0;
+
+ // Extract and build the arguments for the command to be sent to the VR.
+ String [][] rules = cmd.generateSRouteRules();
+ StringBuilder sb = new StringBuilder();
+ String[] srRules = rules[0];
+ for (int j = 0; j < srRules.length; j++) {
+ sb.append(srRules[j]).append(',');
+ }
+ args += " -a " + sb.toString();
+
+ // Send over the command for execution, via ssh, to the VR.
+ try {
+ VmwareManager mgr = getServiceContext().getStockObject(VmwareManager.CONTEXT_STOCK_NAME);
+ Pair<Boolean, String> result = SshHelper.sshExecute(controlIp, DEFAULT_DOMR_SSHPORT, "root", mgr.getSystemVMKeyFile(), null,
+ "/opt/cloud/bin/vpc_staticroute.sh " + args);
+
+ if (s_logger.isDebugEnabled())
+ s_logger.debug("Executing script on domain router " + controlIp + ": /opt/cloud/bin/vpc_staticroute.sh " + args);
+
+ if (!result.first()) {
+ s_logger.error("SetStaticRouteCommand failure on setting one rule. args: " + args);
+ results[i++] = "Failed";
+ endResult = false;
+ } else {
+ results[i++] = null;
+ }
+ } catch (Throwable e) {
+ s_logger.error("SetStaticRouteCommand(args: " + args + ") failed on setting one rule due to " + VmwareHelper.getExceptionMessage(e), e);
+ results[i++] = "Failed";
+ endResult = false;
+ }
+ return new SetStaticRouteAnswer(cmd, endResult, results);
+
+ }
+
protected NetworkUsageAnswer VPCNetworkUsage(NetworkUsageCommand cmd) {
String privateIp = cmd.getPrivateIP();
String option = cmd.getOption();