adding applyStaticRoutes method to the network topology/visitor. it will be
used by the VPC virtual net manager appliance.
Conflicts:
server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/51df3aa0
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/51df3aa0
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/51df3aa0
Branch: refs/heads/vpc-refactor
Commit: 51df3aa0f2ee364651c095b40521481563044817
Parents: a515d6c
Author: Wilder Rodrigues <[email protected]>
Authored: Tue Aug 19 15:10:10 2014 +0200
Committer: Wilder Rodrigues <[email protected]>
Committed: Fri Oct 3 06:21:27 2014 +0200
----------------------------------------------------------------------
.../cloud/network/router/NetworkHelperImpl.java | 6 +-
.../VirtualNetworkApplianceManagerImpl.java | 2 +-
.../network/router/VirtualNetworkStatus.java | 26 +++++++++
.../cloud/network/router/VirtualNwStatus.java | 26 ---------
.../network/router/VpcNetworkHelperImpl.java | 2 +-
.../com/cloud/network/rules/RuleApplier.java | 7 ---
.../cloud/network/rules/StaticRoutesRules.java | 61 ++++++++++++++++++++
.../rules/VirtualNetworkApplianceFactory.java | 3 +-
.../topology/AdvancedNetworkTopology.java | 8 +++
.../topology/AdvancedNetworkVisitor.java | 7 +++
.../network/topology/BasicNetworkTopology.java | 6 ++
.../network/topology/BasicNetworkVisitor.java | 6 ++
.../network/topology/NetworkTopology.java | 3 +
.../topology/NetworkTopologyVisitor.java | 2 +
14 files changed, 125 insertions(+), 40 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/com/cloud/network/router/NetworkHelperImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/NetworkHelperImpl.java
b/server/src/com/cloud/network/router/NetworkHelperImpl.java
index bcebcd7..bf4c7af 100644
--- a/server/src/com/cloud/network/router/NetworkHelperImpl.java
+++ b/server/src/com/cloud/network/router/NetworkHelperImpl.java
@@ -580,7 +580,7 @@ public class NetworkHelperImpl implements NetworkHelper {
Long vpcId = routerDeploymentDefinition.getVpc() != null ?
routerDeploymentDefinition.getVpc().getId() : null;
router = new DomainRouterVO(id, routerOffering.getId(),
routerDeploymentDefinition.getVirtualProvider().getId(),
- VirtualMachineName.getRouterName(id,
VirtualNwStatus.instance), template.getId(), template.getHypervisorType(),
+ VirtualMachineName.getRouterName(id,
VirtualNetworkStatus.instance), template.getId(), template.getHypervisorType(),
template.getGuestOSId(), owner.getDomainId(),
owner.getId(), routerDeploymentDefinition.isRedundant(), 0,
false, RedundantState.UNKNOWN, offerHA, false, vpcId);
@@ -774,7 +774,7 @@ public class NetworkHelperImpl implements NetworkHelper {
s_logger.debug("Adding nic for Virtual Router in Control network ");
List<? extends NetworkOffering> offerings =
_networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemControlNetwork);
NetworkOffering controlOffering = offerings.get(0);
- Network controlConfig =
_networkMgr.setupNetwork(VirtualNwStatus.account, controlOffering,
routerDeploymentDefinition.getPlan(),
+ Network controlConfig =
_networkMgr.setupNetwork(VirtualNetworkStatus.account, controlOffering,
routerDeploymentDefinition.getPlan(),
null, null, false).get(0);
networks.put(controlConfig, new ArrayList<NicProfile>());
//3) Public network
@@ -803,7 +803,7 @@ public class NetworkHelperImpl implements NetworkHelper {
defaultNic.setDeviceId(2);
}
final NetworkOffering publicOffering =
_networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemPublicNetwork).get(0);
- final List<? extends Network> publicNetworks =
_networkMgr.setupNetwork(VirtualNwStatus.account, publicOffering,
+ final List<? extends Network> publicNetworks =
_networkMgr.setupNetwork(VirtualNetworkStatus.account, publicOffering,
routerDeploymentDefinition.getPlan(), null, null, false);
final String publicIp = defaultNic.getIp4Address();
// We want to use the identical MAC address for RvR on public
interface if possible
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git
a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index a798ef5..db1c9e6 100644
---
a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++
b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -655,7 +655,7 @@ public class VirtualNetworkApplianceManagerImpl extends
ManagerBase implements V
throw new ConfigurationException(msg);
}
- VirtualNwStatus.account = _accountMgr.getSystemAccount();
+ VirtualNetworkStatus.account = _accountMgr.getSystemAccount();
final String aggregationRange =
configs.get("usage.stats.job.aggregation.range");
_usageAggregationRange = NumbersUtil.parseInt(aggregationRange, 1440);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/com/cloud/network/router/VirtualNetworkStatus.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkStatus.java
b/server/src/com/cloud/network/router/VirtualNetworkStatus.java
new file mode 100644
index 0000000..dd77f5d
--- /dev/null
+++ b/server/src/com/cloud/network/router/VirtualNetworkStatus.java
@@ -0,0 +1,26 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+package com.cloud.network.router;
+
+import com.cloud.user.Account;
+
+public class VirtualNetworkStatus {
+
+ public static String instance = "";
+
+ public static Account account = null;
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/com/cloud/network/router/VirtualNwStatus.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNwStatus.java
b/server/src/com/cloud/network/router/VirtualNwStatus.java
deleted file mode 100644
index b0a1b48..0000000
--- a/server/src/com/cloud/network/router/VirtualNwStatus.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.network.router;
-
-import com.cloud.user.Account;
-
-public class VirtualNwStatus {
-
- public static String instance = "";
-
- public static Account account = null;
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/com/cloud/network/router/VpcNetworkHelperImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VpcNetworkHelperImpl.java
b/server/src/com/cloud/network/router/VpcNetworkHelperImpl.java
index 2e5d696..64ee2b0 100644
--- a/server/src/com/cloud/network/router/VpcNetworkHelperImpl.java
+++ b/server/src/com/cloud/network/router/VpcNetworkHelperImpl.java
@@ -187,7 +187,7 @@ public class VpcNetworkHelperImpl extends NetworkHelperImpl
implements VpcNetwor
publicNic.setIsolationUri(IsolationType.Vlan.toUri(publicIp.getVlanTag()));
NetworkOffering publicOffering =
_networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemPublicNetwork).get(0);
if (publicNetwork == null) {
- List<? extends Network> publicNetworks =
_networkMgr.setupNetwork(VirtualNwStatus.account,
+ List<? extends Network> publicNetworks =
_networkMgr.setupNetwork(VirtualNetworkStatus.account,
publicOffering,
vpcRouterDeploymentDefinition.getPlan(), null, null, false);
publicNetwork = publicNetworks.get(0);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/com/cloud/network/rules/RuleApplier.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/RuleApplier.java
b/server/src/com/cloud/network/rules/RuleApplier.java
index 04a13e4..84ad5230 100644
--- a/server/src/com/cloud/network/rules/RuleApplier.java
+++ b/server/src/com/cloud/network/rules/RuleApplier.java
@@ -39,7 +39,6 @@ import com.cloud.network.dao.NetworkDao;
import com.cloud.network.lb.LoadBalancingRulesManager;
import com.cloud.network.router.NetworkHelper;
import com.cloud.network.router.RouterControlHelper;
-import com.cloud.network.router.VirtualNetworkApplianceManager;
import com.cloud.network.router.VirtualRouter;
import com.cloud.network.vpc.VpcManager;
import com.cloud.network.vpc.dao.VpcDao;
@@ -58,8 +57,6 @@ import com.cloud.vm.dao.UserVmDao;
public abstract class RuleApplier {
- protected VirtualNetworkApplianceManager _applianceManager;
-
protected NetworkModel _networkModel;
protected LoadBalancingRulesManager _lbMgr;
@@ -126,10 +123,6 @@ public abstract class RuleApplier {
return _router;
}
- public VirtualNetworkApplianceManager getApplianceManager() {
- return _applianceManager;
- }
-
public void createVmDataCommand(final VirtualRouter router, final UserVm
vm, final NicVO nic, final String publicKey, final Commands cmds) {
final String serviceOffering =
_serviceOfferingDao.findByIdIncludingRemoved(vm.getId(),
vm.getServiceOfferingId()).getDisplayText();
final String zoneName =
_dcDao.findById(router.getDataCenterId()).getName();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/com/cloud/network/rules/StaticRoutesRules.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/StaticRoutesRules.java
b/server/src/com/cloud/network/rules/StaticRoutesRules.java
new file mode 100644
index 0000000..f7c4de9
--- /dev/null
+++ b/server/src/com/cloud/network/rules/StaticRoutesRules.java
@@ -0,0 +1,61 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package com.cloud.network.rules;
+
+import java.util.List;
+
+import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
+
+import com.cloud.agent.api.routing.NetworkElementCommand;
+import com.cloud.agent.api.routing.SetStaticRouteCommand;
+import com.cloud.agent.manager.Commands;
+import com.cloud.dc.DataCenterVO;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.network.router.VirtualRouter;
+import com.cloud.network.vpc.StaticRouteProfile;
+import com.cloud.vm.DomainRouterVO;
+
+public class StaticRoutesRules extends RuleApplier {
+
+ private final List<StaticRouteProfile> staticRoutes;
+
+ public StaticRoutesRules(final List<StaticRouteProfile> staticRoutes) {
+ super(null);
+ this.staticRoutes = staticRoutes;
+ }
+
+ public List<StaticRouteProfile> getStaticRoutes() {
+ return staticRoutes;
+ }
+
+ @Override
+ public boolean accept(final NetworkTopologyVisitor visitor, final
VirtualRouter router) throws ResourceUnavailableException {
+ _router = router;
+
+ return visitor.visit(this);
+ }
+
+ public void createStaticRouteCommands(final List<StaticRouteProfile>
staticRoutes, final DomainRouterVO router, final Commands cmds) {
+ SetStaticRouteCommand cmd = new SetStaticRouteCommand(staticRoutes);
+ cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP,
_networkHelper.getRouterControlIp(router.getId()));
+ cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME,
router.getInstanceName());
+ DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
+ cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE,
dcVo.getNetworkType().toString());
+ cmds.addCommand(cmd);
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java
----------------------------------------------------------------------
diff --git
a/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java
b/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java
index c545975..4815cbf 100644
--- a/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java
+++ b/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java
@@ -170,6 +170,7 @@ public class VirtualNetworkApplianceFactory {
applier._networkOfferingDao = _networkOfferingDao;
applier._routerDao = _routerDao;
applier._routerControlHelper = _routerControlHelper;
+ applier._networkHelper = _networkHelper;
}
public IpAssociationRules createIpAssociationRules(final Network network,
final List<? extends PublicIpAddress> ipAddresses) {
@@ -274,8 +275,6 @@ public class VirtualNetworkApplianceFactory {
initBeans(networkAclsRules);
- networkAclsRules._networkHelper = _networkHelper;
-
return networkAclsRules;
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java
----------------------------------------------------------------------
diff --git
a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java
b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java
index e4fd0e9..bea28cf 100644
---
a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java
+++
b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java
@@ -44,6 +44,7 @@ import com.cloud.network.rules.RuleApplierWrapper;
import com.cloud.network.rules.UserdataPwdRules;
import com.cloud.network.rules.VpcIpAssociationRules;
import com.cloud.network.vpc.NetworkACLItem;
+import com.cloud.network.vpc.StaticRouteProfile;
import com.cloud.vm.DomainRouterVO;
import com.cloud.vm.NicProfile;
import com.cloud.vm.VirtualMachine.State;
@@ -59,6 +60,13 @@ public class AdvancedNetworkTopology extends
BasicNetworkTopology {
protected AdvancedNetworkVisitor _advancedVisitor;
@Override
+ public boolean applyStaticRoutes(final List<StaticRouteProfile>
staticRoutes,
+ final List<DomainRouterVO> routers) throws
ResourceUnavailableException {
+ // TODO Auto-generated method stub
+ return super.applyStaticRoutes(staticRoutes, routers);
+ }
+
+ @Override
public boolean setupDhcpForPvlan(final boolean isAddPvlan, final
DomainRouterVO router, final Long hostId, final NicProfile nic) throws
ResourceUnavailableException {
if (!nic.getBroadCastUri().getScheme().equals("pvlan")) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java
----------------------------------------------------------------------
diff --git
a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java
b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java
index df8afb2..d1e5175 100644
---
a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java
+++
b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java
@@ -37,6 +37,7 @@ import com.cloud.network.rules.DhcpSubNetRules;
import com.cloud.network.rules.NetworkAclsRules;
import com.cloud.network.rules.NicPlugInOutRules;
import com.cloud.network.rules.PrivateGatewayRules;
+import com.cloud.network.rules.StaticRoutesRules;
import com.cloud.network.rules.UserdataPwdRules;
import com.cloud.network.rules.VpcIpAssociationRules;
import com.cloud.network.vpc.NetworkACLItem;
@@ -160,4 +161,10 @@ public class AdvancedNetworkVisitor extends
BasicNetworkVisitor {
return _networkGeneralHelper.sendCommandsToRouter(router, cmds);
}
+
+ @Override
+ public boolean visit(final StaticRoutesRules staticRoutesRules) throws
ResourceUnavailableException {
+
+ return false;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java
----------------------------------------------------------------------
diff --git
a/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java
b/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java
index b91707f..dd0cd15 100644
---
a/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java
+++
b/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java
@@ -59,6 +59,7 @@ import com.cloud.network.rules.UserdataToRouterRules;
import com.cloud.network.rules.VirtualNetworkApplianceFactory;
import com.cloud.network.rules.VpnRules;
import com.cloud.network.vpc.NetworkACLItem;
+import com.cloud.network.vpc.StaticRouteProfile;
import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.vm.DomainRouterVO;
import com.cloud.vm.NicProfile;
@@ -108,6 +109,11 @@ public class BasicNetworkTopology implements
NetworkTopology {
}
@Override
+ public boolean applyStaticRoutes(final List<StaticRouteProfile>
staticRoutes, final List<DomainRouterVO> routers) throws
ResourceUnavailableException {
+ throw new CloudRuntimeException("applyStaticRoutes not implemented in
Basic Network Topology.");
+ }
+
+ @Override
public boolean applyNetworkACLs(final Network network, final List<?
extends NetworkACLItem> rules, final List<? extends VirtualRouter> routers,
final boolean isPrivateGateway)
throws ResourceUnavailableException {
throw new CloudRuntimeException("applyNetworkACLs not implemented in
Basic Network Topology.");
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java
----------------------------------------------------------------------
diff --git
a/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java
b/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java
index 5cdb7d5..817fad7 100644
--- a/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java
+++ b/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java
@@ -50,6 +50,7 @@ import com.cloud.network.rules.SshKeyToRouterRules;
import com.cloud.network.rules.StaticNat;
import com.cloud.network.rules.StaticNatRule;
import com.cloud.network.rules.StaticNatRules;
+import com.cloud.network.rules.StaticRoutesRules;
import com.cloud.network.rules.UserdataPwdRules;
import com.cloud.network.rules.UserdataToRouterRules;
import com.cloud.network.rules.VpcIpAssociationRules;
@@ -271,4 +272,9 @@ public class BasicNetworkVisitor extends
NetworkTopologyVisitor {
public boolean visit(final PrivateGatewayRules userdata) throws
ResourceUnavailableException {
throw new CloudRuntimeException("PrivateGatewayRules not implemented
in Basic Network Topology.");
}
+
+ @Override
+ public boolean visit(final StaticRoutesRules staticRoutesRules) throws
ResourceUnavailableException {
+ throw new CloudRuntimeException("StaticRoutesRules not implemented in
Basic Network Topology.");
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/org/apache/cloudstack/network/topology/NetworkTopology.java
----------------------------------------------------------------------
diff --git
a/server/src/org/apache/cloudstack/network/topology/NetworkTopology.java
b/server/src/org/apache/cloudstack/network/topology/NetworkTopology.java
index 5a501f7..3975878 100644
--- a/server/src/org/apache/cloudstack/network/topology/NetworkTopology.java
+++ b/server/src/org/apache/cloudstack/network/topology/NetworkTopology.java
@@ -32,6 +32,7 @@ import com.cloud.network.rules.RuleApplier;
import com.cloud.network.rules.RuleApplierWrapper;
import com.cloud.network.rules.StaticNat;
import com.cloud.network.vpc.NetworkACLItem;
+import com.cloud.network.vpc.StaticRouteProfile;
import com.cloud.vm.DomainRouterVO;
import com.cloud.vm.NicProfile;
import com.cloud.vm.VirtualMachineProfile;
@@ -55,6 +56,8 @@ public interface NetworkTopology {
boolean applyNetworkACLs(final Network network, final List<? extends
NetworkACLItem> rules, final List<? extends VirtualRouter> routers, final
boolean isPrivateGateway)
throws ResourceUnavailableException;
+ boolean applyStaticRoutes(final List<StaticRouteProfile> staticRoutes,
final List<DomainRouterVO> routers) throws ResourceUnavailableException;
+
// ====== USER FOR GUEST NETWORK AND VCP ====== //
boolean applyDhcpEntry(final Network network, final NicProfile nic, final
VirtualMachineProfile profile, final DeployDestination dest, final
List<DomainRouterVO> routers)
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/51df3aa0/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java
----------------------------------------------------------------------
diff --git
a/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java
b/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java
index 32dcc89..c4f3af5 100644
---
a/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java
+++
b/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java
@@ -29,6 +29,7 @@ import com.cloud.network.rules.PasswordToRouterRules;
import com.cloud.network.rules.PrivateGatewayRules;
import com.cloud.network.rules.SshKeyToRouterRules;
import com.cloud.network.rules.StaticNatRules;
+import com.cloud.network.rules.StaticRoutesRules;
import com.cloud.network.rules.UserdataPwdRules;
import com.cloud.network.rules.UserdataToRouterRules;
import com.cloud.network.rules.VpcIpAssociationRules;
@@ -73,4 +74,5 @@ public abstract class NetworkTopologyVisitor {
public abstract boolean visit(DhcpSubNetRules subnet) throws
ResourceUnavailableException;
public abstract boolean visit(NicPlugInOutRules nicPlugInOutRules) throws
ResourceUnavailableException;
+ public abstract boolean visit(StaticRoutesRules staticRoutesRules) throws
ResourceUnavailableException;
}
\ No newline at end of file