You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ya...@apache.org on 2014/02/20 04:47:48 UTC
[5/7] git commit: updated refs/heads/master to 3bbbda8
CLOUDSTACK-6047: Add generic wrapper for group answer needed commands
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/8b341b06
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/8b341b06
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/8b341b06
Branch: refs/heads/master
Commit: 8b341b0639b1947a71df29d409948eb96e238499
Parents: 43b4144
Author: Sheng Yang <sh...@citrix.com>
Authored: Wed Feb 19 19:12:07 2014 -0800
Committer: Sheng Yang <sh...@citrix.com>
Committed: Wed Feb 19 19:47:09 2014 -0800
----------------------------------------------------------------------
.../cloud/agent/api/routing/GroupAnswer.java | 2 +-
.../cloud/agent/api/routing/IpAssocCommand.java | 4 +
.../agent/api/routing/IpAssocVpcCommand.java | 6 +
.../api/routing/NetworkElementCommand.java | 4 +
.../api/routing/SetFirewallRulesCommand.java | 9 +-
.../agent/api/routing/SetNetworkACLCommand.java | 11 +-
.../routing/SetPortForwardingRulesCommand.java | 10 +-
.../SetPortForwardingRulesVpcCommand.java | 4 +-
.../api/routing/SetStaticNatRulesCommand.java | 9 +-
.../api/routing/SetStaticRouteCommand.java | 13 +-
.../virtualnetwork/VirtualRoutingResource.java | 216 ++++++-------------
11 files changed, 117 insertions(+), 171 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b341b06/core/src/com/cloud/agent/api/routing/GroupAnswer.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/routing/GroupAnswer.java b/core/src/com/cloud/agent/api/routing/GroupAnswer.java
index 0917a7b..293934b 100644
--- a/core/src/com/cloud/agent/api/routing/GroupAnswer.java
+++ b/core/src/com/cloud/agent/api/routing/GroupAnswer.java
@@ -34,7 +34,7 @@ public class GroupAnswer extends Answer {
this.results = results;
}
- String[] getResults() {
+ public String[] getResults() {
return results;
}
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b341b06/core/src/com/cloud/agent/api/routing/IpAssocCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/routing/IpAssocCommand.java b/core/src/com/cloud/agent/api/routing/IpAssocCommand.java
index df5d54a..fe6ab6f 100644
--- a/core/src/com/cloud/agent/api/routing/IpAssocCommand.java
+++ b/core/src/com/cloud/agent/api/routing/IpAssocCommand.java
@@ -38,4 +38,8 @@ public class IpAssocCommand extends NetworkElementCommand {
return ipAddresses;
}
+ @Override
+ public int getAnswersCount() {
+ return ipAddresses.length;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b341b06/core/src/com/cloud/agent/api/routing/IpAssocVpcCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/routing/IpAssocVpcCommand.java b/core/src/com/cloud/agent/api/routing/IpAssocVpcCommand.java
index 3e5566a..d4996a5 100644
--- a/core/src/com/cloud/agent/api/routing/IpAssocVpcCommand.java
+++ b/core/src/com/cloud/agent/api/routing/IpAssocVpcCommand.java
@@ -26,4 +26,10 @@ public class IpAssocVpcCommand extends IpAssocCommand {
public IpAssocVpcCommand(IpAddressTO[] ips) {
super(ips);
}
+
+ @Override
+ public int getAnswersCount() {
+ //Count private gateway to maximum value
+ return ipAddresses.length * 2;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b341b06/core/src/com/cloud/agent/api/routing/NetworkElementCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/routing/NetworkElementCommand.java b/core/src/com/cloud/agent/api/routing/NetworkElementCommand.java
index 205784b..f13037c 100644
--- a/core/src/com/cloud/agent/api/routing/NetworkElementCommand.java
+++ b/core/src/com/cloud/agent/api/routing/NetworkElementCommand.java
@@ -62,4 +62,8 @@ public abstract class NetworkElementCommand extends Command {
public void setRouterAccessIp(String routerAccessIp) {
this.routerAccessIp = routerAccessIp;
}
+
+ public int getAnswersCount() {
+ return 1;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b341b06/core/src/com/cloud/agent/api/routing/SetFirewallRulesCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/routing/SetFirewallRulesCommand.java b/core/src/com/cloud/agent/api/routing/SetFirewallRulesCommand.java
index f7ac052..36771b9 100644
--- a/core/src/com/cloud/agent/api/routing/SetFirewallRulesCommand.java
+++ b/core/src/com/cloud/agent/api/routing/SetFirewallRulesCommand.java
@@ -16,12 +16,12 @@
// under the License.
package com.cloud.agent.api.routing;
+import com.cloud.agent.api.to.FirewallRuleTO;
+
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import com.cloud.agent.api.to.FirewallRuleTO;
-
/**
*
* AccessDetails allow different components to put in information about
@@ -92,4 +92,9 @@ public class SetFirewallRulesCommand extends NetworkElementCommand {
return result;
}
+
+ @Override
+ public int getAnswersCount() {
+ return rules.length;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b341b06/core/src/com/cloud/agent/api/routing/SetNetworkACLCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/routing/SetNetworkACLCommand.java b/core/src/com/cloud/agent/api/routing/SetNetworkACLCommand.java
index 7edcdf3..0b9fec5 100644
--- a/core/src/com/cloud/agent/api/routing/SetNetworkACLCommand.java
+++ b/core/src/com/cloud/agent/api/routing/SetNetworkACLCommand.java
@@ -17,14 +17,14 @@
package com.cloud.agent.api.routing;
+import com.cloud.agent.api.to.NetworkACLTO;
+import com.cloud.agent.api.to.NicTO;
+
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-import com.cloud.agent.api.to.NetworkACLTO;
-import com.cloud.agent.api.to.NicTO;
-
public class SetNetworkACLCommand extends NetworkElementCommand {
NetworkACLTO[] rules;
NicTO nic;
@@ -97,4 +97,9 @@ public class SetNetworkACLCommand extends NetworkElementCommand {
public NicTO getNic() {
return nic;
}
+
+ @Override
+ public int getAnswersCount() {
+ return rules.length;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b341b06/core/src/com/cloud/agent/api/routing/SetPortForwardingRulesCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/routing/SetPortForwardingRulesCommand.java b/core/src/com/cloud/agent/api/routing/SetPortForwardingRulesCommand.java
index a7bf37f..d93ccaf 100644
--- a/core/src/com/cloud/agent/api/routing/SetPortForwardingRulesCommand.java
+++ b/core/src/com/cloud/agent/api/routing/SetPortForwardingRulesCommand.java
@@ -16,10 +16,10 @@
// under the License.
package com.cloud.agent.api.routing;
-import java.util.List;
-
import com.cloud.agent.api.to.PortForwardingRuleTO;
+import java.util.List;
+
public class SetPortForwardingRulesCommand extends NetworkElementCommand {
PortForwardingRuleTO[] rules;
@@ -37,4 +37,10 @@ public class SetPortForwardingRulesCommand extends NetworkElementCommand {
public PortForwardingRuleTO[] getRules() {
return rules;
}
+
+ @Override
+ public int getAnswersCount() {
+ return rules.length;
+ }
}
+
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b341b06/core/src/com/cloud/agent/api/routing/SetPortForwardingRulesVpcCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/routing/SetPortForwardingRulesVpcCommand.java b/core/src/com/cloud/agent/api/routing/SetPortForwardingRulesVpcCommand.java
index 613ae5d..1bce50d 100644
--- a/core/src/com/cloud/agent/api/routing/SetPortForwardingRulesVpcCommand.java
+++ b/core/src/com/cloud/agent/api/routing/SetPortForwardingRulesVpcCommand.java
@@ -16,10 +16,10 @@
// under the License.
package com.cloud.agent.api.routing;
-import java.util.List;
-
import com.cloud.agent.api.to.PortForwardingRuleTO;
+import java.util.List;
+
public class SetPortForwardingRulesVpcCommand extends SetPortForwardingRulesCommand {
protected SetPortForwardingRulesVpcCommand() {
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b341b06/core/src/com/cloud/agent/api/routing/SetStaticNatRulesCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/routing/SetStaticNatRulesCommand.java b/core/src/com/cloud/agent/api/routing/SetStaticNatRulesCommand.java
index a38bf5f..64c7660 100644
--- a/core/src/com/cloud/agent/api/routing/SetStaticNatRulesCommand.java
+++ b/core/src/com/cloud/agent/api/routing/SetStaticNatRulesCommand.java
@@ -16,10 +16,10 @@
// under the License.
package com.cloud.agent.api.routing;
-import java.util.List;
-
import com.cloud.agent.api.to.StaticNatRuleTO;
+import java.util.List;
+
public class SetStaticNatRulesCommand extends NetworkElementCommand {
StaticNatRuleTO[] rules;
@@ -44,4 +44,9 @@ public class SetStaticNatRulesCommand extends NetworkElementCommand {
public Long getVpcId() {
return vpcId;
}
+
+ @Override
+ public int getAnswersCount() {
+ return rules.length;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b341b06/core/src/com/cloud/agent/api/routing/SetStaticRouteCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/routing/SetStaticRouteCommand.java b/core/src/com/cloud/agent/api/routing/SetStaticRouteCommand.java
index 26800a1..1e4f0c8 100644
--- a/core/src/com/cloud/agent/api/routing/SetStaticRouteCommand.java
+++ b/core/src/com/cloud/agent/api/routing/SetStaticRouteCommand.java
@@ -17,14 +17,14 @@
package com.cloud.agent.api.routing;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
import com.cloud.network.vpc.StaticRoute;
import com.cloud.network.vpc.StaticRouteProfile;
import com.cloud.utils.net.NetUtils;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
public class SetStaticRouteCommand extends NetworkElementCommand {
StaticRouteProfile[] staticRoutes;
@@ -59,4 +59,9 @@ public class SetStaticRouteCommand extends NetworkElementCommand {
result[0] = toAdd.toArray(new String[toAdd.size()]);
return result;
}
+
+ @Override
+ public int getAnswersCount() {
+ return staticRoutes.length;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/8b341b06/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java b/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
index f66b030..49a5c0a 100755
--- a/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
+++ b/core/src/com/cloud/agent/resource/virtualnetwork/VirtualRoutingResource.java
@@ -231,14 +231,44 @@ public class VirtualRoutingResource {
}
}
- private Answer applyConfigSingle(NetworkElementCommand cmd, List<ConfigItem> cfg) {
- for (ConfigItem c : cfg) {
+ private Answer applyConfig(NetworkElementCommand cmd, List<ConfigItem> cfg) {
+ int answersCount = cmd.getAnswersCount();
+ assert (cfg.size() <= answersCount) : "Why there are more commands than answers?";
+
+ if (cfg.size() == 1 && answersCount == 1) {
+ ConfigItem c = cfg.get(0);
ExecutionResult result = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), c.getScript(), c.getArgs());
- if (!result.isSuccess()) {
- return new Answer(cmd, false, result.getDetails());
+ return new Answer(cmd, result.isSuccess(), result.getDetails());
+ }
+
+ ExecutionResult[] results = new ExecutionResult[answersCount];
+ String[] resultsString = new String[answersCount];
+ boolean finalResult = true;
+ int i = 0, j;
+ for (ConfigItem c : cfg) {
+ results[i] = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), c.getScript(), c.getArgs());
+ if (c.getInfo() != null) {
+ if (results[i].isSuccess()) {
+ results[i].setDetails(c.getInfo() + " - success: " + results[i].getDetails());
+ } else {
+ results[i].setDetails(c.getInfo() + " - failed: " + results[i].getDetails());
+ }
}
+ i ++;
}
- return new Answer(cmd);
+ i = 0; j = 0;
+ while (j < answersCount) {
+ resultsString[j] = results[i].getDetails();
+ if (!results[i].isSuccess()) {
+ finalResult = false;
+ }
+ // Fill the resultsString with the last result of execution, mostly in 1:n
+ if (i < cfg.size() - 1) {
+ i ++;
+ }
+ j ++;
+ }
+ return new GroupAnswer(cmd, finalResult, answersCount, resultsString);
}
private List<ConfigItem> generateConfig(VpnUsersCfgCommand cmd) {
@@ -259,7 +289,7 @@ public class VirtualRoutingResource {
private Answer execute(VpnUsersCfgCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
private List<ConfigItem> generateConfig(RemoteAccessVpnCfgCommand cmd) {
@@ -288,7 +318,7 @@ public class VirtualRoutingResource {
private Answer execute(RemoteAccessVpnCfgCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
private List<ConfigItem> generateConfig(SetFirewallRulesCommand cmd) {
@@ -332,27 +362,8 @@ public class VirtualRoutingResource {
}
private Answer execute(SetFirewallRulesCommand cmd) {
- int rulesCount = cmd.getRules().length;
- String[] results = new String[rulesCount];
- String routerAccessIp = cmd.getRouterAccessIp();
-
- if (routerAccessIp == null) {
- return new GroupAnswer(cmd, false, rulesCount, results);
- }
-
List<ConfigItem> cfg = generateConfig(cmd);
- ConfigItem c = cfg.get(0);
- ExecutionResult result = _vrDeployer.executeInVR(routerAccessIp, c.getScript(), c.getArgs());
-
- if (!result.isSuccess()) {
- //FIXME - in the future we have to process each rule separately; now we temporarily set every rule to be false if single rule fails
- for (int i = 0; i < results.length; i++) {
- results[i] = "Failed: " + result.getDetails();
- }
- return new GroupAnswer(cmd, false, rulesCount, results);
- }
- return new GroupAnswer(cmd, true, rulesCount, results);
-
+ return applyConfig(cmd, cfg);
}
private List<ConfigItem> generateConfig(SetPortForwardingRulesCommand cmd) {
@@ -373,24 +384,8 @@ public class VirtualRoutingResource {
}
private Answer execute(SetPortForwardingRulesCommand cmd) {
- int rulesCount = cmd.getRules().length;
- String[] results = new String[rulesCount];
- int i = 0;
- boolean endResult = true;
List<ConfigItem> cfg = generateConfig(cmd);
-
- for (ConfigItem c : cfg) {
- ExecutionResult result = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), c.getScript(), c.getArgs());
-
- if (!result.isSuccess()) {
- results[i++] = "Failed";
- endResult = false;
- } else {
- results[i++] = null;
- }
- }
-
- return new GroupAnswer(cmd, endResult, rulesCount, results);
+ return applyConfig(cmd, cfg);
}
private List<ConfigItem> generateConfig(SetStaticNatRulesCommand cmd) {
@@ -424,24 +419,9 @@ public class VirtualRoutingResource {
return cfg;
}
- private GroupAnswer execute(SetStaticNatRulesCommand cmd) {
- String[] results = new String[cmd.getRules().length];
- int i = 0;
- boolean endResult = true;
-
+ private Answer execute(SetStaticNatRulesCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- for (ConfigItem c : cfg) {
- ExecutionResult result = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), c.getScript(), c.getArgs());
-
- if (!result.isSuccess()) {
- results[i++] = "Failed";
- endResult = false;
- } else {
- results[i++] = null;
- }
- }
-
- return new GroupAnswer(cmd, endResult, cmd.getRules().length, results);
+ return applyConfig(cmd, cfg);
}
private List<ConfigItem> generateConfig(LoadBalancerConfigCommand cmd) {
@@ -542,7 +522,7 @@ public class VirtualRoutingResource {
protected Answer execute(VmDataCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
private List<ConfigItem> generateConfig(SavePasswordCommand cmd) {
@@ -560,7 +540,7 @@ public class VirtualRoutingResource {
protected Answer execute(final SavePasswordCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
private List<ConfigItem> generateConfig(DhcpEntryCommand cmd) {
@@ -599,7 +579,7 @@ public class VirtualRoutingResource {
protected Answer execute(final DhcpEntryCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
private List<ConfigItem> generateConfig(CreateIpAliasCommand cmd) {
@@ -617,7 +597,7 @@ public class VirtualRoutingResource {
protected Answer execute(final CreateIpAliasCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
private List<ConfigItem> generateConfig(DeleteIpAliasCommand cmd) {
@@ -641,7 +621,7 @@ public class VirtualRoutingResource {
protected Answer execute(final DeleteIpAliasCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
private List<ConfigItem> generateConfig(DnsMasqConfigCommand cmd) {
@@ -659,7 +639,7 @@ public class VirtualRoutingResource {
protected Answer execute(final DnsMasqConfigCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
private CheckS2SVpnConnectionsAnswer execute(CheckS2SVpnConnectionsCommand cmd) {
@@ -688,7 +668,7 @@ public class VirtualRoutingResource {
protected Answer execute(BumpUpPriorityCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
protected Answer execute(GetDomRVersionCmd cmd) {
@@ -754,7 +734,7 @@ public class VirtualRoutingResource {
protected Answer execute(Site2SiteVpnCfgCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
protected List<ConfigItem> generateConfig(SetMonitorServiceCommand cmd) {
@@ -774,7 +754,7 @@ public class VirtualRoutingResource {
protected Answer execute(SetMonitorServiceCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
protected List<ConfigItem> generateConfig(SetupGuestNetworkCommand cmd) {
@@ -819,7 +799,7 @@ public class VirtualRoutingResource {
protected Answer execute(SetupGuestNetworkCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
protected List<ConfigItem> generateConfig(SetNetworkACLCommand cmd) {
@@ -856,22 +836,9 @@ public class VirtualRoutingResource {
return cfg;
}
- private GroupAnswer execute(SetNetworkACLCommand cmd) {
- int rulesCount = cmd.getRules().length;
- String[] results = new String[rulesCount];
-
+ private Answer execute(SetNetworkACLCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- ConfigItem c = cfg.get(0);
- final ExecutionResult result = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), c.getScript(), c.getArgs());
-
- if (!result.isSuccess()) {
- for (int i = 0; i < results.length; i++) {
- results[i] = "Failed";
- }
- return new GroupAnswer(cmd, false, rulesCount, results);
- }
-
- return new GroupAnswer(cmd, true, rulesCount, results);
+ return applyConfig(cmd, cfg);
}
protected List<ConfigItem> generateConfig(SetSourceNatCommand cmd) {
@@ -891,7 +858,7 @@ public class VirtualRoutingResource {
protected Answer execute(SetSourceNatCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- return applyConfigSingle(cmd, cfg);
+ return applyConfig(cmd, cfg);
}
protected List<ConfigItem> generateConfig(SetPortForwardingRulesVpcCommand cmd) {
@@ -911,45 +878,14 @@ public class VirtualRoutingResource {
return cfg;
}
- private GroupAnswer execute(SetPortForwardingRulesVpcCommand cmd) {
- String[] results = new String[cmd.getRules().length];
- int i = 0;
-
- boolean endResult = true;
+ private Answer execute(SetPortForwardingRulesVpcCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- for (ConfigItem c : cfg) {
- ExecutionResult result = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), c.getScript(), c.getArgs());
-
- if (!result.isSuccess()) {
- results[i++] = "Failed";
- endResult = false;
- } else {
- results[i++] = null;
- }
- }
- return new GroupAnswer(cmd, endResult, cmd.getRules().length, results);
+ return applyConfig(cmd, cfg);
}
- public GroupAnswer execute(IpAssocVpcCommand cmd) {
- boolean finalResult = true;
- String[] results = new String[cmd.getIpAddresses().length];
- for (int i = 0; i < cmd.getIpAddresses().length; i ++) {
- results[i] = "Failed";
- }
-
- int i = 0;
+ public Answer execute(IpAssocVpcCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- for (ConfigItem c : cfg) {
- ExecutionResult result = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), c.getScript(), c.getArgs());
- if (!result.isSuccess()) {
- results[i++] = c.getInfo() + " failed: " + result.getDetails();
- finalResult = false;
- break;
- }
-
- results[i++] = c.getInfo() + " - success ";
- }
- return new GroupAnswer(cmd, finalResult, cmd.getIpAddresses().length, results);
+ return applyConfig(cmd, cfg);
}
protected List<ConfigItem> generateConfig(SetStaticRouteCommand cmd) {
@@ -969,22 +905,9 @@ public class VirtualRoutingResource {
return cfg;
}
- private GroupAnswer execute(SetStaticRouteCommand cmd) {
- int rulesCount = cmd.getStaticRoutes().length;
- String[] results = new String[rulesCount];
-
+ private Answer execute(SetStaticRouteCommand cmd) {
List<ConfigItem> cfg = generateConfig(cmd);
- ConfigItem c = cfg.get(0);
- final ExecutionResult result = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), c.getScript(), c.getArgs());
-
- if (!result.isSuccess()) {
- for (int i = 0; i < results.length; i++) {
- results[i] = "Failed";
- }
- return new GroupAnswer(cmd, false, rulesCount, results);
- }
-
- return new GroupAnswer(cmd, true, rulesCount, results);
+ return applyConfig(cmd, cfg);
}
protected List<ConfigItem> generateConfig(IpAssocCommand cmd) {
@@ -1067,25 +990,8 @@ public class VirtualRoutingResource {
}
public Answer execute(IpAssocCommand cmd) {
- boolean finalResult = true;
- String[] results = new String[cmd.getIpAddresses().length];
- for (int i = 0; i < results.length; i++) {
- results[i] = "Failed";
- }
-
- int i = 0;
List<ConfigItem> cfg = generateConfig(cmd);
- for (ConfigItem c : cfg) {
- ExecutionResult result = _vrDeployer.executeInVR(cmd.getRouterAccessIp(), c.getScript(), c.getArgs());
- if (result.isSuccess()) {
- results[i++] = c.getInfo() + " - success";
- } else {
- results[i++] = c.getInfo() + " - failed:" + result.getDetails();
- finalResult = false;
- break;
- }
- }
- return new GroupAnswer(cmd, finalResult, cmd.getIpAddresses().length, results);
+ return applyConfig(cmd, cfg);
}
public boolean configure(final String name, final Map<String, Object> params) throws ConfigurationException {