You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by an...@apache.org on 2012/08/03 04:00:26 UTC
[1/2] git commit: VPC : handle Revoke rules for staticroute
Updated Branches:
refs/heads/vpc bda8fc1e0 -> 9b4375339
VPC : handle Revoke rules for staticroute
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/9b437533
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/9b437533
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/9b437533
Branch: refs/heads/vpc
Commit: 9b4375339937ca38022d3798cb3730a63445439a
Parents: 0c9d5f5
Author: anthony <an...@cloud.com>
Authored: Thu Aug 2 18:59:26 2012 -0700
Committer: anthony <an...@cloud.com>
Committed: Thu Aug 2 18:59:49 2012 -0700
----------------------------------------------------------------------
.../agent/api/routing/SetStaticRouteCommand.java | 21 +++----
.../debian/config/opt/cloud/bin/vpc_staticroute.sh | 4 +-
.../xen/resource/CitrixResourceBase.java | 43 ++++++---------
3 files changed, 27 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/9b437533/api/src/com/cloud/agent/api/routing/SetStaticRouteCommand.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/agent/api/routing/SetStaticRouteCommand.java b/api/src/com/cloud/agent/api/routing/SetStaticRouteCommand.java
index c063812..2418048 100644
--- a/api/src/com/cloud/agent/api/routing/SetStaticRouteCommand.java
+++ b/api/src/com/cloud/agent/api/routing/SetStaticRouteCommand.java
@@ -42,25 +42,22 @@ public class SetStaticRouteCommand extends NetworkElementCommand{
return staticRoutes;
}
- public boolean isEmpty() {
- if(staticRoutes == null || staticRoutes.length == 0 ) {
- return true;
- }
- return false;
- }
public String[][] generateSRouteRules() {
String [][] result = new String [2][];
Set<String> toAdd = new HashSet<String>();
for (StaticRouteProfile route: staticRoutes) {
/* example : ip:gateway:cidr,
*/
- if( route.getState() == StaticRoute.State.Active || route.getState() == StaticRoute.State.Add ) {
- String cidr = route.getCidr();
- String subnet = NetUtils.getCidrSubNet(cidr);
- String cidrSize = cidr.split("\\/")[1];
- String entry = route.getIp4Address()+ ":" + route.getGateway() + ":" + subnet + "/" + cidrSize;
- toAdd.add(entry);
+ String cidr = route.getCidr();
+ String subnet = NetUtils.getCidrSubNet(cidr);
+ String cidrSize = cidr.split("\\/")[1];
+ String entry;
+ if (route.getState() == StaticRoute.State.Active || route.getState() == StaticRoute.State.Add) {
+ entry = route.getIp4Address() + ":" + route.getGateway() + ":" + subnet + "/" + cidrSize;
+ } else {
+ entry = "Revoke:" + route.getGateway() + ":" + subnet + "/" + cidrSize;
}
+ toAdd.add(entry);
}
result[0] = toAdd.toArray(new String[toAdd.size()]);
return result;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/9b437533/patches/systemvm/debian/config/opt/cloud/bin/vpc_staticroute.sh
----------------------------------------------------------------------
diff --git a/patches/systemvm/debian/config/opt/cloud/bin/vpc_staticroute.sh b/patches/systemvm/debian/config/opt/cloud/bin/vpc_staticroute.sh
index 542c0c6..b75c0fb 100755
--- a/patches/systemvm/debian/config/opt/cloud/bin/vpc_staticroute.sh
+++ b/patches/systemvm/debian/config/opt/cloud/bin/vpc_staticroute.sh
@@ -60,11 +60,11 @@ restore_table() {
static_route() {
local rule=$1
- if [ "$rule" == "none" ]
+ local ip=$(echo $rule | cut -d: -f1)
+ if [ $ip == "Revoke" ]
then
return 0
fi
- local ip=$(echo $rule | cut -d: -f1)
local gateway=$(echo $rule | cut -d: -f2)
local cidr=$(echo $rule | cut -d: -f3)
logger -t cloud "$(basename $0): static route: public ip=$ip \
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/9b437533/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index f6e9540..7c42e76 100644
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@ -7542,35 +7542,24 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
Connection conn = getConnection();
String routerIp = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
try {
- if ( !cmd.isEmpty() ) {
- String[] results = new String[cmd.getStaticRoutes().length];
- String [][] rules = cmd.generateSRouteRules();
- StringBuilder sb = new StringBuilder();
- String[] srRules = rules[0];
- for (int i = 0; i < srRules.length; i++) {
- sb.append(srRules[i]).append(',');
- }
- String args = "vpc_staticroute.sh " + routerIp;
- args += " -a " + sb.toString();
- callResult = callHostPlugin(conn, "vmops", "routerProxy", "args", args);
- if (callResult == null || callResult.isEmpty()) {
- //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";
- }
- return new SetStaticRouteAnswer(cmd, false, results);
- }
- return new SetStaticRouteAnswer(cmd, true, results);
- } else {
- String args = "vpc_staticroute.sh " + routerIp;
- args += " -a none";
- callResult = callHostPlugin(conn, "vmops", "routerProxy", "args", args);
- if (callResult == null || callResult.isEmpty()) {
- return new SetStaticRouteAnswer(cmd, false, null);
+ String[] results = new String[cmd.getStaticRoutes().length];
+ String [][] rules = cmd.generateSRouteRules();
+ StringBuilder sb = new StringBuilder();
+ String[] srRules = rules[0];
+ for (int i = 0; i < srRules.length; i++) {
+ sb.append(srRules[i]).append(',');
+ }
+ String args = "vpc_staticroute.sh " + routerIp;
+ args += " -a " + sb.toString();
+ callResult = callHostPlugin(conn, "vmops", "routerProxy", "args", args);
+ if (callResult == null || callResult.isEmpty()) {
+ //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";
}
- return new SetStaticRouteAnswer(cmd, true, null);
+ return new SetStaticRouteAnswer(cmd, false, results);
}
-
+ return new SetStaticRouteAnswer(cmd, true, results);
} catch (Exception e) {
String msg = "SetStaticRoute failed due to " + e.toString();
s_logger.error(msg, e);