Skip to content

Commit f79e7cd

Browse files
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.
1 parent fb55851 commit f79e7cd

20 files changed

+275
-411
lines changed

server/src/com/cloud/network/element/VirtualRouterElement.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -717,11 +717,14 @@ public boolean savePassword(final Network network, final NicProfile nic, final V
717717

718718
VirtualMachineProfile uservm = vm;
719719

720+
DataCenterVO dcVO = _dcDao.findById(network.getDataCenterId());
721+
NetworkTopology networkTopology = networkTopologyContext.retrieveNetworkTopology(dcVO);
722+
720723
// If any router is running then send save password command otherwise
721724
// save the password in DB
722725
for (VirtualRouter router : routers) {
723726
if (router.getState() == State.Running) {
724-
return _routerMgr.savePasswordToRouter(network, nic, uservm, routers);
727+
return networkTopology.savePasswordToRouter(network, nic, uservm, routers);
725728
}
726729
}
727730
String password = (String) uservm.getParameter(VirtualMachineProfile.Param.VmPassword);
@@ -735,10 +738,7 @@ public boolean savePassword(final Network network, final NicProfile nic, final V
735738
userVmVO.setUpdateParameters(true);
736739
_userVmDao.update(userVmVO.getId(), userVmVO);
737740

738-
DataCenterVO dcVO = _dcDao.findById(network.getDataCenterId());
739-
NetworkTopology networkTopology = networkTopologyContext.retrieveNetworkTopology(dcVO);
740-
741-
return networkTopology.savePasswordToRouter(network, nic, uservm, routers);
741+
return true;
742742
}
743743

744744
@Override

server/src/com/cloud/network/router/CommandSetupHelper.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@
107107
import com.cloud.offerings.NetworkOfferingVO;
108108
import com.cloud.offerings.dao.NetworkOfferingDao;
109109
import com.cloud.service.dao.ServiceOfferingDao;
110+
import com.cloud.storage.GuestOSVO;
111+
import com.cloud.storage.dao.GuestOSDao;
110112
import com.cloud.user.Account;
111113
import com.cloud.uservm.UserVm;
112114
import com.cloud.utils.Pair;
@@ -173,6 +175,8 @@ public class CommandSetupHelper {
173175
private VlanDao _vlanDao;
174176
@Inject
175177
private IPAddressDao _ipAddressDao;
178+
@Inject
179+
private GuestOSDao _guestOSDao;
176180

177181
@Inject
178182
private RouterControlHelper _routerControlHelper;
@@ -216,12 +220,17 @@ public void createApplyVpnUsersCommand(final List<? extends VpnUser> users, fina
216220
public void createDhcpEntryCommand(final VirtualRouter router, final UserVm vm, final NicVO nic, final Commands cmds) {
217221
final DhcpEntryCommand dhcpCommand = new DhcpEntryCommand(nic.getMacAddress(), nic.getIp4Address(), vm.getHostName(), nic.getIp6Address(),
218222
_networkModel.getExecuteInSeqNtwkElmtCmd());
219-
final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
220-
final Nic defaultNic = findGatewayIp(vm.getId());
221-
String gatewayIp = defaultNic.getGateway();
222-
if (gatewayIp != null && !gatewayIp.equals(nic.getGateway())) {
223-
gatewayIp = "0.0.0.0";
223+
224+
String gatewayIp = nic.getGateway();
225+
if (!nic.isDefaultNic()) {
226+
GuestOSVO guestOS = _guestOSDao.findById(vm.getGuestOSId());
227+
if (guestOS == null || !guestOS.getDisplayName().toLowerCase().contains("windows")) {
228+
gatewayIp = "0.0.0.0";
229+
}
224230
}
231+
232+
final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
233+
225234
dhcpCommand.setDefaultRouter(gatewayIp);
226235
dhcpCommand.setIp6Gateway(nic.getIp6Gateway());
227236
String ipaddress = null;

server/src/com/cloud/network/router/NetworkHelperImpl.java

Lines changed: 18 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ public boolean sendCommandsToRouter(final VirtualRouter router, final Commands c
174174
throw new AgentUnavailableException("Unable to send commands to virtual router ", router.getHostId(), e);
175175
}
176176

177-
if (answers == null || answers.length != cmds.size()) {
177+
if ((answers == null) || (answers.length != cmds.size())) {
178178
return false;
179179
}
180180

@@ -195,7 +195,7 @@ public void handleSingleWorkingRedundantRouter(final List<? extends VirtualRoute
195195
if (connectedRouters.isEmpty() || disconnectedRouters.isEmpty()) {
196196
return;
197197
}
198-
if (connectedRouters.size() != 1 || disconnectedRouters.size() != 1) {
198+
if ((connectedRouters.size() != 1) || (disconnectedRouters.size() != 1)) {
199199
s_logger.warn("How many redundant routers do we have?? ");
200200
return;
201201
}
@@ -240,12 +240,6 @@ public void handleSingleWorkingRedundantRouter(final List<? extends VirtualRoute
240240
}
241241
}
242242

243-
/*
244-
* (non-Javadoc)
245-
*
246-
* @see com.cloud.network.router.NetworkHelper#getRealPriority(com.cloud.vm.
247-
* DomainRouterVO)
248-
*/
249243
@Override
250244
public int getRealPriority(final DomainRouterVO router) {
251245
int priority = router.getPriority();
@@ -255,28 +249,13 @@ public int getRealPriority(final DomainRouterVO router) {
255249
return priority;
256250
}
257251

258-
// @Override
259-
/*
260-
* (non-Javadoc)
261-
*
262-
* @see
263-
* com.cloud.network.router.NetworkHelper#getNicTO(com.cloud.network.router
264-
* .VirtualRouter, java.lang.Long, java.lang.String)
265-
*/
266252
@Override
267253
public NicTO getNicTO(final VirtualRouter router, final Long networkId, final String broadcastUri) {
268254
NicProfile nicProfile = _networkModel.getNicProfile(router, networkId, broadcastUri);
269255

270256
return _itMgr.toNicTO(nicProfile, router.getHypervisorType());
271257
}
272258

273-
// @Override
274-
/*
275-
* (non-Javadoc)
276-
*
277-
* @see com.cloud.network.router.NetworkHelper#destroyRouter(long,
278-
* com.cloud.user.Account, java.lang.Long)
279-
*/
280259
@Override
281260
public VirtualRouter destroyRouter(final long routerId, final Account caller, final Long callerUserId) throws ResourceUnavailableException, ConcurrentOperationException {
282261

@@ -296,14 +275,6 @@ public VirtualRouter destroyRouter(final long routerId, final Account caller, fi
296275
return router;
297276
}
298277

299-
/*
300-
* (non-Javadoc)
301-
*
302-
* @see
303-
* com.cloud.network.router.NetworkHelper#checkRouterVersion(com.cloud.network
304-
* .router.VirtualRouter)
305-
*/
306-
// @Override
307278
@Override
308279
public boolean checkRouterVersion(final VirtualRouter router) {
309280
if (!VirtualNetworkApplianceManagerImpl.routerVersionCheckEnabled.value()) {
@@ -370,16 +341,16 @@ protected DomainRouterVO waitRouter(final DomainRouterVO router) {
370341

371342
@Override
372343
public List<DomainRouterVO> startRouters(final RouterDeploymentDefinition routerDeploymentDefinition) throws StorageUnavailableException, InsufficientCapacityException,
373-
ConcurrentOperationException, ResourceUnavailableException {
344+
ConcurrentOperationException, ResourceUnavailableException {
374345

375346
List<DomainRouterVO> runningRouters = new ArrayList<DomainRouterVO>();
376347

377348
for (DomainRouterVO router : routerDeploymentDefinition.getRouters()) {
378349
boolean skip = false;
379350
final State state = router.getState();
380-
if (router.getHostId() != null && state != State.Running) {
351+
if ((router.getHostId() != null) && (state != State.Running)) {
381352
final HostVO host = _hostDao.findById(router.getHostId());
382-
if (host == null || host.getState() != Status.Up) {
353+
if ((host == null) || (host.getState() != Status.Up)) {
383354
skip = true;
384355
}
385356
}
@@ -399,7 +370,7 @@ public List<DomainRouterVO> startRouters(final RouterDeploymentDefinition router
399370
public DomainRouterVO startVirtualRouter(final DomainRouterVO router, final User user, final Account caller, final Map<Param, Object> params)
400371
throws StorageUnavailableException, InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException {
401372

402-
if (router.getRole() != Role.VIRTUAL_ROUTER || !router.getIsRedundantRouter()) {
373+
if ((router.getRole() != Role.VIRTUAL_ROUTER) || !router.getIsRedundantRouter()) {
403374
return start(router, user, caller, params, null);
404375
}
405376

@@ -429,7 +400,7 @@ public DomainRouterVO startVirtualRouter(final DomainRouterVO router, final User
429400
if (networkIds.size() != 0) {
430401
final List<DomainRouterVO> routerList = _routerDao.findByNetwork(networkIds.get(0));
431402
for (final DomainRouterVO rrouter : routerList) {
432-
if (rrouter.getHostId() != null && rrouter.getIsRedundantRouter() && rrouter.getState() == State.Running) {
403+
if ((rrouter.getHostId() != null) && rrouter.getIsRedundantRouter() && (rrouter.getState() == State.Running)) {
433404
if (routerToBeAvoid != null) {
434405
throw new ResourceUnavailableException("Try to start router " + router.getInstanceName() + "(" + router.getId() + ")"
435406
+ ", but there are already two redundant routers with IP " + router.getPublicIpAddress() + ", they are " + rrouter.getInstanceName() + "("
@@ -452,7 +423,7 @@ public DomainRouterVO startVirtualRouter(final DomainRouterVO router, final User
452423
avoids[1].addCluster(_hostDao.findById(routerToBeAvoid.getHostId()).getClusterId());
453424
avoids[2] = new ExcludeList();
454425
final List<VolumeVO> volumes = _volumeDao.findByInstanceAndType(routerToBeAvoid.getId(), Volume.Type.ROOT);
455-
if (volumes != null && volumes.size() != 0) {
426+
if ((volumes != null) && (volumes.size() != 0)) {
456427
avoids[2].addPool(volumes.get(0).getPoolId());
457428
}
458429
avoids[2].addHost(routerToBeAvoid.getHostId());
@@ -499,7 +470,7 @@ protected String retrieveTemplateName(final HypervisorType hType, final long dat
499470

500471
@Override
501472
public DomainRouterVO deployRouter(final RouterDeploymentDefinition routerDeploymentDefinition, final boolean startRouter) throws InsufficientAddressCapacityException,
502-
InsufficientServerCapacityException, InsufficientCapacityException, StorageUnavailableException, ResourceUnavailableException {
473+
InsufficientServerCapacityException, InsufficientCapacityException, StorageUnavailableException, ResourceUnavailableException {
503474

504475
final ServiceOfferingVO routerOffering = _serviceOfferingDao.findById(routerDeploymentDefinition.getOfferingId());
505476
final Account owner = routerDeploymentDefinition.getOwner();
@@ -553,7 +524,7 @@ public DomainRouterVO deployRouter(final RouterDeploymentDefinition routerDeploy
553524
_itMgr.allocate(router.getInstanceName(), template, routerOffering, networks, routerDeploymentDefinition.getPlan(), null);
554525
router = _routerDao.findById(router.getId());
555526
} catch (final InsufficientCapacityException ex) {
556-
if (allocateRetry < 2 && iter.hasNext()) {
527+
if ((allocateRetry < 2) && iter.hasNext()) {
557528
s_logger.debug("Failed to allocate the VR with hypervisor type " + hType + ", retrying one more time");
558529
continue;
559530
} else {
@@ -568,7 +539,7 @@ public DomainRouterVO deployRouter(final RouterDeploymentDefinition routerDeploy
568539
router = startVirtualRouter(router, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount(), routerDeploymentDefinition.getParams());
569540
break;
570541
} catch (final InsufficientCapacityException ex) {
571-
if (startRetry < 2 && iter.hasNext()) {
542+
if ((startRetry < 2) && iter.hasNext()) {
572543
s_logger.debug("Failed to start the VR " + router + " with hypervisor type " + hType + ", " + "destroying it and recreating one more time");
573544
// destroy the router
574545
destroyRouter(router.getId(), _accountMgr.getAccount(Account.ACCOUNT_ID_SYSTEM), User.UID_SYSTEM);
@@ -637,12 +608,12 @@ protected List<HypervisorType> getHypervisors(final RouterDeploymentDefinition r
637608
protected HypervisorType getClusterToStartDomainRouterForOvm(final long podId) {
638609
final List<ClusterVO> clusters = _clusterDao.listByPodId(podId);
639610
for (final ClusterVO cv : clusters) {
640-
if (cv.getHypervisorType() == HypervisorType.Ovm || cv.getHypervisorType() == HypervisorType.BareMetal) {
611+
if ((cv.getHypervisorType() == HypervisorType.Ovm) || (cv.getHypervisorType() == HypervisorType.BareMetal)) {
641612
continue;
642613
}
643614

644615
final List<HostVO> hosts = _resourceMgr.listAllHostsInCluster(cv.getId());
645-
if (hosts == null || hosts.isEmpty()) {
616+
if ((hosts == null) || hosts.isEmpty()) {
646617
continue;
647618
}
648619

@@ -674,13 +645,14 @@ public LinkedHashMap<Network, List<? extends NicProfile>> createRouterNetworks(f
674645
if (!routerDeploymentDefinition.isPublicNetwork()) {
675646
final Nic placeholder = _networkModel.getPlaceholderNicForRouter(routerDeploymentDefinition.getGuestNetwork(), routerDeploymentDefinition.getPodId());
676647
if (routerDeploymentDefinition.getGuestNetwork().getCidr() != null) {
677-
if (placeholder != null && placeholder.getIp4Address() != null) {
648+
if ((placeholder != null) && (placeholder.getIp4Address() != null)) {
678649
s_logger.debug("Requesting ipv4 address " + placeholder.getIp4Address() + " stored in placeholder nic for the network "
679650
+ routerDeploymentDefinition.getGuestNetwork());
680651
defaultNetworkStartIp = placeholder.getIp4Address();
681652
} else {
682653
final String startIp = _networkModel.getStartIpAddress(routerDeploymentDefinition.getGuestNetwork().getId());
683-
if (startIp != null && _ipAddressDao.findByIpAndSourceNetworkId(routerDeploymentDefinition.getGuestNetwork().getId(), startIp).getAllocatedTime() == null) {
654+
if ((startIp != null)
655+
&& (_ipAddressDao.findByIpAndSourceNetworkId(routerDeploymentDefinition.getGuestNetwork().getId(), startIp).getAllocatedTime() == null)) {
684656
defaultNetworkStartIp = startIp;
685657
} else if (s_logger.isDebugEnabled()) {
686658
s_logger.debug("First ipv4 " + startIp + " in network id=" + routerDeploymentDefinition.getGuestNetwork().getId()
@@ -690,13 +662,13 @@ public LinkedHashMap<Network, List<? extends NicProfile>> createRouterNetworks(f
690662
}
691663

692664
if (routerDeploymentDefinition.getGuestNetwork().getIp6Cidr() != null) {
693-
if (placeholder != null && placeholder.getIp6Address() != null) {
665+
if ((placeholder != null) && (placeholder.getIp6Address() != null)) {
694666
s_logger.debug("Requesting ipv6 address " + placeholder.getIp6Address() + " stored in placeholder nic for the network "
695667
+ routerDeploymentDefinition.getGuestNetwork());
696668
defaultNetworkStartIpv6 = placeholder.getIp6Address();
697669
} else {
698670
final String startIpv6 = _networkModel.getStartIpv6Address(routerDeploymentDefinition.getGuestNetwork().getId());
699-
if (startIpv6 != null && _ipv6Dao.findByNetworkIdAndIp(routerDeploymentDefinition.getGuestNetwork().getId(), startIpv6) == null) {
671+
if ((startIpv6 != null) && (_ipv6Dao.findByNetworkIdAndIp(routerDeploymentDefinition.getGuestNetwork().getId(), startIpv6) == null)) {
700672
defaultNetworkStartIpv6 = startIpv6;
701673
} else if (s_logger.isDebugEnabled()) {
702674
s_logger.debug("First ipv6 " + startIpv6 + " in network id=" + routerDeploymentDefinition.getGuestNetwork().getId()

server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManager.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@
2323
import com.cloud.network.RemoteAccessVpn;
2424
import com.cloud.network.Site2SiteVpnConnection;
2525
import com.cloud.network.VpcVirtualNetworkApplianceService;
26-
import com.cloud.network.VpnUser;
2726
import com.cloud.network.vpc.PrivateGateway;
28-
import com.cloud.network.vpc.StaticRouteProfile;
2927
import com.cloud.vm.DomainRouterVO;
3028

3129
public interface VpcVirtualNetworkApplianceManager extends VirtualNetworkApplianceManager, VpcVirtualNetworkApplianceService {
@@ -76,13 +74,4 @@ public interface VpcVirtualNetworkApplianceManager extends VirtualNetworkApplian
7674
* @throws ResourceUnavailableException
7775
*/
7876
boolean stopRemoteAccessVpn(RemoteAccessVpn vpn, VirtualRouter router) throws ResourceUnavailableException;
79-
80-
/**
81-
* @param vpn
82-
* @param users
83-
* @param routers
84-
* @return
85-
* @throws ResourceUnavailableException
86-
*/
87-
String[] applyVpnUsers(RemoteAccessVpn vpn, List<? extends VpnUser> users, VirtualRouter router) throws ResourceUnavailableException;
88-
}
77+
}

server/src/com/cloud/network/rules/VpnRules.java renamed to server/src/com/cloud/network/rules/BasicVpnRules.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,11 @@
2626
import com.cloud.network.VpnUser;
2727
import com.cloud.network.router.VirtualRouter;
2828

29-
public class VpnRules extends RuleApplier {
29+
public class BasicVpnRules extends RuleApplier {
3030

3131
private final List<? extends VpnUser> _users;
3232

33-
public VpnRules(final Network network, final List<? extends VpnUser> users) {
33+
public BasicVpnRules(final Network network, final List<? extends VpnUser> users) {
3434
super(network);
3535
_users = users;
3636
}

server/src/com/cloud/network/rules/DhcpEntryRules.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,12 @@ public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter
6262
return visitor.visit(this);
6363
}
6464

65-
public NicProfile getNic() {
66-
return _nic;
65+
public VirtualMachineProfile getProfile() {
66+
return _profile;
67+
}
68+
69+
public DeployDestination getDestination() {
70+
return _destination;
6771
}
6872

6973
public NicVO getNicVo() {

server/src/com/cloud/network/rules/DhcpRules.java renamed to server/src/com/cloud/network/rules/DhcpPvlanRules.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import com.cloud.network.router.VirtualRouter;
2828
import com.cloud.vm.NicProfile;
2929

30-
public class DhcpRules extends RuleApplier {
30+
public class DhcpPvlanRules extends RuleApplier {
3131

3232
private final boolean _isAddPvlan;
3333
private final NicProfile _nic;

server/src/com/cloud/network/rules/LoadBalancingRules.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ public boolean accept(final NetworkTopologyVisitor visitor, final VirtualRouter
5353
// For load balancer we have to resend all lb rules for the network
5454
final List<LoadBalancerVO> lbs = loadBalancerDao.listByNetworkIdAndScheme(_network.getId(), Scheme.Public);
5555

56-
// We are cleaning it before because all the rules have to be sent to
57-
// the router.
56+
// We are cleaning it before because all the rules have to be sent to the router.
5857
_rules.clear();
5958

6059
LoadBalancingRulesManager lbMgr = visitor.getVirtualNetworkApplianceFactory().getLbMgr();

server/src/com/cloud/network/rules/VirtualNetworkApplianceFactory.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818

1919
import javax.inject.Inject;
2020

21+
import org.springframework.beans.factory.annotation.Autowired;
22+
import org.springframework.beans.factory.annotation.Qualifier;
23+
2124
import com.cloud.dc.dao.DataCenterDao;
2225
import com.cloud.dc.dao.HostPodDao;
2326
import com.cloud.dc.dao.VlanDao;
@@ -80,8 +83,11 @@ public class VirtualNetworkApplianceFactory {
8083
private IpAddressManager _ipAddrMgr;
8184
@Inject
8285
private NetworkACLManager _networkACLMgr;
83-
@Inject
86+
87+
@Autowired
88+
@Qualifier("networkHelper")
8489
private NetworkHelper _networkHelper;
90+
8591
@Inject
8692
private NicProfileHelper _nicProfileHelper;
8793

0 commit comments

Comments
 (0)