Applying the latest chances from the VPC Refactor branch onto the new one. We will keep this branch as clean as possible to avoid problems with merge.
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/c81b3380 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/c81b3380 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/c81b3380 Branch: refs/heads/master Commit: c81b3380dffa06a7134845ea97438619018b520f Parents: 3ac2e22 Author: Wilder Rodrigues <wrodrig...@schubergphilis.com> Authored: Mon Sep 29 16:14:34 2014 +0200 Committer: wilderrodrigues <wrodrig...@schubergphilis.com> Committed: Tue Oct 14 15:08:13 2014 +0200 ---------------------------------------------------------------------- .../network/element/VirtualRouterElement.java | 10 +- .../network/router/CommandSetupHelper.java | 19 +- .../cloud/network/router/NetworkHelperImpl.java | 64 ++--- .../VpcVirtualNetworkApplianceManager.java | 13 +- .../com/cloud/network/rules/BasicVpnRules.java | 48 ++++ .../com/cloud/network/rules/DhcpEntryRules.java | 8 +- .../com/cloud/network/rules/DhcpPvlanRules.java | 67 ++++++ .../src/com/cloud/network/rules/DhcpRules.java | 67 ------ .../cloud/network/rules/LoadBalancingRules.java | 3 +- .../rules/VirtualNetworkApplianceFactory.java | 8 +- .../src/com/cloud/network/rules/VpnRules.java | 48 ---- .../topology/AdvancedNetworkTopology.java | 22 +- .../topology/AdvancedNetworkVisitor.java | 25 +- .../network/topology/BasicNetworkTopology.java | 32 ++- .../network/topology/BasicNetworkVisitor.java | 50 +++- .../network/topology/NetworkTopology.java | 23 +- .../topology/NetworkTopologyVisitor.java | 33 +-- .../deployment/RouterDeploymentDefinition.java | 232 +++++++++---------- .../RouterDeploymentDefinitionBuilder.java | 17 +- .../VpcRouterDeploymentDefinition.java | 46 ++-- .../VirtualNetworkApplianceManagerImplTest.java | 59 ----- .../MockVpcVirtualNetworkApplianceManager.java | 16 +- 22 files changed, 387 insertions(+), 523 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/com/cloud/network/element/VirtualRouterElement.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java index 83153fa..546aab4 100755 --- a/server/src/com/cloud/network/element/VirtualRouterElement.java +++ b/server/src/com/cloud/network/element/VirtualRouterElement.java @@ -717,11 +717,14 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl VirtualMachineProfile uservm = vm; + DataCenterVO dcVO = _dcDao.findById(network.getDataCenterId()); + NetworkTopology networkTopology = networkTopologyContext.retrieveNetworkTopology(dcVO); + // If any router is running then send save password command otherwise // save the password in DB for (VirtualRouter router : routers) { if (router.getState() == State.Running) { - return _routerMgr.savePasswordToRouter(network, nic, uservm, routers); + return networkTopology.savePasswordToRouter(network, nic, uservm, routers); } } String password = (String) uservm.getParameter(VirtualMachineProfile.Param.VmPassword); @@ -735,10 +738,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl userVmVO.setUpdateParameters(true); _userVmDao.update(userVmVO.getId(), userVmVO); - DataCenterVO dcVO = _dcDao.findById(network.getDataCenterId()); - NetworkTopology networkTopology = networkTopologyContext.retrieveNetworkTopology(dcVO); - - return networkTopology.savePasswordToRouter(network, nic, uservm, routers); + return true; } @Override http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/com/cloud/network/router/CommandSetupHelper.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/router/CommandSetupHelper.java b/server/src/com/cloud/network/router/CommandSetupHelper.java index df5ad48..7ef04ad 100644 --- a/server/src/com/cloud/network/router/CommandSetupHelper.java +++ b/server/src/com/cloud/network/router/CommandSetupHelper.java @@ -107,6 +107,8 @@ import com.cloud.offering.NetworkOffering; import com.cloud.offerings.NetworkOfferingVO; import com.cloud.offerings.dao.NetworkOfferingDao; import com.cloud.service.dao.ServiceOfferingDao; +import com.cloud.storage.GuestOSVO; +import com.cloud.storage.dao.GuestOSDao; import com.cloud.user.Account; import com.cloud.uservm.UserVm; import com.cloud.utils.Pair; @@ -173,6 +175,8 @@ public class CommandSetupHelper { private VlanDao _vlanDao; @Inject private IPAddressDao _ipAddressDao; + @Inject + private GuestOSDao _guestOSDao; @Inject private RouterControlHelper _routerControlHelper; @@ -216,12 +220,17 @@ public class CommandSetupHelper { public void createDhcpEntryCommand(final VirtualRouter router, final UserVm vm, final NicVO nic, final Commands cmds) { final DhcpEntryCommand dhcpCommand = new DhcpEntryCommand(nic.getMacAddress(), nic.getIp4Address(), vm.getHostName(), nic.getIp6Address(), _networkModel.getExecuteInSeqNtwkElmtCmd()); - final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); - final Nic defaultNic = findGatewayIp(vm.getId()); - String gatewayIp = defaultNic.getGateway(); - if (gatewayIp != null && !gatewayIp.equals(nic.getGateway())) { - gatewayIp = "0.0.0.0"; + + String gatewayIp = nic.getGateway(); + if (!nic.isDefaultNic()) { + GuestOSVO guestOS = _guestOSDao.findById(vm.getGuestOSId()); + if (guestOS == null || !guestOS.getDisplayName().toLowerCase().contains("windows")) { + gatewayIp = "0.0.0.0"; + } } + + final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId()); + dhcpCommand.setDefaultRouter(gatewayIp); dhcpCommand.setIp6Gateway(nic.getIp6Gateway()); String ipaddress = null; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/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 5acad2c..d2b160f 100644 --- a/server/src/com/cloud/network/router/NetworkHelperImpl.java +++ b/server/src/com/cloud/network/router/NetworkHelperImpl.java @@ -174,7 +174,7 @@ public class NetworkHelperImpl implements NetworkHelper { throw new AgentUnavailableException("Unable to send commands to virtual router ", router.getHostId(), e); } - if (answers == null || answers.length != cmds.size()) { + if ((answers == null) || (answers.length != cmds.size())) { return false; } @@ -195,7 +195,7 @@ public class NetworkHelperImpl implements NetworkHelper { if (connectedRouters.isEmpty() || disconnectedRouters.isEmpty()) { return; } - if (connectedRouters.size() != 1 || disconnectedRouters.size() != 1) { + if ((connectedRouters.size() != 1) || (disconnectedRouters.size() != 1)) { s_logger.warn("How many redundant routers do we have?? "); return; } @@ -240,12 +240,6 @@ public class NetworkHelperImpl implements NetworkHelper { } } - /* - * (non-Javadoc) - * - * @see com.cloud.network.router.NetworkHelper#getRealPriority(com.cloud.vm. - * DomainRouterVO) - */ @Override public int getRealPriority(final DomainRouterVO router) { int priority = router.getPriority(); @@ -255,14 +249,6 @@ public class NetworkHelperImpl implements NetworkHelper { return priority; } - // @Override - /* - * (non-Javadoc) - * - * @see - * com.cloud.network.router.NetworkHelper#getNicTO(com.cloud.network.router - * .VirtualRouter, java.lang.Long, java.lang.String) - */ @Override public NicTO getNicTO(final VirtualRouter router, final Long networkId, final String broadcastUri) { NicProfile nicProfile = _networkModel.getNicProfile(router, networkId, broadcastUri); @@ -270,13 +256,6 @@ public class NetworkHelperImpl implements NetworkHelper { return _itMgr.toNicTO(nicProfile, router.getHypervisorType()); } - // @Override - /* - * (non-Javadoc) - * - * @see com.cloud.network.router.NetworkHelper#destroyRouter(long, - * com.cloud.user.Account, java.lang.Long) - */ @Override public VirtualRouter destroyRouter(final long routerId, final Account caller, final Long callerUserId) throws ResourceUnavailableException, ConcurrentOperationException { @@ -296,14 +275,6 @@ public class NetworkHelperImpl implements NetworkHelper { return router; } - /* - * (non-Javadoc) - * - * @see - * com.cloud.network.router.NetworkHelper#checkRouterVersion(com.cloud.network - * .router.VirtualRouter) - */ - // @Override @Override public boolean checkRouterVersion(final VirtualRouter router) { if (!VirtualNetworkApplianceManagerImpl.routerVersionCheckEnabled.value()) { @@ -370,16 +341,16 @@ public class NetworkHelperImpl implements NetworkHelper { @Override public List<DomainRouterVO> startRouters(final RouterDeploymentDefinition routerDeploymentDefinition) throws StorageUnavailableException, InsufficientCapacityException, - ConcurrentOperationException, ResourceUnavailableException { + ConcurrentOperationException, ResourceUnavailableException { List<DomainRouterVO> runningRouters = new ArrayList<DomainRouterVO>(); for (DomainRouterVO router : routerDeploymentDefinition.getRouters()) { boolean skip = false; final State state = router.getState(); - if (router.getHostId() != null && state != State.Running) { + if ((router.getHostId() != null) && (state != State.Running)) { final HostVO host = _hostDao.findById(router.getHostId()); - if (host == null || host.getState() != Status.Up) { + if ((host == null) || (host.getState() != Status.Up)) { skip = true; } } @@ -399,7 +370,7 @@ public class NetworkHelperImpl implements NetworkHelper { public DomainRouterVO startVirtualRouter(final DomainRouterVO router, final User user, final Account caller, final Map<Param, Object> params) throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { - if (router.getRole() != Role.VIRTUAL_ROUTER || !router.getIsRedundantRouter()) { + if ((router.getRole() != Role.VIRTUAL_ROUTER) || !router.getIsRedundantRouter()) { return start(router, user, caller, params, null); } @@ -429,7 +400,7 @@ public class NetworkHelperImpl implements NetworkHelper { if (networkIds.size() != 0) { final List<DomainRouterVO> routerList = _routerDao.findByNetwork(networkIds.get(0)); for (final DomainRouterVO rrouter : routerList) { - if (rrouter.getHostId() != null && rrouter.getIsRedundantRouter() && rrouter.getState() == State.Running) { + if ((rrouter.getHostId() != null) && rrouter.getIsRedundantRouter() && (rrouter.getState() == State.Running)) { if (routerToBeAvoid != null) { throw new ResourceUnavailableException("Try to start router " + router.getInstanceName() + "(" + router.getId() + ")" + ", but there are already two redundant routers with IP " + router.getPublicIpAddress() + ", they are " + rrouter.getInstanceName() + "(" @@ -452,7 +423,7 @@ public class NetworkHelperImpl implements NetworkHelper { avoids[1].addCluster(_hostDao.findById(routerToBeAvoid.getHostId()).getClusterId()); avoids[2] = new ExcludeList(); final List<VolumeVO> volumes = _volumeDao.findByInstanceAndType(routerToBeAvoid.getId(), Volume.Type.ROOT); - if (volumes != null && volumes.size() != 0) { + if ((volumes != null) && (volumes.size() != 0)) { avoids[2].addPool(volumes.get(0).getPoolId()); } avoids[2].addHost(routerToBeAvoid.getHostId()); @@ -499,7 +470,7 @@ public class NetworkHelperImpl implements NetworkHelper { @Override public DomainRouterVO deployRouter(final RouterDeploymentDefinition routerDeploymentDefinition, final boolean startRouter) throws InsufficientAddressCapacityException, - InsufficientServerCapacityException, InsufficientCapacityException, StorageUnavailableException, ResourceUnavailableException { + InsufficientServerCapacityException, InsufficientCapacityException, StorageUnavailableException, ResourceUnavailableException { final ServiceOfferingVO routerOffering = _serviceOfferingDao.findById(routerDeploymentDefinition.getOfferingId()); final Account owner = routerDeploymentDefinition.getOwner(); @@ -553,7 +524,7 @@ public class NetworkHelperImpl implements NetworkHelper { _itMgr.allocate(router.getInstanceName(), template, routerOffering, networks, routerDeploymentDefinition.getPlan(), null); router = _routerDao.findById(router.getId()); } catch (final InsufficientCapacityException ex) { - if (allocateRetry < 2 && iter.hasNext()) { + if ((allocateRetry < 2) && iter.hasNext()) { s_logger.debug("Failed to allocate the VR with hypervisor type " + hType + ", retrying one more time"); continue; } else { @@ -568,7 +539,7 @@ public class NetworkHelperImpl implements NetworkHelper { router = startVirtualRouter(router, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount(), routerDeploymentDefinition.getParams()); break; } catch (final InsufficientCapacityException ex) { - if (startRetry < 2 && iter.hasNext()) { + if ((startRetry < 2) && iter.hasNext()) { s_logger.debug("Failed to start the VR " + router + " with hypervisor type " + hType + ", " + "destroying it and recreating one more time"); // destroy the router destroyRouter(router.getId(), _accountMgr.getAccount(Account.ACCOUNT_ID_SYSTEM), User.UID_SYSTEM); @@ -637,12 +608,12 @@ public class NetworkHelperImpl implements NetworkHelper { protected HypervisorType getClusterToStartDomainRouterForOvm(final long podId) { final List<ClusterVO> clusters = _clusterDao.listByPodId(podId); for (final ClusterVO cv : clusters) { - if (cv.getHypervisorType() == HypervisorType.Ovm || cv.getHypervisorType() == HypervisorType.BareMetal) { + if ((cv.getHypervisorType() == HypervisorType.Ovm) || (cv.getHypervisorType() == HypervisorType.BareMetal)) { continue; } final List<HostVO> hosts = _resourceMgr.listAllHostsInCluster(cv.getId()); - if (hosts == null || hosts.isEmpty()) { + if ((hosts == null) || hosts.isEmpty()) { continue; } @@ -674,13 +645,14 @@ public class NetworkHelperImpl implements NetworkHelper { if (!routerDeploymentDefinition.isPublicNetwork()) { final Nic placeholder = _networkModel.getPlaceholderNicForRouter(routerDeploymentDefinition.getGuestNetwork(), routerDeploymentDefinition.getPodId()); if (routerDeploymentDefinition.getGuestNetwork().getCidr() != null) { - if (placeholder != null && placeholder.getIp4Address() != null) { + if ((placeholder != null) && (placeholder.getIp4Address() != null)) { s_logger.debug("Requesting ipv4 address " + placeholder.getIp4Address() + " stored in placeholder nic for the network " + routerDeploymentDefinition.getGuestNetwork()); defaultNetworkStartIp = placeholder.getIp4Address(); } else { final String startIp = _networkModel.getStartIpAddress(routerDeploymentDefinition.getGuestNetwork().getId()); - if (startIp != null && _ipAddressDao.findByIpAndSourceNetworkId(routerDeploymentDefinition.getGuestNetwork().getId(), startIp).getAllocatedTime() == null) { + if ((startIp != null) + && (_ipAddressDao.findByIpAndSourceNetworkId(routerDeploymentDefinition.getGuestNetwork().getId(), startIp).getAllocatedTime() == null)) { defaultNetworkStartIp = startIp; } else if (s_logger.isDebugEnabled()) { s_logger.debug("First ipv4 " + startIp + " in network id=" + routerDeploymentDefinition.getGuestNetwork().getId() @@ -690,13 +662,13 @@ public class NetworkHelperImpl implements NetworkHelper { } if (routerDeploymentDefinition.getGuestNetwork().getIp6Cidr() != null) { - if (placeholder != null && placeholder.getIp6Address() != null) { + if ((placeholder != null) && (placeholder.getIp6Address() != null)) { s_logger.debug("Requesting ipv6 address " + placeholder.getIp6Address() + " stored in placeholder nic for the network " + routerDeploymentDefinition.getGuestNetwork()); defaultNetworkStartIpv6 = placeholder.getIp6Address(); } else { final String startIpv6 = _networkModel.getStartIpv6Address(routerDeploymentDefinition.getGuestNetwork().getId()); - if (startIpv6 != null && _ipv6Dao.findByNetworkIdAndIp(routerDeploymentDefinition.getGuestNetwork().getId(), startIpv6) == null) { + if ((startIpv6 != null) && (_ipv6Dao.findByNetworkIdAndIp(routerDeploymentDefinition.getGuestNetwork().getId(), startIpv6) == null)) { defaultNetworkStartIpv6 = startIpv6; } else if (s_logger.isDebugEnabled()) { s_logger.debug("First ipv6 " + startIpv6 + " in network id=" + routerDeploymentDefinition.getGuestNetwork().getId() http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java index 5785263..c6181e9 100644 --- a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java +++ b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java @@ -23,9 +23,7 @@ import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.RemoteAccessVpn; import com.cloud.network.Site2SiteVpnConnection; import com.cloud.network.VpcVirtualNetworkApplianceService; -import com.cloud.network.VpnUser; import com.cloud.network.vpc.PrivateGateway; -import com.cloud.network.vpc.StaticRouteProfile; import com.cloud.vm.DomainRouterVO; public interface VpcVirtualNetworkApplianceManager extends VirtualNetworkApplianceManager, VpcVirtualNetworkApplianceService { @@ -76,13 +74,4 @@ public interface VpcVirtualNetworkApplianceManager extends VirtualNetworkApplian * @throws ResourceUnavailableException */ boolean stopRemoteAccessVpn(RemoteAccessVpn vpn, VirtualRouter router) throws ResourceUnavailableException; - - /** - * @param vpn - * @param users - * @param routers - * @return - * @throws ResourceUnavailableException - */ - String[] applyVpnUsers(RemoteAccessVpn vpn, List<? extends VpnUser> users, VirtualRouter router) throws ResourceUnavailableException; -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/com/cloud/network/rules/BasicVpnRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/BasicVpnRules.java b/server/src/com/cloud/network/rules/BasicVpnRules.java new file mode 100644 index 0000000..1b86822 --- /dev/null +++ b/server/src/com/cloud/network/rules/BasicVpnRules.java @@ -0,0 +1,48 @@ +// 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.exception.ResourceUnavailableException; +import com.cloud.network.Network; +import com.cloud.network.VpnUser; +import com.cloud.network.router.VirtualRouter; + +public class BasicVpnRules extends RuleApplier { + + private final List<? extends VpnUser> _users; + + public BasicVpnRules(final Network network, final List<? extends VpnUser> users) { + super(network); + _users = users; + } + + @Override + public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { + _router = router; + + return visitor.visit(this); + } + + public List<? extends VpnUser> getUsers() { + return _users; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/com/cloud/network/rules/DhcpEntryRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/DhcpEntryRules.java b/server/src/com/cloud/network/rules/DhcpEntryRules.java index 991813c..c4a91f4 100644 --- a/server/src/com/cloud/network/rules/DhcpEntryRules.java +++ b/server/src/com/cloud/network/rules/DhcpEntryRules.java @@ -62,8 +62,12 @@ public class DhcpEntryRules extends RuleApplier { return visitor.visit(this); } - public NicProfile getNic() { - return _nic; + public VirtualMachineProfile getProfile() { + return _profile; + } + + public DeployDestination getDestination() { + return _destination; } public NicVO getNicVo() { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/com/cloud/network/rules/DhcpPvlanRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/DhcpPvlanRules.java b/server/src/com/cloud/network/rules/DhcpPvlanRules.java new file mode 100644 index 0000000..c326aa8 --- /dev/null +++ b/server/src/com/cloud/network/rules/DhcpPvlanRules.java @@ -0,0 +1,67 @@ +// 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 org.apache.cloudstack.network.topology.NetworkTopologyVisitor; + +import com.cloud.agent.api.PvlanSetupCommand; +import com.cloud.exception.ResourceUnavailableException; +import com.cloud.network.Network; +import com.cloud.network.NetworkModel; +import com.cloud.network.dao.NetworkDao; +import com.cloud.network.router.VirtualRouter; +import com.cloud.vm.NicProfile; + +public class DhcpPvlanRules extends RuleApplier { + + private final boolean _isAddPvlan; + private final NicProfile _nic; + + private PvlanSetupCommand _setupCommand; + + public DhcpPvlanRules(final boolean isAddPvlan, final NicProfile nic) { + super(null); + + _isAddPvlan = isAddPvlan; + _nic = nic; + } + + @Override + public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { + _router = router; + + String op = "add"; + if (!_isAddPvlan) { + op = "delete"; + } + + NetworkDao networkDao = visitor.getVirtualNetworkApplianceFactory().getNetworkDao(); + final Network network = networkDao.findById(_nic.getNetworkId()); + + NetworkModel networkModel = visitor.getVirtualNetworkApplianceFactory().getNetworkModel(); + final String networkTag = networkModel.getNetworkTag(_router.getHypervisorType(), network); + + _setupCommand = PvlanSetupCommand.createDhcpSetup(op, _nic.getBroadCastUri(), networkTag, _router.getInstanceName(), _nic.getMacAddress(), _nic.getIp4Address()); + + return visitor.visit(this); + } + + public PvlanSetupCommand getSetupCommand() { + return _setupCommand; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/com/cloud/network/rules/DhcpRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/DhcpRules.java b/server/src/com/cloud/network/rules/DhcpRules.java deleted file mode 100644 index 5e8cf9e..0000000 --- a/server/src/com/cloud/network/rules/DhcpRules.java +++ /dev/null @@ -1,67 +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.rules; - -import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; - -import com.cloud.agent.api.PvlanSetupCommand; -import com.cloud.exception.ResourceUnavailableException; -import com.cloud.network.Network; -import com.cloud.network.NetworkModel; -import com.cloud.network.dao.NetworkDao; -import com.cloud.network.router.VirtualRouter; -import com.cloud.vm.NicProfile; - -public class DhcpRules extends RuleApplier { - - private final boolean _isAddPvlan; - private final NicProfile _nic; - - private PvlanSetupCommand _setupCommand; - - public DhcpPvlanRules(final boolean isAddPvlan, final NicProfile nic) { - super(null); - - _isAddPvlan = isAddPvlan; - _nic = nic; - } - - @Override - public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { - _router = router; - - String op = "add"; - if (!_isAddPvlan) { - op = "delete"; - } - - NetworkDao networkDao = visitor.getVirtualNetworkApplianceFactory().getNetworkDao(); - final Network network = networkDao.findById(_nic.getNetworkId()); - - NetworkModel networkModel = visitor.getVirtualNetworkApplianceFactory().getNetworkModel(); - final String networkTag = networkModel.getNetworkTag(_router.getHypervisorType(), network); - - _setupCommand = PvlanSetupCommand.createDhcpSetup(op, _nic.getBroadCastUri(), networkTag, _router.getInstanceName(), _nic.getMacAddress(), _nic.getIp4Address()); - - return visitor.visit(this); - } - - public PvlanSetupCommand getSetupCommand() { - return _setupCommand; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/com/cloud/network/rules/LoadBalancingRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/LoadBalancingRules.java b/server/src/com/cloud/network/rules/LoadBalancingRules.java index 62c8b3b..ad9e013 100644 --- a/server/src/com/cloud/network/rules/LoadBalancingRules.java +++ b/server/src/com/cloud/network/rules/LoadBalancingRules.java @@ -53,8 +53,7 @@ public class LoadBalancingRules extends RuleApplier { // For load balancer we have to resend all lb rules for the network final List<LoadBalancerVO> lbs = loadBalancerDao.listByNetworkIdAndScheme(_network.getId(), Scheme.Public); - // We are cleaning it before because all the rules have to be sent to - // the router. + // We are cleaning it before because all the rules have to be sent to the router. _rules.clear(); LoadBalancingRulesManager lbMgr = visitor.getVirtualNetworkApplianceFactory().getLbMgr(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/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 e775fb1..34400ea 100644 --- a/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java +++ b/server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java @@ -18,6 +18,9 @@ package com.cloud.network.rules; import javax.inject.Inject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; + import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.HostPodDao; import com.cloud.dc.dao.VlanDao; @@ -80,8 +83,11 @@ public class VirtualNetworkApplianceFactory { private IpAddressManager _ipAddrMgr; @Inject private NetworkACLManager _networkACLMgr; - @Inject + + @Autowired + @Qualifier("networkHelper") private NetworkHelper _networkHelper; + @Inject private NicProfileHelper _nicProfileHelper; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/com/cloud/network/rules/VpnRules.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/VpnRules.java b/server/src/com/cloud/network/rules/VpnRules.java deleted file mode 100644 index f42465b..0000000 --- a/server/src/com/cloud/network/rules/VpnRules.java +++ /dev/null @@ -1,48 +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.rules; - -import java.util.List; - -import org.apache.cloudstack.network.topology.NetworkTopologyVisitor; - -import com.cloud.exception.ResourceUnavailableException; -import com.cloud.network.Network; -import com.cloud.network.VpnUser; -import com.cloud.network.router.VirtualRouter; - -public class VpnRules extends RuleApplier { - - private final List<? extends VpnUser> _users; - - public VpnRules(final Network network, final List<? extends VpnUser> users) { - super(network); - _users = users; - } - - @Override - public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter router) throws ResourceUnavailableException { - _router = router; - - return visitor.visit(this); - } - - public List<? extends VpnUser> getUsers() { - return _users; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/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 b9e3ad6..f35af42 100644 --- a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java +++ b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkTopology.java @@ -35,7 +35,7 @@ import com.cloud.network.VpnUser; import com.cloud.network.router.VirtualRouter; import com.cloud.network.rules.AdvancedVpnRules; import com.cloud.network.rules.DhcpEntryRules; -import com.cloud.network.rules.DhcpSubNetRules; +import com.cloud.network.rules.DhcpPvlanRules; import com.cloud.network.rules.NetworkAclsRules; import com.cloud.network.rules.NicPlugInOutRules; import com.cloud.network.rules.PrivateGatewayRules; @@ -90,6 +90,8 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { @Override public boolean applyStaticRoutes(final List<StaticRouteProfile> staticRoutes, final List<DomainRouterVO> routers) throws ResourceUnavailableException { + s_logger.debug("APPLYING STATIC ROUTES RULES"); + if (staticRoutes == null || staticRoutes.isEmpty()) { s_logger.debug("No static routes to apply"); return true; @@ -130,24 +132,6 @@ public class AdvancedNetworkTopology extends BasicNetworkTopology { } @Override - public boolean configDhcpForSubnet(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final DeployDestination dest, - final List<DomainRouterVO> routers) throws ResourceUnavailableException { - - s_logger.debug("CONFIG DHCP FOR SUBNETS RULES"); - - // Asuming we have only one router per network For Now. - final DomainRouterVO router = routers.get(0); - if (router.getState() != State.Running) { - s_logger.warn("Failed to configure dhcp: router not in running state"); - throw new ResourceUnavailableException("Unable to assign ip addresses, domR is not in right state " + router.getState(), DataCenter.class, network.getDataCenterId()); - } - - DhcpSubNetRules subNetRules = new DhcpSubNetRules(network, nic, profile); - - return subNetRules.accept(_advancedVisitor, router); - } - - @Override public boolean setupPrivateGateway(final PrivateGateway gateway, final VirtualRouter router) throws ConcurrentOperationException, ResourceUnavailableException { s_logger.debug("SETUP PRIVATE GATEWAY RULES"); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/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 0e265a3..8ee3010 100644 --- a/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java +++ b/server/src/org/apache/cloudstack/network/topology/AdvancedNetworkVisitor.java @@ -26,7 +26,6 @@ import org.springframework.stereotype.Component; import com.cloud.agent.api.Command; import com.cloud.agent.api.PvlanSetupCommand; -import com.cloud.agent.api.routing.IpAliasTO; import com.cloud.agent.manager.Commands; import com.cloud.dc.DataCenter; import com.cloud.exception.ResourceUnavailableException; @@ -36,7 +35,7 @@ import com.cloud.network.VpnUser; import com.cloud.network.router.VirtualRouter; import com.cloud.network.rules.AdvancedVpnRules; import com.cloud.network.rules.DhcpEntryRules; -import com.cloud.network.rules.DhcpSubNetRules; +import com.cloud.network.rules.DhcpPvlanRules; import com.cloud.network.rules.NetworkAclsRules; import com.cloud.network.rules.NicPlugInOutRules; import com.cloud.network.rules.PrivateGatewayRules; @@ -53,7 +52,6 @@ import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineProfile; -import com.cloud.vm.dao.NicIpAliasVO; @Component public class AdvancedNetworkVisitor extends BasicNetworkVisitor { @@ -191,27 +189,6 @@ public class AdvancedNetworkVisitor extends BasicNetworkVisitor { } @Override - public boolean visit(final DhcpSubNetRules subnet) throws ResourceUnavailableException { - final VirtualRouter router = subnet.getRouter(); - final Network network = subnet.getNetwork(); - final NicIpAliasVO nicAlias = subnet.getNicAlias(); - final String routerAliasIp = subnet.getRouterAliasIp(); - - final Commands cmds = new Commands(Command.OnError.Stop); - - final List<IpAliasTO> ipaliasTo = new ArrayList<IpAliasTO>(); - ipaliasTo.add(new IpAliasTO(routerAliasIp, nicAlias.getNetmask(), nicAlias.getAliasCount().toString())); - - _commandSetupHelper.createIpAlias(router, ipaliasTo, nicAlias.getNetworkId(), cmds); - - // also add the required configuration to the dnsmasq for supporting - // dhcp and dns on the new ip. - _commandSetupHelper.configDnsMasq(router, network, cmds); - - return _networkGeneralHelper.sendCommandsToRouter(router, cmds); - } - - @Override public boolean visit(final StaticRoutesRules staticRoutesRules) throws ResourceUnavailableException { final VirtualRouter router = staticRoutesRules.getRouter(); List<StaticRouteProfile> staticRoutes = staticRoutesRules.getStaticRoutes(); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/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 d35e7f3..23aefb5 100644 --- a/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java +++ b/server/src/org/apache/cloudstack/network/topology/BasicNetworkTopology.java @@ -45,7 +45,9 @@ import com.cloud.network.VpnUser; import com.cloud.network.lb.LoadBalancingRule; import com.cloud.network.router.NetworkHelper; import com.cloud.network.router.VirtualRouter; +import com.cloud.network.rules.BasicVpnRules; import com.cloud.network.rules.DhcpEntryRules; +import com.cloud.network.rules.DhcpSubNetRules; import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRules; import com.cloud.network.rules.IpAssociationRules; @@ -58,18 +60,15 @@ import com.cloud.network.rules.StaticNat; import com.cloud.network.rules.StaticNatRules; import com.cloud.network.rules.UserdataPwdRules; import com.cloud.network.rules.UserdataToRouterRules; -import com.cloud.network.rules.VpnRules; import com.cloud.network.vpc.NetworkACLItem; import com.cloud.network.vpc.PrivateGateway; import com.cloud.network.vpc.StaticRouteProfile; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.DomainRouterVO; import com.cloud.vm.NicProfile; -import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineProfile; -import com.cloud.vm.dao.UserVmDao; @Component public class BasicNetworkTopology implements NetworkTopology { @@ -90,14 +89,6 @@ public class BasicNetworkTopology implements NetworkTopology { @Qualifier("networkHelper") protected NetworkHelper _networkHelper; - @Inject - protected UserVmDao _userVmDao; - - @Override - public StringBuilder createGuestBootLoadArgs(final NicProfile guestNic, final String defaultDns1, final String defaultDns2, final DomainRouterVO router) { - return null; - } - @Override public NetworkTopologyVisitor getVisitor() { return _basicVisitor; @@ -133,7 +124,18 @@ public class BasicNetworkTopology implements NetworkTopology { public boolean configDhcpForSubnet(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final DeployDestination dest, final List<DomainRouterVO> routers) throws ResourceUnavailableException { - throw new CloudRuntimeException("configDhcpForSubnet not implemented in Basic Network Topology."); + s_logger.debug("CONFIG DHCP FOR SUBNETS RULES"); + + // Assuming we have only one router per network For Now. + final DomainRouterVO router = routers.get(0); + if (router.getState() != State.Running) { + s_logger.warn("Failed to configure dhcp: router not in running state"); + throw new ResourceUnavailableException("Unable to assign ip addresses, domR is not in right state " + router.getState(), DataCenter.class, network.getDataCenterId()); + } + + DhcpSubNetRules subNetRules = new DhcpSubNetRules(network, nic, profile); + + return subNetRules.accept(_basicVisitor, router); } @Override @@ -270,7 +272,7 @@ public class BasicNetworkTopology implements NetworkTopology { throw new ResourceUnavailableException("Unable to assign ip addresses, domR doesn't exist for network " + network.getId(), DataCenter.class, network.getDataCenterId()); } - s_logger.debug("APPLYING VPN RULES"); + s_logger.debug("APPLYING BASIC VPN RULES"); BasicVpnRules vpnRules = new BasicVpnRules(network, users); boolean agentResults = true; @@ -282,8 +284,6 @@ public class BasicNetworkTopology implements NetworkTopology { network.getDataCenterId()); } - VpnRules vpnRules = _virtualNetworkApplianceFactory.createVpnRules(network, users); - // Currently we receive just one answer from the agent. In the // future we have to parse individual answers and set // results accordingly @@ -307,8 +307,6 @@ public class BasicNetworkTopology implements NetworkTopology { public boolean savePasswordToRouter(final Network network, final NicProfile nic, final VirtualMachineProfile profile, final List<? extends VirtualRouter> routers) throws ResourceUnavailableException { - _userVmDao.loadDetails((UserVmVO) profile.getVirtualMachine()); - s_logger.debug("SAVE PASSWORD TO ROUTE RULES"); final String typeString = "save password entry"; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/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 db0b6e5..53ddebb 100644 --- a/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java +++ b/server/src/org/apache/cloudstack/network/topology/BasicNetworkVisitor.java @@ -17,14 +17,18 @@ package org.apache.cloudstack.network.topology; +import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import com.cloud.agent.api.Command; +import com.cloud.agent.api.routing.IpAliasTO; import com.cloud.agent.manager.Commands; import com.cloud.deploy.DeployDestination; import com.cloud.exception.ResourceUnavailableException; @@ -35,7 +39,10 @@ import com.cloud.network.lb.LoadBalancingRule; import com.cloud.network.router.CommandSetupHelper; import com.cloud.network.router.NetworkHelper; import com.cloud.network.router.VirtualRouter; +import com.cloud.network.rules.AdvancedVpnRules; +import com.cloud.network.rules.BasicVpnRules; import com.cloud.network.rules.DhcpEntryRules; +import com.cloud.network.rules.DhcpPvlanRules; import com.cloud.network.rules.DhcpSubNetRules; import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule.Purpose; @@ -62,17 +69,15 @@ import com.cloud.vm.DomainRouterVO; import com.cloud.vm.NicVO; import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachineProfile; +import com.cloud.vm.dao.NicIpAliasVO; @Component public class BasicNetworkVisitor extends NetworkTopologyVisitor { private static final Logger s_logger = Logger.getLogger(BasicNetworkVisitor.class); - public BasicNetworkVisitor(final NetworkTopology networkTopology) { - super(networkTopology); - } - - @Inject + @Autowired + @Qualifier("networkHelper") protected NetworkHelper _networkGeneralHelper; @Inject @@ -257,13 +262,29 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor { } @Override - public boolean visit(final DhcpPvlanRules vpn) throws ResourceUnavailableException { - throw new CloudRuntimeException("DhcpPvlanRules not implemented in Basic Network Topology."); + public boolean visit(final DhcpSubNetRules subnet) throws ResourceUnavailableException { + final VirtualRouter router = subnet.getRouter(); + final Network network = subnet.getNetwork(); + final NicIpAliasVO nicAlias = subnet.getNicAlias(); + final String routerAliasIp = subnet.getRouterAliasIp(); + + final Commands cmds = new Commands(Command.OnError.Stop); + + final List<IpAliasTO> ipaliasTo = new ArrayList<IpAliasTO>(); + ipaliasTo.add(new IpAliasTO(routerAliasIp, nicAlias.getNetmask(), nicAlias.getAliasCount().toString())); + + _commandSetupHelper.createIpAlias(router, ipaliasTo, nicAlias.getNetworkId(), cmds); + + // also add the required configuration to the dnsmasq for supporting + // dhcp and dns on the new ip. + _commandSetupHelper.configDnsMasq(router, network, cmds); + + return _networkGeneralHelper.sendCommandsToRouter(router, cmds); } @Override - public boolean visit(final DhcpSubNetRules vpn) throws ResourceUnavailableException { - throw new CloudRuntimeException("DhcpSubNetRules not implemented in Basic Network Topology."); + public boolean visit(final DhcpPvlanRules dhcpRules) throws ResourceUnavailableException { + throw new CloudRuntimeException("DhcpPvlanRules not implemented in Basic Network Topology."); } @Override @@ -272,17 +293,17 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor { } @Override - public boolean visit(final NetworkAclsRules nat) throws ResourceUnavailableException { + public boolean visit(final NetworkAclsRules aclsRules) throws ResourceUnavailableException { throw new CloudRuntimeException("NetworkAclsRules not implemented in Basic Network Topology."); } @Override - public boolean visit(final VpcIpAssociationRules nat) throws ResourceUnavailableException { + public boolean visit(final VpcIpAssociationRules ipRules) throws ResourceUnavailableException { throw new CloudRuntimeException("VpcIpAssociationRules not implemented in Basic Network Topology."); } @Override - public boolean visit(final PrivateGatewayRules userdata) throws ResourceUnavailableException { + public boolean visit(final PrivateGatewayRules pvtGatewayRules) throws ResourceUnavailableException { throw new CloudRuntimeException("PrivateGatewayRules not implemented in Basic Network Topology."); } @@ -290,4 +311,9 @@ public class BasicNetworkVisitor extends NetworkTopologyVisitor { public boolean visit(final StaticRoutesRules staticRoutesRules) throws ResourceUnavailableException { throw new CloudRuntimeException("StaticRoutesRules not implemented in Basic Network Topology."); } + + @Override + public boolean visit(final AdvancedVpnRules vpnRules) throws ResourceUnavailableException { + throw new CloudRuntimeException("AdvancedVpnRules not implemented in Basic Network Topology."); + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/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 2129b42..6e42ad3 100644 --- a/server/src/org/apache/cloudstack/network/topology/NetworkTopology.java +++ b/server/src/org/apache/cloudstack/network/topology/NetworkTopology.java @@ -19,12 +19,12 @@ package org.apache.cloudstack.network.topology; import java.util.List; -import com.cloud.dc.DataCenter; import com.cloud.deploy.DeployDestination; import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ResourceUnavailableException; import com.cloud.network.Network; import com.cloud.network.PublicIpAddress; +import com.cloud.network.RemoteAccessVpn; import com.cloud.network.VpnUser; import com.cloud.network.lb.LoadBalancingRule; import com.cloud.network.router.VirtualRouter; @@ -41,23 +41,9 @@ import com.cloud.vm.VirtualMachineProfile; public interface NetworkTopology { -<<<<<<< HEAD -<<<<<<< HEAD - StringBuilder createGuestBootLoadArgs(final NicProfile guestNic, final String defaultDns1, final String defaultDns2, DomainRouterVO router); - - String retrieveGuestDhcpRange(final NicProfile guestNic, final Network guestNetwork, final DataCenter dc); - - NicProfile retrieveControlNic(final VirtualMachineProfile profile); - - - // ====== USER FOR VPC ONLY ====== // -======= -======= NetworkTopologyVisitor getVisitor(); ->>>>>>> 06c77f1... refactor all private methods in the virtual router appliance and VPC appliance // ====== USED FOR VPC ONLY ====== // ->>>>>>> 0b8b22f... adding setupPrivateGateway to new style; boolean setupDhcpForPvlan(final boolean add, final DomainRouterVO router, final Long hostId, final NicProfile nic) throws ResourceUnavailableException; @@ -68,17 +54,10 @@ public interface NetworkTopology { throws ResourceUnavailableException; boolean applyStaticRoutes(final List<StaticRouteProfile> staticRoutes, final List<DomainRouterVO> routers) throws ResourceUnavailableException; -<<<<<<< HEAD -<<<<<<< HEAD -======= - -======= ->>>>>>> 5e11fba... fixing check style issues boolean setupPrivateGateway(final PrivateGateway gateway, final VirtualRouter router) throws ConcurrentOperationException, ResourceUnavailableException; String[] applyVpnUsers(final RemoteAccessVpn vpn, final List<? extends VpnUser> users, final VirtualRouter router) throws ResourceUnavailableException; ->>>>>>> 0b8b22f... adding setupPrivateGateway to new style; // ====== USED FOR GUEST NETWORK AND VCP ====== // http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/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 621ec8a..7c57d06 100644 --- a/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java +++ b/server/src/org/apache/cloudstack/network/topology/NetworkTopologyVisitor.java @@ -18,7 +18,10 @@ package org.apache.cloudstack.network.topology; import com.cloud.exception.ResourceUnavailableException; -import com.cloud.network.rules.DhcpRules; +import com.cloud.network.rules.AdvancedVpnRules; +import com.cloud.network.rules.BasicVpnRules; +import com.cloud.network.rules.DhcpEntryRules; +import com.cloud.network.rules.DhcpPvlanRules; import com.cloud.network.rules.DhcpSubNetRules; import com.cloud.network.rules.FirewallRules; import com.cloud.network.rules.IpAssociationRules; @@ -34,43 +37,27 @@ import com.cloud.network.rules.UserdataPwdRules; import com.cloud.network.rules.UserdataToRouterRules; import com.cloud.network.rules.VirtualNetworkApplianceFactory; import com.cloud.network.rules.VpcIpAssociationRules; -import com.cloud.network.rules.VpnRules; public abstract class NetworkTopologyVisitor { public abstract VirtualNetworkApplianceFactory getVirtualNetworkApplianceFactory(); public abstract boolean visit(StaticNatRules nat) throws ResourceUnavailableException; - public abstract boolean visit(LoadBalancingRules loadbalancing) throws ResourceUnavailableException; - public abstract boolean visit(FirewallRules firewall) throws ResourceUnavailableException; - public abstract boolean visit(IpAssociationRules ipAddresses) throws ResourceUnavailableException; - public abstract boolean visit(UserdataPwdRules userdata) throws ResourceUnavailableException; - - public abstract boolean visit(DhcpRules dhcp) throws ResourceUnavailableException; - + public abstract boolean visit(DhcpEntryRules dhcp) throws ResourceUnavailableException; public abstract boolean visit(SshKeyToRouterRules ssh) throws ResourceUnavailableException; - public abstract boolean visit(PasswordToRouterRules pwd) throws ResourceUnavailableException; - public abstract boolean visit(NetworkAclsRules acl) throws ResourceUnavailableException; - public abstract boolean visit(VpcIpAssociationRules vpcIp) throws ResourceUnavailableException; - public abstract boolean visit(UserdataToRouterRules userdata) throws ResourceUnavailableException; - - public abstract boolean visit(VpnRules userdata) throws ResourceUnavailableException; - - public abstract boolean visit(PrivateGatewayRules userdata) throws ResourceUnavailableException; - - public abstract boolean visit(DhcpPvlanRules vpn) throws ResourceUnavailableException; - - public abstract boolean visit(DhcpSubNetRules subnet) throws ResourceUnavailableException; - + public abstract boolean visit(BasicVpnRules vpnRules) throws ResourceUnavailableException; + public abstract boolean visit(AdvancedVpnRules vpnRules) throws ResourceUnavailableException; + public abstract boolean visit(PrivateGatewayRules pvtGatewayRules) throws ResourceUnavailableException; + public abstract boolean visit(DhcpPvlanRules dhcpRules) throws ResourceUnavailableException; + public abstract boolean visit(DhcpSubNetRules dhcpRules) throws ResourceUnavailableException; public abstract boolean visit(NicPlugInOutRules nicPlugInOutRules) throws ResourceUnavailableException; - public abstract boolean visit(StaticRoutesRules staticRoutesRules) throws ResourceUnavailableException; } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinition.java ---------------------------------------------------------------------- diff --git a/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinition.java b/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinition.java index 3342004..7728f61 100644 --- a/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinition.java +++ b/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinition.java @@ -100,7 +100,8 @@ public class RouterDeploymentDefinition { protected boolean isPublicNetwork; protected PublicIp sourceNatIp; - protected RouterDeploymentDefinition(final Network guestNetwork, final DeployDestination dest, final Account owner, final Map<Param, Object> params, final boolean isRedundant) { + protected RouterDeploymentDefinition(final Network guestNetwork, final DeployDestination dest, + final Account owner, final Map<Param, Object> params, final boolean isRedundant) { this.guestNetwork = guestNetwork; this.dest = dest; @@ -110,105 +111,98 @@ public class RouterDeploymentDefinition { } public Long getOfferingId() { - return offeringId; + return this.offeringId; } public Vpc getVpc() { return null; } - public Network getGuestNetwork() { return guestNetwork; } - public DeployDestination getDest() { return dest; } - public Account getOwner() { return owner; } - public Map<Param, Object> getParams() { return params; } - public boolean isRedundant() { return isRedundant; } - public DeploymentPlan getPlan() { return plan; } - public boolean isVpcRouter() { return false; } - public Pod getPod() { return dest.getPod(); } - public Long getPodId() { return dest.getPod() == null ? null : dest.getPod().getId(); } - public List<DomainRouterVO> getRouters() { return routers; } public VirtualRouterProvider getVirtualProvider() { - return vrProvider; + return this.vrProvider; } public boolean isBasic() { - return dest.getDataCenter().getNetworkType() == NetworkType.Basic; + return this.dest.getDataCenter().getNetworkType() == NetworkType.Basic; } public boolean isPublicNetwork() { - return isPublicNetwork; + return this.isPublicNetwork; } public PublicIp getSourceNatIP() { - return sourceNatIp; + return this.sourceNatIp; } protected void generateDeploymentPlan() { - final long dcId = dest.getDataCenter().getId(); + final long dcId = this.dest.getDataCenter().getId(); Long podId = null; - if (isBasic()) { - if (dest.getPod() == null) { + if (this.isBasic()) { + if (this.dest.getPod() == null) { throw new CloudRuntimeException("Pod id is expected in deployment destination"); } - podId = dest.getPod().getId(); + podId = this.dest.getPod().getId(); } - plan = new DataCenterDeployment(dcId, podId, null, null, null, null); + this.plan = new DataCenterDeployment(dcId, podId, null, null, null, null); } - public List<DomainRouterVO> deployVirtualRouter() throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException { + public List<DomainRouterVO> deployVirtualRouter() + throws InsufficientCapacityException, + ConcurrentOperationException, ResourceUnavailableException { - findOrDeployVirtualRouter(); + this.findOrDeployVirtualRouter(); return nwHelper.startRouters(this); } @DB - protected void findOrDeployVirtualRouter() throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException { + protected void findOrDeployVirtualRouter() + throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException { try { - lock(); - checkPreconditions(); + this.lock(); + this.checkPreconditions(); // dest has pod=null, for Basic Zone findOrDeployVRs for all Pods final List<DeployDestination> destinations = findDestinations(); for (final DeployDestination destination : destinations) { - dest = destination; - planDeploymentRouters(); - generateDeploymentPlan(); - executeDeployment(); + this.dest = destination; + this.planDeploymentRouters(); + this.generateDeploymentPlan(); + this.executeDeployment(); } } finally { - unlock(); + this.unlock(); } } @@ -217,25 +211,30 @@ public class RouterDeploymentDefinition { if (lock == null) { throw new ConcurrentOperationException("Unable to lock network " + guestNetwork.getId()); } - tableLockId = lock.getId(); + this.tableLockId = lock.getId(); } protected void unlock() { - if (tableLockId != null) { - networkDao.releaseFromLockTable(tableLockId); + if (this.tableLockId != null) { + networkDao.releaseFromLockTable(this.tableLockId); if (logger.isDebugEnabled()) { - logger.debug("Lock is released for network id " + tableLockId + " as a part of router startup in " + dest); + logger.debug("Lock is released for network id " + this.tableLockId + + " as a part of router startup in " + dest); } } } protected void checkPreconditions() throws ResourceUnavailableException { - if (guestNetwork.getState() != Network.State.Implemented && guestNetwork.getState() != Network.State.Setup && guestNetwork.getState() != Network.State.Implementing) { - throw new ResourceUnavailableException("Network is not yet fully implemented: " + guestNetwork, Network.class, guestNetwork.getId()); + if (guestNetwork.getState() != Network.State.Implemented && + guestNetwork.getState() != Network.State.Setup && + guestNetwork.getState() != Network.State.Implementing) { + throw new ResourceUnavailableException("Network is not yet fully implemented: " + guestNetwork, + Network.class, this.guestNetwork.getId()); } if (guestNetwork.getTrafficType() != TrafficType.Guest) { - throw new ResourceUnavailableException("Network is not type Guest as expected: " + guestNetwork, Network.class, guestNetwork.getId()); + throw new ResourceUnavailableException("Network is not type Guest as expected: " + guestNetwork, + Network.class, this.guestNetwork.getId()); } } @@ -243,11 +242,9 @@ public class RouterDeploymentDefinition { // dest has pod=null, for Basic Zone findOrDeployVRs for all Pods final List<DeployDestination> destinations = new ArrayList<DeployDestination>(); - // for basic zone, if 'dest' has pod set to null then this is network - // restart scenario otherwise it is a vm deployment scenario - if (isBasic() && dest.getPod() == null) { - // Find all pods in the data center with running or starting user - // vms + // for basic zone, if 'dest' has pod set to null then this is network restart scenario otherwise it is a vm deployment scenario + if (this.isBasic() && dest.getPod() == null) { + // Find all pods in the data center with running or starting user vms final long dcId = dest.getDataCenter().getId(); final List<HostPodVO> pods = listByDataCenterIdVMTypeAndStates(dcId, VirtualMachine.Type.User, VirtualMachine.State.Starting, VirtualMachine.State.Running); @@ -258,19 +255,15 @@ public class RouterDeploymentDefinition { final List<DomainRouterVO> virtualRouters = routerDao.listByPodIdAndStates(podId, VirtualMachine.State.Starting, VirtualMachine.State.Running); if (virtualRouters.size() > 1) { - // FIXME Find or create a better and more specific exception - // for this + // FIXME Find or create a better and more specific exception for this throw new CloudRuntimeException("Pod can have utmost one VR in Basic Zone, please check!"); } - // Add virtualRouters to the routers, this avoids the situation - // when - // all routers are skipped and VirtualRouterElement throws - // exception - routers.addAll(virtualRouters); + // Add virtualRouters to the routers, this avoids the situation when + // all routers are skipped and VirtualRouterElement throws exception + this.routers.addAll(virtualRouters); - // If List size is one, we already have a starting or running - // VR, skip deployment + // If List size is one, we already have a starting or running VR, skip deployment if (virtualRouters.size() == 1) { logger.debug("Skipping VR deployment: Found a running or starting VR in Pod " + pod.getName() + " id=" + podId); continue; @@ -287,43 +280,43 @@ public class RouterDeploymentDefinition { protected int getNumberOfRoutersToDeploy() { // TODO Are we sure this makes sense? Somebody said 5 was too many? - if (routers.size() >= 5) { + if (this.routers.size() >= 5) { logger.error("Too many redundant routers!"); } - // If old network is redundant but new is single router, then - // routers.size() = 2 but routerCount = 1 + // If old network is redundant but new is single router, then routers.size() = 2 but routerCount = 1 int routersExpected = 1; - if (isRedundant) { + if (this.isRedundant) { routersExpected = 2; } - return routersExpected < routers.size() ? 0 : routersExpected - routers.size(); + return routersExpected < this.routers.size() ? + 0 : routersExpected - this.routers.size(); } protected void setupAccountOwner() { if (networkModel.isNetworkSystem(guestNetwork) || guestNetwork.getGuestType() == Network.GuestType.Shared) { - owner = accountMgr.getAccount(Account.ACCOUNT_ID_SYSTEM); + this.owner = accountMgr.getAccount(Account.ACCOUNT_ID_SYSTEM); } } /** - * It executes last pending tasks to prepare the deployment and checks the - * deployment can proceed. If it can't it return false - * + * It executes last pending tasks to prepare the deployment and checks the deployment + * can proceed. If it can't it return false + * * @return if the deployment can proceed */ protected boolean prepareDeployment() { - setupAccountOwner(); + this.setupAccountOwner(); // Check if public network has to be set on VR - isPublicNetwork = networkModel.isProviderSupportServiceInNetwork(guestNetwork.getId(), Service.SourceNat, Provider.VirtualRouter); + this.isPublicNetwork = networkModel.isProviderSupportServiceInNetwork( + guestNetwork.getId(), Service.SourceNat, Provider.VirtualRouter); boolean canProceed = true; - if (isRedundant && !isPublicNetwork) { - // TODO Shouldn't be this throw an exception instead of log error - // and empty list of routers + if (this.isRedundant && !this.isPublicNetwork) { + // TODO Shouldn't be this throw an exception instead of log error and empty list of routers logger.error("Didn't support redundant virtual router without public network!"); - routers = new ArrayList<>(); + this.routers = new ArrayList<>(); canProceed = false; } @@ -331,39 +324,39 @@ public class RouterDeploymentDefinition { } /** - * Executes preparation and deployment of the routers. After this method - * ends, {@link this#routers} should have all of the deployed routers ready - * for start, and no more. - * + * Executes preparation and deployment of the routers. After this method ends, {@link this#routers} + * should have all of the deployed routers ready for start, and no more. + * * @throws ConcurrentOperationException * @throws InsufficientCapacityException * @throws ResourceUnavailableException */ - protected void executeDeployment() throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException { + protected void executeDeployment() + throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException { - // Check current redundant routers, if possible(all routers are - // stopped), reset the priority - setupPriorityOfRedundantRouter(); + //Check current redundant routers, if possible(all routers are stopped), reset the priority + this.setupPriorityOfRedundantRouter(); - if (getNumberOfRoutersToDeploy() > 0 && prepareDeployment()) { - findVirtualProvider(); - findOfferingId(); - findSourceNatIP(); - deployAllVirtualRouters(); + if (this.getNumberOfRoutersToDeploy() > 0 && this.prepareDeployment()) { + this.findVirtualProvider(); + this.findOfferingId(); + this.findSourceNatIP(); + this.deployAllVirtualRouters(); } } protected void findSourceNatIP() throws InsufficientAddressCapacityException, ConcurrentOperationException { - sourceNatIp = null; - if (isPublicNetwork) { - sourceNatIp = ipAddrMgr.assignSourceNatIpAddressToGuestNetwork(owner, guestNetwork); + this.sourceNatIp = null; + if (this.isPublicNetwork) { + this.sourceNatIp = this.ipAddrMgr.assignSourceNatIpAddressToGuestNetwork( + this.owner,this.guestNetwork); } } protected void findOfferingId() { Long networkOfferingId = networkOfferingDao.findById(guestNetwork.getNetworkOfferingId()).getServiceOfferingId(); if (networkOfferingId != null) { - offeringId = networkOfferingId; + this.offeringId = networkOfferingId; } } @@ -371,44 +364,42 @@ public class RouterDeploymentDefinition { // Check if providers are supported in the physical networks final Type type = Type.VirtualRouter; final Long physicalNetworkId = networkModel.getPhysicalNetworkId(guestNetwork); - final PhysicalNetworkServiceProvider provider = physicalProviderDao.findByServiceProvider(physicalNetworkId, type.toString()); + final PhysicalNetworkServiceProvider provider = + physicalProviderDao.findByServiceProvider(physicalNetworkId, type.toString()); if (provider == null) { - throw new CloudRuntimeException(String.format("Cannot find service provider %s in physical network %s", type.toString(), physicalNetworkId)); + throw new CloudRuntimeException( + String.format("Cannot find service provider %s in physical network %s", + type.toString(), physicalNetworkId)); } - vrProvider = vrProviderDao.findByNspIdAndType(provider.getId(), type); - if (vrProvider == null) { - throw new CloudRuntimeException(String.format("Cannot find virtual router provider %s as service provider %s", type.toString(), provider.getId())); + this.vrProvider = vrProviderDao.findByNspIdAndType(provider.getId(), type); + if (this.vrProvider == null) { + throw new CloudRuntimeException( + String.format("Cannot find virtual router provider %s as service provider %s", + type.toString(), provider.getId())); } } - protected void deployAllVirtualRouters() throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException { + protected void deployAllVirtualRouters() + throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException { -<<<<<<< HEAD - int routersToDeploy = getNumberOfRoutersToDeploy(); - for (int i = 0; i < routersToDeploy; i++) { - // Don't start the router as we are holding the network lock that - // needs to be released at the end of router allocation - DomainRouterVO router = nwHelper.deployRouter(this, false, null); -======= int routersToDeploy = this.getNumberOfRoutersToDeploy(); for(int i = 0; i < routersToDeploy; i++) { // Don't start the router as we are holding the network lock that needs to be released at the end of router allocation DomainRouterVO router = this.nwHelper.deployRouter(this, false); ->>>>>>> 2e8879f... Refactor hypervisor retrieval from VpcNwHelper and NwHelper if (router != null) { - routerDao.addRouterToGuestNetwork(router, guestNetwork); - routers.add(router); + this.routerDao.addRouterToGuestNetwork(router, this.guestNetwork); + this.routers.add(router); } } } /** - * Lists all pods given a Data Center Id, a {@link VirtualMachine.Type} and - * a list of {@link VirtualMachine.State} - * + * Lists all pods given a Data Center Id, a {@link VirtualMachine.Type} and a list of + * {@link VirtualMachine.State} + * * @param id * @param type * @param states @@ -428,27 +419,28 @@ public class RouterDeploymentDefinition { final SearchCriteria<HostPodVO> sc = podIdSearch.create(); sc.setParameters("dc", id); sc.setJoinParameters("vmInstanceSearch", "type", type); - sc.setJoinParameters("vmInstanceSearch", "states", (Object[]) states); + sc.setJoinParameters("vmInstanceSearch", "states", (Object[])states); return podDao.search(sc, null); } protected void planDeploymentRouters() { - if (isBasic()) { - routers = routerDao.listByNetworkAndPodAndRole(guestNetwork.getId(), getPodId(), Role.VIRTUAL_ROUTER); + if (this.isBasic()) { + this.routers = routerDao.listByNetworkAndPodAndRole(this.guestNetwork.getId(), + this.getPodId(), Role.VIRTUAL_ROUTER); } else { - routers = routerDao.listByNetworkAndRole(guestNetwork.getId(), Role.VIRTUAL_ROUTER); + this.routers = routerDao.listByNetworkAndRole(this.guestNetwork.getId(), + Role.VIRTUAL_ROUTER); } } /** - * Routers need reset if at least one of the routers is not redundant or - * stopped. - * + * Routers need reset if at least one of the routers is not redundant or stopped. + * * @return */ protected boolean routersNeedReset() { boolean needReset = true; - for (final DomainRouterVO router : routers) { + for (final DomainRouterVO router : this.routers) { if (!router.getIsRedundantRouter() || router.getState() != VirtualMachine.State.Stopped) { needReset = false; break; @@ -459,18 +451,18 @@ public class RouterDeploymentDefinition { } /** - * Only for redundant deployment and if any routers needed reset, we shall - * reset all routers priorities + * Only for redundant deployment and if any routers needed reset, we shall reset all + * routers priorities */ protected void setupPriorityOfRedundantRouter() { - if (isRedundant && routersNeedReset()) { - for (final DomainRouterVO router : routers) { - // getUpdatedPriority() would update the value later - router.setPriority(0); - router.setIsPriorityBumpUp(false); - routerDao.update(router.getId(), router); + if (this.isRedundant && this.routersNeedReset()) { + for (final DomainRouterVO router : this.routers) { + // getUpdatedPriority() would update the value later + router.setPriority(0); + router.setIsPriorityBumpUp(false); + routerDao.update(router.getId(), router); + } } - } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinitionBuilder.java ---------------------------------------------------------------------- diff --git a/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinitionBuilder.java b/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinitionBuilder.java index 6534b91..b78535e 100644 --- a/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinitionBuilder.java +++ b/server/src/org/cloud/network/router/deployment/RouterDeploymentDefinitionBuilder.java @@ -23,6 +23,8 @@ import java.util.Map; import javax.inject.Inject; import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import com.cloud.dc.dao.HostPodDao; import com.cloud.dc.dao.VlanDao; @@ -92,9 +94,11 @@ public class RouterDeploymentDefinitionBuilder { @Inject private VlanDao vlanDao; - @Inject + @Autowired + @Qualifier("networkHelper") protected NetworkHelper nwHelper; - @Inject + @Autowired + @Qualifier("vpcNetworkHelper") protected VpcNetworkHelperImpl vpcNwHelper; protected Long offeringId; @@ -107,7 +111,8 @@ public class RouterDeploymentDefinitionBuilder { return new IntermediateStateBuilder(this); } - protected RouterDeploymentDefinition injectDependencies(final RouterDeploymentDefinition routerDeploymentDefinition) { + protected RouterDeploymentDefinition injectDependencies( + final RouterDeploymentDefinition routerDeploymentDefinition) { routerDeploymentDefinition.networkDao = networkDao; routerDeploymentDefinition.routerDao = routerDao; @@ -134,7 +139,8 @@ public class RouterDeploymentDefinitionBuilder { return routerDeploymentDefinition; } - protected void injectVpcDependencies(final VpcRouterDeploymentDefinition routerDeploymentDefinition) { + protected void injectVpcDependencies( + final VpcRouterDeploymentDefinition routerDeploymentDefinition) { routerDeploymentDefinition.vpcDao = vpcDao; routerDeploymentDefinition.vpcOffDao = vpcOffDao; @@ -207,4 +213,5 @@ public class RouterDeploymentDefinitionBuilder { return builder.injectDependencies(routerDeploymentDefinition); } } -} \ No newline at end of file + +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c81b3380/server/src/org/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java ---------------------------------------------------------------------- diff --git a/server/src/org/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java b/server/src/org/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java index acd764b..b72c69d 100644 --- a/server/src/org/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java +++ b/server/src/org/cloud/network/router/deployment/VpcRouterDeploymentDefinition.java @@ -53,7 +53,9 @@ public class VpcRouterDeploymentDefinition extends RouterDeploymentDefinition { protected Vpc vpc; - protected VpcRouterDeploymentDefinition(final Vpc vpc, final DeployDestination dest, final Account owner, final Map<Param, Object> params, final boolean isRedundant) { + + protected VpcRouterDeploymentDefinition(final Vpc vpc, final DeployDestination dest, final Account owner, + final Map<Param, Object> params, final boolean isRedundant) { super(null, dest, owner, params, isRedundant); @@ -62,7 +64,7 @@ public class VpcRouterDeploymentDefinition extends RouterDeploymentDefinition { @Override public Vpc getVpc() { - return vpc; + return this.vpc; } @Override @@ -81,15 +83,16 @@ public class VpcRouterDeploymentDefinition extends RouterDeploymentDefinition { if (vpcLock == null) { throw new ConcurrentOperationException("Unable to lock vpc " + vpc.getId()); } - tableLockId = vpcLock.getId(); + this.tableLockId = vpcLock.getId(); } @Override protected void unlock() { - if (tableLockId != null) { - vpcDao.releaseFromLockTable(tableLockId); + if (this.tableLockId != null) { + vpcDao.releaseFromLockTable(this.tableLockId); if (logger.isDebugEnabled()) { - logger.debug("Lock is released for vpc id " + tableLockId + " as a part of router startup in " + dest); + logger.debug("Lock is released for vpc id " + this.tableLockId + + " as a part of router startup in " + dest); } } } @@ -102,19 +105,19 @@ public class VpcRouterDeploymentDefinition extends RouterDeploymentDefinition { @Override protected List<DeployDestination> findDestinations() { final List<DeployDestination> destinations = new ArrayList<>(); - destinations.add(dest); + destinations.add(this.dest); return destinations; } @Override protected int getNumberOfRoutersToDeploy() { - // TODO Should we make our changes here in order to enable Redundant - // Router for VPC? - return routers.isEmpty() ? 1 : 0; + // TODO Should we make our changes here in order to enable Redundant Router for VPC? + return this.routers.isEmpty() ? 1 : 0; } /** * @see RouterDeploymentDefinition#prepareDeployment() + * * @return if the deployment can proceed */ @Override @@ -125,13 +128,12 @@ public class VpcRouterDeploymentDefinition extends RouterDeploymentDefinition { @Override protected void setupPriorityOfRedundantRouter() { // Nothing to do for now - // TODO Shouldn't we add this behavior once Redundant Router works for - // Vpc too + // TODO Shouldn't we add this behavior once Redundant Router works for Vpc too } @Override protected void findSourceNatIP() throws InsufficientAddressCapacityException, ConcurrentOperationException { - sourceNatIp = vpcMgr.assignSourceNatIpAddressToVpc(owner, vpc); + this.sourceNatIp = vpcMgr.assignSourceNatIpAddressToVpc(this.owner, vpc); } @Override @@ -143,8 +145,8 @@ public class VpcRouterDeploymentDefinition extends RouterDeploymentDefinition { if (provider == null) { throw new CloudRuntimeException("Cannot find service provider " + Type.VPCVirtualRouter.toString() + " in physical network " + pNtwk.getId()); } - vrProvider = vrProviderDao.findByNspIdAndType(provider.getId(), Type.VPCVirtualRouter); - if (vrProvider != null) { + this.vrProvider = vrProviderDao.findByNspIdAndType(provider.getId(), Type.VPCVirtualRouter); + if (this.vrProvider != null) { break; } } @@ -154,28 +156,28 @@ public class VpcRouterDeploymentDefinition extends RouterDeploymentDefinition { protected void findOfferingId() { Long vpcOfferingId = vpcOffDao.findById(vpc.getVpcOfferingId()).getServiceOfferingId(); if (vpcOfferingId != null) { - offeringId = vpcOfferingId; + this.offeringId = vpcOfferingId; } } @Override - protected void deployAllVirtualRouters() throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException { + protected void deployAllVirtualRouters() + throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException { - DomainRouterVO router = nwHelper.deployRouter(this, true); + DomainRouterVO router = this.nwHelper.deployRouter(this, true); if (router != null) { - routers.add(router); + this.routers.add(router); } } @Override protected void planDeploymentRouters() { - routers = routerDao.listByVpcId(vpc.getId()); + this.routers = this.routerDao.listByVpcId(this.vpc.getId()); } @Override protected void generateDeploymentPlan() { - final long dcId = dest.getDataCenter().getId(); - plan = new DataCenterDeployment(dcId); + this.plan = new DataCenterDeployment(this.dest.getDataCenter().getId()); } }