From 2bf0c7f7ffe0e3acd131a43bbd0a626b3c92a800 Mon Sep 17 00:00:00 2001 From: Salvatore Orlando Date: Wed, 25 Apr 2012 10:53:41 +0100 Subject: [PATCH] CS-14605: OVS cleanup Fix syntax errors in ConfigurationManager and Resource Manager test --- .../DefaultComponentLibrary.java | 14 -- .../com/cloud/network/element/OvsElement.java | 12 -- .../guru/ExternalGuestNetworkGuru.java | 15 +- .../network/guru/OvsGuestNetworkGuru.java | 14 +- .../cloud/network/ovs/OvsTunnelManager.java | 3 +- .../network/ovs/OvsTunnelManagerImpl.java | 200 +++++++++++------- .../agent/manager/ResourceManagerTest.java | 16 -- 7 files changed, 134 insertions(+), 140 deletions(-) diff --git a/server/src/com/cloud/configuration/DefaultComponentLibrary.java b/server/src/com/cloud/configuration/DefaultComponentLibrary.java index 29fa807d8ad..0fb9bca17fb 100755 --- a/server/src/com/cloud/configuration/DefaultComponentLibrary.java +++ b/server/src/com/cloud/configuration/DefaultComponentLibrary.java @@ -103,16 +103,9 @@ import com.cloud.network.firewall.FirewallManagerImpl; import com.cloud.network.lb.ElasticLoadBalancerManagerImpl; import com.cloud.network.lb.LoadBalancingRulesManagerImpl; import com.cloud.network.lb.dao.ElasticLbVmMapDaoImpl; -import com.cloud.network.ovs.OvsNetworkManagerImpl; import com.cloud.network.ovs.OvsTunnelManagerImpl; -import com.cloud.network.ovs.dao.GreTunnelDaoImpl; import com.cloud.network.ovs.dao.OvsTunnelInterfaceDaoImpl; import com.cloud.network.ovs.dao.OvsTunnelNetworkDaoImpl; -import com.cloud.network.ovs.dao.OvsTunnelDaoImpl; -import com.cloud.network.ovs.dao.OvsWorkDaoImpl; -import com.cloud.network.ovs.dao.VlanMappingDaoImpl; -import com.cloud.network.ovs.dao.VlanMappingDirtyDaoImpl; -import com.cloud.network.ovs.dao.VmFlowLogDaoImpl; import com.cloud.network.router.VirtualNetworkApplianceManagerImpl; import com.cloud.network.rules.RulesManagerImpl; import com.cloud.network.rules.dao.PortForwardingRulesDaoImpl; @@ -295,12 +288,6 @@ public class DefaultComponentLibrary extends ComponentLibraryBase implements Com addDao("UsageEventDao", UsageEventDaoImpl.class); addDao("ClusterDetailsDao", ClusterDetailsDaoImpl.class); addDao("UserVmDetailsDao", UserVmDetailsDaoImpl.class); - addDao("VlanMappingDao", VlanMappingDaoImpl.class); - addDao("VlanMappingDirtyDao", VlanMappingDirtyDaoImpl.class); - addDao("OvsWorkDao", OvsWorkDaoImpl.class); - addDao("VmFlowLogDao", VmFlowLogDaoImpl.class); - addDao("GreTunnelDao", GreTunnelDaoImpl.class); - addDao("OvsTunnelDao", OvsTunnelDaoImpl.class); addDao("OvsTunnelInterfaceDao", OvsTunnelInterfaceDaoImpl.class); addDao("OvsTunnelAccountDao", OvsTunnelNetworkDaoImpl.class); addDao("StoragePoolWorkDao", StoragePoolWorkDaoImpl.class); @@ -372,7 +359,6 @@ public class DefaultComponentLibrary extends ComponentLibraryBase implements Com addManager("LoadBalancingRulesManager", LoadBalancingRulesManagerImpl.class); addManager("RulesManager", RulesManagerImpl.class); addManager("RemoteAccessVpnManager", RemoteAccessVpnManagerImpl.class); - addManager("OvsNetworkManager", OvsNetworkManagerImpl.class); addManager("OvsTunnelManager", OvsTunnelManagerImpl.class); addManager("Capacity Manager", CapacityManagerImpl.class); addManager("VirtualMachineManager", ClusteredVirtualMachineManagerImpl.class); diff --git a/server/src/com/cloud/network/element/OvsElement.java b/server/src/com/cloud/network/element/OvsElement.java index 3fa130e793d..9a736671593 100644 --- a/server/src/com/cloud/network/element/OvsElement.java +++ b/server/src/com/cloud/network/element/OvsElement.java @@ -26,9 +26,7 @@ import com.cloud.network.Network.Capability; import com.cloud.network.Network.Provider; import com.cloud.network.Network.Service; import com.cloud.network.Networks; -import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.PhysicalNetworkServiceProvider; -import com.cloud.network.ovs.OvsNetworkManager; import com.cloud.network.ovs.OvsTunnelManager; import com.cloud.offering.NetworkOffering; import com.cloud.utils.component.AdapterBase; @@ -40,8 +38,6 @@ import com.cloud.vm.VirtualMachineProfile; @Local(value = NetworkElement.class) public class OvsElement extends AdapterBase implements NetworkElement { - @Inject - OvsNetworkManager _ovsVlanMgr; @Inject OvsTunnelManager _ovsTunnelMgr; @@ -84,14 +80,6 @@ public class OvsElement extends AdapterBase implements NetworkElement { return true; } - //NOTE (Salvatore Orlando): - //The code for ovs Vlan Manager has not been touched. Only the OVS tunnel - //manager has been restored. Ideally, the code for OVS Vlan Manager should go. - _ovsVlanMgr.VmCheckAndCreateTunnel(vm, dest); - String command = _ovsVlanMgr.applyDefaultFlow(vm.getVirtualMachine(), dest); - if (command != null) { - nic.setBroadcastUri(BroadcastDomainType.Vswitch.toUri(command)); - } _ovsTunnelMgr.VmCheckAndCreateTunnel(vm, network, dest); //_ovsTunnelMgr.applyDefaultFlow(vm.getVirtualMachine(), dest); diff --git a/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java b/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java index 6b2882a7614..6c381f2b18e 100644 --- a/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java +++ b/server/src/com/cloud/network/guru/ExternalGuestNetworkGuru.java @@ -35,7 +35,6 @@ import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.PhysicalNetworkVO; import com.cloud.network.dao.NetworkDao; import com.cloud.network.dao.PhysicalNetworkDao; -import com.cloud.network.ovs.OvsNetworkManager; import com.cloud.network.ovs.OvsTunnelManager; import com.cloud.network.rules.PortForwardingRuleVO; import com.cloud.network.rules.dao.PortForwardingRulesDao; @@ -66,13 +65,11 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru { @Inject PortForwardingRulesDao _pfRulesDao; @Inject - OvsNetworkManager _ovsNetworkMgr; - @Inject OvsTunnelManager _tunnelMgr; @Override public Network design(NetworkOffering offering, DeploymentPlan plan, Network userSpecified, Account owner) { - if (_ovsNetworkMgr.isOvsNetworkEnabled() || _tunnelMgr.isOvsTunnelEnabled()) { + if (_tunnelMgr.isOvsTunnelEnabled()) { return null; } @@ -91,7 +88,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru { public Network implement(Network config, NetworkOffering offering, DeployDestination dest, ReservationContext context) throws InsufficientVirtualNetworkCapcityException { assert (config.getState() == State.Implementing) : "Why are we implementing " + config; - if (_ovsNetworkMgr.isOvsNetworkEnabled() || _tunnelMgr.isOvsTunnelEnabled()) { + if (_tunnelMgr.isOvsTunnelEnabled()) { return null; } @@ -174,7 +171,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru { NicProfile profile = super.allocate(config, nic, vm); - if (_ovsNetworkMgr.isOvsNetworkEnabled() || _tunnelMgr.isOvsTunnelEnabled()) { + if (_tunnelMgr.isOvsTunnelEnabled()) { return null; } @@ -193,7 +190,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru { public void deallocate(Network config, NicProfile nic, VirtualMachineProfile vm) { super.deallocate(config, nic, vm); - if (_ovsNetworkMgr.isOvsNetworkEnabled() || _tunnelMgr.isOvsTunnelEnabled()) { + if (_tunnelMgr.isOvsTunnelEnabled()) { return; } @@ -210,7 +207,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru { public void reserve(NicProfile nic, Network config, VirtualMachineProfile vm, DeployDestination dest, ReservationContext context) throws InsufficientVirtualNetworkCapcityException, InsufficientAddressCapacityException { assert (nic.getReservationStrategy() == ReservationStrategy.Start) : "What can I do for nics that are not allocated at start? "; - if (_ovsNetworkMgr.isOvsNetworkEnabled()) { + if (_tunnelMgr.isOvsTunnelEnabled()) { return; } @@ -244,7 +241,7 @@ public class ExternalGuestNetworkGuru extends GuestNetworkGuru { @Override public boolean release(NicProfile nic, VirtualMachineProfile vm, String reservationId) { - if (_ovsNetworkMgr.isOvsNetworkEnabled() || _tunnelMgr.isOvsTunnelEnabled()) { + if (_tunnelMgr.isOvsTunnelEnabled()) { return true; } diff --git a/server/src/com/cloud/network/guru/OvsGuestNetworkGuru.java b/server/src/com/cloud/network/guru/OvsGuestNetworkGuru.java index a4b55866e94..d031feeb6eb 100644 --- a/server/src/com/cloud/network/guru/OvsGuestNetworkGuru.java +++ b/server/src/com/cloud/network/guru/OvsGuestNetworkGuru.java @@ -27,7 +27,6 @@ import com.cloud.exception.InsufficientVirtualNetworkCapcityException; import com.cloud.network.Network; import com.cloud.network.NetworkManager; import com.cloud.network.NetworkVO; -import com.cloud.network.ovs.OvsNetworkManager; import com.cloud.network.ovs.OvsTunnelManager; import com.cloud.offering.NetworkOffering; import com.cloud.user.Account; @@ -45,14 +44,13 @@ import com.cloud.network.Network.State; public class OvsGuestNetworkGuru extends GuestNetworkGuru { private static final Logger s_logger = Logger.getLogger(OvsGuestNetworkGuru.class); - @Inject OvsNetworkManager _ovsNetworkMgr; @Inject NetworkManager _externalNetworkManager; @Inject OvsTunnelManager _ovsTunnelMgr; @Override public Network design(NetworkOffering offering, DeploymentPlan plan, Network userSpecified, Account owner) { - if (!_ovsNetworkMgr.isOvsNetworkEnabled() && !_ovsTunnelMgr.isOvsTunnelEnabled()) { + if (!_ovsTunnelMgr.isOvsTunnelEnabled()) { return null; } @@ -73,13 +71,7 @@ public class OvsGuestNetworkGuru extends GuestNetworkGuru { if (vnet == null) { throw new InsufficientVirtualNetworkCapcityException("Unable to allocate vnet as a part of network " + network + " implement ", DataCenter.class, dcId); } - String vnetUri = null; - if (_ovsNetworkMgr.isOvsNetworkEnabled()) { - vnetUri = "vlan" + vnet; - } else if (_ovsTunnelMgr.isOvsTunnelEnabled()) { - vnetUri = vnet; - } - implemented.setBroadcastUri(BroadcastDomainType.Vswitch.toUri(vnetUri)); + implemented.setBroadcastUri(BroadcastDomainType.Vswitch.toUri(vnet)); EventUtils.saveEvent(UserContext.current().getCallerUserId(), network.getAccountId(), EventVO.LEVEL_INFO, EventTypes.EVENT_ZONE_VLAN_ASSIGN, "Assigned Zone Vlan: "+vnet+ " Network Id: "+network.getId(), 0); } else { implemented.setBroadcastUri(network.getBroadcastUri()); @@ -89,7 +81,7 @@ public class OvsGuestNetworkGuru extends GuestNetworkGuru { @Override public Network implement(Network config, NetworkOffering offering, DeployDestination dest, ReservationContext context) throws InsufficientVirtualNetworkCapcityException { assert (config.getState() == State.Implementing) : "Why are we implementing " + config; - if (!_ovsNetworkMgr.isOvsNetworkEnabled()&& !_ovsTunnelMgr.isOvsTunnelEnabled()) { + if (!_ovsTunnelMgr.isOvsTunnelEnabled()) { return null; } NetworkVO implemented = (NetworkVO)super.implement(config, offering, dest, context); diff --git a/server/src/com/cloud/network/ovs/OvsTunnelManager.java b/server/src/com/cloud/network/ovs/OvsTunnelManager.java index efba0cf99c8..5b1e1bf511d 100644 --- a/server/src/com/cloud/network/ovs/OvsTunnelManager.java +++ b/server/src/com/cloud/network/ovs/OvsTunnelManager.java @@ -22,7 +22,8 @@ public interface OvsTunnelManager extends Manager { boolean isOvsTunnelEnabled(); - public void VmCheckAndCreateTunnel(VirtualMachineProfile vm, Network nw, DeployDestination dest); + public void VmCheckAndCreateTunnel(VirtualMachineProfile vm, + Network nw, DeployDestination dest); public void CheckAndDestroyTunnel(VirtualMachine vm, Network nw); diff --git a/server/src/com/cloud/network/ovs/OvsTunnelManagerImpl.java b/server/src/com/cloud/network/ovs/OvsTunnelManagerImpl.java index b8a8ff6ab1e..739cb0a1a4b 100644 --- a/server/src/com/cloud/network/ovs/OvsTunnelManagerImpl.java +++ b/server/src/com/cloud/network/ovs/OvsTunnelManagerImpl.java @@ -39,9 +39,7 @@ import com.cloud.host.dao.HostDao; import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.network.Network; import com.cloud.network.Networks.TrafficType; -import com.cloud.network.PhysicalNetwork; import com.cloud.network.PhysicalNetworkTrafficType; -import com.cloud.network.dao.PhysicalNetworkDao; import com.cloud.network.dao.PhysicalNetworkTrafficTypeDao; import com.cloud.network.ovs.dao.OvsTunnelInterfaceDao; import com.cloud.network.ovs.dao.OvsTunnelInterfaceVO; @@ -63,7 +61,8 @@ import com.cloud.vm.dao.UserVmDao; @Local(value={OvsTunnelManager.class}) public class OvsTunnelManagerImpl implements OvsTunnelManager { - public static final Logger s_logger = Logger.getLogger(OvsTunnelManagerImpl.class.getName()); + public static final Logger s_logger = + Logger.getLogger(OvsTunnelManagerImpl.class.getName()); String _name; boolean _isEnabled; @@ -95,12 +94,13 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { } @DB - protected OvsTunnelNetworkVO createTunnelRecord(long from, long to, long networkId, int key) { + protected OvsTunnelNetworkVO createTunnelRecord(long from, long to, + long networkId, int key) { OvsTunnelNetworkVO ta = null; - try { ta = new OvsTunnelNetworkVO(from, to, key, networkId); - OvsTunnelNetworkVO lock = _tunnelNetworkDao.acquireInLockTable(Long.valueOf(1)); + OvsTunnelNetworkVO lock = + _tunnelNetworkDao.acquireInLockTable(Long.valueOf(1)); if (lock == null) { s_logger.warn("Cannot lock table ovs_tunnel_account"); return null; @@ -108,20 +108,21 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { _tunnelNetworkDao.persist(ta); _tunnelNetworkDao.releaseFromLockTable(lock.getId()); } catch (EntityExistsException e) { - s_logger.debug("A record for the tunnel from " + from + " to " + to + " already exists"); + s_logger.debug("A record for the tunnel from " + from + + " to " + to + " already exists"); } - return ta; } @DB - protected OvsTunnelInterfaceVO createInterfaceRecord(String ip, String netmask, String mac, - long hostId, String label) { + protected OvsTunnelInterfaceVO createInterfaceRecord(String ip, + String netmask,String mac,long hostId, String label) { OvsTunnelInterfaceVO ti = null; try { ti = new OvsTunnelInterfaceVO(ip, netmask, mac, hostId, label); //TODO: Is locking really necessary here? - OvsTunnelInterfaceVO lock = _tunnelInterfaceDao.acquireInLockTable(Long.valueOf(1)); + OvsTunnelInterfaceVO lock = + _tunnelInterfaceDao.acquireInLockTable(Long.valueOf(1)); if (lock == null) { s_logger.warn("Cannot lock table ovs_tunnel_account"); return null; @@ -135,49 +136,54 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { return ti; } - private String handleFetchInterfaceAnswer(Answer[] answers, Long hostId){ OvsFetchInterfaceAnswer ans = (OvsFetchInterfaceAnswer) answers[0]; - OvsTunnelInterfaceVO ti = createInterfaceRecord(ans.getIp(), ans.getNetmask(), ans.getMac(), - hostId, ans.getLabel()); - s_logger.debug("### Interface added to DB - id:" + ti.getId()); + OvsTunnelInterfaceVO ti = + createInterfaceRecord(ans.getIp(), ans.getNetmask(), + ans.getMac(), hostId, ans.getLabel()); return ti.getIp(); } private void handleCreateTunnelAnswer(Answer[] answers){ OvsCreateTunnelAnswer r = (OvsCreateTunnelAnswer) answers[0]; String s = String.format( - "(hostIP:%1$s, remoteIP:%2$s, bridge:%3$s, greKey:%4$s, portName:%5$s)", - r.getFromIp(), r.getToIp(), r.getBridge(), r.getKey(), r.getInPortName()); + "(hostIP:%1$s, remoteIP:%2$s, bridge:%3$s," + + "greKey:%4$s, portName:%5$s)", + r.getFromIp(), r.getToIp(), r.getBridge(), + r.getKey(), r.getInPortName()); Long from = r.getFrom(); Long to = r.getTo(); long networkId = r.getNetworkId(); OvsTunnelNetworkVO tunnel = _tunnelNetworkDao.getByFromToNetwork(from, to, networkId); if (tunnel == null) { - throw new CloudRuntimeException(String.format("Unable find tunnelNetwork record(from=%1$s, to=%2$s, account=%3$s", from, to, networkId)); + throw new CloudRuntimeException( + String.format("Unable find tunnelNetwork record" + + "(from=%1$s,to=%2$s, account=%3$s", + from, to, networkId)); } - s_logger.debug("Result:" + r.getResult()); if (!r.getResult()) { tunnel.setState("FAILED"); - s_logger.warn("Create GRE tunnel failed due to " + r.getDetails() + s); + s_logger.warn("Create GRE tunnel failed due to " + + r.getDetails() + s); } else { tunnel.setState("SUCCESS"); tunnel.setPortName(r.getInPortName()); - s_logger.warn("Create GRE tunnel " + r.getDetails() + s); + s_logger.warn("Create GRE tunnel " + + r.getDetails() + s); } _tunnelNetworkDao.update(tunnel.getId(), tunnel); } - - private String getGreEndpointIP(Host host, Network nw) throws AgentUnavailableException, OperationTimedoutException { + private String getGreEndpointIP(Host host, Network nw) throws + AgentUnavailableException, OperationTimedoutException { String endpointIp = null; // Fetch physical network and associated tags // If no tag specified, look for this network - // TODO: Should we Make this a configuration option? + // Default name for network label String physNetLabel = "cloud-public"; Long physNetId = nw.getPhysicalNetworkId(); - PhysicalNetworkTrafficType physNetTT = _physNetTTDao.findBy(physNetId, TrafficType.Guest); - s_logger.debug("### Physical network:" + physNetId + " - traffic type:" + physNetTT.getUuid()); + PhysicalNetworkTrafficType physNetTT = + _physNetTTDao.findBy(physNetId, TrafficType.Guest); HypervisorType hvType = host.getHypervisorType(); switch (hvType) { @@ -188,27 +194,34 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { } break; default: - throw new CloudRuntimeException("Hypervisor " + hvType.toString() + " unsupported by OVS Tunnel Manager"); + throw new CloudRuntimeException("Hypervisor " + + hvType.toString() + + " unsupported by OVS Tunnel Manager"); } // Try to fetch GRE endpoint IP address for cloud db // If not found, then find it on the hypervisor - OvsTunnelInterfaceVO tunnelIface = _tunnelInterfaceDao.getByHostAndLabel(host.getId(), physNetLabel); + OvsTunnelInterfaceVO tunnelIface = + _tunnelInterfaceDao.getByHostAndLabel(host.getId(), + physNetLabel); if (tunnelIface == null) { - //Now find and fetch configuration for physical interface for network with label on target host - Commands fetchIfaceCmds = new Commands(new OvsFetchInterfaceCommand(physNetLabel)); - s_logger.debug("Ask host " + host.getId() + " to retrieve interface for phy net with label:" + physNetLabel); - Answer[] fetchIfaceAnswers = _agentMgr.send(host.getId(), fetchIfaceCmds); - + //Now find and fetch configuration for physical interface + //for network with label on target host + Commands fetchIfaceCmds = + new Commands(new OvsFetchInterfaceCommand(physNetLabel)); + s_logger.debug("Ask host " + host.getId() + + " to retrieve interface for phy net with label:" + + physNetLabel); + Answer[] fetchIfaceAnswers = _agentMgr.send(host.getId(), + fetchIfaceCmds); //And finally save it for future use - endpointIp = handleFetchInterfaceAnswer(fetchIfaceAnswers, host.getId()); + endpointIp = handleFetchInterfaceAnswer(fetchIfaceAnswers, + host.getId()); } else { endpointIp = tunnelIface.getIp(); } - s_logger.debug("### Ladies and gents, the endpoint for host " + host.getId() + " is " + endpointIp); return endpointIp; } - private int getGreKey(Network network) { int key = 0; @@ -223,13 +236,15 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { s_logger.debug("Well well, how did '" + key + "' end up in the broadcast URI for the network?"); throw new CloudRuntimeException( - String.format("Invalid GRE key parsed from network broadcast URI (%s)", + String.format("Invalid GRE key parsed from" + + "network broadcast URI (%s)", network.getBroadcastUri().toString())); } } @DB - protected void CheckAndCreateTunnel(VirtualMachine instance, Network nw, DeployDestination dest) { + protected void CheckAndCreateTunnel(VirtualMachine instance, + Network nw, DeployDestination dest) { if (!_isEnabled) { return; } @@ -237,15 +252,17 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { s_logger.debug("Creating tunnels with OVS tunnel manager"); if (instance.getType() != VirtualMachine.Type.User && instance.getType() != VirtualMachine.Type.DomainRouter) { - s_logger.debug("Will not work if you're not an instance or a virtual router"); + s_logger.debug("Will not work if you're not" + + "an instance or a virtual router"); return; } long hostId = dest.getHost().getId(); int key = getGreKey(nw); - // Find active (i.e.: not shut off) VMs with a NIC on the target network - List vms = _userVmDao.listByNetworkIdAndStates(nw.getId(), State.Running, State.Starting, - State.Stopping, State.Unknown, State.Migrating); + // Find active VMs with a NIC on the target network + List vms = _userVmDao.listByNetworkIdAndStates(nw.getId(), + State.Running, State.Starting, + State.Stopping, State.Unknown, State.Migrating); // Find routers for the network List routers = _routerDao.findByNetwork(nw.getId()); Listins = new ArrayList(); @@ -262,24 +279,31 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { if (rh == null || rh.longValue() == hostId) { continue; } - OvsTunnelNetworkVO ta = _tunnelNetworkDao.getByFromToNetwork(hostId, rh.longValue(), nw.getId()); + OvsTunnelNetworkVO ta = + _tunnelNetworkDao.getByFromToNetwork(hostId, + rh.longValue(), nw.getId()); // Try and create the tunnel even if a previous attempt failed if (ta == null || ta.getState().equals("FAILED")) { - s_logger.debug("Attempting to create tunnel from:" + hostId + " to:" + rh.longValue()); + s_logger.debug("Attempting to create tunnel from:" + + hostId + " to:" + rh.longValue()); if (ta == null) { - this.createTunnelRecord(hostId, rh.longValue(), nw.getId(), key); + this.createTunnelRecord(hostId, rh.longValue(), + nw.getId(), key); } if (!toHostIds.contains(rh)) { toHostIds.add(rh); } } - ta = _tunnelNetworkDao.getByFromToNetwork(rh.longValue(), hostId, nw.getId()); + ta = _tunnelNetworkDao.getByFromToNetwork(rh.longValue(), + hostId, nw.getId()); // Try and create the tunnel even if a previous attempt failed if (ta == null || ta.getState().equals("FAILED")) { - s_logger.debug("Attempting to create tunnel from:" + rh.longValue() + " to:" + hostId); + s_logger.debug("Attempting to create tunnel from:" + + rh.longValue() + " to:" + hostId); if (ta == null) { - this.createTunnelRecord(rh.longValue(), hostId, nw.getId(), key); + this.createTunnelRecord(rh.longValue(), hostId, + nw.getId(), key); } if (!fromHostIds.contains(rh)) { fromHostIds.add(rh); @@ -295,8 +319,9 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { String otherIp = getGreEndpointIP(rHost, nw); Commands cmds = new Commands( new OvsCreateTunnelCommand(otherIp, key, - Long.valueOf(hostId), i, nw.getId(), myIp)); - s_logger.debug("Ask host " + hostId + " to create gre tunnel to " + i); + Long.valueOf(hostId), i, nw.getId(), myIp)); + s_logger.debug("Ask host " + hostId + + " to create gre tunnel to " + i); Answer[] answers = _agentMgr.send(hostId, cmds); handleCreateTunnelAnswer(answers); noHost = false; @@ -306,9 +331,11 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { HostVO rHost = _hostDao.findById(i); String otherIp = getGreEndpointIP(rHost, nw); Commands cmds = new Commands( - new OvsCreateTunnelCommand(myIp, key, i, Long.valueOf(hostId), + new OvsCreateTunnelCommand(myIp, key, i, + Long.valueOf(hostId), nw.getId(), otherIp)); - s_logger.debug("Ask host " + i + " to create gre tunnel to " + hostId); + s_logger.debug("Ask host " + i + + " to create gre tunnel to " + hostId); Answer[] answers = _agentMgr.send(i, cmds); handleCreateTunnelAnswer(answers); noHost = false; @@ -318,7 +345,8 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { if (noHost) { Commands cmds = new Commands( new OvsSetupBridgeCommand(key, hostId, nw.getId())); - s_logger.debug("Ask host " + hostId + " to configure bridge for network:" + nw.getId()); + s_logger.debug("Ask host " + hostId + + " to configure bridge for network:" + nw.getId()); Answer[] answers = _agentMgr.send(hostId, cmds); handleSetupBridgeAnswer(answers); } @@ -348,49 +376,59 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { } @Override - public void VmCheckAndCreateTunnel(VirtualMachineProfile vm, Network nw, DeployDestination dest) { + public void VmCheckAndCreateTunnel( + VirtualMachineProfile vm, + Network nw, DeployDestination dest) { CheckAndCreateTunnel(vm.getVirtualMachine(), nw, dest); } @DB - private void handleDestroyTunnelAnswer(Answer ans, long from, long to, long network_id) { - + private void handleDestroyTunnelAnswer(Answer ans, long from, + long to, long network_id) { if (ans.getResult()) { OvsTunnelNetworkVO lock = _tunnelNetworkDao.acquireInLockTable(Long.valueOf(1)); if (lock == null) { - s_logger.warn(String.format("failed to lock ovs_tunnel_account, remove record of " + - "tunnel(from=%1$s, to=%2$s account=%3$s) failed", - from, to, network_id)); + s_logger.warn(String.format("failed to lock" + + "ovs_tunnel_account, remove record of " + + "tunnel(from=%1$s, to=%2$s account=%3$s) failed", + from, to, network_id)); return; } _tunnelNetworkDao.removeByFromToNetwork(from, to, network_id); _tunnelNetworkDao.releaseFromLockTable(lock.getId()); - s_logger.debug(String.format("Destroy tunnel(account:%1$s, from:%2$s, to:%3$s) successful", - network_id, from, to)); + s_logger.debug(String.format("Destroy tunnel(account:%1$s," + + "from:%2$s, to:%3$s) successful", + network_id, from, to)); } else { - s_logger.debug(String.format("Destroy tunnel(account:%1$s, from:%2$s, to:%3$s) failed", - network_id, from, to)); + s_logger.debug(String.format("Destroy tunnel(account:%1$s," + + "from:%2$s, to:%3$s) failed", + network_id, from, to)); } } @DB - private void handleDestroyBridgeAnswer(Answer ans, long host_id, long network_id) { + private void handleDestroyBridgeAnswer(Answer ans, + long host_id, long network_id) { if (ans.getResult()) { - OvsTunnelNetworkVO lock = _tunnelNetworkDao.acquireInLockTable(Long.valueOf(1)); + OvsTunnelNetworkVO lock = + _tunnelNetworkDao.acquireInLockTable(Long.valueOf(1)); if (lock == null) { - s_logger.warn("failed to lock ovs_tunnel_network, remove record"); + s_logger.warn("failed to lock ovs_tunnel_network," + + "remove record"); return; } _tunnelNetworkDao.removeByFromNetwork(host_id, network_id); _tunnelNetworkDao.releaseFromLockTable(lock.getId()); - s_logger.debug(String.format("Destroy bridge for network %1$s successful", network_id)); + s_logger.debug(String.format("Destroy bridge for" + + "network %1$s successful", network_id)); } else { - s_logger.debug(String.format("Destroy bridge for network %1$s failed", network_id)); + s_logger.debug(String.format("Destroy bridge for" + + "network %1$s failed", network_id)); } } @@ -405,19 +443,22 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { return; } - List userVms = _userVmDao.listByAccountIdAndHostId(vm.getAccountId(), vm.getHostId()); + List userVms = _userVmDao.listByAccountIdAndHostId( + vm.getAccountId(), vm.getHostId()); if (vm.getType() == VirtualMachine.Type.User) { if (userVms.size() > 1) { return; } - List routers = _routerDao.findByNetwork(nw.getId()); + List routers = + _routerDao.findByNetwork(nw.getId()); for (DomainRouterVO router : routers) { if (router.getHostId() == vm.getHostId()) { return; } } - } else if (vm.getType() == VirtualMachine.Type.DomainRouter && userVms.size() != 0) { + } else if (vm.getType() == VirtualMachine.Type.DomainRouter && + userVms.size() != 0) { return; } try { @@ -425,26 +466,31 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager { * the tunnels for this network */ int key = getGreKey(nw); Command cmd = new OvsDestroyBridgeCommand(nw.getId(), key); - s_logger.debug("Destroying bridge for network " + nw.getId() + " on host:" + vm.getHostId()); + s_logger.debug("Destroying bridge for network " + nw.getId() + + " on host:" + vm.getHostId()); Answer ans = _agentMgr.send(vm.getHostId(), cmd); handleDestroyBridgeAnswer(ans, vm.getHostId(), nw.getId()); /* Then ask hosts have peer tunnel with me to destroy them */ - List peers = _tunnelNetworkDao.listByToNetwork(vm.getHostId(), nw.getId()); + List peers = + _tunnelNetworkDao.listByToNetwork(vm.getHostId(), + nw.getId()); for (OvsTunnelNetworkVO p : peers) { // If the tunnel was not successfully created don't bother to remove it if (p.getState().equals("SUCCESS")) { - cmd = new OvsDestroyTunnelCommand(p.getNetworkId(), key, p.getPortName()); + cmd = new OvsDestroyTunnelCommand(p.getNetworkId(), key, + p.getPortName()); s_logger.debug("Destroying tunnel to " + vm.getHostId() + " from " + p.getFrom()); ans = _agentMgr.send(p.getFrom(), cmd); - handleDestroyTunnelAnswer(ans, p.getFrom(), p.getTo(), p.getNetworkId()); + handleDestroyTunnelAnswer(ans, p.getFrom(), + p.getTo(), p.getNetworkId()); } } } catch (Exception e) { - s_logger.warn(String.format("Destroy tunnel(account:%1$s, hostId:%2$s) failed", vm.getAccountId(), vm.getHostId()), e); + s_logger.warn(String.format("Destroy tunnel(account:%1$s," + + "hostId:%2$s) failed", vm.getAccountId(), vm.getHostId()), e); } - } } diff --git a/server/test/com/cloud/agent/manager/ResourceManagerTest.java b/server/test/com/cloud/agent/manager/ResourceManagerTest.java index 254f79a5406..2e253414404 100755 --- a/server/test/com/cloud/agent/manager/ResourceManagerTest.java +++ b/server/test/com/cloud/agent/manager/ResourceManagerTest.java @@ -87,15 +87,7 @@ import com.cloud.network.firewall.FirewallManagerImpl; import com.cloud.network.lb.ElasticLoadBalancerManagerImpl; import com.cloud.network.lb.LoadBalancingRulesManagerImpl; import com.cloud.network.lb.dao.ElasticLbVmMapDaoImpl; -import com.cloud.network.ovs.OvsNetworkManagerImpl; import com.cloud.network.ovs.OvsTunnelManagerImpl; -import com.cloud.network.ovs.dao.GreTunnelDaoImpl; -import com.cloud.network.ovs.dao.OvsTunnelAccountDaoImpl; -import com.cloud.network.ovs.dao.OvsTunnelDaoImpl; -import com.cloud.network.ovs.dao.OvsWorkDaoImpl; -import com.cloud.network.ovs.dao.VlanMappingDaoImpl; -import com.cloud.network.ovs.dao.VlanMappingDirtyDaoImpl; -import com.cloud.network.ovs.dao.VmFlowLogDaoImpl; import com.cloud.network.router.VirtualNetworkApplianceManagerImpl; import com.cloud.network.rules.RulesManagerImpl; import com.cloud.network.rules.dao.PortForwardingRulesDaoImpl; @@ -262,13 +254,6 @@ public class ResourceManagerTest extends TestCase { _locator.addDao("UsageEventDao", UsageEventDaoImpl.class); _locator.addDao("ClusterDetailsDao", ClusterDetailsDaoImpl.class); _locator.addDao("UserVmDetailsDao", UserVmDetailsDaoImpl.class); - _locator.addDao("VlanMappingDao", VlanMappingDaoImpl.class); - _locator.addDao("VlanMappingDirtyDao", VlanMappingDirtyDaoImpl.class); - _locator.addDao("OvsWorkDao", OvsWorkDaoImpl.class); - _locator.addDao("VmFlowLogDao", VmFlowLogDaoImpl.class); - _locator.addDao("GreTunnelDao", GreTunnelDaoImpl.class); - _locator.addDao("OvsTunnelDao", OvsTunnelDaoImpl.class); - _locator.addDao("OvsTunnelAccountDao", OvsTunnelAccountDaoImpl.class); _locator.addDao("StoragePoolWorkDao", StoragePoolWorkDaoImpl.class); _locator.addDao("HostTagsDao", HostTagsDaoImpl.class); _locator.addDao("NetworkDomainDao", NetworkDomainDaoImpl.class); @@ -311,7 +296,6 @@ public class ResourceManagerTest extends TestCase { _locator.addManager("LoadBalancingRulesManager", LoadBalancingRulesManagerImpl.class); _locator.addManager("RulesManager", RulesManagerImpl.class); _locator.addManager("RemoteAccessVpnManager", RemoteAccessVpnManagerImpl.class); - _locator.addManager("OvsNetworkManager", OvsNetworkManagerImpl.class); _locator.addManager("OvsTunnelManager", OvsTunnelManagerImpl.class); _locator.addManager("Capacity Manager", CapacityManagerImpl.class); _locator.addManager("Cluster Manager", ClusterManagerImpl.class);