Moved NetworkManagerImpl to NetworkOrchestrator

This commit is contained in:
Alex Huang 2013-08-19 21:33:31 -07:00
parent 8e5249df62
commit 2e5bb63f77
48 changed files with 173 additions and 338 deletions

View File

@ -29,7 +29,6 @@ import com.cloud.user.Account;
import com.cloud.utils.component.Adapter; import com.cloud.utils.component.Adapter;
import com.cloud.vm.NicProfile; import com.cloud.vm.NicProfile;
import com.cloud.vm.ReservationContext; import com.cloud.vm.ReservationContext;
import com.cloud.vm.VirtualMachine;
import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfile;
/** /**
@ -196,10 +195,9 @@ public interface NetworkGuru extends Adapter {
* *
* @param network guest network being destroyed. * @param network guest network being destroyed.
* @param offering network offering the guest network was created with. * @param offering network offering the guest network was created with.
* @param owner owner of the network.
* @return true if trash was successful; false if not. * @return true if trash was successful; false if not.
*/ */
boolean trash(Network network, NetworkOffering offering, Account owner); boolean trash(Network network, NetworkOffering offering);
void updateNetworkProfile(NetworkProfile networkProfile); void updateNetworkProfile(NetworkProfile networkProfile);

View File

@ -33,6 +33,7 @@ import com.cloud.exception.StorageUnavailableException;
import com.cloud.host.Host; import com.cloud.host.Host;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.offering.DiskOffering; import com.cloud.offering.DiskOffering;
import com.cloud.storage.Snapshot;
import com.cloud.storage.StoragePool; import com.cloud.storage.StoragePool;
import com.cloud.storage.Volume; import com.cloud.storage.Volume;
import com.cloud.storage.Volume.Type; import com.cloud.storage.Volume.Type;
@ -61,6 +62,8 @@ public interface VolumeOrchestrationService {
String getVmNameOnVolume(Volume volume); String getVmNameOnVolume(Volume volume);
VolumeInfo createVolumeFromSnapshot(Volume volume, Snapshot snapshot) throws StorageUnavailableException;
Volume migrateVolume(Volume volume, StoragePool destPool) throws StorageUnavailableException; Volume migrateVolume(Volume volume, StoragePool destPool) throws StorageUnavailableException;
void destroyVolume(Volume volume); void destroyVolume(Volume volume);

View File

@ -33,11 +33,21 @@
<artifactId>cloud-engine-api</artifactId> <artifactId>cloud-engine-api</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-engine-schema</artifactId>
<version>${project.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.cloudstack</groupId> <groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-framework-ipc</artifactId> <artifactId>cloud-framework-ipc</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-framework-events</artifactId>
<version>${project.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.cloudstack</groupId> <groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-framework-jobs</artifactId> <artifactId>cloud-framework-jobs</artifactId>

View File

@ -17,28 +17,28 @@
package com.cloud.event; package com.cloud.event;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.dao.DataCenterDao;
import com.cloud.event.dao.UsageEventDao;
import com.cloud.server.ManagementServer;
import com.cloud.user.Account;
import com.cloud.user.dao.AccountDao;
import com.cloud.utils.component.ComponentContext;
import org.apache.cloudstack.framework.events.Event;
import org.apache.cloudstack.framework.events.EventBus;
import org.apache.cloudstack.framework.events.EventBusException;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@Component import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.apache.cloudstack.framework.events.Event;
import org.apache.cloudstack.framework.events.EventBus;
import org.apache.cloudstack.framework.events.EventBusException;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.dao.DataCenterDao;
import com.cloud.event.dao.UsageEventDao;
import com.cloud.user.Account;
import com.cloud.user.dao.AccountDao;
import com.cloud.utils.component.ComponentContext;
public class UsageEventUtils { public class UsageEventUtils {
private static UsageEventDao _usageEventDao; private static UsageEventDao _usageEventDao;
@ -141,7 +141,7 @@ public class UsageEventUtils {
if (account == null) if (account == null)
return; return;
Event event = new Event(ManagementServer.Name, EventCategory.USAGE_EVENT.getName(), usageEventType, Event event = new Event(Name, EventCategory.USAGE_EVENT.getName(), usageEventType,
resourceType, resourceUUID); resourceType, resourceUUID);
Map<String, String> eventDescription = new HashMap<String, String>(); Map<String, String> eventDescription = new HashMap<String, String>();
@ -162,4 +162,7 @@ public class UsageEventUtils {
s_logger.warn("Failed to publish usage event on the the event bus."); s_logger.warn("Failed to publish usage event on the the event bus.");
} }
} }
static final String Name = "management-server";
} }

View File

@ -30,7 +30,7 @@ import com.cloud.network.rules.LoadBalancer;
import com.cloud.network.rules.LoadBalancerContainer.Scheme; import com.cloud.network.rules.LoadBalancerContainer.Scheme;
import com.cloud.user.Account; import com.cloud.user.Account;
public interface LoadBalancingRulesManager extends LoadBalancingRulesService { public interface LoadBalancingRulesManager {
LoadBalancer createPublicLoadBalancer(String xId, String name, String description, LoadBalancer createPublicLoadBalancer(String xId, String name, String description,
int srcPort, int destPort, long sourceIpId, String protocol, String algorithm, boolean openFirewall, CallContext caller) int srcPort, int destPort, long sourceIpId, String protocol, String algorithm, boolean openFirewall, CallContext caller)

View File

@ -21,13 +21,11 @@ import java.util.List;
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore; import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
import org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo; import org.apache.cloudstack.engine.subsystem.api.storage.TemplateInfo;
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
import com.cloud.dc.DataCenterVO; import com.cloud.dc.DataCenterVO;
import com.cloud.exception.InternalErrorException; import com.cloud.exception.InternalErrorException;
import com.cloud.exception.ResourceAllocationException; import com.cloud.exception.ResourceAllocationException;
import com.cloud.exception.StorageUnavailableException; import com.cloud.exception.StorageUnavailableException;
import com.cloud.host.HostVO;
import com.cloud.storage.StoragePool; import com.cloud.storage.StoragePool;
import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.VMTemplateHostVO;
import com.cloud.storage.VMTemplateStoragePoolVO; import com.cloud.storage.VMTemplateStoragePoolVO;
@ -37,7 +35,7 @@ import com.cloud.utils.Pair;
/** /**
* TemplateManager manages the templates stored on secondary storage. It is responsible for creating private/public templates. * TemplateManager manages the templates stored on secondary storage. It is responsible for creating private/public templates.
*/ */
public interface TemplateManager extends TemplateApiService{ public interface TemplateManager {
/** /**
* Prepares a template for vm creation for a certain storage pool. * Prepares a template for vm creation for a certain storage pool.

View File

@ -43,6 +43,11 @@
<artifactId>cloud-framework-ipc</artifactId> <artifactId>cloud-framework-ipc</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-framework-events</artifactId>
<version>${project.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.cloudstack</groupId> <groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-engine-components-api</artifactId> <artifactId>cloud-engine-components-api</artifactId>
@ -60,7 +65,6 @@
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
<defaultGoal>install</defaultGoal>
<plugins> <plugins>
<plugin> <plugin>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>

View File

@ -14,7 +14,7 @@
// KIND, either express or implied. See the License for the // KIND, either express or implied. See the License for the
// specific language governing permissions and limitations // specific language governing permissions and limitations
// under the License. // under the License.
package com.cloud.network; package org.apache.cloudstack.engine.orchestration;
import java.net.URI; import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
@ -37,28 +37,17 @@ import javax.inject.Inject;
import javax.naming.ConfigurationException; import javax.naming.ConfigurationException;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.apache.log4j.lf5.viewer.configure.ConfigurationManager;
import org.apache.cloudstack.acl.ControlledEntity.ACLType; import org.apache.cloudstack.acl.ControlledEntity.ACLType;
import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.context.ServerContexts;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService; import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.cloudstack.region.PortableIpDao;
import com.cloud.agent.AgentManager;
import com.cloud.agent.Listener;
import com.cloud.agent.api.AgentControlAnswer;
import com.cloud.agent.api.AgentControlCommand;
import com.cloud.agent.api.Answer; import com.cloud.agent.api.Answer;
import com.cloud.agent.api.CheckNetworkAnswer;
import com.cloud.agent.api.CheckNetworkCommand;
import com.cloud.agent.api.Command; import com.cloud.agent.api.Command;
import com.cloud.agent.api.StartupCommand;
import com.cloud.agent.api.StartupRoutingCommand;
import com.cloud.agent.api.to.NicTO; import com.cloud.agent.api.to.NicTO;
import com.cloud.alert.AlertManager;
import com.cloud.api.ApiDBUtils;
import com.cloud.configuration.Config;
import com.cloud.configuration.ConfigurationManager;
import com.cloud.configuration.Resource.ResourceType; import com.cloud.configuration.Resource.ResourceType;
import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter;
import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.DataCenter.NetworkType;
@ -67,7 +56,6 @@ import com.cloud.dc.DataCenterVnetVO;
import com.cloud.dc.PodVlanMapVO; import com.cloud.dc.PodVlanMapVO;
import com.cloud.dc.Vlan; import com.cloud.dc.Vlan;
import com.cloud.dc.VlanVO; import com.cloud.dc.VlanVO;
import com.cloud.dc.dao.AccountVlanMapDao;
import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.DataCenterDao;
import com.cloud.dc.dao.DataCenterVnetDao; import com.cloud.dc.dao.DataCenterVnetDao;
import com.cloud.dc.dao.PodVlanMapDao; import com.cloud.dc.dao.PodVlanMapDao;
@ -76,7 +64,6 @@ import com.cloud.deploy.DataCenterDeployment;
import com.cloud.deploy.DeployDestination; import com.cloud.deploy.DeployDestination;
import com.cloud.deploy.DeploymentPlan; import com.cloud.deploy.DeploymentPlan;
import com.cloud.domain.Domain; import com.cloud.domain.Domain;
import com.cloud.domain.dao.DomainDao;
import com.cloud.event.dao.UsageEventDao; import com.cloud.event.dao.UsageEventDao;
import com.cloud.exception.ConcurrentOperationException; import com.cloud.exception.ConcurrentOperationException;
import com.cloud.exception.ConnectionException; import com.cloud.exception.ConnectionException;
@ -91,14 +78,23 @@ import com.cloud.host.Host;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.host.dao.HostDao; import com.cloud.host.dao.HostDao;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.IpAddress;
import com.cloud.network.IpAddress.State; import com.cloud.network.IpAddress.State;
import com.cloud.network.IpAddressManager;
import com.cloud.network.Network;
import com.cloud.network.Network.Capability; import com.cloud.network.Network.Capability;
import com.cloud.network.Network.Event; import com.cloud.network.Network.Event;
import com.cloud.network.Network.GuestType; import com.cloud.network.Network.GuestType;
import com.cloud.network.Network.Provider; import com.cloud.network.Network.Provider;
import com.cloud.network.Network.Service; import com.cloud.network.Network.Service;
import com.cloud.network.NetworkMigrationResponder;
import com.cloud.network.NetworkModel;
import com.cloud.network.NetworkProfile;
import com.cloud.network.Networks.BroadcastDomainType; import com.cloud.network.Networks.BroadcastDomainType;
import com.cloud.network.Networks.TrafficType; import com.cloud.network.Networks.TrafficType;
import com.cloud.network.PhysicalNetwork;
import com.cloud.network.PhysicalNetworkSetupInfo;
import com.cloud.network.RemoteAccessVpn;
import com.cloud.network.addr.PublicIp; import com.cloud.network.addr.PublicIp;
import com.cloud.network.dao.AccountGuestVlanMapDao; import com.cloud.network.dao.AccountGuestVlanMapDao;
import com.cloud.network.dao.AccountGuestVlanMapVO; import com.cloud.network.dao.AccountGuestVlanMapVO;
@ -128,18 +124,13 @@ import com.cloud.network.element.StaticNatServiceProvider;
import com.cloud.network.element.UserDataServiceProvider; import com.cloud.network.element.UserDataServiceProvider;
import com.cloud.network.guru.NetworkGuru; import com.cloud.network.guru.NetworkGuru;
import com.cloud.network.lb.LoadBalancingRulesManager; import com.cloud.network.lb.LoadBalancingRulesManager;
import com.cloud.network.rules.FirewallManager;
import com.cloud.network.rules.FirewallRule; import com.cloud.network.rules.FirewallRule;
import com.cloud.network.rules.FirewallRule.Purpose; import com.cloud.network.rules.FirewallRule.Purpose;
import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.rules.FirewallRuleVO;
import com.cloud.network.rules.LoadBalancerContainer.Scheme; import com.cloud.network.rules.LoadBalancerContainer.Scheme;
import com.cloud.network.rules.PortForwardingRuleVO; import com.cloud.network.rules.PortForwardingRuleVO;
import com.cloud.network.rules.RulesManager;
import com.cloud.network.rules.StaticNatRule; import com.cloud.network.rules.StaticNatRule;
import com.cloud.network.rules.StaticNatRuleImpl;
import com.cloud.network.rules.dao.PortForwardingRulesDao; import com.cloud.network.rules.dao.PortForwardingRulesDao;
import com.cloud.network.vpc.NetworkACLManager;
import com.cloud.network.vpc.VpcManager;
import com.cloud.network.vpc.dao.PrivateIpDao; import com.cloud.network.vpc.dao.PrivateIpDao;
import com.cloud.network.vpn.RemoteAccessVpnService; import com.cloud.network.vpn.RemoteAccessVpnService;
import com.cloud.offering.NetworkOffering; import com.cloud.offering.NetworkOffering;
@ -149,13 +140,10 @@ import com.cloud.offerings.NetworkOfferingVO;
import com.cloud.offerings.dao.NetworkOfferingDao; import com.cloud.offerings.dao.NetworkOfferingDao;
import com.cloud.offerings.dao.NetworkOfferingDetailsDao; import com.cloud.offerings.dao.NetworkOfferingDetailsDao;
import com.cloud.offerings.dao.NetworkOfferingServiceMapDao; import com.cloud.offerings.dao.NetworkOfferingServiceMapDao;
import com.cloud.server.ConfigurationServer;
import com.cloud.user.Account; import com.cloud.user.Account;
import com.cloud.user.AccountManager;
import com.cloud.user.ResourceLimitService; import com.cloud.user.ResourceLimitService;
import com.cloud.user.User; import com.cloud.user.User;
import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.AccountDao;
import com.cloud.user.dao.UserDao;
import com.cloud.utils.NumbersUtil; import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;
import com.cloud.utils.component.AdapterBase; import com.cloud.utils.component.AdapterBase;
@ -196,11 +184,11 @@ import com.cloud.vm.dao.VMInstanceDao;
* NetworkManagerImpl implements NetworkManager. * NetworkManagerImpl implements NetworkManager.
*/ */
@Local(value = { NetworkOrchestrationService.class}) @Local(value = { NetworkOrchestrationService.class})
public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrationService, Listener { public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestrationService, Listener {
static final Logger s_logger = Logger.getLogger(NetworkManagerImpl.class); static final Logger s_logger = Logger.getLogger(NetworkOrchestrator.class);
@Inject
EntityManager _entityMgr;
@Inject
EntityManager _entityMgr = null;
@Inject @Inject
DataCenterDao _dcDao = null; DataCenterDao _dcDao = null;
@Inject @Inject
@ -210,10 +198,6 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrat
@Inject @Inject
AccountDao _accountDao = null; AccountDao _accountDao = null;
@Inject @Inject
DomainDao _domainDao = null;
@Inject
UserDao _userDao = null;
@Inject
ConfigurationDao _configDao; ConfigurationDao _configDao;
@Inject @Inject
UserVmDao _userVmDao = null; UserVmDao _userVmDao = null;
@ -224,8 +208,6 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrat
@Inject @Inject
ConfigurationManager _configMgr; ConfigurationManager _configMgr;
@Inject @Inject
AccountVlanMapDao _accountVlanMapDao;
@Inject
NetworkOfferingDao _networkOfferingDao = null; NetworkOfferingDao _networkOfferingDao = null;
@Inject @Inject
NetworkDao _networksDao = null; NetworkDao _networksDao = null;
@ -318,8 +300,6 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrat
@Inject @Inject
NetworkServiceMapDao _ntwkSrvcDao; NetworkServiceMapDao _ntwkSrvcDao;
@Inject @Inject
StorageNetworkManager _stnwMgr;
@Inject
VpcManager _vpcMgr; VpcManager _vpcMgr;
@Inject @Inject
PrivateIpDao _privateIpDao; PrivateIpDao _privateIpDao;
@ -612,7 +592,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrat
return true; return true;
} }
protected NetworkManagerImpl() { protected NetworkOrchestrator() {
setStateMachine(); setStateMachine();
} }
@ -2103,7 +2083,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrat
@Override @Override
@DB @DB
public boolean destroyNetwork(long networkId, ReservationContext context) { public boolean destroyNetwork(long networkId, ReservationContext context) {
Account callerAccount = _accountMgr.getAccount(context.getCaller().getAccountId()); Account callerAccount = context.getAccount();
NetworkVO network = _networksDao.findById(networkId); NetworkVO network = _networksDao.findById(networkId);
if (network == null) { if (network == null) {
@ -2194,11 +2174,10 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrat
s_logger.debug("Network id=" + networkId + " is destroyed successfully, cleaning up corresponding resources now."); s_logger.debug("Network id=" + networkId + " is destroyed successfully, cleaning up corresponding resources now.");
} }
NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName()); NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
Account owner = _accountMgr.getAccount(network.getAccountId());
Transaction txn = Transaction.currentTxn(); Transaction txn = Transaction.currentTxn();
txn.start(); txn.start();
guru.trash(network, _networkOfferingDao.findById(network.getNetworkOfferingId()), owner); guru.trash(network, _networkOfferingDao.findById(network.getNetworkOfferingId()));
if (!deleteVlansInNetwork(network.getId(), context.getCaller().getId(), callerAccount)) { if (!deleteVlansInNetwork(network.getId(), context.getCaller().getId(), callerAccount)) {
success = false; success = false;
@ -2223,7 +2202,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrat
NetworkOffering ntwkOff = _entityMgr.findById(NetworkOffering.class, network.getNetworkOfferingId()); NetworkOffering ntwkOff = _entityMgr.findById(NetworkOffering.class, network.getNetworkOfferingId());
boolean updateResourceCount = resourceCountNeedsUpdate(ntwkOff, network.getAclType()); boolean updateResourceCount = resourceCountNeedsUpdate(ntwkOff, network.getAclType());
if (updateResourceCount) { if (updateResourceCount) {
_resourceLimitMgr.decrementResourceCount(owner.getId(), ResourceType.network); _resourceLimitMgr.decrementResourceCount(network.getAccountId(), ResourceType.network);
} }
txn.commit(); txn.commit();
} }
@ -2266,6 +2245,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrat
public class NetworkGarbageCollector implements Runnable { public class NetworkGarbageCollector implements Runnable {
@Override @Override
public void run() { public void run() {
ServerContexts.registerSystemContext();
GlobalLock gcLock = GlobalLock.getInternLock("Network.GC.Lock"); GlobalLock gcLock = GlobalLock.getInternLock("Network.GC.Lock");
try { try {
if(gcLock.lock(3)) { if(gcLock.lock(3)) {
@ -2277,6 +2257,7 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrat
} }
} finally { } finally {
gcLock.releaseRef(); gcLock.releaseRef();
ServerContexts.unregisterSystemContext();
} }
} }
@ -2311,6 +2292,8 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrat
_lastNetworkIdsToFree = stillFree; _lastNetworkIdsToFree = stillFree;
CallContext cctx = CallContext.current();
for (Long networkId : shutdownList) { for (Long networkId : shutdownList) {
// If network is removed, unset gc flag for it // If network is removed, unset gc flag for it
@ -2320,8 +2303,8 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkOrchestrat
} else { } else {
try { try {
User caller = _accountMgr.getSystemUser(); User caller = cctx.getCallingUser();
Account owner = _accountMgr.getAccount(_networksDao.findById(networkId).getAccountId()); Account owner = cctx.getCallingAccount();
ReservationContext context = new ReservationContextImpl(null, null, caller, owner); ReservationContext context = new ReservationContextImpl(null, null, caller, owner);

View File

@ -45,7 +45,10 @@ import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService;
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService.VolumeApiResult; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeService.VolumeApiResult;
import org.apache.cloudstack.framework.async.AsyncCallFuture; import org.apache.cloudstack.framework.async.AsyncCallFuture;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao; import org.apache.cloudstack.framework.config.ConfigDepot;
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.framework.config.ConfigValue;
import org.apache.cloudstack.framework.config.Configurable;
import org.apache.cloudstack.storage.command.CommandResult; import org.apache.cloudstack.storage.command.CommandResult;
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao; import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO; import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
@ -55,7 +58,7 @@ import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
import com.cloud.agent.api.to.DataTO; import com.cloud.agent.api.to.DataTO;
import com.cloud.agent.api.to.DiskTO; import com.cloud.agent.api.to.DiskTO;
import com.cloud.agent.api.to.VirtualMachineTO; import com.cloud.agent.api.to.VirtualMachineTO;
import com.cloud.configuration.Config; import com.cloud.agent.manager.allocator.PodAllocator;
import com.cloud.configuration.Resource.ResourceType; import com.cloud.configuration.Resource.ResourceType;
import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter;
import com.cloud.dc.Pod; import com.cloud.dc.Pod;
@ -73,7 +76,6 @@ import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.offering.DiskOffering; import com.cloud.offering.DiskOffering;
import com.cloud.offering.ServiceOffering; import com.cloud.offering.ServiceOffering;
import com.cloud.org.Cluster; import com.cloud.org.Cluster;
import com.cloud.resource.ResourceManager;
import com.cloud.storage.DataStoreRole; import com.cloud.storage.DataStoreRole;
import com.cloud.storage.ScopeType; import com.cloud.storage.ScopeType;
import com.cloud.storage.Snapshot; import com.cloud.storage.Snapshot;
@ -91,7 +93,6 @@ import com.cloud.template.VirtualMachineTemplate;
import com.cloud.user.Account; import com.cloud.user.Account;
import com.cloud.user.ResourceLimitService; import com.cloud.user.ResourceLimitService;
import com.cloud.uservm.UserVm; import com.cloud.uservm.UserVm;
import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair; import com.cloud.utils.Pair;
import com.cloud.utils.component.ManagerBase; import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.db.DB; import com.cloud.utils.db.DB;
@ -106,7 +107,7 @@ import com.cloud.vm.VirtualMachine.State;
import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfile;
import com.cloud.vm.VirtualMachineProfileImpl; import com.cloud.vm.VirtualMachineProfileImpl;
public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrationService { public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrationService, Configurable {
private static final Logger s_logger = Logger.getLogger(VolumeOrchestrator.class); private static final Logger s_logger = Logger.getLogger(VolumeOrchestrator.class);
@Inject @Inject
@ -124,10 +125,6 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
@Inject @Inject
protected ResourceLimitService _resourceLimitMgr; protected ResourceLimitService _resourceLimitMgr;
@Inject @Inject
protected ResourceManager _resourceMgr;
@Inject
ConfigurationDao _configDao;
@Inject
VolumeDetailsDao _volDetailDao; VolumeDetailsDao _volDetailDao;
@Inject @Inject
DataStoreManager dataStoreMgr; DataStoreManager dataStoreMgr;
@ -139,9 +136,12 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
TemplateDataFactory tmplFactory; TemplateDataFactory tmplFactory;
@Inject @Inject
SnapshotDataFactory snapshotFactory; SnapshotDataFactory snapshotFactory;
@Inject
ConfigDepot _configDepot;
private final StateMachine2<Volume.State, Volume.Event, Volume> _volStateMachine; private final StateMachine2<Volume.State, Volume.Event, Volume> _volStateMachine;
private long _maxVolumeSizeInGb; private ConfigValue<Long> _maxVolumeSizeInGb;
private boolean _recreateSystemVmEnabled; private ConfigValue<Boolean> _recreateSystemVmEnabled;
protected List<StoragePoolAllocator> _storagePoolAllocators; protected List<StoragePoolAllocator> _storagePoolAllocators;
public List<StoragePoolAllocator> getStoragePoolAllocators() { public List<StoragePoolAllocator> getStoragePoolAllocators() {
@ -152,6 +152,16 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
this._storagePoolAllocators = _storagePoolAllocators; this._storagePoolAllocators = _storagePoolAllocators;
} }
protected List<PodAllocator> _podAllocators;
public List<PodAllocator> getPodAllocators() {
return _podAllocators;
}
public void setPodAllocators(List<PodAllocator> _podAllocators) {
this._podAllocators = _podAllocators;
}
protected VolumeOrchestrator() { protected VolumeOrchestrator() {
_volStateMachine = Volume.State.getStateMachine(); _volStateMachine = Volume.State.getStateMachine();
} }
@ -243,8 +253,19 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
return null; return null;
} }
public Pair<Pod, Long> findPod(VirtualMachineTemplate template, ServiceOffering offering, DataCenter dc, long accountId, Set<Long> avoids) {
for (PodAllocator allocator : _podAllocators) {
final Pair<Pod, Long> pod = allocator.allocateTo(template, offering, dc, accountId, avoids);
if (pod != null) {
return pod;
}
}
return null;
}
@DB @DB
protected VolumeInfo createVolumeFromSnapshot(VolumeVO volume, Snapshot snapshot) throws StorageUnavailableException { @Override
public VolumeInfo createVolumeFromSnapshot(Volume volume, Snapshot snapshot) throws StorageUnavailableException {
Account account = _entityMgr.findById(Account.class, volume.getAccountId()); Account account = _entityMgr.findById(Account.class, volume.getAccountId());
final HashSet<StoragePool> poolsToAvoid = new HashSet<StoragePool>(); final HashSet<StoragePool> poolsToAvoid = new HashSet<StoragePool>();
@ -258,7 +279,7 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
DiskProfile dskCh = new DiskProfile(volume, diskOffering, snapshot.getHypervisorType()); DiskProfile dskCh = new DiskProfile(volume, diskOffering, snapshot.getHypervisorType());
// Determine what pod to store the volume in // Determine what pod to store the volume in
while ((pod = _resourceMgr.findPod(null, null, dc, account.getId(), podsToAvoid)) != null) { while ((pod = findPod(null, null, dc, account.getId(), podsToAvoid)) != null) {
podsToAvoid.add(pod.first().getId()); podsToAvoid.add(pod.first().getId());
// Determine what storage pool to store the volume in // Determine what storage pool to store the volume in
while ((pool = findStoragePool(dskCh, dc, pod.first(), null, null, null, poolsToAvoid)) != null) { while ((pool = findStoragePool(dskCh, dc, pod.first(), null, null, null, poolsToAvoid)) != null) {
@ -322,25 +343,6 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
} }
} }
protected VolumeVO createVolumeFromSnapshot(VolumeVO volume, long snapshotId) throws StorageUnavailableException {
VolumeInfo createdVolume = null;
Snapshot snapshot = _entityMgr.findById(Snapshot.class, snapshotId);
createdVolume = createVolumeFromSnapshot(volume, snapshot);
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE,
createdVolume.getAccountId(),
createdVolume.getDataCenterId(),
createdVolume.getId(),
createdVolume.getName(),
createdVolume.getDiskOfferingId(),
null,
createdVolume.getSize(),
Volume.class.getName(),
createdVolume.getUuid());
return _volsDao.findById(createdVolume.getId());
}
@DB @DB
public VolumeInfo copyVolumeFromSecToPrimary(VolumeInfo volume, VirtualMachine vm, VirtualMachineTemplate template, DataCenter dc, Pod pod, Long clusterId, public VolumeInfo copyVolumeFromSecToPrimary(VolumeInfo volume, VirtualMachine vm, VirtualMachineTemplate template, DataCenter dc, Pod pod, Long clusterId,
ServiceOffering offering, DiskOffering diskOffering, List<StoragePool> avoids, long size, HypervisorType hyperType) throws NoTransitionException { ServiceOffering offering, DiskOffering diskOffering, List<StoragePool> avoids, long size, HypervisorType hyperType) throws NoTransitionException {
@ -487,7 +489,7 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
public boolean validateVolumeSizeRange(long size) { public boolean validateVolumeSizeRange(long size) {
if (size < 0 || (size > 0 && size < (1024 * 1024 * 1024))) { if (size < 0 || (size > 0 && size < (1024 * 1024 * 1024))) {
throw new InvalidParameterValueException("Please specify a size of at least 1 Gb."); throw new InvalidParameterValueException("Please specify a size of at least 1 Gb.");
} else if (size > (_maxVolumeSizeInGb * 1024 * 1024 * 1024)) { } else if (size > (_maxVolumeSizeInGb.value() * 1024 * 1024 * 1024)) {
throw new InvalidParameterValueException("volume size " + size + ", but the maximum size allowed is " + _maxVolumeSizeInGb + " Gb."); throw new InvalidParameterValueException("volume size " + size + ", but the maximum size allowed is " + _maxVolumeSizeInGb + " Gb.");
} }
@ -907,7 +909,7 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
} }
private List<VolumeTask> getTasks(List<VolumeVO> vols, Map<Volume, StoragePool> destVols) throws StorageUnavailableException { private List<VolumeTask> getTasks(List<VolumeVO> vols, Map<Volume, StoragePool> destVols) throws StorageUnavailableException {
boolean recreate = _recreateSystemVmEnabled; boolean recreate = _recreateSystemVmEnabled.value();
List<VolumeTask> tasks = new ArrayList<VolumeTask>(); List<VolumeTask> tasks = new ArrayList<VolumeTask>();
for (VolumeVO vol : vols) { for (VolumeVO vol : vols) {
StoragePoolVO assignedPool = null; StoragePoolVO assignedPool = null;
@ -979,7 +981,7 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
private Pair<VolumeVO, DataStore> recreateVolume(VolumeVO vol, VirtualMachineProfile vm, DeployDestination dest) throws StorageUnavailableException { private Pair<VolumeVO, DataStore> recreateVolume(VolumeVO vol, VirtualMachineProfile vm, DeployDestination dest) throws StorageUnavailableException {
VolumeVO newVol; VolumeVO newVol;
boolean recreate = _recreateSystemVmEnabled; boolean recreate = _recreateSystemVmEnabled.value();
DataStore destPool = null; DataStore destPool = null;
if (recreate && (dest.getStorageForDisks() == null || dest.getStorageForDisks().get(vol) == null)) { if (recreate && (dest.getStorageForDisks() == null || dest.getStorageForDisks().get(vol) == null)) {
destPool = dataStoreMgr.getDataStore(vol.getPoolId(), DataStoreRole.Primary); destPool = dataStoreMgr.getDataStore(vol.getPoolId(), DataStoreRole.Primary);
@ -1092,13 +1094,35 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati
return true; return true;
} }
public static final ConfigKey<Long> MaxVolumeSize = new ConfigKey<Long>(Long.class,
"storage.max.volume.size",
"Storage",
"2000",
"The maximum size for a volume (in GB).",
true);
public static final ConfigKey<Boolean> RecreatableSystemVmEnabled = new ConfigKey<Boolean>(Boolean.class,
"recreate.systemvm.enabled",
"Advanced",
"false",
"If true, will recreate system vm root disk whenever starting system vm",
true);
@Override
public ConfigKey<?>[] getConfigKeys() {
return new ConfigKey<?>[] {RecreatableSystemVmEnabled, MaxVolumeSize};
}
@Override
public String getConfigComponentName() {
return VolumeOrchestrationService.class.getSimpleName();
}
@Override @Override
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
String maxVolumeSizeInGbString = _configDao.getValue("storage.max.volume.size"); _maxVolumeSizeInGb = _configDepot.get(MaxVolumeSize);
_maxVolumeSizeInGb = NumbersUtil.parseLong(maxVolumeSizeInGbString, 2000);
String value = _configDao.getValue(Config.RecreateSystemVmEnabled.key()); _recreateSystemVmEnabled = _configDepot.get(RecreatableSystemVmEnabled);
_recreateSystemVmEnabled = Boolean.parseBoolean(value);
return true; return true;
} }

View File

@ -38,20 +38,10 @@
<artifactId>cloud-framework-ipc</artifactId> <artifactId>cloud-framework-ipc</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-engine-components-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.cloudstack</groupId> <groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-framework-db</artifactId> <artifactId>cloud-framework-db</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>
<build>
<defaultGoal>install</defaultGoal>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
</build>
</project> </project>

View File

@ -23,21 +23,17 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collections;
import javax.ejb.Local; import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import javax.naming.ConfigurationException; import javax.naming.ConfigurationException;
import com.cloud.storage.VMTemplateStorageResourceAssoc;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.DataCenterDao;
import com.cloud.domain.dao.DomainDao; import com.cloud.domain.dao.DomainDao;
import com.cloud.host.Host; import com.cloud.host.Host;
@ -48,6 +44,7 @@ import com.cloud.server.ResourceTag.TaggedResourceType;
import com.cloud.storage.Storage; import com.cloud.storage.Storage;
import com.cloud.storage.Storage.ImageFormat; import com.cloud.storage.Storage.ImageFormat;
import com.cloud.storage.Storage.TemplateType; import com.cloud.storage.Storage.TemplateType;
import com.cloud.storage.VMTemplateStorageResourceAssoc;
import com.cloud.storage.VMTemplateVO; import com.cloud.storage.VMTemplateVO;
import com.cloud.storage.VMTemplateZoneVO; import com.cloud.storage.VMTemplateZoneVO;
import com.cloud.tags.ResourceTagVO; import com.cloud.tags.ResourceTagVO;
@ -73,8 +70,6 @@ public class VMTemplateDaoImpl extends GenericDaoBase<VMTemplateVO, Long> implem
@Inject @Inject
VMTemplateDetailsDao _templateDetailsDao; VMTemplateDetailsDao _templateDetailsDao;
@Inject
ConfigurationDao _configDao;
@Inject @Inject
HostDao _hostDao; HostDao _hostDao;
@Inject @Inject

View File

@ -254,8 +254,7 @@ public class BigSwitchVnsGuestNetworkGuru extends GuestNetworkGuru {
} }
@Override @Override
public boolean trash(Network network, NetworkOffering offering, public boolean trash(Network network, NetworkOffering offering) {
Account owner) { return super.trash(network, offering);
return super.trash(network, offering, owner);
} }
} }

View File

@ -170,10 +170,9 @@ public class MidoNetGuestNetworkGuru extends GuestNetworkGuru {
} }
@Override @Override
public boolean trash(Network network, NetworkOffering offering, public boolean trash(Network network, NetworkOffering offering) {
Account owner) {
s_logger.debug("trash called with network: " + network.toString()); s_logger.debug("trash called with network: " + network.toString());
return super.trash(network, offering, owner); return super.trash(network, offering);
} }
} }

View File

@ -230,7 +230,7 @@ public class MidoNetPublicNetworkGuru extends PublicNetworkGuru {
} }
@Override @Override
public boolean trash(Network network, NetworkOffering offering, Account owner) { public boolean trash(Network network, NetworkOffering offering) {
s_logger.debug("trash called with network: " + network.toString()); s_logger.debug("trash called with network: " + network.toString());
return true; return true;
} }

View File

@ -256,9 +256,8 @@ public class NiciraNvpGuestNetworkGuru extends GuestNetworkGuru {
} }
@Override @Override
public boolean trash(Network network, NetworkOffering offering, public boolean trash(Network network, NetworkOffering offering) {
Account owner) { return super.trash(network, offering);
return super.trash(network, offering, owner);
} }

View File

@ -50,6 +50,13 @@
<artifactId>cloud-framework-jobs</artifactId> <artifactId>cloud-framework-jobs</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<!--
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-engine-orchestration</artifactId>
<version>${project.version}</version>
</dependency>
-->
<dependency> <dependency>
<groupId>org.apache.httpcomponents</groupId> <groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId> <artifactId>httpclient</artifactId>
@ -111,6 +118,11 @@
<artifactId>cloud-framework-config</artifactId> <artifactId>cloud-framework-config</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.cloudstack</groupId>
<artifactId>cloud-engine-components-api</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
<resources> <resources>

View File

@ -232,7 +232,7 @@ public class ControlNetworkGuru extends PodBasedNetworkGuru implements NetworkGu
} }
@Override @Override
public boolean trash(Network config, NetworkOffering offering, Account owner) { public boolean trash(Network config, NetworkOffering offering) {
return true; return true;
} }

View File

@ -303,7 +303,7 @@ public class DirectNetworkGuru extends AdapterBase implements NetworkGuru {
@Override @Override
@DB @DB
public boolean trash(Network network, NetworkOffering offering, Account owner) { public boolean trash(Network network, NetworkOffering offering) {
//Have to remove all placeholder nics //Have to remove all placeholder nics
List<NicVO> nics = _nicDao.listPlaceholderNicsByNetworkId(network.getId()); List<NicVO> nics = _nicDao.listPlaceholderNicsByNetworkId(network.getId());
Transaction txn = Transaction.currentTxn(); Transaction txn = Transaction.currentTxn();

View File

@ -424,7 +424,7 @@ public abstract class GuestNetworkGuru extends AdapterBase implements NetworkGur
} }
@Override @Override
public boolean trash(Network network, NetworkOffering offering, Account owner) { public boolean trash(Network network, NetworkOffering offering) {
return true; return true;
} }

View File

@ -166,7 +166,7 @@ public class PodBasedNetworkGuru extends AdapterBase implements NetworkGuru {
} }
@Override @Override
public boolean trash(Network config, NetworkOffering offering, Account owner) { public boolean trash(Network config, NetworkOffering offering) {
return true; return true;
} }
} }

View File

@ -234,7 +234,7 @@ public class PrivateNetworkGuru extends AdapterBase implements NetworkGuru {
} }
@Override @Override
public boolean trash(Network network, NetworkOffering offering, Account owner) { public boolean trash(Network network, NetworkOffering offering) {
return true; return true;
} }

View File

@ -215,7 +215,7 @@ public class PublicNetworkGuru extends AdapterBase implements NetworkGuru {
} }
@Override @Override
public boolean trash(Network network, NetworkOffering offering, Account owner) { public boolean trash(Network network, NetworkOffering offering) {
return true; return true;
} }

View File

@ -177,7 +177,7 @@ public class StorageNetworkGuru extends PodBasedNetworkGuru implements NetworkGu
} }
@Override @Override
public boolean trash(Network network, NetworkOffering offering, Account owner) { public boolean trash(Network network, NetworkOffering offering) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return false; return false;
} }

View File

@ -31,7 +31,6 @@ import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
@ -162,7 +161,6 @@ import com.cloud.vm.VirtualMachine.State;
import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.NicDao;
import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.UserVmDao;
@Component
@Local(value = { LoadBalancingRulesManager.class, LoadBalancingRulesService.class }) @Local(value = { LoadBalancingRulesManager.class, LoadBalancingRulesService.class })
public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements LoadBalancingRulesManager, public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements LoadBalancingRulesManager,
LoadBalancingRulesService { LoadBalancingRulesService {

View File

@ -18,14 +18,11 @@ package com.cloud.resource;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupCommand;
import com.cloud.agent.api.StartupRoutingCommand; import com.cloud.agent.api.StartupRoutingCommand;
import com.cloud.dc.DataCenter;
import com.cloud.dc.DataCenterVO; import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO; import com.cloud.dc.HostPodVO;
import com.cloud.dc.Pod;
import com.cloud.dc.PodCluster; import com.cloud.dc.PodCluster;
import com.cloud.exception.AgentUnavailableException; import com.cloud.exception.AgentUnavailableException;
import com.cloud.host.Host; import com.cloud.host.Host;
@ -34,10 +31,7 @@ import com.cloud.host.HostStats;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.offering.ServiceOffering;
import com.cloud.resource.ResourceState.Event; import com.cloud.resource.ResourceState.Event;
import com.cloud.template.VirtualMachineTemplate;
import com.cloud.utils.Pair;
import com.cloud.utils.fsm.NoTransitionException; import com.cloud.utils.fsm.NoTransitionException;
/** /**
@ -117,16 +111,6 @@ public interface ResourceManager extends ResourceService {
public List<HostVO> listHostsByNameLike(String name); public List<HostVO> listHostsByNameLike(String name);
/**
* Find a pod based on the user id, template, and data center.
*
* @param template
* @param dc
* @param userId
* @return
*/
Pair<Pod, Long> findPod(VirtualMachineTemplate template, ServiceOffering offering, DataCenter dc, long accountId, Set<Long> avoids);
HostStats getHostStatistics(long hostId); HostStats getHostStatistics(long hostId);
Long getGuestOSCategoryId(long hostId); Long getGuestOSCategoryId(long hostId);

View File

@ -25,7 +25,6 @@ import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import javax.ejb.Local; import javax.ejb.Local;
import javax.inject.Inject; import javax.inject.Inject;
@ -67,7 +66,6 @@ import com.cloud.agent.api.UnsupportedAnswer;
import com.cloud.agent.api.UpdateHostPasswordCommand; import com.cloud.agent.api.UpdateHostPasswordCommand;
import com.cloud.agent.manager.AgentAttache; import com.cloud.agent.manager.AgentAttache;
import com.cloud.agent.manager.ClusteredAgentManagerImpl; import com.cloud.agent.manager.ClusteredAgentManagerImpl;
import com.cloud.agent.manager.allocator.PodAllocator;
import com.cloud.agent.transport.Request; import com.cloud.agent.transport.Request;
import com.cloud.api.ApiDBUtils; import com.cloud.api.ApiDBUtils;
import com.cloud.capacity.Capacity; import com.cloud.capacity.Capacity;
@ -79,13 +77,11 @@ import com.cloud.configuration.ConfigurationManager;
import com.cloud.dc.ClusterDetailsDao; import com.cloud.dc.ClusterDetailsDao;
import com.cloud.dc.ClusterDetailsVO; import com.cloud.dc.ClusterDetailsVO;
import com.cloud.dc.ClusterVO; import com.cloud.dc.ClusterVO;
import com.cloud.dc.DataCenter;
import com.cloud.dc.DataCenter.NetworkType; import com.cloud.dc.DataCenter.NetworkType;
import com.cloud.dc.DataCenterIpAddressVO; import com.cloud.dc.DataCenterIpAddressVO;
import com.cloud.dc.DataCenterVO; import com.cloud.dc.DataCenterVO;
import com.cloud.dc.DedicatedResourceVO; import com.cloud.dc.DedicatedResourceVO;
import com.cloud.dc.HostPodVO; import com.cloud.dc.HostPodVO;
import com.cloud.dc.Pod;
import com.cloud.dc.PodCluster; import com.cloud.dc.PodCluster;
import com.cloud.dc.dao.ClusterDao; import com.cloud.dc.dao.ClusterDao;
import com.cloud.dc.dao.ClusterVSMMapDao; import com.cloud.dc.dao.ClusterVSMMapDao;
@ -119,7 +115,6 @@ import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.hypervisor.kvm.discoverer.KvmDummyResourceBase; import com.cloud.hypervisor.kvm.discoverer.KvmDummyResourceBase;
import com.cloud.network.dao.IPAddressDao; import com.cloud.network.dao.IPAddressDao;
import com.cloud.network.dao.IPAddressVO; import com.cloud.network.dao.IPAddressVO;
import com.cloud.offering.ServiceOffering;
import com.cloud.org.Cluster; import com.cloud.org.Cluster;
import com.cloud.org.Grouping; import com.cloud.org.Grouping;
import com.cloud.org.Grouping.AllocationState; import com.cloud.org.Grouping.AllocationState;
@ -136,11 +131,9 @@ import com.cloud.storage.dao.GuestOSCategoryDao;
import com.cloud.storage.dao.StoragePoolHostDao; import com.cloud.storage.dao.StoragePoolHostDao;
import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.storage.secondary.SecondaryStorageVmManager; import com.cloud.storage.secondary.SecondaryStorageVmManager;
import com.cloud.template.VirtualMachineTemplate;
import com.cloud.user.Account; import com.cloud.user.Account;
import com.cloud.user.AccountManager; import com.cloud.user.AccountManager;
import com.cloud.user.User; import com.cloud.user.User;
import com.cloud.utils.Pair;
import com.cloud.utils.StringUtils; import com.cloud.utils.StringUtils;
import com.cloud.utils.UriUtils; import com.cloud.utils.UriUtils;
import com.cloud.utils.component.Manager; import com.cloud.utils.component.Manager;
@ -237,15 +230,6 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
@Inject @Inject
protected StoragePoolHostDao _storagePoolHostDao; protected StoragePoolHostDao _storagePoolHostDao;
protected List<PodAllocator> _podAllocators;
public List<PodAllocator> getPodAllocators() {
return _podAllocators;
}
public void setPodAllocators(List<PodAllocator> _podAllocators) {
this._podAllocators = _podAllocators;
}
@Inject @Inject
protected VMTemplateDao _templateDao; protected VMTemplateDao _templateDao;
@ -2472,17 +2456,6 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
return sc.list(); return sc.list();
} }
@Override
public Pair<Pod, Long> findPod(VirtualMachineTemplate template, ServiceOffering offering, DataCenter dc, long accountId,
Set<Long> avoids) {
for (PodAllocator allocator : _podAllocators) {
final Pair<Pod, Long> pod = allocator.allocateTo(template, offering, dc, accountId, avoids);
if (pod != null) {
return pod;
}
}
return null;
}
@Override @Override
public HostStats getHostStatistics(long hostId) { public HostStats getHostStatistics(long hostId) {

View File

@ -18,10 +18,8 @@ package com.cloud.storage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
@ -48,7 +46,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.HostScope;
import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo; import org.apache.cloudstack.engine.subsystem.api.storage.PrimaryDataStoreInfo;
import org.apache.cloudstack.engine.subsystem.api.storage.Scope; import org.apache.cloudstack.engine.subsystem.api.storage.Scope;
import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotDataFactory;
import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotInfo;
import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator; import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
import org.apache.cloudstack.engine.subsystem.api.storage.TemplateDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.TemplateDataFactory;
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeDataFactory; import org.apache.cloudstack.engine.subsystem.api.storage.VolumeDataFactory;
@ -86,7 +83,6 @@ import com.cloud.consoleproxy.ConsoleProxyManager;
import com.cloud.dc.ClusterVO; import com.cloud.dc.ClusterVO;
import com.cloud.dc.DataCenter; import com.cloud.dc.DataCenter;
import com.cloud.dc.DataCenterVO; import com.cloud.dc.DataCenterVO;
import com.cloud.dc.Pod;
import com.cloud.dc.dao.ClusterDao; import com.cloud.dc.dao.ClusterDao;
import com.cloud.dc.dao.DataCenterDao; import com.cloud.dc.dao.DataCenterDao;
import com.cloud.dc.dao.HostPodDao; import com.cloud.dc.dao.HostPodDao;
@ -140,7 +136,6 @@ import com.cloud.user.dao.UserDao;
import com.cloud.user.dao.VmDiskStatisticsDao; import com.cloud.user.dao.VmDiskStatisticsDao;
import com.cloud.utils.EnumUtils; import com.cloud.utils.EnumUtils;
import com.cloud.utils.NumbersUtil; import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair;
import com.cloud.utils.UriUtils; import com.cloud.utils.UriUtils;
import com.cloud.utils.component.ManagerBase; import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.db.DB; import com.cloud.utils.db.DB;
@ -149,7 +144,6 @@ import com.cloud.utils.db.Transaction;
import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.exception.CloudRuntimeException;
import com.cloud.utils.fsm.NoTransitionException; import com.cloud.utils.fsm.NoTransitionException;
import com.cloud.utils.fsm.StateMachine2; import com.cloud.utils.fsm.StateMachine2;
import com.cloud.vm.DiskProfile;
import com.cloud.vm.UserVmManager; import com.cloud.vm.UserVmManager;
import com.cloud.vm.UserVmVO; import com.cloud.vm.UserVmVO;
import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VMInstanceVO;
@ -692,7 +686,7 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
protected VolumeVO createVolumeFromSnapshot(VolumeVO volume, long snapshotId) throws StorageUnavailableException { protected VolumeVO createVolumeFromSnapshot(VolumeVO volume, long snapshotId) throws StorageUnavailableException {
VolumeInfo createdVolume = null; VolumeInfo createdVolume = null;
SnapshotVO snapshot = _snapshotDao.findById(snapshotId); SnapshotVO snapshot = _snapshotDao.findById(snapshotId);
createdVolume = createVolumeFromSnapshot(volume, snapshot); createdVolume = _volumeMgr.createVolumeFromSnapshot(volume, snapshot);
UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, createdVolume.getAccountId(), createdVolume.getDataCenterId(), createdVolume.getId(), UsageEventUtils.publishUsageEvent(EventTypes.EVENT_VOLUME_CREATE, createdVolume.getAccountId(), createdVolume.getDataCenterId(), createdVolume.getId(),
createdVolume.getName(), createdVolume.getDiskOfferingId(), null, createdVolume.getSize(), Volume.class.getName(), createdVolume.getUuid()); createdVolume.getName(), createdVolume.getDiskOfferingId(), null, createdVolume.getSize(), Volume.class.getName(), createdVolume.getUuid());
@ -700,56 +694,6 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
return _volsDao.findById(createdVolume.getId()); return _volsDao.findById(createdVolume.getId());
} }
@DB
protected VolumeInfo createVolumeFromSnapshot(VolumeVO volume, SnapshotVO snapshot) throws StorageUnavailableException {
Account account = _accountDao.findById(volume.getAccountId());
final HashSet<StoragePool> poolsToAvoid = new HashSet<StoragePool>();
StoragePool pool = null;
Set<Long> podsToAvoid = new HashSet<Long>();
Pair<Pod, Long> pod = null;
DiskOfferingVO diskOffering = _diskOfferingDao.findByIdIncludingRemoved(volume.getDiskOfferingId());
DataCenterVO dc = _dcDao.findById(volume.getDataCenterId());
DiskProfile dskCh = new DiskProfile(volume, diskOffering, snapshot.getHypervisorType());
// Determine what pod to store the volume in
while ((pod = _resourceMgr.findPod(null, null, dc, account.getId(), podsToAvoid)) != null) {
podsToAvoid.add(pod.first().getId());
// Determine what storage pool to store the volume in
while ((pool = _volumeMgr.findStoragePool(dskCh, dc, pod.first(), null, null, null, poolsToAvoid)) != null) {
break;
}
}
if (pool == null) {
String msg = "There are no available storage pools to store the volume in";
s_logger.info(msg);
throw new StorageUnavailableException(msg, -1);
}
VolumeInfo vol = volFactory.getVolume(volume.getId());
DataStore store = dataStoreMgr.getDataStore(pool.getId(), DataStoreRole.Primary);
SnapshotInfo snapInfo = snapshotFactory.getSnapshot(snapshot.getId(), DataStoreRole.Image);
AsyncCallFuture<VolumeApiResult> future = volService.createVolumeFromSnapshot(vol, store, snapInfo);
try {
VolumeApiResult result = future.get();
if (result.isFailed()) {
s_logger.debug("Failed to create volume from snapshot:" + result.getResult());
throw new CloudRuntimeException("Failed to create volume from snapshot:" + result.getResult());
}
return result.getVolume();
} catch (InterruptedException e) {
s_logger.debug("Failed to create volume from snapshot", e);
throw new CloudRuntimeException("Failed to create volume from snapshot", e);
} catch (ExecutionException e) {
s_logger.debug("Failed to create volume from snapshot", e);
throw new CloudRuntimeException("Failed to create volume from snapshot", e);
}
}
@Override @Override
@DB @DB
@ActionEvent(eventType = EventTypes.EVENT_VOLUME_RESIZE, eventDescription = "resizing volume", async = true) @ActionEvent(eventType = EventTypes.EVENT_VOLUME_RESIZE, eventDescription = "resizing volume", async = true)

View File

@ -31,7 +31,6 @@ import javax.inject.Inject;
import javax.naming.ConfigurationException; import javax.naming.ConfigurationException;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.springframework.stereotype.Component;
import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.BaseListTemplateOrIsoPermissionsCmd; import org.apache.cloudstack.api.BaseListTemplateOrIsoPermissionsCmd;
@ -183,7 +182,6 @@ import com.cloud.vm.VirtualMachine.State;
import com.cloud.vm.dao.UserVmDao; import com.cloud.vm.dao.UserVmDao;
import com.cloud.vm.dao.VMInstanceDao; import com.cloud.vm.dao.VMInstanceDao;
@Component
@Local(value = { TemplateManager.class, TemplateApiService.class }) @Local(value = { TemplateManager.class, TemplateApiService.class })
public class TemplateManagerImpl extends ManagerBase implements TemplateManager, TemplateApiService { public class TemplateManagerImpl extends ManagerBase implements TemplateManager, TemplateApiService {
private final static Logger s_logger = Logger.getLogger(TemplateManagerImpl.class); private final static Logger s_logger = Logger.getLogger(TemplateManagerImpl.class);

View File

@ -54,6 +54,7 @@ import com.cloud.network.lb.LoadBalancingRule.LbDestination;
import com.cloud.network.lb.LoadBalancingRule.LbHealthCheckPolicy; import com.cloud.network.lb.LoadBalancingRule.LbHealthCheckPolicy;
import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy; import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy;
import com.cloud.network.lb.LoadBalancingRulesManager; import com.cloud.network.lb.LoadBalancingRulesManager;
import com.cloud.network.lb.LoadBalancingRulesService;
import com.cloud.network.rules.FirewallRule.State; import com.cloud.network.rules.FirewallRule.State;
import com.cloud.network.rules.LoadBalancerContainer.Scheme; import com.cloud.network.rules.LoadBalancerContainer.Scheme;
import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.projects.Project.ListProjectResourcesCriteria;
@ -89,6 +90,8 @@ public class ApplicationLoadBalancerManagerImpl extends ManagerBase implements A
@Inject NetworkOrchestrationService _ntwkMgr; @Inject NetworkOrchestrationService _ntwkMgr;
@Inject @Inject
IpAddressManager _ipAddrMgr; IpAddressManager _ipAddrMgr;
@Inject
LoadBalancingRulesService _lbService;
@Override @Override
@ -362,7 +365,7 @@ public class ApplicationLoadBalancerManagerImpl extends ManagerBase implements A
@Override @Override
public boolean deleteApplicationLoadBalancer(long id) { public boolean deleteApplicationLoadBalancer(long id) {
return _lbMgr.deleteLoadBalancerRule(id, true); return _lbService.deleteLoadBalancerRule(id, true);
} }
@Override @Override

View File

@ -1,69 +0,0 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package com.cloud.network;
import javax.inject.Inject;
import junit.framework.Assert;
import org.apache.log4j.Logger;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
import com.cloud.network.element.DhcpServiceProvider;
import com.cloud.network.element.IpDeployer;
import com.cloud.utils.component.AdapterBase;
@Ignore("Requires database to be set up")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="classpath:/testContext.xml")
//@ComponentSetup(managerName="management-server", setupXml="network-mgr-component.xml")
public class NetworkManagerTest {
private static final Logger s_logger = Logger.getLogger(NetworkManagerTest.class);
@Inject NetworkOrchestrationService _networkMgr;
@Test
public void testInjected() {
NetworkManagerImpl networkMgr = (NetworkManagerImpl)_networkMgr;
Assert.assertTrue(networkMgr._ipDeployers.iterator().hasNext());
Assert.assertTrue(networkMgr._networkElements.iterator().hasNext());
Assert.assertTrue(networkMgr._dhcpProviders.iterator().hasNext());
Assert.assertNotNull(networkMgr._networkModel);
Assert.assertNotNull(AdapterBase.getAdapterByName(networkMgr._ipDeployers, "VirtualRouter"));
Assert.assertNotNull(AdapterBase.getAdapterByName(networkMgr._ipDeployers, "VpcVirtualRouter"));
Assert.assertNotNull(AdapterBase.getAdapterByName(networkMgr._dhcpProviders, "VirtualRouter"));
Assert.assertNotNull(AdapterBase.getAdapterByName(networkMgr._dhcpProviders, "VpcVirtualRouter"));
Assert.assertTrue(AdapterBase.getAdapterByName(networkMgr._ipDeployers, "VirtualRouter") instanceof IpDeployer);
Assert.assertTrue(AdapterBase.getAdapterByName(networkMgr._dhcpProviders, "VirtualRouter") instanceof DhcpServiceProvider);
s_logger.info("Done testing injection of network manager's network elements");
}
}

View File

@ -19,7 +19,6 @@ package com.cloud.resource;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set;
import javax.ejb.Local; import javax.ejb.Local;
import javax.naming.ConfigurationException; import javax.naming.ConfigurationException;
@ -36,10 +35,8 @@ import org.apache.cloudstack.api.command.admin.host.UpdateHostPasswordCmd;
import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupCommand;
import com.cloud.agent.api.StartupRoutingCommand; import com.cloud.agent.api.StartupRoutingCommand;
import com.cloud.dc.DataCenter;
import com.cloud.dc.DataCenterVO; import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO; import com.cloud.dc.HostPodVO;
import com.cloud.dc.Pod;
import com.cloud.dc.PodCluster; import com.cloud.dc.PodCluster;
import com.cloud.exception.AgentUnavailableException; import com.cloud.exception.AgentUnavailableException;
import com.cloud.exception.DiscoveryException; import com.cloud.exception.DiscoveryException;
@ -51,11 +48,8 @@ import com.cloud.host.HostStats;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.Status; import com.cloud.host.Status;
import com.cloud.hypervisor.Hypervisor.HypervisorType; import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.offering.ServiceOffering;
import com.cloud.org.Cluster; import com.cloud.org.Cluster;
import com.cloud.resource.ResourceState.Event; import com.cloud.resource.ResourceState.Event;
import com.cloud.template.VirtualMachineTemplate;
import com.cloud.utils.Pair;
import com.cloud.utils.component.ManagerBase; import com.cloud.utils.component.ManagerBase;
import com.cloud.utils.fsm.NoTransitionException; import com.cloud.utils.fsm.NoTransitionException;
@ -430,16 +424,6 @@ public class MockResourceManagerImpl extends ManagerBase implements ResourceMana
return null; return null;
} }
/* (non-Javadoc)
* @see com.cloud.resource.ResourceManager#findPod(com.cloud.template.VirtualMachineTemplate, com.cloud.service.ServiceOfferingVO, com.cloud.dc.DataCenterVO, long, java.util.Set)
*/
@Override
public Pair<Pod, Long> findPod(VirtualMachineTemplate template, ServiceOffering offering, DataCenter dc,
long accountId, Set<Long> avoids) {
// TODO Auto-generated method stub
return null;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see com.cloud.resource.ResourceManager#getHostStatistics(long) * @see com.cloud.resource.ResourceManager#getHostStatistics(long)
*/ */

View File

@ -52,6 +52,7 @@ import com.cloud.network.dao.FirewallRulesDao;
import com.cloud.network.dao.NetworkVO; import com.cloud.network.dao.NetworkVO;
import com.cloud.network.lb.LoadBalancingRule; import com.cloud.network.lb.LoadBalancingRule;
import com.cloud.network.lb.LoadBalancingRulesManager; import com.cloud.network.lb.LoadBalancingRulesManager;
import com.cloud.network.lb.LoadBalancingRulesService;
import com.cloud.network.rules.FirewallRuleVO; import com.cloud.network.rules.FirewallRuleVO;
import com.cloud.network.rules.LoadBalancerContainer.Scheme; import com.cloud.network.rules.LoadBalancerContainer.Scheme;
import com.cloud.user.AccountManager; import com.cloud.user.AccountManager;
@ -80,6 +81,8 @@ public class ApplicationLoadBalancerTest extends TestCase{
@Inject AccountManager _accountMgr; @Inject AccountManager _accountMgr;
@Inject FirewallRulesDao _firewallDao; @Inject FirewallRulesDao _firewallDao;
@Inject UsageEventDao _usageEventDao; @Inject UsageEventDao _usageEventDao;
@Inject
LoadBalancingRulesService _lbService;
public static long existingLbId = 1L; public static long existingLbId = 1L;
@ -105,8 +108,8 @@ public class ApplicationLoadBalancerTest extends TestCase{
Mockito.when(_lbDao.findById(2L)).thenReturn(null); Mockito.when(_lbDao.findById(2L)).thenReturn(null);
//mockito for .deleteApplicationLoadBalancer tests //mockito for .deleteApplicationLoadBalancer tests
Mockito.when(_lbMgr.deleteLoadBalancerRule(existingLbId, true)).thenReturn(true); Mockito.when(_lbService.deleteLoadBalancerRule(existingLbId, true)).thenReturn(true);
Mockito.when(_lbMgr.deleteLoadBalancerRule(nonExistingLbId, true)).thenReturn(false); Mockito.when(_lbService.deleteLoadBalancerRule(nonExistingLbId, true)).thenReturn(false);
//mockito for .createApplicationLoadBalancer tests //mockito for .createApplicationLoadBalancer tests
NetworkVO guestNetwork = new NetworkVO(TrafficType.Guest, null, null, 1, NetworkVO guestNetwork = new NetworkVO(TrafficType.Guest, null, null, 1,