mirror of https://github.com/apache/cloudstack.git
CS-14605: OVS cleanup
Fix syntax errors in ConfigurationManager and Resource Manager test Conflicts: server/src/com/cloud/network/ovs/OvsTunnelManagerImpl.java server/test/com/cloud/agent/manager/ResourceManagerTest.java
This commit is contained in:
parent
33a2b17972
commit
88131e5db6
|
|
@ -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;
|
||||
|
|
@ -293,12 +286,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);
|
||||
|
|
@ -370,7 +357,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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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<? extends VirtualMachine> 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<? extends VirtualMachine> 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<? extends VirtualMachine> vm, String reservationId) {
|
||||
if (_ovsNetworkMgr.isOvsNetworkEnabled() || _tunnelMgr.isOvsTunnelEnabled()) {
|
||||
if (_tunnelMgr.isOvsTunnelEnabled()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -22,7 +22,8 @@ public interface OvsTunnelManager extends Manager {
|
|||
|
||||
boolean isOvsTunnelEnabled();
|
||||
|
||||
public void VmCheckAndCreateTunnel(VirtualMachineProfile<? extends VirtualMachine> vm, Network nw, DeployDestination dest);
|
||||
public void VmCheckAndCreateTunnel(VirtualMachineProfile<? extends VirtualMachine> vm,
|
||||
Network nw, DeployDestination dest);
|
||||
|
||||
public void CheckAndDestroyTunnel(VirtualMachine vm, Network nw);
|
||||
|
||||
|
|
|
|||
|
|
@ -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,16 +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 {
|
||||
// Use the network id as a Key
|
||||
// FIXME: networkid is long, key must be integer
|
||||
// This is a horrible cast, and it must be removed and replace with something better
|
||||
// before committing into master
|
||||
ta = new OvsTunnelNetworkVO(from, to, (int)networkId, networkId);
|
||||
OvsTunnelNetworkVO lock = _tunnelNetworkDao.acquireInLockTable(Long.valueOf(1));
|
||||
ta = new OvsTunnelNetworkVO(from, to, key, networkId);
|
||||
OvsTunnelNetworkVO lock =
|
||||
_tunnelNetworkDao.acquireInLockTable(Long.valueOf(1));
|
||||
if (lock == null) {
|
||||
s_logger.warn("Cannot lock table ovs_tunnel_account");
|
||||
return null;
|
||||
|
|
@ -112,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;
|
||||
|
|
@ -139,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 ta = _tunnelNetworkDao.getByFromToNetwork(from, to, networkId);
|
||||
if (ta == null) {
|
||||
throw new CloudRuntimeException(String.format("Unable find tunnelAccount record(from=%1$s, to=%2$s, account=%3$s", from, to, networkId));
|
||||
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));
|
||||
}
|
||||
s_logger.debug("Result:" + r.getResult());
|
||||
if (!r.getResult()) {
|
||||
ta.setState("FAILED");
|
||||
s_logger.warn("Create GRE tunnel failed due to " + r.getDetails() + s);
|
||||
tunnel.setState("FAILED");
|
||||
s_logger.warn("Create GRE tunnel failed due to " +
|
||||
r.getDetails() + s);
|
||||
} else {
|
||||
ta.setState("SUCCESS");
|
||||
ta.setPortName(r.getInPortName());
|
||||
s_logger.warn("Create GRE tunnel " + r.getDetails() + s);
|
||||
tunnel.setState("SUCCESS");
|
||||
tunnel.setPortName(r.getInPortName());
|
||||
s_logger.warn("Create GRE tunnel " +
|
||||
r.getDetails() + s);
|
||||
}
|
||||
_tunnelNetworkDao.update(ta.getId(), ta);
|
||||
_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) {
|
||||
|
|
@ -192,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;
|
||||
|
|
@ -227,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;
|
||||
}
|
||||
|
|
@ -241,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<UserVmVO> 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<UserVmVO> vms = _userVmDao.listByNetworkIdAndStates(nw.getId(),
|
||||
State.Running, State.Starting,
|
||||
State.Stopping, State.Unknown, State.Migrating);
|
||||
// Find routers for the network
|
||||
List<DomainRouterVO> routers = _routerDao.findByNetwork(nw.getId());
|
||||
List<VMInstanceVO>ins = new ArrayList<VMInstanceVO>();
|
||||
|
|
@ -269,25 +282,31 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager {
|
|||
if (rh == null || rh.longValue() == hostId) {
|
||||
continue;
|
||||
}
|
||||
//FIXME: Still using 'TunnelAccount name' - but should actually be tunnelNetwork or something like that
|
||||
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);
|
||||
|
|
@ -303,8 +322,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;
|
||||
|
|
@ -314,9 +334,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),
|
||||
nw.getId(), otherIp));
|
||||
s_logger.debug("Ask host " + i + " to create gre tunnel to " + hostId);
|
||||
new OvsCreateTunnelCommand(myIp, key, i,
|
||||
Long.valueOf(hostId),
|
||||
nw.getId(), otherIp));
|
||||
s_logger.debug("Ask host " + i +
|
||||
" to create gre tunnel to " + hostId);
|
||||
Answer[] answers = _agentMgr.send(i, cmds);
|
||||
handleCreateTunnelAnswer(answers);
|
||||
noHost = false;
|
||||
|
|
@ -326,7 +348,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);
|
||||
}
|
||||
|
|
@ -356,49 +379,59 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void VmCheckAndCreateTunnel(VirtualMachineProfile<? extends VirtualMachine> vm, Network nw, DeployDestination dest) {
|
||||
public void VmCheckAndCreateTunnel(
|
||||
VirtualMachineProfile<? extends VirtualMachine> 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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -413,19 +446,22 @@ public class OvsTunnelManagerImpl implements OvsTunnelManager {
|
|||
return;
|
||||
}
|
||||
|
||||
List<UserVmVO> userVms = _userVmDao.listByAccountIdAndHostId(vm.getAccountId(), vm.getHostId());
|
||||
List<UserVmVO> userVms = _userVmDao.listByAccountIdAndHostId(
|
||||
vm.getAccountId(), vm.getHostId());
|
||||
if (vm.getType() == VirtualMachine.Type.User) {
|
||||
if (userVms.size() > 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<DomainRouterVO> routers = _routerDao.findByNetwork(nw.getId());
|
||||
List<DomainRouterVO> 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 {
|
||||
|
|
@ -433,26 +469,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<OvsTunnelNetworkVO> peers = _tunnelNetworkDao.listByToNetwork(vm.getHostId(), nw.getId());
|
||||
List<OvsTunnelNetworkVO> 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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,367 +10,351 @@
|
|||
// limitations under the License.
|
||||
//
|
||||
// Automatically generated by addcopyright.py at 04/03/2012
|
||||
package com.cloud.agent.manager;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
|
||||
import com.cloud.alert.AlertManagerImpl;
|
||||
import com.cloud.alert.dao.AlertDaoImpl;
|
||||
import com.cloud.api.BaseCmd;
|
||||
import com.cloud.api.commands.CreatePodCmd;
|
||||
import com.cloud.api.commands.CreateZoneCmd;
|
||||
import com.cloud.async.AsyncJobExecutorContextImpl;
|
||||
import com.cloud.async.AsyncJobManagerImpl;
|
||||
import com.cloud.async.SyncQueueManagerImpl;
|
||||
import com.cloud.async.dao.AsyncJobDaoImpl;
|
||||
import com.cloud.async.dao.SyncQueueDaoImpl;
|
||||
import com.cloud.async.dao.SyncQueueItemDaoImpl;
|
||||
import com.cloud.capacity.CapacityManagerImpl;
|
||||
import com.cloud.capacity.dao.CapacityDaoImpl;
|
||||
import com.cloud.certificate.dao.CertificateDaoImpl;
|
||||
import com.cloud.cluster.CheckPointManagerImpl;
|
||||
import com.cloud.cluster.ClusterFenceManagerImpl;
|
||||
import com.cloud.cluster.ClusterManagerImpl;
|
||||
import com.cloud.cluster.agentlb.dao.HostTransferMapDaoImpl;
|
||||
import com.cloud.cluster.dao.ManagementServerHostDaoImpl;
|
||||
import com.cloud.cluster.dao.StackMaidDaoImpl;
|
||||
import com.cloud.configuration.ConfigurationManagerImpl;
|
||||
import com.cloud.configuration.ConfigurationService;
|
||||
import com.cloud.configuration.dao.ConfigurationDaoImpl;
|
||||
import com.cloud.configuration.dao.ResourceCountDaoImpl;
|
||||
import com.cloud.configuration.dao.ResourceLimitDaoImpl;
|
||||
import com.cloud.consoleproxy.ConsoleProxyManagerImpl;
|
||||
import com.cloud.dao.EntityManagerImpl;
|
||||
import com.cloud.dc.ClusterDetailsDaoImpl;
|
||||
import com.cloud.dc.dao.AccountVlanMapDaoImpl;
|
||||
import com.cloud.dc.dao.ClusterDaoImpl;
|
||||
import com.cloud.dc.dao.DataCenterDaoImpl;
|
||||
import com.cloud.dc.dao.DataCenterIpAddressDaoImpl;
|
||||
import com.cloud.dc.dao.DcDetailsDaoImpl;
|
||||
import com.cloud.dc.dao.HostPodDaoImpl;
|
||||
import com.cloud.dc.dao.PodVlanMapDaoImpl;
|
||||
import com.cloud.dc.dao.VlanDaoImpl;
|
||||
import com.cloud.domain.dao.DomainDaoImpl;
|
||||
import com.cloud.event.dao.EventDaoImpl;
|
||||
import com.cloud.event.dao.UsageEventDaoImpl;
|
||||
import com.cloud.ha.HighAvailabilityManagerImpl;
|
||||
import com.cloud.ha.dao.HighAvailabilityDaoImpl;
|
||||
import com.cloud.host.dao.HostDaoImpl;
|
||||
import com.cloud.host.dao.HostDetailsDaoImpl;
|
||||
import com.cloud.host.dao.HostTagsDaoImpl;
|
||||
import com.cloud.hypervisor.HypervisorGuruManagerImpl;
|
||||
import com.cloud.hypervisor.dao.HypervisorCapabilitiesDaoImpl;
|
||||
import com.cloud.keystore.KeystoreDaoImpl;
|
||||
import com.cloud.keystore.KeystoreManagerImpl;
|
||||
import com.cloud.maint.UpgradeManagerImpl;
|
||||
import com.cloud.maint.dao.AgentUpgradeDaoImpl;
|
||||
import com.cloud.network.NetworkManagerImpl;
|
||||
import com.cloud.network.dao.FirewallRulesCidrsDaoImpl;
|
||||
import com.cloud.network.dao.FirewallRulesDaoImpl;
|
||||
import com.cloud.network.dao.IPAddressDaoImpl;
|
||||
import com.cloud.network.dao.InlineLoadBalancerNicMapDaoImpl;
|
||||
import com.cloud.network.dao.LoadBalancerDaoImpl;
|
||||
import com.cloud.network.dao.LoadBalancerVMMapDaoImpl;
|
||||
import com.cloud.network.dao.NetworkDaoImpl;
|
||||
import com.cloud.network.dao.NetworkDomainDaoImpl;
|
||||
import com.cloud.network.dao.NetworkRuleConfigDaoImpl;
|
||||
import com.cloud.network.dao.RemoteAccessVpnDaoImpl;
|
||||
import com.cloud.network.dao.VpnUserDaoImpl;
|
||||
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;
|
||||
import com.cloud.network.security.SecurityGroupManagerImpl2;
|
||||
import com.cloud.network.security.dao.SecurityGroupDaoImpl;
|
||||
import com.cloud.network.security.dao.SecurityGroupRulesDaoImpl;
|
||||
import com.cloud.network.security.dao.SecurityGroupVMMapDaoImpl;
|
||||
import com.cloud.network.security.dao.SecurityGroupWorkDaoImpl;
|
||||
import com.cloud.network.security.dao.VmRulesetLogDaoImpl;
|
||||
import com.cloud.network.vpn.RemoteAccessVpnManagerImpl;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDaoImpl;
|
||||
import com.cloud.projects.ProjectManagerImpl;
|
||||
import com.cloud.projects.dao.ProjectAccountDaoImpl;
|
||||
import com.cloud.projects.dao.ProjectDaoImpl;
|
||||
import com.cloud.resource.ResourceManagerImpl;
|
||||
import com.cloud.resourcelimit.ResourceLimitManagerImpl;
|
||||
import com.cloud.service.dao.ServiceOfferingDaoImpl;
|
||||
import com.cloud.storage.OCFS2ManagerImpl;
|
||||
import com.cloud.storage.StorageManagerImpl;
|
||||
import com.cloud.storage.dao.DiskOfferingDaoImpl;
|
||||
import com.cloud.storage.dao.GuestOSCategoryDaoImpl;
|
||||
import com.cloud.storage.dao.GuestOSDaoImpl;
|
||||
import com.cloud.storage.dao.LaunchPermissionDaoImpl;
|
||||
import com.cloud.storage.dao.SnapshotDaoImpl;
|
||||
import com.cloud.storage.dao.SnapshotPolicyDaoImpl;
|
||||
import com.cloud.storage.dao.SnapshotScheduleDaoImpl;
|
||||
import com.cloud.storage.dao.StoragePoolDaoImpl;
|
||||
import com.cloud.storage.dao.StoragePoolHostDaoImpl;
|
||||
import com.cloud.storage.dao.StoragePoolWorkDaoImpl;
|
||||
import com.cloud.storage.dao.SwiftDaoImpl;
|
||||
import com.cloud.storage.dao.UploadDaoImpl;
|
||||
import com.cloud.storage.dao.VMTemplateDaoImpl;
|
||||
import com.cloud.storage.dao.VMTemplateHostDaoImpl;
|
||||
import com.cloud.storage.dao.VMTemplatePoolDaoImpl;
|
||||
import com.cloud.storage.dao.VMTemplateZoneDaoImpl;
|
||||
import com.cloud.storage.dao.VolumeDaoImpl;
|
||||
import com.cloud.storage.download.DownloadMonitorImpl;
|
||||
import com.cloud.storage.secondary.SecondaryStorageManagerImpl;
|
||||
import com.cloud.storage.snapshot.SnapshotManagerImpl;
|
||||
import com.cloud.storage.snapshot.SnapshotSchedulerImpl;
|
||||
import com.cloud.storage.upload.UploadMonitorImpl;
|
||||
import com.cloud.template.TemplateManagerImpl;
|
||||
import com.cloud.user.AccountManagerImpl;
|
||||
import com.cloud.user.DomainManagerImpl;
|
||||
import com.cloud.user.dao.AccountDaoImpl;
|
||||
import com.cloud.user.dao.SSHKeyPairDaoImpl;
|
||||
import com.cloud.user.dao.UserAccountDaoImpl;
|
||||
import com.cloud.user.dao.UserDaoImpl;
|
||||
import com.cloud.user.dao.UserStatisticsDaoImpl;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
import com.cloud.utils.component.ComponentLocator.ComponentInfo;
|
||||
import com.cloud.utils.component.Manager;
|
||||
import com.cloud.utils.component.MockComponentLocator;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
import com.cloud.vm.ClusteredVirtualMachineManagerImpl;
|
||||
import com.cloud.vm.ItWorkDaoImpl;
|
||||
import com.cloud.vm.UserVmManagerImpl;
|
||||
import com.cloud.vm.dao.ConsoleProxyDaoImpl;
|
||||
import com.cloud.vm.dao.DomainRouterDaoImpl;
|
||||
import com.cloud.vm.dao.InstanceGroupDaoImpl;
|
||||
import com.cloud.vm.dao.InstanceGroupVMMapDaoImpl;
|
||||
import com.cloud.vm.dao.NicDaoImpl;
|
||||
import com.cloud.vm.dao.SecondaryStorageVmDaoImpl;
|
||||
import com.cloud.vm.dao.UserVmDaoImpl;
|
||||
import com.cloud.vm.dao.UserVmDetailsDaoImpl;
|
||||
import com.cloud.vm.dao.VMInstanceDaoImpl;
|
||||
|
||||
public class ResourceManagerTest extends TestCase {
|
||||
MockComponentLocator _locator;
|
||||
private static final Logger s_logger = Logger.getLogger(ResourceManagerTest.class);
|
||||
ConfigurationService _configService;
|
||||
|
||||
@Override
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
_locator = new MockComponentLocator("management-server");
|
||||
_locator.addDao("StackMaidDao", StackMaidDaoImpl.class);
|
||||
_locator.addDao("VMTemplateZoneDao", VMTemplateZoneDaoImpl.class);
|
||||
_locator.addDao("DomainRouterDao", DomainRouterDaoImpl.class);
|
||||
_locator.addDao("HostDao", HostDaoImpl.class);
|
||||
_locator.addDao("VMInstanceDao", VMInstanceDaoImpl.class);
|
||||
_locator.addDao("UserVmDao", UserVmDaoImpl.class);
|
||||
ComponentInfo<? extends GenericDao<?, ? extends Serializable>> info = _locator.addDao("ServiceOfferingDao", ServiceOfferingDaoImpl.class);
|
||||
info.addParameter("cache.size", "50");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
info = _locator.addDao("DiskOfferingDao", DiskOfferingDaoImpl.class);
|
||||
info.addParameter("cache.size", "50");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
info = _locator.addDao("DataCenterDao", DataCenterDaoImpl.class);
|
||||
info.addParameter("cache.size", "50");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
info = _locator.addDao("HostPodDao", HostPodDaoImpl.class);
|
||||
info.addParameter("cache.size", "50");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
_locator.addDao("IPAddressDao", IPAddressDaoImpl.class);
|
||||
info = _locator.addDao("VlanDao", VlanDaoImpl.class);
|
||||
info.addParameter("cache.size", "30");
|
||||
info.addParameter("cache.time.to.live", "3600");
|
||||
_locator.addDao("PodVlanMapDao", PodVlanMapDaoImpl.class);
|
||||
_locator.addDao("AccountVlanMapDao", AccountVlanMapDaoImpl.class);
|
||||
_locator.addDao("VolumeDao", VolumeDaoImpl.class);
|
||||
_locator.addDao("EventDao", EventDaoImpl.class);
|
||||
info = _locator.addDao("UserDao", UserDaoImpl.class);
|
||||
info.addParameter("cache.size", "5000");
|
||||
info.addParameter("cache.time.to.live", "300");
|
||||
_locator.addDao("UserStatisticsDao", UserStatisticsDaoImpl.class);
|
||||
_locator.addDao("FirewallRulesDao", FirewallRulesDaoImpl.class);
|
||||
_locator.addDao("LoadBalancerDao", LoadBalancerDaoImpl.class);
|
||||
_locator.addDao("NetworkRuleConfigDao", NetworkRuleConfigDaoImpl.class);
|
||||
_locator.addDao("LoadBalancerVMMapDao", LoadBalancerVMMapDaoImpl.class);
|
||||
_locator.addDao("DataCenterIpAddressDao", DataCenterIpAddressDaoImpl.class);
|
||||
_locator.addDao("SecurityGroupDao", SecurityGroupDaoImpl.class);
|
||||
//_locator.addDao("IngressRuleDao", IngressRuleDaoImpl.class);
|
||||
_locator.addDao("SecurityGroupVMMapDao", SecurityGroupVMMapDaoImpl.class);
|
||||
_locator.addDao("SecurityGroupRulesDao", SecurityGroupRulesDaoImpl.class);
|
||||
_locator.addDao("SecurityGroupWorkDao", SecurityGroupWorkDaoImpl.class);
|
||||
_locator.addDao("VmRulesetLogDao", VmRulesetLogDaoImpl.class);
|
||||
_locator.addDao("AlertDao", AlertDaoImpl.class);
|
||||
_locator.addDao("CapacityDao", CapacityDaoImpl.class);
|
||||
_locator.addDao("DomainDao", DomainDaoImpl.class);
|
||||
_locator.addDao("AccountDao", AccountDaoImpl.class);
|
||||
_locator.addDao("ResourceLimitDao", ResourceLimitDaoImpl.class);
|
||||
_locator.addDao("ResourceCountDao", ResourceCountDaoImpl.class);
|
||||
_locator.addDao("UserAccountDao", UserAccountDaoImpl.class);
|
||||
_locator.addDao("VMTemplateHostDao", VMTemplateHostDaoImpl.class);
|
||||
_locator.addDao("UploadDao", UploadDaoImpl.class);
|
||||
_locator.addDao("VMTemplatePoolDao", VMTemplatePoolDaoImpl.class);
|
||||
_locator.addDao("LaunchPermissionDao", LaunchPermissionDaoImpl.class);
|
||||
_locator.addDao("ConfigurationDao", ConfigurationDaoImpl.class);
|
||||
info = _locator.addDao("VMTemplateDao", VMTemplateDaoImpl.class);
|
||||
info.addParameter("cache.size", "100");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
info.addParameter("routing.uniquename", "routing");
|
||||
_locator.addDao("HighAvailabilityDao", HighAvailabilityDaoImpl.class);
|
||||
_locator.addDao("ConsoleProxyDao", ConsoleProxyDaoImpl.class);
|
||||
_locator.addDao("SecondaryStorageVmDao", SecondaryStorageVmDaoImpl.class);
|
||||
_locator.addDao("ManagementServerHostDao", ManagementServerHostDaoImpl.class);
|
||||
_locator.addDao("AgentUpgradeDao", AgentUpgradeDaoImpl.class);
|
||||
_locator.addDao("SnapshotDao", SnapshotDaoImpl.class);
|
||||
_locator.addDao("AsyncJobDao", AsyncJobDaoImpl.class);
|
||||
_locator.addDao("SyncQueueDao", SyncQueueDaoImpl.class);
|
||||
_locator.addDao("SyncQueueItemDao", SyncQueueItemDaoImpl.class);
|
||||
_locator.addDao("GuestOSDao", GuestOSDaoImpl.class);
|
||||
_locator.addDao("GuestOSCategoryDao", GuestOSCategoryDaoImpl.class);
|
||||
_locator.addDao("StoragePoolDao", StoragePoolDaoImpl.class);
|
||||
_locator.addDao("StoragePoolHostDao", StoragePoolHostDaoImpl.class);
|
||||
_locator.addDao("DetailsDao", HostDetailsDaoImpl.class);
|
||||
_locator.addDao("SnapshotPolicyDao", SnapshotPolicyDaoImpl.class);
|
||||
_locator.addDao("SnapshotScheduleDao", SnapshotScheduleDaoImpl.class);
|
||||
_locator.addDao("ClusterDao", ClusterDaoImpl.class);
|
||||
_locator.addDao("CertificateDao", CertificateDaoImpl.class);
|
||||
_locator.addDao("NetworkConfigurationDao", NetworkDaoImpl.class);
|
||||
_locator.addDao("NetworkOfferingDao", NetworkOfferingDaoImpl.class);
|
||||
_locator.addDao("NicDao", NicDaoImpl.class);
|
||||
_locator.addDao("InstanceGroupDao", InstanceGroupDaoImpl.class);
|
||||
_locator.addDao("InstanceGroupVMMapDao", InstanceGroupVMMapDaoImpl.class);
|
||||
_locator.addDao("RemoteAccessVpnDao", RemoteAccessVpnDaoImpl.class);
|
||||
_locator.addDao("VpnUserDao", VpnUserDaoImpl.class);
|
||||
_locator.addDao("ItWorkDao", ItWorkDaoImpl.class);
|
||||
_locator.addDao("FirewallRulesDao", FirewallRulesDaoImpl.class);
|
||||
_locator.addDao("PortForwardingRulesDao", PortForwardingRulesDaoImpl.class);
|
||||
_locator.addDao("FirewallRulesCidrsDao", FirewallRulesCidrsDaoImpl.class);
|
||||
_locator.addDao("SSHKeyPairDao", SSHKeyPairDaoImpl.class);
|
||||
_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);
|
||||
_locator.addDao("KeystoreDao", KeystoreDaoImpl.class);
|
||||
_locator.addDao("DcDetailsDao", DcDetailsDaoImpl.class);
|
||||
_locator.addDao("SwiftDao", SwiftDaoImpl.class);
|
||||
_locator.addDao("AgentTransferMapDao", HostTransferMapDaoImpl.class);
|
||||
_locator.addDao("ProjectDao", ProjectDaoImpl.class);
|
||||
_locator.addDao("InlineLoadBalancerNicMapDao", InlineLoadBalancerNicMapDaoImpl.class);
|
||||
_locator.addDao("ElasticLbVmMap", ElasticLbVmMapDaoImpl.class);
|
||||
_locator.addDao("ProjectsAccountDao", ProjectAccountDaoImpl.class);
|
||||
info = _locator.addDao("HypervisorCapabilitiesDao", HypervisorCapabilitiesDaoImpl.class);
|
||||
info.addParameter("cache.size", "100");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
|
||||
_locator.addManager("StackMaidManager", CheckPointManagerImpl.class);
|
||||
_locator.addManager("account manager", AccountManagerImpl.class);
|
||||
_locator.addManager("domain manager", DomainManagerImpl.class);
|
||||
_locator.addManager("resource limit manager", ResourceLimitManagerImpl.class);
|
||||
_locator.addManager("configuration manager", ConfigurationManagerImpl.class);
|
||||
_locator.addManager("network manager", NetworkManagerImpl.class);
|
||||
_locator.addManager("download manager", DownloadMonitorImpl.class);
|
||||
_locator.addManager("upload manager", UploadMonitorImpl.class);
|
||||
_locator.addManager("keystore manager", KeystoreManagerImpl.class);
|
||||
_locator.addManager("secondary storage vm manager", SecondaryStorageManagerImpl.class);
|
||||
_locator.addManager("vm manager", UserVmManagerImpl.class);
|
||||
_locator.addManager("upgrade manager", UpgradeManagerImpl.class);
|
||||
_locator.addManager("StorageManager", StorageManagerImpl.class);
|
||||
_locator.addManager("SyncQueueManager", SyncQueueManagerImpl.class);
|
||||
_locator.addManager("AsyncJobManager", AsyncJobManagerImpl.class);
|
||||
_locator.addManager("AsyncJobExecutorContext", AsyncJobExecutorContextImpl.class);
|
||||
_locator.addManager("HA Manager", HighAvailabilityManagerImpl.class);
|
||||
_locator.addManager("Alert Manager", AlertManagerImpl.class);
|
||||
_locator.addManager("Template Manager", TemplateManagerImpl.class);
|
||||
_locator.addManager("Snapshot Manager", SnapshotManagerImpl.class);
|
||||
_locator.addManager("SnapshotScheduler", SnapshotSchedulerImpl.class);
|
||||
_locator.addManager("SecurityGroupManager", SecurityGroupManagerImpl2.class);
|
||||
_locator.addManager("DomainRouterManager", VirtualNetworkApplianceManagerImpl.class);
|
||||
_locator.addManager("EntityManager", EntityManagerImpl.class);
|
||||
_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);
|
||||
_locator.addManager("VirtualMachineManager", ClusteredVirtualMachineManagerImpl.class);
|
||||
_locator.addManager("HypervisorGuruManager", HypervisorGuruManagerImpl.class);
|
||||
_locator.addManager("ClusterFenceManager", ClusterFenceManagerImpl.class);
|
||||
_locator.addManager("ResourceManager", ResourceManagerImpl.class);
|
||||
|
||||
_locator.addManager("OCFS2Manager", OCFS2ManagerImpl.class);
|
||||
_locator.addManager("FirewallManager", FirewallManagerImpl.class);
|
||||
ComponentInfo<? extends Manager> info1 = _locator.addManager("ConsoleProxyManager", ConsoleProxyManagerImpl.class);
|
||||
info1.addParameter("consoleproxy.sslEnabled", "true");
|
||||
_locator.addManager("ClusteredAgentManager", ClusteredAgentManagerImpl.class);
|
||||
_locator.addManager("ProjectManager", ProjectManagerImpl.class);
|
||||
_locator.addManager("ElasticLoadBalancerManager", ElasticLoadBalancerManagerImpl.class);
|
||||
|
||||
_locator.makeActive(null);
|
||||
_configService = ComponentLocator.inject(ConfigurationManagerImpl.class);
|
||||
}
|
||||
|
||||
private <T extends BaseCmd> void evaluateCmd(T cmd, String name, Object value) {
|
||||
try {
|
||||
Field f = cmd.getClass().getDeclaredField(name);
|
||||
f.set(cmd, value);
|
||||
} catch (Exception e) {
|
||||
s_logger.debug("Unable to evaluate " + cmd.getClass().getName() + "." + name, e);
|
||||
TestCase.fail();
|
||||
}
|
||||
}
|
||||
|
||||
private void createZone(String zoneName) {
|
||||
CreateZoneCmd cZone = new CreateZoneCmd();
|
||||
evaluateCmd(cZone, "dns1", "10.223.110.254");
|
||||
evaluateCmd(cZone, "internalDns1", "10.223.110.254");
|
||||
evaluateCmd(cZone, "zoneName", zoneName);
|
||||
evaluateCmd(cZone, "networkType", "Basic");
|
||||
evaluateCmd(cZone, "securitygroupenabled", false);
|
||||
s_logger.info("Create zone:" + cZone.getZoneName());
|
||||
|
||||
_configService.createZone(cZone);
|
||||
}
|
||||
|
||||
private void createPod(String name) {
|
||||
CreatePodCmd cPod = new CreatePodCmd();
|
||||
evaluateCmd(cPod, "netmask", "255.255.255.0");
|
||||
|
||||
}
|
||||
|
||||
private void deploy100Hosts() {
|
||||
createZone("test1");
|
||||
}
|
||||
|
||||
public void testDeploy100Hosts() {
|
||||
deploy100Hosts();
|
||||
}
|
||||
|
||||
@Override
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
}
|
||||
|
||||
}
|
||||
package com.cloud.agent.manager;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
|
||||
import com.cloud.alert.AlertManagerImpl;
|
||||
import com.cloud.alert.dao.AlertDaoImpl;
|
||||
import com.cloud.api.BaseCmd;
|
||||
import com.cloud.api.commands.CreatePodCmd;
|
||||
import com.cloud.api.commands.CreateZoneCmd;
|
||||
import com.cloud.async.AsyncJobExecutorContextImpl;
|
||||
import com.cloud.async.AsyncJobManagerImpl;
|
||||
import com.cloud.async.SyncQueueManagerImpl;
|
||||
import com.cloud.async.dao.AsyncJobDaoImpl;
|
||||
import com.cloud.async.dao.SyncQueueDaoImpl;
|
||||
import com.cloud.async.dao.SyncQueueItemDaoImpl;
|
||||
import com.cloud.capacity.CapacityManagerImpl;
|
||||
import com.cloud.capacity.dao.CapacityDaoImpl;
|
||||
import com.cloud.certificate.dao.CertificateDaoImpl;
|
||||
import com.cloud.cluster.CheckPointManagerImpl;
|
||||
import com.cloud.cluster.ClusterFenceManagerImpl;
|
||||
import com.cloud.cluster.ClusterManagerImpl;
|
||||
import com.cloud.cluster.agentlb.dao.HostTransferMapDaoImpl;
|
||||
import com.cloud.cluster.dao.ManagementServerHostDaoImpl;
|
||||
import com.cloud.cluster.dao.StackMaidDaoImpl;
|
||||
import com.cloud.configuration.ConfigurationManagerImpl;
|
||||
import com.cloud.configuration.ConfigurationService;
|
||||
import com.cloud.configuration.dao.ConfigurationDaoImpl;
|
||||
import com.cloud.configuration.dao.ResourceCountDaoImpl;
|
||||
import com.cloud.configuration.dao.ResourceLimitDaoImpl;
|
||||
import com.cloud.consoleproxy.ConsoleProxyManagerImpl;
|
||||
import com.cloud.dao.EntityManagerImpl;
|
||||
import com.cloud.dc.ClusterDetailsDaoImpl;
|
||||
import com.cloud.dc.dao.AccountVlanMapDaoImpl;
|
||||
import com.cloud.dc.dao.ClusterDaoImpl;
|
||||
import com.cloud.dc.dao.DataCenterDaoImpl;
|
||||
import com.cloud.dc.dao.DataCenterIpAddressDaoImpl;
|
||||
import com.cloud.dc.dao.DcDetailsDaoImpl;
|
||||
import com.cloud.dc.dao.HostPodDaoImpl;
|
||||
import com.cloud.dc.dao.PodVlanMapDaoImpl;
|
||||
import com.cloud.dc.dao.VlanDaoImpl;
|
||||
import com.cloud.domain.dao.DomainDaoImpl;
|
||||
import com.cloud.event.dao.EventDaoImpl;
|
||||
import com.cloud.event.dao.UsageEventDaoImpl;
|
||||
import com.cloud.ha.HighAvailabilityManagerImpl;
|
||||
import com.cloud.ha.dao.HighAvailabilityDaoImpl;
|
||||
import com.cloud.host.dao.HostDaoImpl;
|
||||
import com.cloud.host.dao.HostDetailsDaoImpl;
|
||||
import com.cloud.host.dao.HostTagsDaoImpl;
|
||||
import com.cloud.hypervisor.HypervisorGuruManagerImpl;
|
||||
import com.cloud.hypervisor.dao.HypervisorCapabilitiesDaoImpl;
|
||||
import com.cloud.keystore.KeystoreDaoImpl;
|
||||
import com.cloud.keystore.KeystoreManagerImpl;
|
||||
import com.cloud.maint.UpgradeManagerImpl;
|
||||
import com.cloud.maint.dao.AgentUpgradeDaoImpl;
|
||||
import com.cloud.network.NetworkManagerImpl;
|
||||
import com.cloud.network.dao.FirewallRulesCidrsDaoImpl;
|
||||
import com.cloud.network.dao.FirewallRulesDaoImpl;
|
||||
import com.cloud.network.dao.IPAddressDaoImpl;
|
||||
import com.cloud.network.dao.InlineLoadBalancerNicMapDaoImpl;
|
||||
import com.cloud.network.dao.LoadBalancerDaoImpl;
|
||||
import com.cloud.network.dao.LoadBalancerVMMapDaoImpl;
|
||||
import com.cloud.network.dao.NetworkDaoImpl;
|
||||
import com.cloud.network.dao.NetworkDomainDaoImpl;
|
||||
import com.cloud.network.dao.NetworkRuleConfigDaoImpl;
|
||||
import com.cloud.network.dao.RemoteAccessVpnDaoImpl;
|
||||
import com.cloud.network.dao.VpnUserDaoImpl;
|
||||
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.OvsTunnelManagerImpl;
|
||||
import com.cloud.network.router.VirtualNetworkApplianceManagerImpl;
|
||||
import com.cloud.network.rules.RulesManagerImpl;
|
||||
import com.cloud.network.rules.dao.PortForwardingRulesDaoImpl;
|
||||
import com.cloud.network.security.SecurityGroupManagerImpl2;
|
||||
import com.cloud.network.security.dao.SecurityGroupDaoImpl;
|
||||
import com.cloud.network.security.dao.SecurityGroupRulesDaoImpl;
|
||||
import com.cloud.network.security.dao.SecurityGroupVMMapDaoImpl;
|
||||
import com.cloud.network.security.dao.SecurityGroupWorkDaoImpl;
|
||||
import com.cloud.network.security.dao.VmRulesetLogDaoImpl;
|
||||
import com.cloud.network.vpn.RemoteAccessVpnManagerImpl;
|
||||
import com.cloud.offerings.dao.NetworkOfferingDaoImpl;
|
||||
import com.cloud.projects.ProjectManagerImpl;
|
||||
import com.cloud.projects.dao.ProjectAccountDaoImpl;
|
||||
import com.cloud.projects.dao.ProjectDaoImpl;
|
||||
import com.cloud.resource.ResourceManagerImpl;
|
||||
import com.cloud.resourcelimit.ResourceLimitManagerImpl;
|
||||
import com.cloud.service.dao.ServiceOfferingDaoImpl;
|
||||
import com.cloud.storage.OCFS2ManagerImpl;
|
||||
import com.cloud.storage.StorageManagerImpl;
|
||||
import com.cloud.storage.dao.DiskOfferingDaoImpl;
|
||||
import com.cloud.storage.dao.GuestOSCategoryDaoImpl;
|
||||
import com.cloud.storage.dao.GuestOSDaoImpl;
|
||||
import com.cloud.storage.dao.LaunchPermissionDaoImpl;
|
||||
import com.cloud.storage.dao.SnapshotDaoImpl;
|
||||
import com.cloud.storage.dao.SnapshotPolicyDaoImpl;
|
||||
import com.cloud.storage.dao.SnapshotScheduleDaoImpl;
|
||||
import com.cloud.storage.dao.StoragePoolDaoImpl;
|
||||
import com.cloud.storage.dao.StoragePoolHostDaoImpl;
|
||||
import com.cloud.storage.dao.StoragePoolWorkDaoImpl;
|
||||
import com.cloud.storage.dao.SwiftDaoImpl;
|
||||
import com.cloud.storage.dao.UploadDaoImpl;
|
||||
import com.cloud.storage.dao.VMTemplateDaoImpl;
|
||||
import com.cloud.storage.dao.VMTemplateHostDaoImpl;
|
||||
import com.cloud.storage.dao.VMTemplatePoolDaoImpl;
|
||||
import com.cloud.storage.dao.VMTemplateZoneDaoImpl;
|
||||
import com.cloud.storage.dao.VolumeDaoImpl;
|
||||
import com.cloud.storage.download.DownloadMonitorImpl;
|
||||
import com.cloud.storage.secondary.SecondaryStorageManagerImpl;
|
||||
import com.cloud.storage.snapshot.SnapshotManagerImpl;
|
||||
import com.cloud.storage.snapshot.SnapshotSchedulerImpl;
|
||||
import com.cloud.storage.upload.UploadMonitorImpl;
|
||||
import com.cloud.template.TemplateManagerImpl;
|
||||
import com.cloud.user.AccountManagerImpl;
|
||||
import com.cloud.user.DomainManagerImpl;
|
||||
import com.cloud.user.dao.AccountDaoImpl;
|
||||
import com.cloud.user.dao.SSHKeyPairDaoImpl;
|
||||
import com.cloud.user.dao.UserAccountDaoImpl;
|
||||
import com.cloud.user.dao.UserDaoImpl;
|
||||
import com.cloud.user.dao.UserStatisticsDaoImpl;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
import com.cloud.utils.component.ComponentLocator.ComponentInfo;
|
||||
import com.cloud.utils.component.Manager;
|
||||
import com.cloud.utils.component.MockComponentLocator;
|
||||
import com.cloud.utils.db.GenericDao;
|
||||
import com.cloud.vm.ClusteredVirtualMachineManagerImpl;
|
||||
import com.cloud.vm.ItWorkDaoImpl;
|
||||
import com.cloud.vm.UserVmManagerImpl;
|
||||
import com.cloud.vm.dao.ConsoleProxyDaoImpl;
|
||||
import com.cloud.vm.dao.DomainRouterDaoImpl;
|
||||
import com.cloud.vm.dao.InstanceGroupDaoImpl;
|
||||
import com.cloud.vm.dao.InstanceGroupVMMapDaoImpl;
|
||||
import com.cloud.vm.dao.NicDaoImpl;
|
||||
import com.cloud.vm.dao.SecondaryStorageVmDaoImpl;
|
||||
import com.cloud.vm.dao.UserVmDaoImpl;
|
||||
import com.cloud.vm.dao.UserVmDetailsDaoImpl;
|
||||
import com.cloud.vm.dao.VMInstanceDaoImpl;
|
||||
|
||||
public class ResourceManagerTest extends TestCase {
|
||||
MockComponentLocator _locator;
|
||||
private static final Logger s_logger = Logger.getLogger(ResourceManagerTest.class);
|
||||
ConfigurationService _configService;
|
||||
|
||||
@Override
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
_locator = new MockComponentLocator("management-server");
|
||||
_locator.addDao("StackMaidDao", StackMaidDaoImpl.class);
|
||||
_locator.addDao("VMTemplateZoneDao", VMTemplateZoneDaoImpl.class);
|
||||
_locator.addDao("DomainRouterDao", DomainRouterDaoImpl.class);
|
||||
_locator.addDao("HostDao", HostDaoImpl.class);
|
||||
_locator.addDao("VMInstanceDao", VMInstanceDaoImpl.class);
|
||||
_locator.addDao("UserVmDao", UserVmDaoImpl.class);
|
||||
ComponentInfo<? extends GenericDao<?, ? extends Serializable>> info = _locator.addDao("ServiceOfferingDao", ServiceOfferingDaoImpl.class);
|
||||
info.addParameter("cache.size", "50");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
info = _locator.addDao("DiskOfferingDao", DiskOfferingDaoImpl.class);
|
||||
info.addParameter("cache.size", "50");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
info = _locator.addDao("DataCenterDao", DataCenterDaoImpl.class);
|
||||
info.addParameter("cache.size", "50");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
info = _locator.addDao("HostPodDao", HostPodDaoImpl.class);
|
||||
info.addParameter("cache.size", "50");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
_locator.addDao("IPAddressDao", IPAddressDaoImpl.class);
|
||||
info = _locator.addDao("VlanDao", VlanDaoImpl.class);
|
||||
info.addParameter("cache.size", "30");
|
||||
info.addParameter("cache.time.to.live", "3600");
|
||||
_locator.addDao("PodVlanMapDao", PodVlanMapDaoImpl.class);
|
||||
_locator.addDao("AccountVlanMapDao", AccountVlanMapDaoImpl.class);
|
||||
_locator.addDao("VolumeDao", VolumeDaoImpl.class);
|
||||
_locator.addDao("EventDao", EventDaoImpl.class);
|
||||
info = _locator.addDao("UserDao", UserDaoImpl.class);
|
||||
info.addParameter("cache.size", "5000");
|
||||
info.addParameter("cache.time.to.live", "300");
|
||||
_locator.addDao("UserStatisticsDao", UserStatisticsDaoImpl.class);
|
||||
_locator.addDao("FirewallRulesDao", FirewallRulesDaoImpl.class);
|
||||
_locator.addDao("LoadBalancerDao", LoadBalancerDaoImpl.class);
|
||||
_locator.addDao("NetworkRuleConfigDao", NetworkRuleConfigDaoImpl.class);
|
||||
_locator.addDao("LoadBalancerVMMapDao", LoadBalancerVMMapDaoImpl.class);
|
||||
_locator.addDao("DataCenterIpAddressDao", DataCenterIpAddressDaoImpl.class);
|
||||
_locator.addDao("SecurityGroupDao", SecurityGroupDaoImpl.class);
|
||||
//_locator.addDao("IngressRuleDao", IngressRuleDaoImpl.class);
|
||||
_locator.addDao("SecurityGroupVMMapDao", SecurityGroupVMMapDaoImpl.class);
|
||||
_locator.addDao("SecurityGroupRulesDao", SecurityGroupRulesDaoImpl.class);
|
||||
_locator.addDao("SecurityGroupWorkDao", SecurityGroupWorkDaoImpl.class);
|
||||
_locator.addDao("VmRulesetLogDao", VmRulesetLogDaoImpl.class);
|
||||
_locator.addDao("AlertDao", AlertDaoImpl.class);
|
||||
_locator.addDao("CapacityDao", CapacityDaoImpl.class);
|
||||
_locator.addDao("DomainDao", DomainDaoImpl.class);
|
||||
_locator.addDao("AccountDao", AccountDaoImpl.class);
|
||||
_locator.addDao("ResourceLimitDao", ResourceLimitDaoImpl.class);
|
||||
_locator.addDao("ResourceCountDao", ResourceCountDaoImpl.class);
|
||||
_locator.addDao("UserAccountDao", UserAccountDaoImpl.class);
|
||||
_locator.addDao("VMTemplateHostDao", VMTemplateHostDaoImpl.class);
|
||||
_locator.addDao("UploadDao", UploadDaoImpl.class);
|
||||
_locator.addDao("VMTemplatePoolDao", VMTemplatePoolDaoImpl.class);
|
||||
_locator.addDao("LaunchPermissionDao", LaunchPermissionDaoImpl.class);
|
||||
_locator.addDao("ConfigurationDao", ConfigurationDaoImpl.class);
|
||||
info = _locator.addDao("VMTemplateDao", VMTemplateDaoImpl.class);
|
||||
info.addParameter("cache.size", "100");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
info.addParameter("routing.uniquename", "routing");
|
||||
_locator.addDao("HighAvailabilityDao", HighAvailabilityDaoImpl.class);
|
||||
_locator.addDao("ConsoleProxyDao", ConsoleProxyDaoImpl.class);
|
||||
_locator.addDao("SecondaryStorageVmDao", SecondaryStorageVmDaoImpl.class);
|
||||
_locator.addDao("ManagementServerHostDao", ManagementServerHostDaoImpl.class);
|
||||
_locator.addDao("AgentUpgradeDao", AgentUpgradeDaoImpl.class);
|
||||
_locator.addDao("SnapshotDao", SnapshotDaoImpl.class);
|
||||
_locator.addDao("AsyncJobDao", AsyncJobDaoImpl.class);
|
||||
_locator.addDao("SyncQueueDao", SyncQueueDaoImpl.class);
|
||||
_locator.addDao("SyncQueueItemDao", SyncQueueItemDaoImpl.class);
|
||||
_locator.addDao("GuestOSDao", GuestOSDaoImpl.class);
|
||||
_locator.addDao("GuestOSCategoryDao", GuestOSCategoryDaoImpl.class);
|
||||
_locator.addDao("StoragePoolDao", StoragePoolDaoImpl.class);
|
||||
_locator.addDao("StoragePoolHostDao", StoragePoolHostDaoImpl.class);
|
||||
_locator.addDao("DetailsDao", HostDetailsDaoImpl.class);
|
||||
_locator.addDao("SnapshotPolicyDao", SnapshotPolicyDaoImpl.class);
|
||||
_locator.addDao("SnapshotScheduleDao", SnapshotScheduleDaoImpl.class);
|
||||
_locator.addDao("ClusterDao", ClusterDaoImpl.class);
|
||||
_locator.addDao("CertificateDao", CertificateDaoImpl.class);
|
||||
_locator.addDao("NetworkConfigurationDao", NetworkDaoImpl.class);
|
||||
_locator.addDao("NetworkOfferingDao", NetworkOfferingDaoImpl.class);
|
||||
_locator.addDao("NicDao", NicDaoImpl.class);
|
||||
_locator.addDao("InstanceGroupDao", InstanceGroupDaoImpl.class);
|
||||
_locator.addDao("InstanceGroupVMMapDao", InstanceGroupVMMapDaoImpl.class);
|
||||
_locator.addDao("RemoteAccessVpnDao", RemoteAccessVpnDaoImpl.class);
|
||||
_locator.addDao("VpnUserDao", VpnUserDaoImpl.class);
|
||||
_locator.addDao("ItWorkDao", ItWorkDaoImpl.class);
|
||||
_locator.addDao("FirewallRulesDao", FirewallRulesDaoImpl.class);
|
||||
_locator.addDao("PortForwardingRulesDao", PortForwardingRulesDaoImpl.class);
|
||||
_locator.addDao("FirewallRulesCidrsDao", FirewallRulesCidrsDaoImpl.class);
|
||||
_locator.addDao("SSHKeyPairDao", SSHKeyPairDaoImpl.class);
|
||||
_locator.addDao("UsageEventDao", UsageEventDaoImpl.class);
|
||||
_locator.addDao("ClusterDetailsDao", ClusterDetailsDaoImpl.class);
|
||||
_locator.addDao("UserVmDetailsDao", UserVmDetailsDaoImpl.class);
|
||||
_locator.addDao("StoragePoolWorkDao", StoragePoolWorkDaoImpl.class);
|
||||
_locator.addDao("HostTagsDao", HostTagsDaoImpl.class);
|
||||
_locator.addDao("NetworkDomainDao", NetworkDomainDaoImpl.class);
|
||||
_locator.addDao("KeystoreDao", KeystoreDaoImpl.class);
|
||||
_locator.addDao("DcDetailsDao", DcDetailsDaoImpl.class);
|
||||
_locator.addDao("SwiftDao", SwiftDaoImpl.class);
|
||||
_locator.addDao("AgentTransferMapDao", HostTransferMapDaoImpl.class);
|
||||
_locator.addDao("ProjectDao", ProjectDaoImpl.class);
|
||||
_locator.addDao("InlineLoadBalancerNicMapDao", InlineLoadBalancerNicMapDaoImpl.class);
|
||||
_locator.addDao("ElasticLbVmMap", ElasticLbVmMapDaoImpl.class);
|
||||
_locator.addDao("ProjectsAccountDao", ProjectAccountDaoImpl.class);
|
||||
info = _locator.addDao("HypervisorCapabilitiesDao", HypervisorCapabilitiesDaoImpl.class);
|
||||
info.addParameter("cache.size", "100");
|
||||
info.addParameter("cache.time.to.live", "600");
|
||||
|
||||
_locator.addManager("StackMaidManager", CheckPointManagerImpl.class);
|
||||
_locator.addManager("account manager", AccountManagerImpl.class);
|
||||
_locator.addManager("domain manager", DomainManagerImpl.class);
|
||||
_locator.addManager("resource limit manager", ResourceLimitManagerImpl.class);
|
||||
_locator.addManager("configuration manager", ConfigurationManagerImpl.class);
|
||||
_locator.addManager("network manager", NetworkManagerImpl.class);
|
||||
_locator.addManager("download manager", DownloadMonitorImpl.class);
|
||||
_locator.addManager("upload manager", UploadMonitorImpl.class);
|
||||
_locator.addManager("keystore manager", KeystoreManagerImpl.class);
|
||||
_locator.addManager("secondary storage vm manager", SecondaryStorageManagerImpl.class);
|
||||
_locator.addManager("vm manager", UserVmManagerImpl.class);
|
||||
_locator.addManager("upgrade manager", UpgradeManagerImpl.class);
|
||||
_locator.addManager("StorageManager", StorageManagerImpl.class);
|
||||
_locator.addManager("SyncQueueManager", SyncQueueManagerImpl.class);
|
||||
_locator.addManager("AsyncJobManager", AsyncJobManagerImpl.class);
|
||||
_locator.addManager("AsyncJobExecutorContext", AsyncJobExecutorContextImpl.class);
|
||||
_locator.addManager("HA Manager", HighAvailabilityManagerImpl.class);
|
||||
_locator.addManager("Alert Manager", AlertManagerImpl.class);
|
||||
_locator.addManager("Template Manager", TemplateManagerImpl.class);
|
||||
_locator.addManager("Snapshot Manager", SnapshotManagerImpl.class);
|
||||
_locator.addManager("SnapshotScheduler", SnapshotSchedulerImpl.class);
|
||||
_locator.addManager("SecurityGroupManager", SecurityGroupManagerImpl2.class);
|
||||
_locator.addManager("DomainRouterManager", VirtualNetworkApplianceManagerImpl.class);
|
||||
_locator.addManager("EntityManager", EntityManagerImpl.class);
|
||||
_locator.addManager("LoadBalancingRulesManager", LoadBalancingRulesManagerImpl.class);
|
||||
_locator.addManager("RulesManager", RulesManagerImpl.class);
|
||||
_locator.addManager("RemoteAccessVpnManager", RemoteAccessVpnManagerImpl.class);
|
||||
_locator.addManager("OvsTunnelManager", OvsTunnelManagerImpl.class);
|
||||
_locator.addManager("Capacity Manager", CapacityManagerImpl.class);
|
||||
_locator.addManager("Cluster Manager", ClusterManagerImpl.class);
|
||||
_locator.addManager("VirtualMachineManager", ClusteredVirtualMachineManagerImpl.class);
|
||||
_locator.addManager("HypervisorGuruManager", HypervisorGuruManagerImpl.class);
|
||||
_locator.addManager("ClusterFenceManager", ClusterFenceManagerImpl.class);
|
||||
_locator.addManager("ResourceManager", ResourceManagerImpl.class);
|
||||
|
||||
_locator.addManager("OCFS2Manager", OCFS2ManagerImpl.class);
|
||||
_locator.addManager("FirewallManager", FirewallManagerImpl.class);
|
||||
ComponentInfo<? extends Manager> info1 = _locator.addManager("ConsoleProxyManager", ConsoleProxyManagerImpl.class);
|
||||
info1.addParameter("consoleproxy.sslEnabled", "true");
|
||||
_locator.addManager("ClusteredAgentManager", ClusteredAgentManagerImpl.class);
|
||||
_locator.addManager("ProjectManager", ProjectManagerImpl.class);
|
||||
_locator.addManager("ElasticLoadBalancerManager", ElasticLoadBalancerManagerImpl.class);
|
||||
|
||||
_locator.makeActive(null);
|
||||
_configService = ComponentLocator.inject(ConfigurationManagerImpl.class);
|
||||
}
|
||||
|
||||
private <T extends BaseCmd> void evaluateCmd(T cmd, String name, Object value) {
|
||||
try {
|
||||
Field f = cmd.getClass().getDeclaredField(name);
|
||||
f.set(cmd, value);
|
||||
} catch (Exception e) {
|
||||
s_logger.debug("Unable to evaluate " + cmd.getClass().getName() + "." + name, e);
|
||||
TestCase.fail();
|
||||
}
|
||||
}
|
||||
|
||||
private void createZone(String zoneName) {
|
||||
CreateZoneCmd cZone = new CreateZoneCmd();
|
||||
evaluateCmd(cZone, "dns1", "10.223.110.254");
|
||||
evaluateCmd(cZone, "internalDns1", "10.223.110.254");
|
||||
evaluateCmd(cZone, "zoneName", zoneName);
|
||||
evaluateCmd(cZone, "networkType", "Basic");
|
||||
evaluateCmd(cZone, "securitygroupenabled", false);
|
||||
s_logger.info("Create zone:" + cZone.getZoneName());
|
||||
|
||||
_configService.createZone(cZone);
|
||||
}
|
||||
|
||||
private void createPod(String name) {
|
||||
CreatePodCmd cPod = new CreatePodCmd();
|
||||
evaluateCmd(cPod, "netmask", "255.255.255.0");
|
||||
|
||||
}
|
||||
|
||||
private void deploy100Hosts() {
|
||||
createZone("test1");
|
||||
}
|
||||
|
||||
public void testDeploy100Hosts() {
|
||||
deploy100Hosts();
|
||||
}
|
||||
|
||||
@Override
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue