diff --git a/api/src/com/cloud/network/vpc/VpcService.java b/api/src/com/cloud/network/vpc/VpcService.java index 8457f461c15..7d8de553897 100644 --- a/api/src/com/cloud/network/vpc/VpcService.java +++ b/api/src/com/cloud/network/vpc/VpcService.java @@ -78,7 +78,8 @@ public interface VpcService { * @return * @throws ResourceAllocationException TODO */ - public Vpc createVpc(long zoneId, long vpcOffId, long vpcOwnerId, String vpcName, String displayText, String cidr, String networkDomain) throws ResourceAllocationException; + public Vpc createVpc(long zoneId, long vpcOffId, long vpcOwnerId, String vpcName, String displayText, String cidr, + String networkDomain) throws ResourceAllocationException; /** * @param vpcId diff --git a/api/src/com/cloud/user/UserContext.java b/api/src/com/cloud/user/UserContext.java index b140728e596..aa4c6393a06 100644 --- a/api/src/com/cloud/user/UserContext.java +++ b/api/src/com/cloud/user/UserContext.java @@ -16,13 +16,12 @@ // under the License. package com.cloud.user; -import com.cloud.server.ManagementService; import com.cloud.utils.component.ComponentLocator; public class UserContext { private static ThreadLocal s_currentContext = new ThreadLocal(); - private static final ComponentLocator locator = ComponentLocator.getLocator(ManagementService.Name); + private static final ComponentLocator locator = ComponentLocator.getCurrentLocator(); private static final AccountService _accountMgr = locator.getManager(AccountService.class); private long userId; diff --git a/server/src/com/cloud/network/NetworkVO.java b/server/src/com/cloud/network/NetworkVO.java index 5746d37aa8c..39dd66e77b0 100644 --- a/server/src/com/cloud/network/NetworkVO.java +++ b/server/src/com/cloud/network/NetworkVO.java @@ -458,7 +458,7 @@ public class NetworkVO implements Network, Identity { @Override public String toString() { StringBuilder buf = new StringBuilder("Ntwk["); - buf.append(id).append("|").append(trafficType.toString()).append("|").append(networkOfferingId).append("]"); + buf.append(id).append("|").append(trafficType).append("|").append(networkOfferingId).append("]"); return buf.toString(); } diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java index 1de5dbc186e..5c760da5c39 100644 --- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java @@ -636,6 +636,7 @@ public class VpcManagerImpl implements VpcManager, Manager{ @DB public boolean destroyVpc(Vpc vpc) throws ConcurrentOperationException, ResourceUnavailableException { UserContext ctx = UserContext.current(); + s_logger.debug("Destroying vpc " + vpc); //don't allow to delete vpc if it's in use by existing networks int networksCount = _ntwkDao.getNetworkCountByVpcId(vpc.getId()); @@ -672,9 +673,10 @@ public class VpcManagerImpl implements VpcManager, Manager{ //update the instance with removed flag only when the cleanup is executed successfully if (_vpcDao.remove(vpc.getId())) { - s_logger.debug("Vpc " + vpc + " is removed succesfully"); + s_logger.debug("Vpc " + vpc + " is destroyed succesfully"); return true; } else { + s_logger.warn("Vpc " + vpc + " failed to destroy"); return false; } } @@ -930,9 +932,10 @@ public class VpcManagerImpl implements VpcManager, Manager{ _accountMgr.checkAccess(caller, null, false, vpc); //shutdown provider + s_logger.debug("Shutting down vpc " + vpc); boolean success = getVpcElement().shutdownVpc(vpc); - //TODO - cleanup all vpc resources here (ACLs, gateways, etc) + //TODO - shutdown all vpc resources here (ACLs, gateways, etc) if (success) { s_logger.debug("Vpc " + vpc + " has been shutdown succesfully"); } else { @@ -1074,6 +1077,10 @@ public class VpcManagerImpl implements VpcManager, Manager{ if (vpcElement == null) { vpcElement = ((VpcProvider)_ntwkMgr.getElementImplementingProvider(Provider.VPCVirtualRouter.getName())); } + + if (vpcElement == null) { + throw new CloudRuntimeException("Failed to initialize vpc element"); + } return vpcElement; } diff --git a/server/test/com/cloud/user/MockAccountManagerImpl.java b/server/test/com/cloud/user/MockAccountManagerImpl.java index 8f6d4fa21a5..0d15cd7de0a 100644 --- a/server/test/com/cloud/user/MockAccountManagerImpl.java +++ b/server/test/com/cloud/user/MockAccountManagerImpl.java @@ -43,7 +43,7 @@ import com.cloud.utils.db.SearchCriteria; @Local(value = { AccountManager.class, AccountService.class }) -public class MockAccountManagerImpl implements Manager, AccountManager { +public class MockAccountManagerImpl implements Manager, AccountManager, AccountService { @Override @@ -102,14 +102,12 @@ public class MockAccountManagerImpl implements Manager, AccountManager { @Override public Account getSystemAccount() { - // TODO Auto-generated method stub - return null; + return new AccountVO(); } @Override public User getSystemUser() { - // TODO Auto-generated method stub - return null; + return new UserVO(); } @Override diff --git a/server/test/com/cloud/vm/MockUserVmManagerImpl.java b/server/test/com/cloud/vm/MockUserVmManagerImpl.java index 62db70cf203..e890262a769 100644 --- a/server/test/com/cloud/vm/MockUserVmManagerImpl.java +++ b/server/test/com/cloud/vm/MockUserVmManagerImpl.java @@ -25,6 +25,8 @@ import javax.naming.ConfigurationException; import com.cloud.agent.api.StopAnswer; import com.cloud.agent.api.VmStatsEntry; +import com.cloud.agent.api.to.NicTO; +import com.cloud.agent.api.to.VirtualMachineTO; import com.cloud.agent.manager.Commands; import com.cloud.api.commands.AssignVMCmd; import com.cloud.api.commands.AttachVolumeCmd; @@ -53,6 +55,7 @@ import com.cloud.exception.StorageUnavailableException; import com.cloud.exception.VirtualMachineMigrationException; import com.cloud.host.Host; import com.cloud.hypervisor.Hypervisor.HypervisorType; +import com.cloud.network.Network; import com.cloud.offering.ServiceOffering; import com.cloud.projects.Project.ListProjectResourcesCriteria; import com.cloud.server.Criteria; @@ -423,4 +426,23 @@ public class MockUserVmManagerImpl implements UserVmManager, UserVmService, Mana } + /* (non-Javadoc) + * @see com.cloud.vm.VirtualMachineGuru#plugNic(com.cloud.network.Network, com.cloud.agent.api.to.NicTO, com.cloud.agent.api.to.VirtualMachineTO, com.cloud.vm.ReservationContext, com.cloud.deploy.DeployDestination) + */ + @Override + public boolean plugNic(Network network, NicTO nic, VirtualMachineTO vm, ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException, + InsufficientCapacityException { + // TODO Auto-generated method stub + return false; + } + + /* (non-Javadoc) + * @see com.cloud.vm.VirtualMachineGuru#unplugNic(com.cloud.network.Network, com.cloud.agent.api.to.NicTO, com.cloud.agent.api.to.VirtualMachineTO, com.cloud.vm.ReservationContext, com.cloud.deploy.DeployDestination) + */ + @Override + public boolean unplugNic(Network network, NicTO nic, VirtualMachineTO vm, ReservationContext context, DeployDestination dest) throws ConcurrentOperationException, ResourceUnavailableException { + // TODO Auto-generated method stub + return false; + } + } diff --git a/server/test/com/cloud/vpc/MockConfigurationManagerImpl.java b/server/test/com/cloud/vpc/MockConfigurationManagerImpl.java index 855942aa598..8841483ddef 100644 --- a/server/test/com/cloud/vpc/MockConfigurationManagerImpl.java +++ b/server/test/com/cloud/vpc/MockConfigurationManagerImpl.java @@ -421,15 +421,6 @@ public class MockConfigurationManagerImpl implements ConfigurationManager, Confi return null; } - /* (non-Javadoc) - * @see com.cloud.configuration.ConfigurationManager#createDiskOffering(java.lang.Long, java.lang.String, java.lang.String, java.lang.Long, java.lang.String, boolean, boolean) - */ - @Override - public DiskOfferingVO createDiskOffering(Long domainId, String name, String description, Long numGibibytes, String tags, boolean isCustomized, boolean localStorageRequired) { - // TODO Auto-generated method stub - return null; - } - /* (non-Javadoc) * @see com.cloud.configuration.ConfigurationManager#createPod(long, java.lang.String, long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, boolean) */ @@ -439,16 +430,6 @@ public class MockConfigurationManagerImpl implements ConfigurationManager, Confi return null; } - /* (non-Javadoc) - * @see com.cloud.configuration.ConfigurationManager#createZone(long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.Long, com.cloud.dc.DataCenter.NetworkType, java.lang.String, java.lang.String, boolean, boolean) - */ - @Override - public DataCenterVO createZone(long userId, String zoneName, String dns1, String dns2, String internalDns1, String internalDns2, String guestCidr, String domain, Long domainId, NetworkType zoneType, - String allocationState, String networkDomain, boolean isSecurityGroupEnabled, boolean isLocalStorageEnabled) { - // TODO Auto-generated method stub - return null; - } - /* (non-Javadoc) * @see com.cloud.configuration.ConfigurationManager#deleteVlanAndPublicIpRange(long, long, com.cloud.user.Account) */ @@ -596,4 +577,23 @@ public class MockConfigurationManagerImpl implements ConfigurationManager, Confi return null; } + /* (non-Javadoc) + * @see com.cloud.configuration.ConfigurationManager#createDiskOffering(java.lang.Long, java.lang.String, java.lang.String, java.lang.Long, java.lang.String, boolean) + */ + @Override + public DiskOfferingVO createDiskOffering(Long domainId, String name, String description, Long numGibibytes, String tags, boolean isCustomized) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.configuration.ConfigurationManager#createZone(long, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.Long, com.cloud.dc.DataCenter.NetworkType, java.lang.String, java.lang.String, boolean) + */ + @Override + public DataCenterVO createZone(long userId, String zoneName, String dns1, String dns2, String internalDns1, String internalDns2, String guestCidr, String domain, Long domainId, NetworkType zoneType, + String allocationState, String networkDomain, boolean isSecurityGroupEnabled) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java index 14702b204d0..f6ad27b67f8 100644 --- a/server/test/com/cloud/vpc/MockNetworkManagerImpl.java +++ b/server/test/com/cloud/vpc/MockNetworkManagerImpl.java @@ -13,6 +13,7 @@ package com.cloud.vpc; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -20,6 +21,8 @@ import java.util.Set; import javax.ejb.Local; import javax.naming.ConfigurationException; +import org.apache.log4j.Logger; + import com.cloud.acl.ControlledEntity.ACLType; import com.cloud.api.commands.CreateNetworkCmd; import com.cloud.api.commands.ListNetworksCmd; @@ -70,6 +73,7 @@ import com.cloud.offerings.dao.NetworkOfferingServiceMapDao; import com.cloud.user.Account; import com.cloud.user.User; import com.cloud.utils.Pair; +import com.cloud.utils.component.Adapters; import com.cloud.utils.component.Inject; import com.cloud.utils.component.Manager; import com.cloud.vm.Nic; @@ -79,6 +83,7 @@ import com.cloud.vm.VMInstanceVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfileImpl; +import com.cloud.vpc.dao.MockVpcVirtualRouterElement; @Local(value = { NetworkManager.class, NetworkService.class }) public class MockNetworkManagerImpl implements NetworkManager, Manager{ @@ -86,6 +91,12 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{ NetworkServiceMapDao _ntwkSrvcDao; @Inject NetworkOfferingServiceMapDao _ntwkOfferingSrvcDao; + @Inject(adapter = NetworkElement.class) + Adapters _networkElements; + + private static HashMap s_providerToNetworkElementMap = new HashMap(); + private static final Logger s_logger = Logger.getLogger(MockNetworkManagerImpl.class); + /* (non-Javadoc) * @see com.cloud.network.NetworkService#getIsolatedNetworksOwnedByAccountInZone(long, com.cloud.user.Account) @@ -96,15 +107,6 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{ return null; } - /* (non-Javadoc) - * @see com.cloud.network.NetworkService#allocateIP(com.cloud.user.Account, long) - */ - @Override - public IpAddress allocateIP(Account ipOwner, long zoneId) throws ResourceAllocationException, InsufficientAddressCapacityException, ConcurrentOperationException { - // TODO Auto-generated method stub - return null; - } - /* (non-Javadoc) * @see com.cloud.network.NetworkService#releaseIpAddress(long) */ @@ -1162,15 +1164,6 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{ return false; } - /* (non-Javadoc) - * @see com.cloud.network.NetworkManager#checkVirtualNetworkCidrOverlap(java.lang.Long, java.lang.String) - */ - @Override - public void checkVirtualNetworkCidrOverlap(Long zoneId, String cidr) { - // TODO Auto-generated method stub - - } - /* (non-Javadoc) * @see com.cloud.network.NetworkManager#checkCapabilityForProvider(java.util.Set, com.cloud.network.Network.Service, com.cloud.network.Network.Capability, java.lang.String) */ @@ -1267,8 +1260,7 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{ */ @Override public NetworkElement getElementImplementingProvider(String providerName) { - // TODO Auto-generated method stub - return null; + return new MockVpcVirtualRouterElement(); } /* (non-Javadoc) @@ -1451,7 +1443,17 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{ */ @Override public boolean start() { - // TODO Auto-generated method stub + for (NetworkElement element : _networkElements) { + Provider implementedProvider = element.getProvider(); + if (implementedProvider != null) { + if (s_providerToNetworkElementMap.containsKey(implementedProvider.getName())) { + s_logger.error("Cannot start MapNetworkManager: Provider <-> NetworkElement must be a one-to-one map, " + + "multiple NetworkElements found for Provider: " + implementedProvider.getName()); + return false; + } + s_providerToNetworkElementMap.put(implementedProvider.getName(), element.getName()); + } + } return true; } @@ -1473,4 +1475,22 @@ public class MockNetworkManagerImpl implements NetworkManager, Manager{ return null; } + /* (non-Javadoc) + * @see com.cloud.network.NetworkService#allocateIP(com.cloud.user.Account, boolean, long) + */ + @Override + public IpAddress allocateIP(Account ipOwner, boolean isSystem, long zoneId) throws ResourceAllocationException, InsufficientAddressCapacityException, ConcurrentOperationException { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.NetworkManager#translateZoneIdToPhysicalNetwork(long) + */ + @Override + public PhysicalNetwork translateZoneIdToPhysicalNetwork(long zoneId) { + // TODO Auto-generated method stub + return null; + } + } diff --git a/server/test/com/cloud/vpc/VpcApiUnitTest.java b/server/test/com/cloud/vpc/VpcApiUnitTest.java index a7500bc1877..1d8dd71c20d 100644 --- a/server/test/com/cloud/vpc/VpcApiUnitTest.java +++ b/server/test/com/cloud/vpc/VpcApiUnitTest.java @@ -12,6 +12,9 @@ // Automatically generated by addcopyright.py at 04/03/2012 package com.cloud.vpc; +import java.util.ArrayList; +import java.util.List; + import junit.framework.TestCase; import org.apache.log4j.Logger; @@ -21,17 +24,19 @@ import com.cloud.configuration.dao.ConfigurationDaoImpl; import com.cloud.configuration.dao.ResourceCountDaoImpl; import com.cloud.dc.dao.VlanDaoImpl; import com.cloud.exception.InvalidParameterValueException; +import com.cloud.network.Network.Service; import com.cloud.network.dao.FirewallRulesDaoImpl; import com.cloud.network.dao.IPAddressDaoImpl; -import com.cloud.network.dao.NetworkDaoImpl; import com.cloud.network.dao.PhysicalNetworkDaoImpl; +import com.cloud.network.dao.Site2SiteVpnGatewayDaoImpl; +import com.cloud.network.vpc.Vpc; import com.cloud.network.vpc.VpcManager; import com.cloud.network.vpc.VpcManagerImpl; import com.cloud.network.vpc.Dao.PrivateIpDaoImpl; import com.cloud.network.vpc.Dao.StaticRouteDaoImpl; import com.cloud.network.vpc.Dao.VpcGatewayDaoImpl; import com.cloud.network.vpc.Dao.VpcOfferingDaoImpl; -import com.cloud.network.vpc.Dao.VpcOfferingServiceMapDaoImpl; +import com.cloud.server.ManagementService; import com.cloud.tags.dao.ResourceTagsDaoImpl; import com.cloud.user.AccountVO; import com.cloud.user.MockAccountManagerImpl; @@ -39,10 +44,13 @@ import com.cloud.user.dao.AccountDaoImpl; import com.cloud.utils.component.ComponentLocator; import com.cloud.utils.component.MockComponentLocator; import com.cloud.vm.dao.DomainRouterDaoImpl; +import com.cloud.vpc.dao.MockNetworkDaoImpl; import com.cloud.vpc.dao.MockNetworkOfferingDaoImpl; import com.cloud.vpc.dao.MockNetworkOfferingServiceMapDaoImpl; import com.cloud.vpc.dao.MockNetworkServiceMapDaoImpl; import com.cloud.vpc.dao.MockVpcDaoImpl; +import com.cloud.vpc.dao.MockVpcOfferingDaoImpl; +import com.cloud.vpc.dao.MockVpcOfferingServiceMapDaoImpl; public class VpcApiUnitTest extends TestCase{ private static final Logger s_logger = Logger.getLogger(VpcApiUnitTest.class); @@ -52,19 +60,18 @@ public class VpcApiUnitTest extends TestCase{ @Override @Before public void setUp() throws Exception { - _locator = new MockComponentLocator("management-server"); + _locator = new MockComponentLocator(ManagementService.Name); _locator.addDao("VpcDao", MockVpcDaoImpl.class); _locator.addDao("VpcOfferingDao", VpcOfferingDaoImpl.class); - _locator.addDao("VpcOfferingServiceMapDao", VpcOfferingServiceMapDaoImpl.class); - _locator.addDao("ConfigDao", ConfigurationDaoImpl.class); - _locator.addDao("NetworkDao", NetworkDaoImpl.class); + _locator.addDao("ConfigurationDao", ConfigurationDaoImpl.class); + _locator.addDao("NetworkDao", MockNetworkDaoImpl.class); _locator.addDao("IPAddressDao", IPAddressDaoImpl.class); _locator.addDao("DomainRouterDao", DomainRouterDaoImpl.class); - _locator.addDao("_vpcGatewayDao", VpcGatewayDaoImpl.class); + _locator.addDao("VpcGatewayDao", VpcGatewayDaoImpl.class); _locator.addDao("PrivateIpDao", PrivateIpDaoImpl.class); _locator.addDao("StaticRouteDao", StaticRouteDaoImpl.class); _locator.addDao("NetworkOfferingServiceMapDao", MockNetworkOfferingServiceMapDaoImpl.class); - _locator.addDao("VpcOfferingServiceMapDao", VpcOfferingServiceMapDaoImpl.class); + _locator.addDao("VpcOfferingServiceMapDao", MockVpcOfferingServiceMapDaoImpl.class); _locator.addDao("PhysicalNetworkDao", PhysicalNetworkDaoImpl.class); _locator.addDao("ResourceTagDao", ResourceTagsDaoImpl.class); _locator.addDao("FirewallRulesDao", FirewallRulesDaoImpl.class); @@ -73,32 +80,133 @@ public class VpcApiUnitTest extends TestCase{ _locator.addDao("ResourceCountDao", ResourceCountDaoImpl.class); _locator.addDao("NetworkOfferingDao", MockNetworkOfferingDaoImpl.class); _locator.addDao("NetworkServiceMapDao", MockNetworkServiceMapDaoImpl.class); - + _locator.addDao("VpcOfferingDao", MockVpcOfferingDaoImpl.class); + _locator.addDao("Site2SiteVpnDao", Site2SiteVpnGatewayDaoImpl.class); + _locator.addManager("ConfigService", MockConfigurationManagerImpl.class); _locator.addManager("vpc manager", VpcManagerImpl.class); _locator.addManager("account manager", MockAccountManagerImpl.class); _locator.addManager("network manager", MockNetworkManagerImpl.class); _locator.addManager("Site2SiteVpnManager", MockSite2SiteVpnManagerImpl.class); _locator.addManager("ResourceLimitService", MockResourceLimitManagerImpl.class); - _locator.addManager("ConfigService", MockConfigurationManagerImpl.class); + _locator.makeActive(null); _vpcService = ComponentLocator.inject(VpcManagerImpl.class); } public void test() { + s_logger.debug("Starting test for VpcService interface"); + //Vpc service methods + getActiveVpc(); + deleteVpc(); + + //Vpc manager methods + validateNtwkOffForVpc(); + //destroyVpc(); + + } + + protected void deleteVpc() { + //delete existing offering + boolean result = false; + String msg = null; + try { + List svcs = new ArrayList(); + svcs.add(Service.SourceNat.getName()); + result = _vpcService.deleteVpc(1); + } catch (Exception ex) { + msg = ex.getMessage(); + } finally { + if (result) { + s_logger.debug("Delete vpc: Test passed, vpc is deleted"); + } else { + s_logger.error("Delete vpc: TEST FAILED, vpc failed to delete " + msg); + } + } + + //delete non-existing offering + result = false; + msg = null; + try { + List svcs = new ArrayList(); + svcs.add(Service.SourceNat.getName()); + result = _vpcService.deleteVpc(100); + } catch (Exception ex) { + msg = ex.getMessage(); + } finally { + if (!result) { + s_logger.debug("Delete vpc: Test passed, non existing vpc failed to delete "); + } else { + s_logger.error("Delete vpc: TEST FAILED, true is returned when try to delete non existing vpc"); + } + } + } + + protected void getActiveVpc() { + //test for active vpc + boolean result = false; + String msg = null; + Vpc vpc = null; + try { + List svcs = new ArrayList(); + svcs.add(Service.SourceNat.getName()); + vpc = _vpcService.getActiveVpc(1); + if (vpc != null) { + result = true; + } + } catch (Exception ex) { + msg = ex.getMessage(); + } finally { + if (result) { + s_logger.debug("Get active Vpc: Test passed, active vpc is returned"); + } else { + s_logger.error("Get active Vpc: TEST FAILED, active vpc is not returned " + msg); + } + } + + //test for inactive vpc + result = false; + msg = null; + vpc = null; + try { + List svcs = new ArrayList(); + svcs.add(Service.SourceNat.getName()); + vpc = _vpcService.getActiveVpc(2); + if (vpc != null) { + result = true; + } + } catch (Exception ex) { + msg = ex.getMessage(); + } finally { + if (!result) { + s_logger.debug("Get active Vpc: Test passed, no vpc is returned"); + } else { + s_logger.error("Get active Vpc: TEST FAILED, non active vpc is returned"); + } + } + } + + protected void destroyVpc() { + try { + _vpcService.destroyVpc(_vpcService.getVpc(1)); + } catch (Exception ex) { + s_logger.error("Destroy VPC TEST FAILED due to exc ", ex); + } + } + + protected void validateNtwkOffForVpc() { //validate network offering //1) correct network offering boolean result = false; try { _vpcService.validateNtkwOffForVpc(1, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1"); result = true; - s_logger.debug("Test passed: the offering is valid for vpc creation"); + s_logger.debug("Validate network offering: Test passed: the offering is valid for vpc creation"); } catch (Exception ex) { - s_logger.warn("TEST FAILED due to exc ", ex); + s_logger.error("Validate network offering: TEST FAILED due to exc ", ex); } - //2) invalid offering - source nat is not included result = false; String msg = null; @@ -109,9 +217,9 @@ public class VpcApiUnitTest extends TestCase{ msg = ex.getMessage(); } finally { if (!result) { - s_logger.debug("Test passed: " + msg); + s_logger.debug("Validate network offering: Test passed: " + msg); } else { - s_logger.warn("TEST FAILED, can't use network offering without SourceNat service"); + s_logger.error("Validate network offering: TEST FAILED, can't use network offering without SourceNat service"); } } @@ -125,9 +233,9 @@ public class VpcApiUnitTest extends TestCase{ msg = ex.getMessage(); } finally { if (!result) { - s_logger.debug("Test passed: " + msg); + s_logger.debug("Validate network offering: Test passed: " + msg); } else { - s_logger.warn("TEST FAILED, can't use network offering without conserve mode = true"); + s_logger.error("Validate network offering: TEST FAILED, can't use network offering without conserve mode = true"); } } @@ -140,13 +248,14 @@ public class VpcApiUnitTest extends TestCase{ msg = ex.getMessage(); } finally { if (!result) { - s_logger.debug("Test passed: " + msg); + s_logger.debug("Validate network offering: Test passed: " + msg); } else { - s_logger.warn("TEST FAILED, can't use network offering with guest type = Shared"); + s_logger.error("Validate network offering: TEST FAILED, can't use network offering with guest type = Shared"); } } - //5) Invalid offering - no redundant router supportresult = false; + //5) Invalid offering - no redundant router support + result = false; try { _vpcService.validateNtkwOffForVpc(5, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1"); result = true; @@ -154,15 +263,27 @@ public class VpcApiUnitTest extends TestCase{ msg = ex.getMessage(); } finally { if (!result) { - s_logger.debug("Test passed: " + msg); + s_logger.debug("Validate network offering: Test passed: " + msg); } else { - s_logger.warn("TEST FAILED, can't use network offering with guest type = Shared"); + s_logger.error("TEST FAILED, can't use network offering with guest type = Shared"); } } - //6) Only one network in the VPC can support LB service - positive scenario - - //7) Only one netowrk in the VPC can support LB service - negative scenario + //6) Only one network in the VPC can support LB service - negative scenario + result = false; + try { + _vpcService.validateNtkwOffForVpc(6, "0.0.0.0", "111-", new AccountVO(), _vpcService.getVpc(1), 2L, "10.1.1.1"); + result = true; + s_logger.debug("Validate network offering: Test passed: the offering is valid for vpc creation"); + } catch (InvalidParameterValueException ex) { + msg = ex.getMessage(); + } finally { + if (!result) { + s_logger.debug("Test passed: " + msg); + } else { + s_logger.error("Validate network offering: TEST FAILED, can't use network offering with guest type = Shared"); + } + } } } diff --git a/server/test/com/cloud/vpc/dao/MockConfigurationDaoImpl.java b/server/test/com/cloud/vpc/dao/MockConfigurationDaoImpl.java new file mode 100644 index 00000000000..0cac4b9dfde --- /dev/null +++ b/server/test/com/cloud/vpc/dao/MockConfigurationDaoImpl.java @@ -0,0 +1,106 @@ +// Copyright 2012 Citrix Systems, Inc. Licensed under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. Citrix Systems, Inc. +// reserves all rights not expressly granted by 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. +// +// Automatically generated by addcopyright.py at 04/03/2012 +package com.cloud.vpc.dao; + +import java.util.HashMap; +import java.util.Map; + +import javax.ejb.Local; + +import com.cloud.configuration.ConfigurationVO; +import com.cloud.configuration.dao.ConfigurationDao; +import com.cloud.utils.db.GenericDaoBase; + +@Local(value={ConfigurationDao.class}) +public class MockConfigurationDaoImpl extends GenericDaoBase implements ConfigurationDao{ + + /* (non-Javadoc) + * @see com.cloud.configuration.dao.ConfigurationDao#getConfiguration(java.lang.String, java.util.Map) + */ + @Override + public Map getConfiguration(String instance, Map params) { + return new HashMap(); + } + + /* (non-Javadoc) + * @see com.cloud.configuration.dao.ConfigurationDao#getConfiguration(java.util.Map) + */ + @Override + public Map getConfiguration(Map params) { + return new HashMap(); + } + + /* (non-Javadoc) + * @see com.cloud.configuration.dao.ConfigurationDao#getConfiguration() + */ + @Override + public Map getConfiguration() { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.configuration.dao.ConfigurationDao#update(java.lang.String, java.lang.String) + */ + @Override + public boolean update(String name, String value) { + // TODO Auto-generated method stub + return false; + } + + /* (non-Javadoc) + * @see com.cloud.configuration.dao.ConfigurationDao#getValue(java.lang.String) + */ + @Override + public String getValue(String name) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.configuration.dao.ConfigurationDao#getValueAndInitIfNotExist(java.lang.String, java.lang.String, java.lang.String) + */ + @Override + public String getValueAndInitIfNotExist(String name, String category, String initValue) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.configuration.dao.ConfigurationDao#isPremium() + */ + @Override + public boolean isPremium() { + // TODO Auto-generated method stub + return false; + } + + /* (non-Javadoc) + * @see com.cloud.configuration.dao.ConfigurationDao#findByName(java.lang.String) + */ + @Override + public ConfigurationVO findByName(String name) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.configuration.dao.ConfigurationDao#update(java.lang.String, java.lang.String, java.lang.String) + */ + @Override + public boolean update(String name, String category, String value) { + // TODO Auto-generated method stub + return false; + } + +} diff --git a/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java b/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java index 0038403e0b4..970a5d9ba57 100644 --- a/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java +++ b/server/test/com/cloud/vpc/dao/MockNetworkDaoImpl.java @@ -12,6 +12,7 @@ // Automatically generated by addcopyright.py at 04/03/2012 package com.cloud.vpc.dao; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -314,8 +315,9 @@ public class MockNetworkDaoImpl extends GenericDaoBase implemen */ @Override public List listByVpc(long vpcId) { - // TODO Auto-generated method stub - return null; + List networks = new ArrayList(); + networks.add(new NetworkVO()); + return networks; } /* (non-Javadoc) diff --git a/server/test/com/cloud/vpc/dao/MockNetworkOfferingDaoImpl.java b/server/test/com/cloud/vpc/dao/MockNetworkOfferingDaoImpl.java index 833bbd9d9df..dfeadf67a03 100644 --- a/server/test/com/cloud/vpc/dao/MockNetworkOfferingDaoImpl.java +++ b/server/test/com/cloud/vpc/dao/MockNetworkOfferingDaoImpl.java @@ -35,7 +35,6 @@ import com.cloud.utils.db.GenericDaoBase; public class MockNetworkOfferingDaoImpl extends GenericDaoBase implements NetworkOfferingDao { private static final Logger s_logger = Logger.getLogger(MockNetworkOfferingDaoImpl.class); - /* (non-Javadoc) * @see com.cloud.offerings.dao.NetworkOfferingDao#findByUniqueName(java.lang.String) */ @@ -111,10 +110,14 @@ public class MockNetworkOfferingDaoImpl extends GenericDaoBase 0 && services[0] == Service.SourceNat && networkOfferingId != 2) { return true; - } else if (services.length > 0 && services[0] == Service.Lb && networkOfferingId != 2) { + } else if (services.length > 0 && services[0] == Service.Lb && networkOfferingId == 6) { return true; } return false; diff --git a/server/test/com/cloud/vpc/dao/MockNetworkServiceMapDaoImpl.java b/server/test/com/cloud/vpc/dao/MockNetworkServiceMapDaoImpl.java index c4ac17d732f..e66aa5b8913 100644 --- a/server/test/com/cloud/vpc/dao/MockNetworkServiceMapDaoImpl.java +++ b/server/test/com/cloud/vpc/dao/MockNetworkServiceMapDaoImpl.java @@ -32,7 +32,9 @@ public class MockNetworkServiceMapDaoImpl extends GenericDaoBase 0 && services[0] == Service.Lb) { + return true; + } return false; } diff --git a/server/test/com/cloud/vpc/dao/MockVpcDaoImpl.java b/server/test/com/cloud/vpc/dao/MockVpcDaoImpl.java index c8df522f2e0..7579ff73826 100644 --- a/server/test/com/cloud/vpc/dao/MockVpcDaoImpl.java +++ b/server/test/com/cloud/vpc/dao/MockVpcDaoImpl.java @@ -12,11 +12,15 @@ // Automatically generated by addcopyright.py at 04/03/2012 package com.cloud.vpc.dao; +import java.lang.reflect.Field; import java.util.List; import javax.ejb.Local; +import org.apache.log4j.Logger; + import com.cloud.network.vpc.Vpc; +import com.cloud.network.vpc.Vpc.State; import com.cloud.network.vpc.VpcVO; import com.cloud.network.vpc.Dao.VpcDao; import com.cloud.utils.db.DB; @@ -25,6 +29,8 @@ import com.cloud.utils.db.GenericDaoBase; @Local(value = VpcDao.class) @DB(txn = false) public class MockVpcDaoImpl extends GenericDaoBase implements VpcDao{ + private static final Logger s_logger = Logger.getLogger(MockNetworkOfferingDaoImpl.class); + /* (non-Javadoc) * @see com.cloud.network.vpc.Dao.VpcDao#getVpcCountByOfferingId(long) @@ -39,7 +45,11 @@ public class MockVpcDaoImpl extends GenericDaoBase implements VpcDa */ @Override public Vpc getActiveVpcById(long vpcId) { - // TODO Auto-generated method stub + Vpc vpc = findById(vpcId); + if (vpc != null && vpc.getState() == Vpc.State.Enabled) { + return vpc; + } + return null; } @@ -77,9 +87,40 @@ public class MockVpcDaoImpl extends GenericDaoBase implements VpcDa vo = new VpcVO(1, "new vpc", "new vpc", 1,1 , 1, "0.0.0.0/0", "vpc domain"); } else if (id.longValue() == 2) { vo = new VpcVO(1, "new vpc", "new vpc", 1,1 , 1, "0.0.0.0/0", "vpc domain"); + vo.setState(State.Inactive); } + vo = setId(vo, id); + return vo; } + + private VpcVO setId(VpcVO vo, long id) { + VpcVO voToReturn = vo; + Class c = voToReturn.getClass(); + try { + Field f = c.getDeclaredField("id"); + f.setAccessible(true); + f.setLong(voToReturn, id); + } catch (NoSuchFieldException ex) { + s_logger.warn(ex); + return null; + } catch (IllegalAccessException ex) { + s_logger.warn(ex); + return null; + } + + return voToReturn; + } + + @Override + public boolean remove(Long id) { + return true; + } + + @Override + public boolean update(Long id, VpcVO vo) { + return true; + } } diff --git a/server/test/com/cloud/vpc/dao/MockVpcOfferingDaoImpl.java b/server/test/com/cloud/vpc/dao/MockVpcOfferingDaoImpl.java new file mode 100644 index 00000000000..52acf82d2cc --- /dev/null +++ b/server/test/com/cloud/vpc/dao/MockVpcOfferingDaoImpl.java @@ -0,0 +1,39 @@ +// Copyright 2012 Citrix Systems, Inc. Licensed under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. Citrix Systems, Inc. +// reserves all rights not expressly granted by 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. +// +// Automatically generated by addcopyright.py at 04/03/2012 +package com.cloud.vpc.dao; + +import javax.ejb.Local; + +import com.cloud.network.vpc.VpcOfferingVO; +import com.cloud.network.vpc.Dao.VpcOfferingDao; +import com.cloud.utils.db.DB; +import com.cloud.utils.db.GenericDaoBase; + +@Local(value = VpcOfferingDao.class) +@DB(txn = false) +public class MockVpcOfferingDaoImpl extends GenericDaoBase implements VpcOfferingDao{ + + /* (non-Javadoc) + * @see com.cloud.network.vpc.Dao.VpcOfferingDao#findByUniqueName(java.lang.String) + */ + @Override + public VpcOfferingVO findByUniqueName(String uniqueName) { + return new VpcOfferingVO(); + } + + @Override + public VpcOfferingVO persist(VpcOfferingVO vo) { + return vo; + } + +} diff --git a/server/test/com/cloud/vpc/dao/MockVpcOfferingServiceMapDaoImpl.java b/server/test/com/cloud/vpc/dao/MockVpcOfferingServiceMapDaoImpl.java new file mode 100644 index 00000000000..3677a16038b --- /dev/null +++ b/server/test/com/cloud/vpc/dao/MockVpcOfferingServiceMapDaoImpl.java @@ -0,0 +1,69 @@ +// Copyright 2012 Citrix Systems, Inc. Licensed under the +// Apache License, Version 2.0 (the "License"); you may not use this +// file except in compliance with the License. Citrix Systems, Inc. +// reserves all rights not expressly granted by 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. +// +// Automatically generated by addcopyright.py at 04/03/2012 +package com.cloud.vpc.dao; + +import java.util.List; + +import javax.ejb.Local; + +import com.cloud.network.Network.Service; +import com.cloud.network.vpc.VpcOfferingServiceMapVO; +import com.cloud.network.vpc.Dao.VpcOfferingServiceMapDao; +import com.cloud.utils.db.DB; +import com.cloud.utils.db.GenericDaoBase; + +@Local(value = VpcOfferingServiceMapDao.class) +@DB(txn = false) +public class MockVpcOfferingServiceMapDaoImpl extends GenericDaoBase implements VpcOfferingServiceMapDao{ + + /* (non-Javadoc) + * @see com.cloud.network.vpc.Dao.VpcOfferingServiceMapDao#listByVpcOffId(long) + */ + @Override + public List listByVpcOffId(long vpcOffId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.vpc.Dao.VpcOfferingServiceMapDao#areServicesSupportedByNetworkOffering(long, com.cloud.network.Network.Service[]) + */ + @Override + public boolean areServicesSupportedByNetworkOffering(long networkOfferingId, Service[] services) { + // TODO Auto-generated method stub + return false; + } + + /* (non-Javadoc) + * @see com.cloud.network.vpc.Dao.VpcOfferingServiceMapDao#listServicesForVpcOffering(long) + */ + @Override + public List listServicesForVpcOffering(long vpcOfferingId) { + // TODO Auto-generated method stub + return null; + } + + /* (non-Javadoc) + * @see com.cloud.network.vpc.Dao.VpcOfferingServiceMapDao#findByServiceProviderAndOfferingId(java.lang.String, java.lang.String, long) + */ + @Override + public VpcOfferingServiceMapVO findByServiceProviderAndOfferingId(String service, String provider, long vpcOfferingId) { + return new VpcOfferingServiceMapVO(); + } + + @Override + public VpcOfferingServiceMapVO persist (VpcOfferingServiceMapVO vo) { + return vo; + } + +} diff --git a/server/test/com/cloud/vpc/dao/MockVpcOfferingServiceMapDao.java b/server/test/com/cloud/vpc/dao/MockVpcVirtualRouterElement.java similarity index 63% rename from server/test/com/cloud/vpc/dao/MockVpcOfferingServiceMapDao.java rename to server/test/com/cloud/vpc/dao/MockVpcVirtualRouterElement.java index a06c4dbe7b2..91cfb9933f7 100644 --- a/server/test/com/cloud/vpc/dao/MockVpcOfferingServiceMapDao.java +++ b/server/test/com/cloud/vpc/dao/MockVpcVirtualRouterElement.java @@ -12,6 +12,15 @@ // Automatically generated by addcopyright.py at 04/03/2012 package com.cloud.vpc.dao; -public class MockVpcOfferingServiceMapDao { +import com.cloud.exception.ConcurrentOperationException; +import com.cloud.exception.ResourceUnavailableException; +import com.cloud.network.element.VpcVirtualRouterElement; +import com.cloud.network.vpc.Vpc; +public class MockVpcVirtualRouterElement extends VpcVirtualRouterElement{ + @Override + public boolean shutdownVpc(Vpc vpc) throws ConcurrentOperationException, ResourceUnavailableException { + return true; + } + }