def setUpClass(cls): cls.testClient = super(TestVPC, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.hypervisor = cls.testClient.getHypervisorInfo() cls.mgtSvrDetails = cls.config.__dict__["mgtSvr"][0].__dict__ cls.unsupportedHypervisor = False if cls.hypervisor.lower() == 'hyperv': cls._cleanup = [] cls.unsupportedHypervisor = True return cls.services = Services().services # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_template( cls.api_client, cls.zone.id, cls.services["ostype"] ) cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.service_offering = ServiceOffering.create( cls.api_client, cls.services["service_offering"] ) cls.vpc_off = VpcOffering.create( cls.api_client, cls.services["vpc_offering"] ) cls.vpc_off.update(cls.api_client, state='Enabled') cls._cleanup = [ cls.service_offering, ] return
def test_02_create_vpc_from_offering_with_regionlevelvpc_service_capability(self): """ Test create VPC offering """ # Steps for validation # 1. Create VPC Offering by specifying all supported Services # 2. VPC offering should be created successfully. if not self.isOvsPluginEnabled: self.skipTest("OVS plugin should be enabled to run this test case") self.debug("Creating inter VPC offering") vpc_off = VpcOffering.create( self.apiclient, self.services["vpc_offering"] ) vpc_off.update(self.apiclient, state='Enabled') vpc = VPC.create( self.apiclient, self.services["vpc"], vpcofferingid=vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid, networkDomain=self.account.domainid ) self.assertEqual(vpc.distributedvpcrouter, True, "VPC created should have 'distributedvpcrouter' set to True") try: vpc.delete(self.apiclient) except Exception as e: self.fail("Failed to delete VPC network - %s" % e) return
def setUpClass(cls): cls.testClient = super(TestIPResourceCountVPC, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = Services().services # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_template( cls.api_client, cls.zone.id, cls.services["ostype"] ) cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.service_offering = ServiceOffering.create( cls.api_client, cls.services["service_offering"] ) cls.vpc_off = VpcOffering.create( cls.api_client, cls.services["vpc_offering"] ) cls.vpc_off.update(cls.api_client, state='Enabled') cls._cleanup = [ cls.service_offering, cls.vpc_off ] return
def test_vpcnetwork_nuage(self): """Test network VPC for Nuage""" # 1) Create VPC with Nuage VPC offering vpcOffering = VpcOffering.list(self.apiclient, name="Nuage VSP VPC offering") self.assert_(vpcOffering is not None and len(vpcOffering) > 0, "Nuage VPC offering not found") vpc = VPC.create(apiclient=self.apiclient, services=self.services["vpc"], networkDomain="vpc.networkacl", vpcofferingid=vpcOffering[0].id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid) self.assert_(vpc is not None, "VPC creation failed") # 2) Create ACL aclgroup = NetworkACLList.create(apiclient=self.apiclient, services={}, name="acl", description="acl", vpcid=vpc.id) self.assertIsNotNone(aclgroup, "Failed to create NetworkACL list") self.debug("Created a network ACL list %s" % aclgroup.name) # 3) Create ACL Item aclitem = NetworkACL.create(apiclient=self.apiclient, services={}, protocol="TCP", number="10", action="Deny", aclid=aclgroup.id, cidrlist=["0.0.0.0/0"]) self.assertIsNotNone(aclitem, "Network failed to aclItem") self.debug("Added a network ACL %s to ACL list %s" % (aclitem.id, aclgroup.name)) # 4) Create network with ACL nwNuage = Network.create(self.apiclient, self.services["vpcnetwork"], accountid=self.account.name, domainid=self.account.domainid, networkofferingid=self.network_offering.id, zoneid=self.zone.id, vpcid=vpc.id, aclid=aclgroup.id, gateway='10.1.0.1') self.debug("Network %s created in VPC %s" % (nwNuage.id, vpc.id)) # 5) Deploy a vm vm = VirtualMachine.create(self.apiclient, self.services["virtual_machine"], accountid=self.account.name, domainid=self.account.domainid, serviceofferingid=self.service_offering.id, networkids=[str(nwNuage.id)]) self.assert_(vm is not None, "VM failed to deploy") self.assert_(vm.state == 'Running', "VM is not running") self.debug("VM %s deployed in VPC %s" % (vm.id, vpc.id))
def setUp(self): self.routers = [] self.networks = [] self.ips = [] self.apiclient = self.testClient.getApiClient() self.account = Account.create(self.apiclient, self.services["account"], admin=True, domainid=self.domain.id) self.cleanup = [self.account] self.debug("Creating a VPC offering..") self.vpc_off = VpcOffering.create(self.apiclient, self.services["vpc_offering"]) self.debug("Enabling the VPC offering created") self.vpc_off.update(self.apiclient, state='Enabled') self.debug("Creating a VPC network in the account: %s" % self.account.name) self.services["vpc"]["cidr"] = '10.1.1.1/16' self.vpc = VPC.create(self.apiclient, self.services["vpc"], vpcofferingid=self.vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid) return
def create_vpc(self, name, cidr): print name, cidr try: vpcOffering = VpcOffering.list(self.apiclient, isdefault=True) self.assert_(vpcOffering is not None and len(vpcOffering) > 0, "No VPC offerings found") self.services["vpc"] = {} self.services["vpc"]["name"] = name self.services["vpc"]["displaytext"] = name self.services["vpc"]["cidr"] = cidr vpc = VPC.create(apiclient=self.apiclient, services=self.services["vpc"], networkDomain="vpc.internallb", vpcofferingid=vpcOffering[0].id, zoneid=self.zone.id, account=self.account.name, domainid=self.domain.id) self.assertIsNotNone(vpc, "VPC creation failed") self.logger.debug("Created VPC %s" % vpc.id) return vpc except Exception as e: self.fail("Failed to create VPC: %s due to %s" % (name, e))
def setUp(self): self.routers = [] self.networks = [] self.ips = [] self.apiclient = self.testClient.getApiClient() self.hypervisor = self.testClient.getHypervisorInfo() self.account = Account.create( self.apiclient, self.services["account"], admin=True, domainid=self.domain.id) self.logger.debug("Creating a VPC offering..") self.vpc_off = VpcOffering.create( self.apiclient, self.services["vpc_offering"]) self.logger.debug("Enabling the VPC offering created") self.vpc_off.update(self.apiclient, state='Enabled') self.logger.debug("Creating a VPC network in the account: %s" % self.account.name) self.services["vpc"]["cidr"] = '10.1.1.1/16' self.vpc = VPC.create( self.apiclient, self.services["vpc"], vpcofferingid=self.vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid) self.cleanup = [self.vpc, self.vpc_off, self.account] return
def create_vpc(self, name, cidr): print name, cidr try: vpcOffering = VpcOffering.list(self.apiclient, isdefault=True) self.assert_(vpcOffering is not None and len( vpcOffering) > 0, "No VPC offerings found") self.services["vpc"] = {} self.services["vpc"]["name"] = name self.services["vpc"]["displaytext"] = name self.services["vpc"]["cidr"] = cidr vpc = VPC.create( apiclient=self.apiclient, services=self.services["vpc"], networkDomain="vpc.internallb", vpcofferingid=vpcOffering[0].id, zoneid=self.zone.id, account=self.account.name, domainid=self.domain.id ) self.assertIsNotNone(vpc, "VPC creation failed") self.logger.debug("Created VPC %s" % vpc.id) return vpc except Exception as e: self.fail("Failed to create VPC: %s due to %s" % (name, e))
def setUpClass(cls): cls.testClient = super(TestVPC, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.hypervisor = cls.testClient.getHypervisorInfo() cls.mgtSvrDetails = cls.config.__dict__["mgtSvr"][0].__dict__ cls.unsupportedHypervisor = False if cls.hypervisor.lower() == 'hyperv': cls._cleanup = [] cls.unsupportedHypervisor = True return cls.services = Services().services # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_template(cls.api_client, cls.zone.id, cls.services["ostype"]) cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.service_offering = ServiceOffering.create( cls.api_client, cls.services["service_offering"]) cls.vpc_off = VpcOffering.create(cls.api_client, cls.services["vpc_offering"]) cls.vpc_off.update(cls.api_client, state='Enabled') cls._cleanup = [ cls.service_offering, ] return
def setUpClass(cls): testClient = super(TestDomainsVpcOfferings, cls).getClsTestClient() cls.apiclient = testClient.getApiClient() cls.localservices = Services().services cls.services = testClient.getParsedTestDataConfig() # Create domains cls.domain_1 = Domain.create(cls.apiclient, cls.services["acl"]["domain1"]) cls.domain_11 = Domain.create(cls.apiclient, cls.services["acl"]["domain11"], parentdomainid=cls.domain_1.id) cls.domain_2 = Domain.create(cls.apiclient, cls.services["acl"]["domain2"]) cls.domain_3 = Domain.create(cls.apiclient, cls.services["acl"]["domain12"]) cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests()) cls.vpc_offering = VpcOffering.create(cls.apiclient, cls.services["vpc_offering"]) # Enable Vpc offering cls.vpc_offering.update(cls.apiclient, state='Enabled') cls._cleanup = [ cls.vpc_offering, cls.domain_11, cls.domain_1, cls.domain_2, cls.domain_3 ] return
def validate_vpc_offering(self, vpc_offering): """Validates the VPC offering""" self.debug("Check if the VPC offering is created successfully?") vpc_offs = VpcOffering.list( self.apiclient, id=vpc_offering.id ) self.assertEqual( isinstance(vpc_offs, list), True, "List VPC offerings should return a valid list" ) self.assertEqual( vpc_offering.name, vpc_offs[0].name, "Name of the VPC offering should match with listVPCOff data" ) self.assertEqual( vpc_offering.name, vpc_offs[0].name, "Name of the VPC offering should match with listVPCOff data" ) self.assertEqual( vpc_offs[0].distributedvpcrouter,True, "VPC offering is not set up for Distributed routing" ) self.debug( "VPC offering is created successfully - %s" % vpc_offering.name) return
def test_02_create_vpc_from_offering_with_regionlevelvpc_service_capability( self): """ Test create VPC offering """ # Steps for validation # 1. Create VPC Offering by specifying all supported Services # 2. VPC offering should be created successfully. if not self.isOvsPluginEnabled: self.skipTest("OVS plugin should be enabled to run this test case") self.debug("Creating inter VPC offering") vpc_off = VpcOffering.create(self.apiclient, self.services["vpc_offering"]) vpc_off.update(self.apiclient, state='Enabled') vpc = VPC.create(self.apiclient, self.services["vpc"], vpcofferingid=vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid, networkDomain=self.account.domainid) self.assertEqual( vpc.distributedvpcrouter, True, "VPC created should have 'distributedvpcrouter' set to True") try: vpc.delete(self.apiclient) except Exception as e: self.fail("Failed to delete VPC network - %s" % e) return
def test_04_vpc_private_gateway_with_invalid_lswitch(self): self.logger.debug('Adding NSX device') self.add_nicira_device(self.nicira_master_controller) self.logger.debug('Creating VPC offering') self.vpc_offering = VpcOffering.create(self.api_client, self.vpc_offering_services) self.vpc_offering.update(self.api_client, state='Enabled') self.test_cleanup.append(self.vpc_offering) self.logger.debug('Creating VPC tier offering') self.vpc_tier_offering = NetworkOffering.create(self.api_client, self.vpc_tier_offering_services, conservemode=False) self.vpc_tier_offering.update(self.api_client, state='Enabled') self.test_cleanup.append(self.vpc_tier_offering) self.logger.debug('Creating private network offering') self.private_network_offering = NetworkOffering.create(self.api_client, self.private_network_offering_services) self.private_network_offering.update(self.api_client, state='Enabled') self.test_cleanup.append(self.private_network_offering) allow_all_acl_id = 'bd6d44f8-fc11-11e5-8fe8-5254001daa61' bad_lswitch = 'lswitch:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' vpc = self.create_vpc() network = self.create_vpc_tier(vpc) virtual_machine = self.create_virtual_machine(network) self.logger.debug('Creating private gateway') with self.assertRaises(CloudstackAPIException) as cm: self.create_private_gateway(vpc, "10.0.3.99", "10.0.3.100", allow_all_acl_id, bad_lswitch) the_exception = cm.exception the_message_matcher = "^.*Refusing to design this network because the specified lswitch (%s) does not exist.*$" % bad_lswitch self.assertRegexpMatches(str(the_exception), the_message_matcher)
def validate_vpc_offering(self, vpc_offering): """Validates the VPC offering""" self.debug("Check if the VPC offering is created successfully?") vpc_offs = VpcOffering.list( self.apiclient, id=vpc_offering.id ) self.assertEqual( isinstance(vpc_offs, list), True, "List VPC offerings should return a valid list" ) self.assertEqual( vpc_offering.name, vpc_offs[0].name, "Name of the VPC offering should match with listVPCOff data" ) self.assertEqual( vpc_offering.name, vpc_offs[0].name, "Name of the VPC offering should match with listVPCOff data" ) self.assertEqual( vpc_offs[0].supportsregionLevelvpc,True, "VPC offering is not set up for region level VPC" ) self.debug( "VPC offering is created successfully - %s" % vpc_offering.name) return
def test_03_create_ipv6_vpc_offering(self): """Test to create network offering # Validate the following: # 1. createVpcOffering should return valid info for new offering # 2. The Cloud Database contains the valid information """ Configurations.update(self.apiclient, ipv6_offering_config_name, "true") ipv6_service = self.services["vpc_offering"] ipv6_service["internetprotocol"] = "dualstack" vpc_offering = VpcOffering.create( self.apiclient, ipv6_service ) self.cleanup.append(vpc_offering) self.debug("Created VPC offering with ID: %s" % vpc_offering.id) list_vpc_off_response = VpcOffering.list(self.apiclient, id=vpc_offering.id) self.assertEqual( isinstance(list_vpc_off_response, list), True, "Check list response returns a valid list" ) self.assertNotEqual( len(list_vpc_off_response), 0, "Check VPC offering is created" ) vpc_off_response = list_vpc_off_response[0] self.assertEqual( vpc_off_response.id, vpc_offering.id, "Check server id in listVpcOfferings" ) self.assertEqual( vpc_off_response.internetprotocol.lower(), ipv6_service["internetprotocol"].lower(), "Check internetprotocol in listVpcOfferings" ) return
def create_VpcOffering(self, vpc_offering, suffix=None): self.debug('Create VpcOffering') if suffix: vpc_offering["name"] = "VPC_OFF-" + str(suffix) vpc_off = VpcOffering.create(self.api_client, vpc_offering) # Enable VPC offering vpc_off.update(self.api_client, state='Enabled') self.cleanup.append(vpc_off) self.debug('Created and Enabled VpcOffering') return vpc_off
def setUpClass(cls): cls.testClient = super(TestVPCRoutersBasic, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.hypervisor = cls.testClient.getHypervisorInfo() cls.vpcSupported = True cls._cleanup = [] if cls.hypervisor.lower() == 'hyperv': cls.vpcSupported = False return cls.services = Services().services # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_template( cls.api_client, cls.zone.id, cls.services["ostype"] ) cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.service_offering = ServiceOffering.create( cls.api_client, cls.services["service_offering"] ) cls.vpc_off = VpcOffering.create( cls.api_client, cls.services["vpc_offering"] ) cls.vpc_off.update(cls.api_client, state='Enabled') cls.account = Account.create( cls.api_client, cls.services["account"], admin=True, domainid=cls.domain.id ) cls._cleanup = [cls.account] cls._cleanup.append(cls.vpc_off) #cls.debug("Enabling the VPC offering created") cls.vpc_off.update(cls.api_client, state='Enabled') # cls.debug("creating a VPC network in the account: %s" % # cls.account.name) cls.services["vpc"]["cidr"] = '10.1.1.1/16' cls.vpc = VPC.create( cls.api_client, cls.services["vpc"], vpcofferingid=cls.vpc_off.id, zoneid=cls.zone.id, account=cls.account.name, domainid=cls.account.domainid ) cls._cleanup.append(cls.service_offering) return
def test_vpcnetwork_nuage(self): """Test network VPC for Nuage""" # 1) Create VPC with Nuage VPC offering vpcOffering = VpcOffering.list(self.apiclient,name="Nuage VSP VPC offering") self.assert_(vpcOffering is not None and len(vpcOffering)>0, "Nuage VPC offering not found") vpc = VPC.create( apiclient=self.apiclient, services=self.services["vpc"], networkDomain="vpc.networkacl", vpcofferingid=vpcOffering[0].id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid ) self.assert_(vpc is not None, "VPC creation failed") # 2) Create ACL aclgroup = NetworkACLList.create(apiclient=self.apiclient, services={}, name="acl", description="acl", vpcid=vpc.id) self.assertIsNotNone(aclgroup, "Failed to create NetworkACL list") self.debug("Created a network ACL list %s" % aclgroup.name) # 3) Create ACL Item aclitem = NetworkACL.create(apiclient=self.apiclient, services={}, protocol="TCP", number="10", action="Deny", aclid=aclgroup.id, cidrlist=["0.0.0.0/0"]) self.assertIsNotNone(aclitem, "Network failed to aclItem") self.debug("Added a network ACL %s to ACL list %s" % (aclitem.id, aclgroup.name)) # 4) Create network with ACL nwNuage = Network.create( self.apiclient, self.services["vpcnetwork"], accountid=self.account.name, domainid=self.account.domainid, networkofferingid=self.network_offering.id, zoneid=self.zone.id, vpcid=vpc.id, aclid=aclgroup.id, gateway='10.1.0.1' ) self.debug("Network %s created in VPC %s" %(nwNuage.id, vpc.id)) # 5) Deploy a vm vm = VirtualMachine.create( self.apiclient, self.services["virtual_machine"], accountid=self.account.name, domainid=self.account.domainid, serviceofferingid=self.service_offering.id, networkids=[str(nwNuage.id)] ) self.assert_(vm is not None, "VM failed to deploy") self.assert_(vm.state == 'Running', "VM is not running") self.debug("VM %s deployed in VPC %s" %(vm.id, vpc.id))
def _create_vpc_offering(self, offering_name): vpc_off = None if offering_name is not None: self.logger.debug("Creating VPC offering: %s", offering_name) vpc_off = VpcOffering.create(self.apiclient, self.services[offering_name]) self._validate_vpc_offering(vpc_off) return vpc_off
def create_VpcOffering(cls, vpc_offering, suffix=None): cls.debug("Creating VPC offering") if suffix: vpc_offering["name"] = "VPC_OFF-" + str(suffix) vpc_off = VpcOffering.create(cls.api_client, vpc_offering ) # Enable VPC offering vpc_off.update(cls.api_client, state="Enabled") cls.debug("Created and Enabled VPC offering") return vpc_off
def create_VpcOffering(self, vpc_offering, suffix=None): self.debug("Creating VPC offering") if suffix: vpc_offering["name"] = "VPC_OFF-" + str(suffix) vpc_off = VpcOffering.create(self.api_client, vpc_offering ) # Enable VPC offering vpc_off.update(self.api_client, state="Enabled") self.cleanup.append(vpc_off) self.debug("Created and Enabled VPC offering") return vpc_off
def setUpClass(cls): cls.testClient = super(TestVPCHostMaintenance, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls._cleanup = [] cls.hosts = [] cls.vpcSupported = True cls.hypervisor = cls.testClient.getHypervisorInfo() if cls.hypervisor.lower() in ['hyperv']: cls.vpcSupported = False return cls.services = cls.testClient.getParsedTestDataConfig() # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_template(cls.api_client, cls.zone.id, cls.services["ostype"]) cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.services["mode"] = cls.zone.networktype cls.vpc_off = VpcOffering.create(cls.api_client, cls.services["vpc_offering"]) cls._cleanup.append(cls.vpc_off) cls.vpc_off.update(cls.api_client, state='Enabled') cls.hosts = Host.list(cls.api_client, zoneid=cls.zone.id, listall=True, type='Routing') if isinstance(cls.hosts, list): for host in cls.hosts: Host.enableMaintenance(cls.api_client, id=host.id) timeout = cls.services["timeout"] while True: time.sleep(cls.services["sleep"]) hosts_states = Host.list(cls.api_client, id=host.id, listall=True) if hosts_states[ 0].resourcestate == 'PrepareForMaintenance': # Wait for sometimetill host goes in maintenance state time.sleep(cls.services["sleep"]) elif hosts_states[0].resourcestate == 'Maintenance': time.sleep(cls.services["sleep"]) break elif timeout == 0: raise unittest.SkipTest( "Failed to enable maintenance mode on %s" % host.name) timeout = timeout - 1 return
def test_01_create_vpc_offering(self): """Test to create vpc offering # Validate the following: # 1. createVPCOfferings should return valid info for new offering # 2. The Cloud Database contains the valid information """ offering_data_domainid = "{0},{1}".format(self.domain_11.id, self.domain_2.id) offering_data = self.localservices["vpc_offering"] cmd = createVPCOffering.createVPCOfferingCmd() cmd.name = "-".join([offering_data["name"], random_gen()]) cmd.displaytext = offering_data["displaytext"] cmd.supportedServices = offering_data["supportedservices"] cmd.domainid = offering_data_domainid if "serviceProviderList" in offering_data: for service, provider in offering_data[ "serviceProviderList"].items(): providers = provider if isinstance(provider, str): providers = [provider] for provider_item in providers: cmd.serviceproviderlist.append({ 'service': service, 'provider': provider_item }) vpc_offering = VpcOffering( self.apiclient.createVPCOffering(cmd).__dict__) self.cleanup.append(vpc_offering) self.debug("Created Vpc offering with ID: %s" % vpc_offering.id) cmd = listVPCOfferings.listVPCOfferingsCmd() cmd.id = vpc_offering.id list_vpc_response = self.apiclient.listVPCOfferings(cmd) self.assertEqual(isinstance(list_vpc_response, list), True, "Check list response returns a valid list") self.assertNotEqual(len(list_vpc_response), 0, "Check Vpc offering is created") vpc_response = list_vpc_response[0] self.assertEqual(vpc_response.id, vpc_offering.id, "Check server id in createVPCOffering") self.assertEqual(vpc_response.displaytext, self.localservices["vpc_offering"]["displaytext"], "Check server displaytext in createVPCOffering") self.assertItemsEqual(vpc_response.domainid.split(","), offering_data_domainid.split(","), "Check domainid in createVPCOffering") return
def _validate_vpc_offering(self, vpc_offering): self.logger.debug("Check if the VPC offering is created successfully?") vpc_offs = VpcOffering.list(self.apiclient, id=vpc_offering.id) offering_list = validateList(vpc_offs) self.assertEqual(offering_list[0], PASS, "List VPC offerings should return a valid list") self.assertEqual( vpc_offering.name, vpc_offs[0].name, "Name of the VPC offering should match with listVPCOff data") self.logger.debug("VPC offering is created successfully - %s" % vpc_offering.name) return
def test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80(self): """ Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Redundant VPC """ self.logger.debug("Starting test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80") self.logger.debug("Creating a Redundant VPC offering..") redundant_vpc_offering = VpcOffering.create(self.apiclient, self.services["redundant_vpc_offering"]) self.logger.debug("Enabling the Redundant VPC offering created") redundant_vpc_offering.update(self.apiclient, state="Enabled") self.cleanup.insert(0, redundant_vpc_offering) self.execute_internallb_roundrobin_tests(redundant_vpc_offering)
def _create_vpc_offering(self, offering_name): vpc_off = None if offering_name is not None: self.logger.debug("Creating VPC offering: %s", offering_name) vpc_off = VpcOffering.create( self.apiclient, self.services[offering_name] ) self._validate_vpc_offering(vpc_off) return vpc_off
def validate_vpc_offering(self, vpc_offering, state=None): """Validates the VPC offering""" self.debug("Check if the VPC offering is created successfully ?") vpc_offs = VpcOffering.list(self.api_client, id=vpc_offering.id) self.assertEqual(isinstance(vpc_offs, list), True, "List VPC offering should return a valid list") self.assertEqual( vpc_offering.name, vpc_offs[0].name, "Name of the VPC offering should match with the returned list data" ) if state: self.assertEqual(vpc_offs[0].state, state, "VPC offering state should be '%s'" % state) self.debug("VPC offering creation successfully validated - %s" % vpc_offering.name)
def test_01_create_vpc_offering_with_distributedrouter_service_capability(self): """ Test create VPC offering """ # Steps for validation # 1. Create VPC Offering by specifying all supported Services # 2. VPC offering should be created successfully. self.debug("Creating inter VPC offering") vpc_off = VpcOffering.create(self.apiclient, self.services["vpc_offering"]) self.debug("Check if the VPC offering is created successfully?") self.cleanup.append(vpc_off) self.validate_vpc_offering(vpc_off) return
def setUpClass(cls): try: cls._cleanup = [] cls.testClient = super(TestPortForwardingRules, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() cls.hypervisor = cls.testClient.getHypervisorInfo() # Get Domain, Zone, Template cls.domain = get_domain(cls.api_client) cls.zone = get_zone( cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_test_template( cls.api_client, cls.zone.id, cls.hypervisor ) if cls.zone.localstorageenabled: cls.storagetype = 'local' cls.services["service_offerings"][ "tiny"]["storagetype"] = 'local' else: cls.storagetype = 'shared' cls.services["service_offerings"][ "tiny"]["storagetype"] = 'shared' cls.services['mode'] = cls.zone.networktype cls.services["virtual_machine"][ "hypervisor"] = cls.hypervisor cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.service_offering = ServiceOffering.create( cls.api_client, cls.services["service_offerings"]["tiny"] ) cls._cleanup.append(cls.service_offering) cls.services['mode'] = cls.zone.networktype cls.vpc_offering = VpcOffering.create(cls.api_client, cls.services["vpc_offering"] ) cls.vpc_offering.update(cls.api_client, state='Enabled') cls._cleanup.append(cls.vpc_offering) except Exception as e: cls.tearDownClass() raise Exception("Warning: Exception in setup : %s" % e) return
def setUpClass(cls): try: cls._cleanup = [] cls.testClient = super(TestPortForwardingRules, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() cls.hypervisor = cls.testClient.getHypervisorInfo() # Get Domain, Zone, Template cls.domain = get_domain(cls.api_client) cls.zone = get_zone( cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_template( cls.api_client, cls.zone.id, cls.services["ostype"] ) if cls.zone.localstorageenabled: cls.storagetype = 'local' cls.services["service_offerings"][ "tiny"]["storagetype"] = 'local' else: cls.storagetype = 'shared' cls.services["service_offerings"][ "tiny"]["storagetype"] = 'shared' cls.services['mode'] = cls.zone.networktype cls.services["virtual_machine"][ "hypervisor"] = cls.hypervisor cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.service_offering = ServiceOffering.create( cls.api_client, cls.services["service_offerings"]["tiny"] ) cls._cleanup.append(cls.service_offering) cls.services['mode'] = cls.zone.networktype cls.vpc_offering = VpcOffering.create(cls.api_client, cls.services["vpc_offering"] ) cls.vpc_offering.update(cls.api_client, state='Enabled') cls._cleanup.append(cls.vpc_offering) except Exception as e: cls.tearDownClass() raise Exception("Warning: Exception in setup : %s" % e) return
def test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80(self): """ Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Redundant VPC """ self.logger.debug("Starting test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80") self.logger.debug("Creating a Redundant VPC offering..") redundant_vpc_offering = VpcOffering.create( self.apiclient, self.services["redundant_vpc_offering"]) self.logger.debug("Enabling the Redundant VPC offering created") redundant_vpc_offering.update(self.apiclient, state='Enabled') self.cleanup.insert(0, redundant_vpc_offering) self.execute_internallb_roundrobin_tests(redundant_vpc_offering)
def test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80(self): """ Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Single VPC """ self.logger.debug( "Starting test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80") self.logger.debug("Creating a VPC offering..") vpc_offering = VpcOffering.create(self.apiclient, self.services["vpc_offering"]) self.cleanup.append(vpc_offering) self.logger.debug("Enabling the VPC offering created") vpc_offering.update(self.apiclient, state='Enabled') self.execute_internallb_roundrobin_tests(vpc_offering)
def validate_VpcOffering(self, vpc_offering, state=None): """Validates the VPC offering""" self.debug("Check if the VPC offering is created successfully ?") vpc_offs = VpcOffering.list(self.api_client, id=vpc_offering.id ) self.assertEqual(isinstance(vpc_offs, list), True, "List VPC offering should return a valid list" ) self.assertEqual(vpc_offering.name, vpc_offs[0].name, "Name of the VPC offering should match with the returned list data" ) if state: self.assertEqual(vpc_offs[0].state, state, "VPC offering state should be in state - %s" % state ) self.debug("VPC offering creation successfully validated for %s" % vpc_offering.name)
def test_04_rvpc_internallb_haproxy_stats_on_all_interfaces(self): """ Test to verify access to loadbalancer haproxy admin stats page when global setting network.loadbalancer.haproxy.stats.visibility is set to 'all' with credentials from global setting network.loadbalancer.haproxy.stats.auth using the uri from global setting network.loadbalancer.haproxy.stats.uri. It uses a Redundant Routers VPC """ self.logger.debug("Starting test_04_rvpc_internallb_haproxy_stats_on_all_interfaces") self.logger.debug("Creating a Redundant VPC offering..") redundant_vpc_offering = VpcOffering.create(self.apiclient, self.services["redundant_vpc_offering"]) self.logger.debug("Enabling the Redundant VPC offering created") redundant_vpc_offering.update(self.apiclient, state="Enabled") self.execute_internallb_haproxy_tests(redundant_vpc_offering)
def test_01_create_vpc_offering_with_regionlevelvpc_service_capability( self): """ Test create VPC offering """ # Steps for validation # 1. Create VPC Offering by specifying all supported Services # 2. VPC offering should be created successfully. self.debug("Creating inter VPC offering") vpc_off = VpcOffering.create(self.apiclient, self.services["vpc_offering"]) self.debug("Check if the VPC offering is created successfully?") self.cleanup.append(vpc_off) self.validate_vpc_offering(vpc_off) return
def setUpClass(cls): cls.testClient = super(TestVPCRoutersBasic, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.hypervisor = cls.testClient.getHypervisorInfo() cls.vpcSupported = True cls._cleanup = [] if cls.hypervisor.lower() == 'hyperv': cls.vpcSupported = False return cls.services = Services().services # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_template(cls.api_client, cls.zone.id, cls.services["ostype"]) cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.service_offering = ServiceOffering.create( cls.api_client, cls.services["service_offering"]) cls.vpc_off = VpcOffering.create(cls.api_client, cls.services["vpc_offering"]) cls.vpc_off.update(cls.api_client, state='Enabled') cls.account = Account.create(cls.api_client, cls.services["account"], admin=True, domainid=cls.domain.id) cls._cleanup = [cls.account] cls._cleanup.append(cls.vpc_off) #cls.debug("Enabling the VPC offering created") cls.vpc_off.update(cls.api_client, state='Enabled') # cls.debug("creating a VPC network in the account: %s" % # cls.account.name) cls.services["vpc"]["cidr"] = '10.1.1.1/16' cls.vpc = VPC.create(cls.api_client, cls.services["vpc"], vpcofferingid=cls.vpc_off.id, zoneid=cls.zone.id, account=cls.account.name, domainid=cls.account.domainid) cls._cleanup.append(cls.service_offering) return
def setUp(self): self.logger.debug("Creating a VPC offering.") self.vpc_off = VpcOffering.create(self.apiclient, self.services["vpc_offering"]) self.logger.debug("Enabling the VPC offering created") self.vpc_off.update(self.apiclient, state="Enabled") self.logger.debug("Creating a VPC network in the account: %s" % self.account.name) self.vpc = VPC.create( self.apiclient, self.services["vpc"], vpcofferingid=self.vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid, ) return
def test_04_rvpc_internallb_haproxy_stats_on_all_interfaces(self): """ Test to verify access to loadbalancer haproxy admin stats page when global setting network.loadbalancer.haproxy.stats.visibility is set to 'all' with credentials from global setting network.loadbalancer.haproxy.stats.auth using the uri from global setting network.loadbalancer.haproxy.stats.uri. It uses a Redundant Routers VPC """ self.logger.debug("Starting test_04_rvpc_internallb_haproxy_stats_on_all_interfaces") self.logger.debug("Creating a Redundant VPC offering..") redundant_vpc_offering = VpcOffering.create( self.apiclient, self.services["redundant_vpc_offering"]) self.logger.debug("Enabling the Redundant VPC offering created") redundant_vpc_offering.update(self.apiclient, state='Enabled') self.execute_internallb_haproxy_tests(redundant_vpc_offering)
def validate_VpcOffering(self, vpc_offering, state=None): """Validates the VPC offering""" self.debug("Validating the creation and state of VPC offering - %s" % vpc_offering.name) vpc_offs = VpcOffering.list(self.api_client, id=vpc_offering.id ) self.assertEqual(isinstance(vpc_offs, list), True, "List VPC offering should return a valid list" ) self.assertEqual(vpc_offering.name, vpc_offs[0].name, "Name of the VPC offering should match with the " "returned list data" ) if state: self.assertEqual(vpc_offs[0].state, state, "VPC offering state should be '%s'" % state ) self.debug("Successfully validated the creation and state of VPC " "offering - %s" % vpc_offering.name)
def setUp(self): self.logger.debug("Creating a VPC offering.") self.vpc_off = VpcOffering.create( self.apiclient, self.services["vpc_offering"]) self.logger.debug("Enabling the VPC offering created") self.vpc_off.update(self.apiclient, state='Enabled') self.logger.debug("Creating a VPC network in the account: %s" % self.account.name) self.vpc = VPC.create( self.apiclient, self.services["vpc"], vpcofferingid=self.vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid) return
def _validate_vpc_offering(self, vpc_offering): self.logger.debug("Check if the VPC offering is created successfully?") vpc_offs = VpcOffering.list( self.apiclient, id=vpc_offering.id ) offering_list = validateList(vpc_offs) self.assertEqual(offering_list[0], PASS, "List VPC offerings should return a valid list" ) self.assertEqual( vpc_offering.name, vpc_offs[0].name, "Name of the VPC offering should match with listVPCOff data" ) self.logger.debug( "VPC offering is created successfully - %s" % vpc_offering.name) return
def create_VPC(self, cidr='10.1.2.1/16'): self.debug("Creating a VPC offering..") self.services["vpc_offering"][ "name"] = self.services["vpc_offering"]["name"] + str(cidr) vpc_off = VpcOffering.create(self.apiclient, self.services["vpc_offering"]) self.cleanup.append(vpc_off) self.debug("Enabling the VPC offering created") vpc_off.update(self.apiclient, state='Enabled') self.debug("Creating a VPC network in the account: %s" % self.account.name) self.services["vpc"]["cidr"] = cidr vpc = VPC.create(self.apiclient, self.services["vpc"], vpcofferingid=vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid) self.cleanup.append(vpc) return vpc
def test_04_create_ipv6_vpc_offering_fail(self): """Test to create VPC offering failure # Validate the following: # 1. createVpcOffering should fail """ Configurations.update(self.apiclient, ipv6_offering_config_name, "false") ipv6_service = self.services["vpc_offering"] ipv6_service["internetprotocol"] = "dualstack" try: vpc_offering = VpcOffering.create( self.apiclient, ipv6_service ) self.cleanup.append(vpc_offering) self.fail("VPC offering created despite global setting - %s set to false" % ipv6_offering_config_name) except CloudstackAPIException as e: self.debug("VPC offering creation failed as expected %s " % e) return
def setUp(self): self.hypervisor = self.testClient.getHypervisorInfo() self.logger.debug("Creating a VPC offering.") self.vpc_off = VpcOffering.create(self.apiclient, self.services["vpc_offering"]) self.logger.debug("Enabling the VPC offering created") self.vpc_off.update(self.apiclient, state="Enabled") self.logger.debug("Creating a VPC network in the account: %s" % self.account.name) self.vpc = VPC.create( self.apiclient, self.services["vpc"], vpcofferingid=self.vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid, ) self.cleanup = [self.vpc, self.vpc_off] self.entity_manager.set_cleanup(self.cleanup) return
def test_04_vpc_private_gateway_with_invalid_lswitch(self): self.logger.debug('Adding NSX device') self.add_nicira_device(self.nicira_master_controller) self.logger.debug('Creating VPC offering') self.vpc_offering = VpcOffering.create(self.api_client, self.vpc_offering_services) self.vpc_offering.update(self.api_client, state='Enabled') self.test_cleanup.append(self.vpc_offering) self.logger.debug('Creating VPC tier offering') self.vpc_tier_offering = NetworkOffering.create( self.api_client, self.vpc_tier_offering_services, conservemode=False) self.vpc_tier_offering.update(self.api_client, state='Enabled') self.test_cleanup.append(self.vpc_tier_offering) self.logger.debug('Creating private network offering') self.private_network_offering = NetworkOffering.create( self.api_client, self.private_network_offering_services) self.private_network_offering.update(self.api_client, state='Enabled') self.test_cleanup.append(self.private_network_offering) allow_all_acl_id = 'bd6d44f8-fc11-11e5-8fe8-5254001daa61' bad_lswitch = 'lswitch:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' vpc = self.create_vpc() network = self.create_vpc_tier(vpc) virtual_machine = self.create_virtual_machine(network) self.logger.debug('Creating private gateway') with self.assertRaises(CloudstackAPIException) as cm: self.create_private_gateway(vpc, "10.0.3.99", "10.0.3.100", allow_all_acl_id, bad_lswitch) the_exception = cm.exception the_message_matcher = "^.*Refusing to design this network because the specified lswitch (%s) does not exist.*$" % bad_lswitch self.assertRegexpMatches(str(the_exception), the_message_matcher)
def setUp(self): self.hypervisor = self.testClient.getHypervisorInfo() self.logger.debug("Creating a VPC offering.") self.vpc_off = VpcOffering.create(self.apiclient, self.services["vpc_offering"]) self.logger.debug("Enabling the VPC offering created") self.vpc_off.update(self.apiclient, state='Enabled') self.logger.debug("Creating a VPC network in the account: %s" % self.account.name) self.vpc = VPC.create(self.apiclient, self.services["vpc"], vpcofferingid=self.vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid) self.cleanup = [self.vpc, self.vpc_off] self.entity_manager.set_cleanup(self.cleanup) return
def create_vpc(self, cidr='10.1.2.1/16'): self.debug("Creating a VPC offering..") self.services["vpc_offering"]["name"] = self.services["vpc_offering"]["name"] + str(cidr) vpc_off = VpcOffering.create( self.apiclient, self.services["vpc_offering"] ) self._cleanup.append(vpc_off) self.debug("Enabling the VPC offering created") vpc_off.update(self.apiclient, state='Enabled') self.debug("Creating a VPC network in the account: %s" % self.account.name) self.services["vpc"]["cidr"] = cidr vpc = VPC.create( self.apiclient, self.services["vpc"], vpcofferingid=vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid ) return vpc
def test_01_vpc_remote_access_vpn(self): """Test Remote Access VPN in VPC""" self.logger.debug("Starting test: test_01_vpc_remote_access_vpn") # 0) Get the default network offering for VPC self.logger.debug("Retrieving default VPC offering") networkOffering = NetworkOffering.list( self.apiclient, name="DefaultIsolatedNetworkOfferingForVpcNetworks") self.assert_(networkOffering is not None and len( networkOffering) > 0, "No VPC based network offering") # 1) Create VPC vpcOffering = VpcOffering.list(self.apiclient, name="Default VPC offering") self.assert_(vpcOffering is not None and len( vpcOffering) > 0, "No VPC offerings found") vpc = None try: vpc = VPC.create( apiclient=self.apiclient, services=self.services["vpc"], networkDomain="vpc.vpn", vpcofferingid=vpcOffering[0].id, zoneid=self.zone.id, account=self.account.name, domainid=self.domain.id ) except Exception as e: self.fail(e) finally: self.assert_(vpc is not None, "VPC creation failed") self.logger.debug("VPC %s created" % (vpc.id)) try: # 2) Create network in VPC ntwk = Network.create( apiclient=self.apiclient, services=self.services["network_1"], accountid=self.account.name, domainid=self.domain.id, networkofferingid=networkOffering[0].id, zoneid=self.zone.id, vpcid=vpc.id ) except Exception as e: self.fail(e) finally: self.assertIsNotNone(ntwk, "Network failed to create") self.logger.debug( "Network %s created in VPC %s" % (ntwk.id, vpc.id)) try: # 3) Deploy a vm vm = VirtualMachine.create(self.apiclient, services=self.services["virtual_machine"], templateid=self.template.id, zoneid=self.zone.id, accountid=self.account.name, domainid=self.domain.id, serviceofferingid=self.compute_offering.id, networkids=ntwk.id, hypervisor=self.hypervisor ) self.assert_(vm is not None, "VM failed to deploy") self.assert_(vm.state == 'Running', "VM is not running") self.debug("VM %s deployed in VPC %s" % (vm.id, vpc.id)) except Exception as e: self.fail(e) finally: self.logger.debug("Deployed virtual machine: OK") try: # 4) Enable VPN for VPC src_nat_list = PublicIPAddress.list( self.apiclient, account=self.account.name, domainid=self.account.domainid, listall=True, issourcenat=True, vpcid=vpc.id ) ip = src_nat_list[0] except Exception as e: self.fail(e) finally: self.logger.debug("Acquired public ip address: OK") try: vpn = Vpn.create(self.apiclient, publicipid=ip.id, account=self.account.name, domainid=self.account.domainid, iprange=self.services["vpn"]["iprange"], fordisplay=self.services["vpn"]["fordisplay"] ) except Exception as e: self.fail(e) finally: self.assertIsNotNone(vpn, "Failed to create Remote Access VPN") self.logger.debug("Created Remote Access VPN: OK") vpnUser = None # 5) Add VPN user for VPC try: vpnUser = VpnUser.create(self.apiclient, account=self.account.name, domainid=self.account.domainid, username=self.services["vpn"]["vpn_user"], password=self.services["vpn"]["vpn_pass"] ) except Exception as e: self.fail(e) finally: self.assertIsNotNone( vpnUser, "Failed to create Remote Access VPN User") self.logger.debug("Created VPN User: OK") # TODO: Add an actual remote vpn connection test from a remote vpc try: # 9) Disable VPN for VPC vpn.delete(self.apiclient) except Exception as e: self.fail(e) finally: self.logger.debug("Deleted the Remote Access VPN: OK")
def setUpClass(cls): cls.testClient = super(TestVMLifeCycleHostmaintenance, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = Services().services # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_template(cls.api_client, cls.zone.id, cls.services["ostype"]) cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id clusterWithSufficientHosts = None clusters = Cluster.list(cls.api_client, zoneid=cls.zone.id) for cluster in clusters: cls.hosts = Host.list(cls.api_client, clusterid=cluster.id) if len(cls.hosts) >= 2: clusterWithSufficientHosts = cluster if clusterWithSufficientHosts is None: raise unittest.SkipTest("No Cluster with 2 hosts found") Host.update(cls.api_client, id=cls.hosts[0].id, hosttags="hosttag1") Host.update(cls.api_client, id=cls.hosts[1].id, hosttags="hosttag2") cls.service_offering_1 = ServiceOffering.create(cls.api_client, cls.services["service_offering_1"]) cls.service_offering_2 = ServiceOffering.create(cls.api_client, cls.services["service_offering_2"]) cls.vpc_off = VpcOffering.create(cls.api_client, cls.services["vpc_offering"]) cls.vpc_off.update(cls.api_client, state="Enabled") cls.account = Account.create(cls.api_client, cls.services["account"], admin=True, domainid=cls.domain.id) cls.vpc_off = VpcOffering.create(cls.api_client, cls.services["vpc_offering"]) cls.vpc_off.update(cls.api_client, state="Enabled") cls.services["vpc"]["cidr"] = "10.1.1.1/16" cls.vpc = VPC.create( cls.api_client, cls.services["vpc"], vpcofferingid=cls.vpc_off.id, zoneid=cls.zone.id, account=cls.account.name, domainid=cls.account.domainid, ) cls.nw_off = NetworkOffering.create(cls.api_client, cls.services["network_offering"], conservemode=False) # Enable Network offering cls.nw_off.update(cls.api_client, state="Enabled") # Creating network using the network offering created cls.network_1 = Network.create( cls.api_client, cls.services["network"], accountid=cls.account.name, domainid=cls.account.domainid, networkofferingid=cls.nw_off.id, zoneid=cls.zone.id, gateway="10.1.1.1", vpcid=cls.vpc.id, ) cls.nw_off_no_lb = NetworkOffering.create( cls.api_client, cls.services["network_offering_no_lb"], conservemode=False ) # Enable Network offering cls.nw_off_no_lb.update(cls.api_client, state="Enabled") # Creating network using the network offering created cls.network_2 = Network.create( cls.api_client, cls.services["network"], accountid=cls.account.name, domainid=cls.account.domainid, networkofferingid=cls.nw_off_no_lb.id, zoneid=cls.zone.id, gateway="10.1.2.1", vpcid=cls.vpc.id, ) # Spawn an instance in that network cls.vm_1 = VirtualMachine.create( cls.api_client, cls.services["virtual_machine"], accountid=cls.account.name, domainid=cls.account.domainid, serviceofferingid=cls.service_offering_1.id, networkids=[str(cls.network_1.id)], ) # Spawn an instance in that network cls.vm_2 = VirtualMachine.create( cls.api_client, cls.services["virtual_machine"], accountid=cls.account.name, domainid=cls.account.domainid, serviceofferingid=cls.service_offering_1.id, networkids=[str(cls.network_1.id)], ) cls.vm_3 = VirtualMachine.create( cls.api_client, cls.services["virtual_machine"], accountid=cls.account.name, domainid=cls.account.domainid, serviceofferingid=cls.service_offering_2.id, networkids=[str(cls.network_2.id)], ) routers = Router.list(cls.api_client, account=cls.account.name, domainid=cls.account.domainid, listall=True) if isinstance(routers, list): cls.vpcvr = routers[0] cls._cleanup = [cls.service_offering_1, cls.service_offering_2, cls.nw_off, cls.nw_off_no_lb] return
def setUpClass(cls): testClient = super(TestPathVMLC, cls).getClsTestClient() cls.apiclient = testClient.getApiClient() cls.testdata = testClient.getParsedTestDataConfig() cls.hypervisor = testClient.getHypervisorInfo() # Get Zone, Domain and templates cls.domain = get_domain(cls.apiclient) cls.zone = get_zone(cls.apiclient) cls._cleanup = [] try: # Create an account cls.account = Account.create( cls.apiclient, cls.testdata["account"], domainid=cls.domain.id ) cls._cleanup.append(cls.account) # If local storage is enabled, alter the offerings to use # localstorage if cls.zone.localstorageenable: cls.testdata["service_offering"]["storagetype"] = 'local' # Create 3 service offerings with different values for # for cpunumber, cpuspeed, and memory cls.testdata["service_offering"]["cpuspeed"] = 128 cls.testdata["service_offering"]["memory"] = 256 cls.testdata["service_offering"]["cpunumber"] = 1 cls.service_offering_1 = ServiceOffering.create( cls.apiclient, cls.testdata["service_offering"] ) cls._cleanup.append(cls.service_offering_1) cls.testdata["service_offering"]["cpunumber"] = 2 cls.service_offering_2 = ServiceOffering.create( cls.apiclient, cls.testdata["service_offering"] ) cls._cleanup.append(cls.service_offering_2) # Create isolated network offering cls.isolated_network_offering = CreateEnabledNetworkOffering( cls.apiclient, cls.testdata["isolated_network_offering"] ) cls._cleanup.append(cls.isolated_network_offering) # Create shared network offering cls.testdata["shared_network_offering_all_services"][ "specifyVlan"] = "True" cls.testdata["shared_network_offering_all_services"][ "specifyIpRanges"] = "True" cls.shared_network_offering = CreateEnabledNetworkOffering( cls.apiclient, cls.testdata["shared_network_offering_all_services"] ) cls._cleanup.append(cls.shared_network_offering) cls.isolated_network_offering_vpc = CreateEnabledNetworkOffering( cls.apiclient, cls.testdata["nw_offering_isolated_vpc"] ) cls._cleanup.append(cls.isolated_network_offering_vpc) cls.vpc_off = VpcOffering.create(cls.apiclient, cls.testdata["vpc_offering"] ) cls.vpc_off.update(cls.apiclient, state='Enabled') cls._cleanup.append(cls.vpc_off) # This variable will store the id of vpc network whenever # test case creates it # If not created, it will be None and will not be used cls.vpcid = None # Create user api client of the account cls.userapiclient = testClient.getUserApiClient( UserName=cls.account.name, DomainName=cls.account.domain ) # Register a private template in the account builtin_info = get_builtin_template_info(cls.apiclient, cls.zone.id) cls.testdata["privatetemplate"]["url"] = builtin_info[0] cls.testdata["privatetemplate"]["hypervisor"] = builtin_info[1] cls.testdata["privatetemplate"]["format"] = builtin_info[2] # Register new template cls.template = Template.register( cls.userapiclient, cls.testdata["privatetemplate"], zoneid=cls.zone.id, account=cls.account.name, domainid=cls.account.domainid ) # Wait for template to download cls.template.download(cls.apiclient) # Check that we are able to login to the created account respose = User.login( cls.apiclient, username=cls.account.name, password=cls.testdata["account"]["password"] ) assert respose.sessionkey is not None,\ "Login to the CloudStack should be successful\ response shall have non Null key" except Exception as e: cls.tearDownClass() raise e return
def setUpClass(cls): cls.testClient = super(TestVMLifeCycleHostmaintenance, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = Services().services # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_template( cls.api_client, cls.zone.id, cls.services["ostype"] ) cls.hypervisor = cls.testClient.getHypervisorInfo() cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id clusterWithSufficientHosts = None clusters = Cluster.list(cls.api_client, zoneid=cls.zone.id) for cluster in clusters: cls.hosts = Host.list(cls.api_client, clusterid=cluster.id) if len(cls.hosts) >= 2: clusterWithSufficientHosts = cluster break if clusterWithSufficientHosts is None: raise unittest.SkipTest("No Cluster with 2 hosts found") Host.update(cls.api_client, id=cls.hosts[0].id, hosttags="hosttag1") Host.update(cls.api_client, id=cls.hosts[1].id, hosttags="hosttag2") cls.service_offering_1 = ServiceOffering.create( cls.api_client, cls.services["service_offering_1"] ) cls.service_offering_2 = ServiceOffering.create( cls.api_client, cls.services["service_offering_2"] ) cls.vpc_off = VpcOffering.create( cls.api_client, cls.services["vpc_offering"] ) cls.vpc_off.update(cls.api_client, state='Enabled') cls.account = Account.create( cls.api_client, cls.services["account"], admin=True, domainid=cls.domain.id ) cls.vpc_off = VpcOffering.create( cls.api_client, cls.services["vpc_offering"] ) cls.vpc_off.update(cls.api_client, state='Enabled') cls.services["vpc"]["cidr"] = '10.1.1.1/16' cls.vpc = VPC.create( cls.api_client, cls.services["vpc"], vpcofferingid=cls.vpc_off.id, zoneid=cls.zone.id, account=cls.account.name, domainid=cls.account.domainid ) cls.nw_off = NetworkOffering.create( cls.api_client, cls.services["network_offering"], conservemode=False ) # Enable Network offering cls.nw_off.update(cls.api_client, state='Enabled') # Creating network using the network offering created cls.network_1 = Network.create( cls.api_client, cls.services["network"], accountid=cls.account.name, domainid=cls.account.domainid, networkofferingid=cls.nw_off.id, zoneid=cls.zone.id, gateway='10.1.1.1', vpcid=cls.vpc.id ) cls.nw_off_no_lb = NetworkOffering.create( cls.api_client, cls.services["network_offering_no_lb"], conservemode=False ) # Enable Network offering cls.nw_off_no_lb.update(cls.api_client, state='Enabled') # Creating network using the network offering created cls.network_2 = Network.create( cls.api_client, cls.services["network"], accountid=cls.account.name, domainid=cls.account.domainid, networkofferingid=cls.nw_off_no_lb.id, zoneid=cls.zone.id, gateway='10.1.2.1', vpcid=cls.vpc.id ) # Spawn an instance in that network cls.vm_1 = VirtualMachine.create( cls.api_client, cls.services["virtual_machine"], accountid=cls.account.name, domainid=cls.account.domainid, serviceofferingid=cls.service_offering_1.id, networkids=[str(cls.network_1.id)] ) # Spawn an instance in that network cls.vm_2 = VirtualMachine.create( cls.api_client, cls.services["virtual_machine"], accountid=cls.account.name, domainid=cls.account.domainid, serviceofferingid=cls.service_offering_1.id, networkids=[str(cls.network_1.id)] ) cls.vm_3 = VirtualMachine.create( cls.api_client, cls.services["virtual_machine"], accountid=cls.account.name, domainid=cls.account.domainid, serviceofferingid=cls.service_offering_2.id, networkids=[str(cls.network_2.id)] ) routers = Router.list( cls.api_client, account=cls.account.name, domainid=cls.account.domainid, listall=True ) if isinstance(routers, list): cls.vpcvr = routers[0] cls._cleanup = [ cls.service_offering_1, cls.service_offering_2, cls.nw_off, cls.nw_off_no_lb, ] return
def setUpClass(cls): cls.testClient = super(TestVPCHostMaintenance, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.services = Services().services # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_template( cls.api_client, cls.zone.id, cls.services["ostype"] ) cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.services["mode"] = cls.zone.networktype cls.vpc_off = VpcOffering.create( cls.api_client, cls.services["vpc_offering"] ) cls.vpc_off.update(cls.api_client, state='Enabled') cls.hosts = Host.list( cls.api_client, zoneid=cls.zone.id, listall=True, type='Routing' ) if isinstance(cls.hosts, list): for host in cls.hosts: Host.enableMaintenance( cls.api_client, id=host.id ) timeout = cls.services["timeout"] while True: time.sleep(cls.services["sleep"]) hosts_states = Host.list( cls.api_client, id=host.id, listall=True ) if hosts_states[ 0].resourcestate == 'PrepareForMaintenance': # Wait for sometimetill host goes in maintenance state time.sleep(cls.services["sleep"]) elif hosts_states[0].resourcestate == 'Maintenance': time.sleep(cls.services["sleep"]) break elif timeout == 0: raise unittest.SkipTest( "Failed to enable maintenance mode on %s" % host.name) timeout = timeout - 1 cls._cleanup = [ cls.vpc_off ] return
def setUpClass(cls): """ Create the following domain tree and accounts that are required for executing Nuage VSP SDN plugin test cases for shared networks: Under ROOT - create domain D1 Under domain D1 - Create two subdomains D11 and D12 Under each of the domains - create one admin user and couple of regular users. Create shared network with the following scope: 1. Network with scope="all" 2. Network with scope="domain" with no subdomain access 3. Network with scope="domain" with subdomain access 4. Network with scope="account" """ super(TestNuageSharedNetworkVpcVmMonitor, cls).setUpClass() cls.sharednetworkdata = cls.test_data["acl"] cls.nuagenetworkdata = cls.test_data["nuagevsp"] cls.domain_1 = None cls.domain_2 = None try: # backup default apikey and secretkey cls.default_apikey = cls.api_client.connection.apiKey cls.default_secretkey = cls.api_client.connection.securityKey # Create domains cls.domain_1 = Domain.create(cls.api_client, cls.sharednetworkdata["domain1"]) cls.domain_11 = Domain.create(cls.api_client, cls.sharednetworkdata["domain11"], parentdomainid=cls.domain_1.id) cls.domain_12 = Domain.create(cls.api_client, cls.sharednetworkdata["domain12"], parentdomainid=cls.domain_1.id) # Create 1 admin account and 2 user accounts for doamin_1 cls.account_d1 = Account.create(cls.api_client, cls.sharednetworkdata["accountD1"], admin=True, domainid=cls.domain_1.id) user = cls.generateKeysForUser(cls.api_client, cls.account_d1) cls.user_d1_apikey = user.apikey cls.user_d1_secretkey = user.secretkey cls.account_d1a = Account.create( cls.api_client, cls.sharednetworkdata["accountD1A"], admin=False, domainid=cls.domain_1.id) user = cls.generateKeysForUser(cls.api_client, cls.account_d1a) cls.user_d1a_apikey = user.apikey cls.user_d1a_secretkey = user.secretkey cls.account_d1b = Account.create( cls.api_client, cls.sharednetworkdata["accountD1B"], admin=False, domainid=cls.domain_1.id) user = cls.generateKeysForUser(cls.api_client, cls.account_d1b) cls.user_d1b_apikey = user.apikey cls.user_d1b_secretkey = user.secretkey # Create 1 admin and 2 user accounts for doamin_11 cls.account_d11 = Account.create( cls.api_client, cls.sharednetworkdata["accountD11"], admin=True, domainid=cls.domain_11.id) user = cls.generateKeysForUser(cls.api_client, cls.account_d11) cls.user_d11_apikey = user.apikey cls.user_d11_secretkey = user.secretkey cls.account_d11a = Account.create( cls.api_client, cls.sharednetworkdata["accountD11A"], admin=False, domainid=cls.domain_11.id) user = cls.generateKeysForUser(cls.api_client, cls.account_d11a) cls.user_d11a_apikey = user.apikey cls.user_d11a_secretkey = user.secretkey cls.account_d11b = Account.create( cls.api_client, cls.sharednetworkdata["accountD11B"], admin=False, domainid=cls.domain_11.id) user = cls.generateKeysForUser(cls.api_client, cls.account_d11b) cls.user_d11b_apikey = user.apikey cls.user_d11b_secretkey = user.secretkey # Create 2 user accounts for doamin_12 cls.account_d12a = Account.create( cls.api_client, cls.sharednetworkdata["accountD12A"], admin=False, domainid=cls.domain_12.id) user = cls.generateKeysForUser(cls.api_client, cls.account_d12a) cls.user_d12a_apikey = user.apikey cls.user_d12a_secretkey = user.secretkey cls.account_d12b = Account.create( cls.api_client, cls.sharednetworkdata["accountD12B"], admin=False, domainid=cls.domain_12.id) user = cls.generateKeysForUser(cls.api_client, cls.account_d12b) cls.user_d12b_apikey = user.apikey cls.user_d12b_secretkey = user.secretkey # Create 1 user account and admin account in "ROOT" domain cls.account_roota = Account.create( cls.api_client, cls.sharednetworkdata["accountROOTA"], admin=False, ) user = cls.generateKeysForUser(cls.api_client, cls.account_roota) cls.user_roota_apikey = user.apikey cls.user_roota_secretkey = user.secretkey cls.account_root = Account.create( cls.api_client, cls.sharednetworkdata["accountROOTA"], admin=True, ) user = cls.generateKeysForUser(cls.api_client, cls.account_root) cls.user_root_apikey = user.apikey cls.user_root_secretkey = user.secretkey # service offering is already created in Nuagetestcase cls.sharednetworkdata['mode'] = cls.zone.networktype # As admin user , create shared network with scope "all", "domain" # with subdomain access , "domain" without subdomain access and # "account" cls.api_client.connection.apiKey = cls.default_apikey cls.api_client.connection.securityKey = cls.default_secretkey cls.shared_network_offering = NetworkOffering.create( cls.api_client, cls.test_data["nuagevsp"]["shared_nuage_network_offering"], conservemode=False) # Enable Network offering cls.shared_network_offering.update(cls.api_client, state='Enabled') cls.shared_network_offering_id = cls.shared_network_offering.id cls.shared_network_all = Network.create( cls.api_client, cls.test_data["nuagevsp"]["network_all"], networkofferingid=cls.shared_network_offering_id, zoneid=cls.zone.id) cls.shared_network_domain_d11 = Network.create( cls.api_client, cls.test_data["nuagevsp"] ["network_domain_with_no_subdomain_access"], networkofferingid=cls.shared_network_offering_id, zoneid=cls.zone.id, domainid=cls.domain_11.id, subdomainaccess=False) cls.shared_network_domain_with_subdomain_d11 = Network.create( cls.api_client, cls.test_data["nuagevsp"] ["network_domain_with_subdomain_access"], networkofferingid=cls.shared_network_offering_id, zoneid=cls.zone.id, domainid=cls.domain_11.id, subdomainaccess=True) cls.shared_network_account_d111a = Network.create( cls.api_client, cls.test_data["nuagevsp"]["network_account"], networkofferingid=cls.shared_network_offering_id, zoneid=cls.zone.id, domainid=cls.domain_11.id, accountid=cls.account_d11a.user[0].username) cls.debug("Creating Nuage VSP VPC offering...") cls.vpc_offering = VpcOffering.create( cls.api_client, cls.test_data["nuagevsp"]["vpc_offering"]) cls.vpc_offering.update(cls.api_client, state="Enabled") # Creating a VPC cls.debug("Creating a VPC with Nuage VSP VPC offering...") cls.test_data["vpc"]["cidr"] = '10.1.0.0/16' cls.vpcd11 = VPC.create(cls.api_client, cls.test_data["vpc"], vpcofferingid=cls.vpc_offering.id, zoneid=cls.zone.id, account=cls.account_d11a.name, domainid=cls.account_d11a.domainid) # Creating a network offering cls.debug("Creating Nuage Vsp VPC Network offering...") cls.network_offering = NetworkOffering.create( cls.api_client, cls.test_data["nuagevsp"]["vpc_network_offering"], conservemode=False) cls.network_offering.update(cls.api_client, state="Enabled") # Creating two VPC network in the VPC cls.debug("Creating a VPC network with Nuage Vsp VPC Network " "offering...") cls.test_data["network"]["netmask"] = "255.255.255.0" cls.vpc_network1 = Network.create( cls.api_client, cls.test_data["network"], accountid=cls.account_d11a.name, domainid=cls.account_d11a.domainid, networkofferingid=cls.network_offering.id, zoneid=cls.zone.id, gateway="10.1.1.1", vpcid=cls.vpcd11.id) cls.debug( "Creating a VPC Tier2 network with Nuage Vsp VPC Network " "offering...") cls.test_data["network"]["name"] = "Tier2" cls.vpc_network2 = Network.create( cls.api_client, cls.test_data["network"], accountid=cls.account_d11a.name, domainid=cls.account_d11a.domainid, networkofferingid=cls.network_offering.id, zoneid=cls.zone.id, gateway="10.1.2.1", vpcid=cls.vpcd11.id) cls.vmdata = {"name": "vmvpc1", "displayname": "vmvpc1"} # Deploying a VM in the VPC network cls.vmvpc1 = VirtualMachine.create( cls.api_client, cls.vmdata, zoneid=cls.zone.id, serviceofferingid=cls.service_offering.id, templateid=cls.template.id, networkids=cls.vpc_network1.id, accountid=cls.account_d11a.name, domainid=cls.account_d11a.domainid) cls.vmdata = {"name": "vmvpc2", "displayname": "vmvpc2"} cls.vmvpc2 = VirtualMachine.create( cls.api_client, cls.vmdata, zoneid=cls.zone.id, serviceofferingid=cls.service_offering.id, templateid=cls.template.id, networkids=cls.vpc_network2.id, accountid=cls.account_d11a.name, domainid=cls.account_d11a.domainid) cls._cleanup = [ cls.account_root, cls.account_roota, cls.shared_network_all, cls.shared_network_offering, cls.network_offering, cls.vpc_offering, cls.service_offering, ] except Exception as e: cls.domain_1.delete(cls.api_client, cleanup="true") cleanup_resources(cls.api_client, cls._cleanup) raise Exception( "Failed to create the setup required to execute the test " "cases: %s" % e) return
def test_vpc_site2site_vpn(self): """Test VPN in VPC""" # 0) Get the default network offering for VPC networkOffering = NetworkOffering.list( self.apiclient, name="DefaultIsolatedNetworkOfferingForVpcNetworks") self.assert_(networkOffering is not None and len( networkOffering) > 0, "No VPC based network offering") # 1) Create VPC offering vpcOffering = VpcOffering.list(self.apiclient, isdefault=True) self.assert_(vpcOffering is not None and len( vpcOffering) > 0, "No VPC offerings found") # Create VPC 1 try: vpc1 = VPC.create( apiclient=self.apiclient, services=self.services["vpc"], networkDomain="vpc1.vpn", vpcofferingid=vpcOffering[0].id, zoneid=self.zone.id, account=self.account.name, domainid=self.domain.id ) except Exception as e: self.fail(e) finally: self.assert_(vpc1 is not None, "VPC1 creation failed") self.logger.debug("VPC1 %s created" % (vpc1.id)) # Create VPC 2 try: vpc2 = VPC.create( apiclient=self.apiclient, services=self.services["vpc2"], networkDomain="vpc2.vpn", vpcofferingid=vpcOffering[0].id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid ) except Exception as e: self.fail(e) finally: self.assert_(vpc2 is not None, "VPC2 creation failed") self.logger.debug("VPC2 %s created" % (vpc2.id)) default_acl = NetworkACLList.list( self.apiclient, name="default_allow")[0] # Create network in VPC 1 try: ntwk1 = Network.create( apiclient=self.apiclient, services=self.services["network_1"], accountid=self.account.name, domainid=self.account.domainid, networkofferingid=networkOffering[0].id, zoneid=self.zone.id, vpcid=vpc1.id, aclid=default_acl.id ) except Exception as e: self.fail(e) finally: self.assertIsNotNone(ntwk1, "Network failed to create") self.logger.debug("Network %s created in VPC %s" % (ntwk1.id, vpc1.id)) # Create network in VPC 2 try: ntwk2 = Network.create( apiclient=self.apiclient, services=self.services["network_2"], accountid=self.account.name, domainid=self.account.domainid, networkofferingid=networkOffering[0].id, zoneid=self.zone.id, vpcid=vpc2.id, aclid=default_acl.id ) except Exception as e: self.fail(e) finally: self.assertIsNotNone(ntwk2, "Network failed to create") self.logger.debug("Network %s created in VPC %s" % (ntwk2.id, vpc2.id)) # Deploy a vm in network 2 try: vm1 = VirtualMachine.create(self.apiclient, services=self.services["virtual_machine"], templateid=self.template.id, zoneid=self.zone.id, accountid=self.account.name, domainid=self.account.domainid, serviceofferingid=self.service_offering.id, networkids=ntwk1.id, hypervisor=self.services[ "virtual_machine"]["hypervisor"] ) except Exception as e: self.fail(e) finally: self.assert_(vm1 is not None, "VM failed to deploy") self.assert_(vm1.state == 'Running', "VM is not running") self.logger.debug("VM %s deployed in VPC %s" % (vm1.id, vpc1.id)) # Deploy a vm in network 2 try: vm2 = VirtualMachine.create(self.apiclient, services=self.services["virtual_machine"], templateid=self.template.id, zoneid=self.zone.id, accountid=self.account.name, domainid=self.account.domainid, serviceofferingid=self.service_offering.id, networkids=ntwk2.id, hypervisor=self.services[ "virtual_machine"]["hypervisor"] ) except Exception as e: self.fail(e) finally: self.assert_(vm2 is not None, "VM failed to deploy") self.assert_(vm2.state == 'Running', "VM is not running") self.debug("VM %s deployed in VPC %s" % (vm2.id, vpc2.id)) # 4) Enable Site-to-Site VPN for VPC vpn1_response = Vpn.createVpnGateway(self.apiclient, vpc1.id) self.assert_( vpn1_response is not None, "Failed to enable VPN Gateway 1") self.logger.debug("VPN gateway for VPC %s enabled" % vpc1.id) vpn2_response = Vpn.createVpnGateway(self.apiclient, vpc2.id) self.assert_( vpn2_response is not None, "Failed to enable VPN Gateway 2") self.logger.debug("VPN gateway for VPC %s enabled" % vpc2.id) # 5) Add VPN Customer gateway info src_nat_list = PublicIPAddress.list( self.apiclient, account=self.account.name, domainid=self.account.domainid, listall=True, issourcenat=True, vpcid=vpc1.id ) ip1 = src_nat_list[0] src_nat_list = PublicIPAddress.list( self.apiclient, account=self.account.name, domainid=self.account.domainid, listall=True, issourcenat=True, vpcid=vpc2.id ) ip2 = src_nat_list[0] services = self.services["vpncustomergateway"] customer1_response = VpnCustomerGateway.create( self.apiclient, services, "Peer VPC1", ip1.ipaddress, vpc1.cidr, self.account.name, self.domain.id) self.debug("VPN customer gateway added for VPC %s enabled" % vpc1.id) self.logger.debug(vars(customer1_response)) customer2_response = VpnCustomerGateway.create( self.apiclient, services, "Peer VPC2", ip2.ipaddress, vpc2.cidr, self.account.name, self.domain.id) self.debug("VPN customer gateway added for VPC %s enabled" % vpc2.id) self.logger.debug(vars(customer2_response)) # 6) Connect two VPCs vpnconn1_response = Vpn.createVpnConnection( self.apiclient, customer1_response.id, vpn2_response['id'], True) self.debug("VPN passive connection created for VPC %s" % vpc2.id) vpnconn2_response = Vpn.createVpnConnection( self.apiclient, customer2_response.id, vpn1_response['id']) self.debug("VPN connection created for VPC %s" % vpc1.id) self.assertEqual( vpnconn2_response['state'], "Connected", "Failed to connect between VPCs!") # acquire an extra ip address to use to ssh into vm2 try: vm2.public_ip = PublicIPAddress.create( apiclient=self.apiclient, accountid=self.account.name, zoneid=self.zone.id, domainid=self.account.domainid, services=self.services, networkid=ntwk2.id, vpcid=vpc2.id) except Exception as e: self.fail(e) finally: self.assert_( vm2.public_ip is not None, "Failed to aqcuire public ip for vm2") # Create port forward to be able to ssh into vm2 try: natrule = self.create_natrule( vpc2, vm2, 22, 22, vm2.public_ip, ntwk2) except Exception as e: self.fail(e) finally: self.assert_( natrule is not None, "Failed to create portforward for vm2") time.sleep(20) # setup ssh connection to vm2 ssh_client = self.get_ssh_client(vm2, self.services, 10) if ssh_client: # run ping test packet_loss = ssh_client.execute( "/bin/ping -c 3 -t 10 " + vm1.nic[0].ipaddress + " |grep packet|cut -d ' ' -f 7| cut -f1 -d'%'")[0] self.assert_(int(packet_loss) == 0, "Ping did not succeed") else: self.fail("Failed to setup ssh connection to %s" % vm2.public_ip)
def test_02_native_to_native_vpc_migration(self): """ Verify Migration for a vpc network nativeOnly 1. create native vpc with 2 tier networks 2. migrate to native vpc, check VR state 3. deploy VM in vpc tier network 4. acquire ip and enable staticnat 5. migrate to native vpc network """ self.debug("Creating Native VSP VPC offering with Static NAT service " "provider as VPCVR...") native_vpc_off = VpcOffering.create( self.apiclient, self.test_data["vpc_offering_reduced"]) self.debug("Enabling the VPC offering created") native_vpc_off.update(self.apiclient, state='Enabled') self.debug("Creating a VPC with Static NAT service provider as " "VpcVirtualRouter") self.services["vpc"]["cidr"] = '10.1.1.1/16' vpc = VPC.create( self.apiclient, self.services["vpc"], vpcofferingid=native_vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid ) self.debug("Creating native VPC Network Tier offering " "with Static NAT service provider as VPCVR") native_tiernet_off = \ NetworkOffering.create(self.apiclient, self.test_data ["nw_offering_reduced_vpc"], conservemode=False) native_tiernet_off.update(self.apiclient, state='Enabled') self.debug("Creating a VPC tier network with Static NAT service") vpc_tier = Network.create(self.apiclient, self.services["network"], accountid=self.account.name, domainid=self.account.domainid, networkofferingid=native_tiernet_off.id, zoneid=self.zone.id, gateway='10.1.1.1', vpcid=vpc.id if vpc else self.vpc.id ) self.debug("Created network with ID: %s" % vpc_tier.id) network_offering_map = \ [{"networkid": vpc_tier.id, "networkofferingid": self.native_vpc_network_offering.id}] self.migrate_vpc(vpc, native_vpc_off, network_offering_map, resume=False) network_offering_map = \ [{"networkid": vpc_tier.id, "networkofferingid": native_tiernet_off.id}] self.migrate_vpc(vpc, native_vpc_off, network_offering_map, resume=False) self.debug('Creating VM in network=%s' % native_tiernet_off.name) vm = VirtualMachine.create( self.apiclient, self.services["virtual_machine"], accountid=self.account.name, domainid=self.account.domainid, serviceofferingid=self.service_offering.id, networkids=[str(vpc_tier.id)], templateid=self.template.id, zoneid=self.zone.id ) self.debug('Created VM=%s in network=%s' % (vm.id, native_tiernet_off.name)) network_offering_map = \ [{"networkid": vpc_tier.id, "networkofferingid": self.native_vpc_network_offering.id}] self.migrate_vpc(vpc, native_vpc_off, network_offering_map, resume=False) network_offering_map = \ [{"networkid": vpc_tier.id, "networkofferingid": native_tiernet_off.id}] self.migrate_vpc(vpc, native_vpc_off, network_offering_map, resume=False)
def setUpClass(cls): """ Create the following domain tree and accounts that are required for executing Nuage VSP SDN plugin test cases for shared networks: Under ROOT - create domain D1 Under domain D1 - Create two subdomains D11 and D12 Under each of the domains - create one admin user and couple of regular users. Create shared network with the following scope: 1. Network with scope="all" 2. Network with scope="domain" with no subdomain access 3. Network with scope="domain" with subdomain access 4. Network with scope="account" """ super(TestNuageSharedNetworkVpcVmMonitor, cls).setUpClass() cls.sharednetworkdata = cls.test_data["acl"] cls.nuagenetworkdata = cls.test_data["nuagevsp"] cls.domain_1 = None cls.domain_2 = None try: # backup default apikey and secretkey cls.default_apikey = cls.api_client.connection.apiKey cls.default_secretkey = cls.api_client.connection.securityKey # Create domains cls.domain_1 = Domain.create( cls.api_client, cls.sharednetworkdata["domain1"] ) cls.domain_11 = Domain.create( cls.api_client, cls.sharednetworkdata["domain11"], parentdomainid=cls.domain_1.id ) cls.domain_12 = Domain.create( cls.api_client, cls.sharednetworkdata["domain12"], parentdomainid=cls.domain_1.id ) # Create 1 admin account and 2 user accounts for doamin_1 cls.account_d1 = Account.create( cls.api_client, cls.sharednetworkdata["accountD1"], admin=True, domainid=cls.domain_1.id ) user = cls.generateKeysForUser(cls.api_client, cls.account_d1) cls.user_d1_apikey = user.apikey cls.user_d1_secretkey = user.secretkey cls.account_d1a = Account.create( cls.api_client, cls.sharednetworkdata["accountD1A"], admin=False, domainid=cls.domain_1.id ) user = cls.generateKeysForUser(cls.api_client, cls.account_d1a) cls.user_d1a_apikey = user.apikey cls.user_d1a_secretkey = user.secretkey cls.account_d1b = Account.create( cls.api_client, cls.sharednetworkdata["accountD1B"], admin=False, domainid=cls.domain_1.id ) user = cls.generateKeysForUser(cls.api_client, cls.account_d1b) cls.user_d1b_apikey = user.apikey cls.user_d1b_secretkey = user.secretkey # Create 1 admin and 2 user accounts for doamin_11 cls.account_d11 = Account.create( cls.api_client, cls.sharednetworkdata["accountD11"], admin=True, domainid=cls.domain_11.id ) user = cls.generateKeysForUser(cls.api_client, cls.account_d11) cls.user_d11_apikey = user.apikey cls.user_d11_secretkey = user.secretkey cls.account_d11a = Account.create( cls.api_client, cls.sharednetworkdata["accountD11A"], admin=False, domainid=cls.domain_11.id ) user = cls.generateKeysForUser(cls.api_client, cls.account_d11a) cls.user_d11a_apikey = user.apikey cls.user_d11a_secretkey = user.secretkey cls.account_d11b = Account.create( cls.api_client, cls.sharednetworkdata["accountD11B"], admin=False, domainid=cls.domain_11.id ) user = cls.generateKeysForUser(cls.api_client, cls.account_d11b) cls.user_d11b_apikey = user.apikey cls.user_d11b_secretkey = user.secretkey # Create 2 user accounts for doamin_12 cls.account_d12a = Account.create( cls.api_client, cls.sharednetworkdata["accountD12A"], admin=False, domainid=cls.domain_12.id ) user = cls.generateKeysForUser(cls.api_client, cls.account_d12a) cls.user_d12a_apikey = user.apikey cls.user_d12a_secretkey = user.secretkey cls.account_d12b = Account.create( cls.api_client, cls.sharednetworkdata["accountD12B"], admin=False, domainid=cls.domain_12.id ) user = cls.generateKeysForUser(cls.api_client, cls.account_d12b) cls.user_d12b_apikey = user.apikey cls.user_d12b_secretkey = user.secretkey # Create 1 user account and admin account in "ROOT" domain cls.account_roota = Account.create( cls.api_client, cls.sharednetworkdata["accountROOTA"], admin=False, ) user = cls.generateKeysForUser(cls.api_client, cls.account_roota) cls.user_roota_apikey = user.apikey cls.user_roota_secretkey = user.secretkey cls.account_root = Account.create( cls.api_client, cls.sharednetworkdata["accountROOTA"], admin=True, ) user = cls.generateKeysForUser(cls.api_client, cls.account_root) cls.user_root_apikey = user.apikey cls.user_root_secretkey = user.secretkey # service offering is already created in Nuagetestcase cls.sharednetworkdata['mode'] = cls.zone.networktype # As admin user , create shared network with scope "all", "domain" # with subdomain access , "domain" without subdomain access and # "account" cls.api_client.connection.apiKey = cls.default_apikey cls.api_client.connection.securityKey = cls.default_secretkey cls.shared_network_offering = NetworkOffering.create( cls.api_client, cls.test_data["nuagevsp"]["shared_nuage_network_offering"], conservemode=False ) # Enable Network offering cls.shared_network_offering.update(cls.api_client, state='Enabled') cls.shared_network_offering_id = cls.shared_network_offering.id cls.shared_network_all = Network.create( cls.api_client, cls.test_data["nuagevsp"]["network_all"], networkofferingid=cls.shared_network_offering_id, zoneid=cls.zone.id ) cls.shared_network_domain_d11 = Network.create( cls.api_client, cls.test_data["nuagevsp"][ "network_domain_with_no_subdomain_access"], networkofferingid=cls.shared_network_offering_id, zoneid=cls.zone.id, domainid=cls.domain_11.id, subdomainaccess=False ) cls.shared_network_domain_with_subdomain_d11 = Network.create( cls.api_client, cls.test_data["nuagevsp"][ "network_domain_with_subdomain_access"], networkofferingid=cls.shared_network_offering_id, zoneid=cls.zone.id, domainid=cls.domain_11.id, subdomainaccess=True ) cls.shared_network_account_d111a = Network.create( cls.api_client, cls.test_data["nuagevsp"]["network_account"], networkofferingid=cls.shared_network_offering_id, zoneid=cls.zone.id, domainid=cls.domain_11.id, accountid=cls.account_d11a.user[0].username ) cls.debug("Creating Nuage VSP VPC offering...") cls.vpc_offering = VpcOffering.create(cls.api_client, cls.test_data["nuagevsp"][ "vpc_offering"] ) cls.vpc_offering.update(cls.api_client, state="Enabled") # Creating a VPC cls.debug("Creating a VPC with Nuage VSP VPC offering...") cls.test_data["vpc"]["cidr"] = '10.1.0.0/16' cls.vpcd11 = VPC.create(cls.api_client, cls.test_data["vpc"], vpcofferingid=cls.vpc_offering.id, zoneid=cls.zone.id, account=cls.account_d11a.name, domainid=cls.account_d11a.domainid ) # Creating a network offering cls.debug("Creating Nuage Vsp VPC Network offering...") cls.network_offering = NetworkOffering.create( cls.api_client, cls.test_data["nuagevsp"]["vpc_network_offering"], conservemode=False ) cls.network_offering.update(cls.api_client, state="Enabled") # Creating two VPC network in the VPC cls.debug( "Creating a VPC network with Nuage Vsp VPC Network " "offering...") cls.test_data["network"]["netmask"] = "255.255.255.0" cls.vpc_network1 = Network.create( cls.api_client, cls.test_data["network"], accountid=cls.account_d11a.name, domainid=cls.account_d11a.domainid, networkofferingid=cls.network_offering.id, zoneid=cls.zone.id, gateway="10.1.1.1", vpcid=cls.vpcd11.id ) cls.debug( "Creating a VPC Tier2 network with Nuage Vsp VPC Network " "offering...") cls.test_data["network"]["name"] = "Tier2" cls.vpc_network2 = Network.create( cls.api_client, cls.test_data["network"], accountid=cls.account_d11a.name, domainid=cls.account_d11a.domainid, networkofferingid=cls.network_offering.id, zoneid=cls.zone.id, gateway="10.1.2.1", vpcid=cls.vpcd11.id ) cls.vmdata = {"name": "vmvpc1", "displayname": "vmvpc1" } # Deploying a VM in the VPC network cls.vmvpc1 = VirtualMachine.create( cls.api_client, cls.vmdata, zoneid=cls.zone.id, serviceofferingid=cls.service_offering.id, templateid=cls.template.id, networkids=cls.vpc_network1.id, accountid=cls.account_d11a.name, domainid=cls.account_d11a.domainid ) cls.vmdata = {"name": "vmvpc2", "displayname": "vmvpc2" } cls.vmvpc2 = VirtualMachine.create( cls.api_client, cls.vmdata, zoneid=cls.zone.id, serviceofferingid=cls.service_offering.id, templateid=cls.template.id, networkids=cls.vpc_network2.id, accountid=cls.account_d11a.name, domainid=cls.account_d11a.domainid ) cls._cleanup = [ cls.account_root, cls.account_roota, cls.shared_network_all, cls.shared_network_offering, cls.network_offering, cls.vpc_offering, cls.service_offering, ] except Exception as e: cls.domain_1.delete(cls.api_client, cleanup="true") cleanup_resources(cls.api_client, cls._cleanup) raise Exception( "Failed to create the setup required to execute the test " "cases: %s" % e) return
def test_01_vpc_remote_access_vpn(self): """Test Remote Access VPN in VPC""" # 1) Create VPC vpc_offering = VpcOffering.list(self.apiclient, isdefault=True) self.assertTrue(vpc_offering is not None and len(vpc_offering) > 0, "No VPC offerings found") vpc = VPC.create(apiclient=self.apiclient, services=self.services["vpc"], networkDomain="vpc.vpn", vpcofferingid=vpc_offering[0].id, zoneid=self.zone.id, account=self.account.name, domainid=self.domain.id) self.assertIsNotNone(vpc, "VPC creation failed") self.logger.debug("VPC %s created" % (vpc.id)) self.cleanup.append(vpc) # 2) Create network in VPC ntwk = Network.create(apiclient=self.apiclient, services=self.services["network_1"], accountid=self.account.name, domainid=self.domain.id, networkofferingid=self.network_offerings[0].id, zoneid=self.zone.id, vpcid=vpc.id) self.assertIsNotNone(ntwk, "Network failed to create") self.logger.debug("Network %s created in VPC %s" % (ntwk.id, vpc.id)) self.cleanup.append(ntwk) # 3) Deploy a vm vm = VirtualMachine.create(self.apiclient, services=self.services["virtual_machine"], templateid=self.template.id, zoneid=self.zone.id, accountid=self.account.name, domainid=self.domain.id, serviceofferingid=self.compute_offering.id, networkids=ntwk.id, hypervisor=self.hypervisor) self.assertIsNotNone(vm, "VM failed to deploy") self.assertEquals(vm.state, 'Running', "VM is not running") self.debug("VM %s deployed in VPC %s" % (vm.id, vpc.id)) self.logger.debug("Deployed virtual machine: OK") self.cleanup.append(vm) # 4) Enable VPN for VPC src_nat_list = PublicIPAddress.list(self.apiclient, account=self.account.name, domainid=self.account.domainid, listall=True, issourcenat=True, vpcid=vpc.id) ip = src_nat_list[0] self.logger.debug("Acquired public ip address: OK") vpn = Vpn.create(self.apiclient, publicipid=ip.id, account=self.account.name, domainid=self.account.domainid, iprange=self.services["vpn"]["iprange"], fordisplay=self.services["vpn"]["fordisplay"]) self.assertIsNotNone(vpn, "Failed to create Remote Access VPN") self.logger.debug("Created Remote Access VPN: OK") vpn_user = None # 5) Add VPN user for VPC vpn_user = VpnUser.create(self.apiclient, account=self.account.name, domainid=self.account.domainid, username=self.services["vpn"]["vpn_user"], password=self.services["vpn"]["vpn_pass"]) self.assertIsNotNone(vpn_user, "Failed to create Remote Access VPN User") self.logger.debug("Created VPN User: OK") # TODO: Add an actual remote vpn connection test from a remote vpc # 9) Disable VPN for VPC vpn.delete(self.apiclient) self.logger.debug("Deleted the Remote Access VPN: OK")
def setUpClass(cls): cls._cleanup = [] cls.testClient = super(TestVPCRouterOneNetwork, cls).getClsTestClient() cls.api_client = cls.testClient.getApiClient() cls.hypervisor = cls.testClient.getHypervisorInfo() cls.vpcSupported = True cls._cleanup = [] cls.services = Services().services # Get Zone, Domain and templates cls.domain = get_domain(cls.api_client) cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests()) cls.template = get_template( cls.api_client, cls.zone.id, cls.services["ostype"] ) cls.services["virtual_machine"]["zoneid"] = cls.zone.id cls.services["virtual_machine"]["template"] = cls.template.id cls.service_offering = ServiceOffering.create( cls.api_client, cls.services["service_offering"] ) cls._cleanup.append(cls.service_offering) cls.vpc_off = VpcOffering.create( cls.api_client, cls.services["vpc_offering"] ) cls.vpc_off.update(cls.api_client, state='Enabled') cls._cleanup.append(cls.vpc_off) cls.account = Account.create( cls.api_client, cls.services["account"], admin=True, domainid=cls.domain.id ) cls._cleanup.insert(0, cls.account) cls.services["vpc"]["cidr"] = '10.1.1.1/16' cls.vpc = VPC.create( cls.api_client, cls.services["vpc"], vpcofferingid=cls.vpc_off.id, zoneid=cls.zone.id, account=cls.account.name, domainid=cls.account.domainid ) private_gateway = PrivateGateway.create( cls.api_client, gateway='10.1.3.1', ipaddress='10.1.3.100', netmask='255.255.255.0', vlan=678, vpcid=cls.vpc.id ) cls.gateways = PrivateGateway.list( cls.api_client, id=private_gateway.id, listall=True ) static_route = StaticRoute.create( cls.api_client, cidr='11.1.1.1/24', gatewayid=private_gateway.id ) cls.static_routes = StaticRoute.list( cls.api_client, id=static_route.id, listall=True ) cls.nw_off = NetworkOffering.create( cls.api_client, cls.services["network_offering"], conservemode=False ) # Enable Network offering cls.nw_off.update(cls.api_client, state='Enabled') cls._cleanup.append(cls.nw_off) # Creating network using the network offering created cls.network_1 = Network.create( cls.api_client, cls.services["network"], accountid=cls.account.name, domainid=cls.account.domainid, networkofferingid=cls.nw_off.id, zoneid=cls.zone.id, gateway='10.1.1.1', vpcid=cls.vpc.id ) # Spawn an instance in that network vm_1 = VirtualMachine.create( cls.api_client, cls.services["virtual_machine"], accountid=cls.account.name, domainid=cls.account.domainid, serviceofferingid=cls.service_offering.id, networkids=[str(cls.network_1.id)] ) vm_2 = VirtualMachine.create( cls.api_client, cls.services["virtual_machine"], accountid=cls.account.name, domainid=cls.account.domainid, serviceofferingid=cls.service_offering.id, networkids=[str(cls.network_1.id)] ) # Spawn an instance in that network vm_3 = VirtualMachine.create( cls.api_client, cls.services["virtual_machine"], accountid=cls.account.name, domainid=cls.account.domainid, serviceofferingid=cls.service_offering.id, networkids=[str(cls.network_1.id)] ) VirtualMachine.list( cls.api_client, account=cls.account.name, domainid=cls.account.domainid, listall=True ) public_ip_1 = PublicIPAddress.create( cls.api_client, accountid=cls.account.name, zoneid=cls.zone.id, domainid=cls.account.domainid, networkid=cls.network_1.id, vpcid=cls.vpc.id ) NATRule.create( cls.api_client, vm_1, cls.services["natrule"], ipaddressid=public_ip_1.ipaddress.id, openfirewall=False, networkid=cls.network_1.id, vpcid=cls.vpc.id ) NetworkACL.create( cls.api_client, networkid=cls.network_1.id, services=cls.services["natrule"], traffictype='Ingress' ) public_ip_2 = PublicIPAddress.create( cls.api_client, accountid=cls.account.name, zoneid=cls.zone.id, domainid=cls.account.domainid, networkid=cls.network_1.id, vpcid=cls.vpc.id ) try: StaticNATRule.enable( cls.api_client, ipaddressid=public_ip_2.ipaddress.id, virtualmachineid=vm_2.id, networkid=cls.network_1.id ) except Exception as e: cls.fail("Failed to enable static NAT on IP: %s - %s" % ( public_ip_2.ipaddress.ipaddress, e)) PublicIPAddress.list( cls.api_client, networkid=cls.network_1.id, listall=True, isstaticnat=True, account=cls.account.name, domainid=cls.account.domainid ) public_ip_3 = PublicIPAddress.create( cls.api_client, accountid=cls.account.name, zoneid=cls.zone.id, domainid=cls.account.domainid, networkid=cls.network_1.id, vpcid=cls.vpc.id ) lb_rule = LoadBalancerRule.create( cls.api_client, cls.services["lbrule"], ipaddressid=public_ip_3.ipaddress.id, accountid=cls.account.name, networkid=cls.network_1.id, vpcid=cls.vpc.id, domainid=cls.account.domainid ) lb_rule.assign(cls.api_client, [vm_3]) NetworkACL.create( cls.api_client, networkid=cls.network_1.id, services=cls.services["lbrule"], traffictype='Ingress' ) NetworkACL.create( cls.api_client, networkid=cls.network_1.id, services=cls.services["http_rule"], traffictype='Egress' )
def test_03_deploy_vms_in_vpc_with_regionlevelvpc(self): """Test deploy virtual machines in VPC networks""" # 1. Create VPC Offering by specifying all supported Services # (Vpn,dhcpdns,UserData, SourceNat,Static NAT and PF,LB,NetworkAcl) # 2. Create a VPC using the above VPC offering # 3. Create a network as part of this VPC. # 4. Deploy few Vms. # 5. Create a LB rule for this VM. # 6. Create a PF rule for this VM. # 7. Create a Static Nat rule for this VM. # 8. Create Ingress rules on the network to open the above created # LB PF and Static Nat rule # 9. Create Egress Network ACL for this network to access google.com. # 10. Enable VPN services if not self.isOvsPluginEnabled: self.skipTest("OVS plugin should be enabled to run this test case") self.debug("Creating a VPC offering..") vpc_off = VpcOffering.create( self.apiclient, self.services["vpc_offering"] ) vpc_off.update(self.apiclient, state='Enabled') self.debug("creating a VPC network in the account: %s" % self.account.name) vpc = VPC.create( self.apiclient, self.services["vpc"], vpcofferingid=vpc_off.id, zoneid=self.zone.id, account=self.account.name, domainid=self.account.domainid, networkDomain=self.account.domainid ) self.validate_vpc_network(vpc) self.network_offering = NetworkOffering.create( self.apiclient, self.services["network_offering"], conservemode=False ) # Enable Network offering self.network_offering.update(self.apiclient, state='Enabled') gateway = vpc.cidr.split('/')[0] # Split the cidr to retrieve gateway # for eg. cidr = 10.0.0.1/24 # Gateway = 10.0.0.1 # Creating network using the network offering created self.debug("Creating network with network offering: %s" % self.network_offering.id) network = Network.create( self.apiclient, self.services["network"], accountid=self.account.name, domainid=self.account.domainid, networkofferingid=self.network_offering.id, zoneid=self.zone.id, gateway=gateway, vpcid=vpc.id ) self.debug("Created network with ID: %s" % network.id) # Spawn an instance in that network virtual_machine = VirtualMachine.create( self.apiclient, self.services["virtual_machine"], accountid=self.account.name, domainid=self.account.domainid, serviceofferingid=self.service_offering.id, networkids=[str(network.id)] ) self.debug("Deployed VM in network: %s" % network.id) self.debug("Associating public IP for network: %s" % network.name) public_ip = PublicIPAddress.create( self.apiclient, accountid=self.account.name, zoneid=self.zone.id, domainid=self.account.domainid, networkid=network.id, vpcid=vpc.id ) self.debug("Associated %s with network %s" % ( public_ip.ipaddress.ipaddress, network.id )) self.debug("Creating LB rule for IP address: %s" % public_ip.ipaddress.ipaddress) LoadBalancerRule.create( self.apiclient, self.services["lbrule"], ipaddressid=public_ip.ipaddress.id, accountid=self.account.name, networkid=network.id, vpcid=vpc.id, domainid=self.account.domainid ) self.debug("Associating public IP for network: %s" % vpc.name) public_ip_2 = PublicIPAddress.create( self.apiclient, accountid=self.account.name, zoneid=self.zone.id, domainid=self.account.domainid, networkid=network.id, vpcid=vpc.id ) self.debug("Associated %s with network %s" % ( public_ip_2.ipaddress.ipaddress, network.id )) NATRule.create( self.apiclient, virtual_machine, self.services["natrule"], ipaddressid=public_ip_2.ipaddress.id, openfirewall=False, networkid=network.id, vpcid=vpc.id ) self.debug("Adding NetwrokACl rules to make PF and LB accessible") NetworkACL.create( self.apiclient, networkid=network.id, services=self.services["natrule"], traffictype='Ingress' ) NetworkACL.create( self.apiclient, networkid=network.id, services=self.services["lbrule"], traffictype='Ingress' ) self.debug("Checking if we can SSH into VM?") try: virtual_machine.get_ssh_client( ipaddress=public_ip_2.ipaddress.ipaddress, ) self.debug("SSH into VM is successfully") except Exception as e: self.fail("Failed to SSH into VM - %s, %s" % (public_ip_2.ipaddress.ipaddress, e)) self.debug("Associating public IP for network: %s" % network.name) public_ip_3 = PublicIPAddress.create( self.apiclient, accountid=self.account.name, zoneid=self.zone.id, domainid=self.account.domainid, networkid=network.id, vpcid=vpc.id ) self.debug("Associated %s with network %s" % ( public_ip_3.ipaddress.ipaddress, network.id )) self.debug("Enabling static NAT for IP: %s" % public_ip_3.ipaddress.ipaddress) try: StaticNATRule.enable( self.apiclient, ipaddressid=public_ip_3.ipaddress.id, virtualmachineid=virtual_machine.id, networkid=network.id ) self.debug("Static NAT enabled for IP: %s" % public_ip_3.ipaddress.ipaddress) except Exception as e: self.fail("Failed to enable static NAT on IP: %s - %s" % ( public_ip_3.ipaddress.ipaddress, e)) public_ips = PublicIPAddress.list( self.apiclient, networkid=network.id, listall=True, isstaticnat=True, account=self.account.name, domainid=self.account.domainid ) self.assertEqual( isinstance(public_ips, list), True, "List public Ip for network should list the Ip addr" ) self.assertEqual( public_ips[0].ipaddress, public_ip_3.ipaddress.ipaddress, "List public Ip for network should list the Ip addr" ) # TODO: Remote Access VPN is not yet supported in VPC return