mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	* cleanup plan * more robust cleanup within member method * ss_domain_limits fixed * egress 'icmp' instead of 'all' and cleanup * configdrive syntax, fixed to be up to par with py2 * cleanup fixed the lb secondary ip tests? * deal with different base64 encoding in py3 for userdata * cleanup of multiple_ips_per_nic * cleanup and reformat of test_volumes * cleanup and fixes for test_ps_domain_limits.py * cleanup and fix of test_ps_limits.py * fix occasional match of float against int * cleanup and fix test_ps_resize_volume.py * cleanup and fix test_snapshots * cleanup ss_max_limits and fix for float vs int problem in API * mere cleanup of test_volume_destroy_recover * add missing command creation * cleanup of test_vpc_on_host_maintenance * cleanup test_vpc_network * cleanup, comments and logging in test_vpc_network_lbrules * cleanup of test_vpc_network_pfrules * cleanup and format code for test_vpc_network_staticnatrule * f string instead of conversion specifiers * check http and ssh fix and cleanup (for vpc pfrules tests) * generalise create network method * make ip optional in creating webserver * remove unused code and add rules to enable ssh * more cleanup * remove unused code and cleanup * small cleanup, mostly precarous run environment required * cleanup and removed unused code * advancedsg only, cleanup, pulled in services * reformat/cleanup * log result of error after verify rule * add nw_off_no_services * tags=["TODO"] for escalations_networks * tags=["TODO"] for organization_states * tags=["TODO"] for browse_templates * tags=["TODO"] for configdrive * tags=["TODO"] for vpc_vms_deployment * add remove network cleanup and fixes * move tests that fail on all platforms out of the way Co-authored-by: Daan Hoogland <dahn@onecht.net>
		
			
				
	
	
		
			384 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			384 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Licensed to the Apache Software Foundation (ASF) under one
 | |
| # or more contributor license agreements.  See the NOTICE file
 | |
| # distributed with this work for additional information
 | |
| # regarding copyright ownership.  The ASF licenses this file
 | |
| # to you under the Apache License, Version 2.0 (the
 | |
| # "License"); you may not use this file except in compliance
 | |
| # with the License.  You may obtain a copy of the License at
 | |
| #
 | |
| #   http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing,
 | |
| # software distributed under the License is distributed on an
 | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | |
| # KIND, either express or implied.  See the License for the
 | |
| # specific language governing permissions and limitations
 | |
| # under the License.
 | |
| 
 | |
| #Import Local Modules
 | |
| from marvin.cloudstackTestCase import cloudstackTestCase
 | |
| from marvin.cloudstackAPI import (createVolume,
 | |
|                                   createTemplate)
 | |
| from marvin.lib.base import (Volume,
 | |
|                              Iso,
 | |
|                              VirtualMachine,
 | |
|                              Template,
 | |
|                              Snapshot,
 | |
|                              SecurityGroup,
 | |
|                              Account,
 | |
|                              Zone,
 | |
|                              Network,
 | |
|                              NetworkOffering,
 | |
|                              DiskOffering,
 | |
|                              ServiceOffering,
 | |
|                              VmSnapshot,
 | |
|                              SnapshotPolicy,
 | |
|                              SSHKeyPair,
 | |
|                              Resources,
 | |
|                              Configurations,
 | |
|                              VpnCustomerGateway,
 | |
|                              Hypervisor,
 | |
|                              VpcOffering,
 | |
|                              VPC,
 | |
|                              NetworkACL)
 | |
| from marvin.lib.common import (get_zone,
 | |
|                                get_domain,
 | |
|                                get_template,
 | |
|                                list_os_types)
 | |
| from marvin.lib.utils import (validateList,
 | |
|                               cleanup_resources,
 | |
|                               random_gen)
 | |
| from marvin.codes import (PASS, FAIL, EMPTY_LIST)
 | |
| from nose.plugins.attrib import attr
 | |
| import time
 | |
| 
 | |
| class TestVpnCustomerGateways(cloudstackTestCase):
 | |
| 
 | |
|     @classmethod
 | |
|     def setUpClass(cls):
 | |
|         try:
 | |
|             cls._cleanup = []
 | |
|             cls.testClient = super(TestVpnCustomerGateways, cls).getClsTestClient()
 | |
|             cls.api_client = cls.testClient.getApiClient()
 | |
|             cls.services = cls.testClient.getParsedTestDataConfig()
 | |
|             # 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"]
 | |
|                                 )
 | |
|             cls.services['mode'] = cls.zone.networktype
 | |
|             cls.account = Account.create(
 | |
|                                 cls.api_client,
 | |
|                                 cls.services["account"],
 | |
|                                 domainid=cls.domain.id
 | |
|                                 )
 | |
|             # Getting authentication for user in newly created Account
 | |
|             cls.user = cls.account.user[0]
 | |
|             cls.userapiclient = cls.testClient.getUserApiClient(cls.user.username, cls.domain.name)
 | |
|             cls._cleanup.append(cls.account)
 | |
|         except Exception as e:
 | |
|             cls.tearDownClass()
 | |
|             raise Exception("Warning: Exception in setup : %s" % e)
 | |
|         return
 | |
| 
 | |
|     def setUp(self):
 | |
| 
 | |
|         self.apiClient = self.testClient.getApiClient()
 | |
|         self.cleanup = []
 | |
| 
 | |
|     def tearDown(self):
 | |
|         #Clean up, terminate the created resources
 | |
|         cleanup_resources(self.apiClient, self.cleanup)
 | |
|         return
 | |
| 
 | |
|     @classmethod
 | |
|     def tearDownClass(cls):
 | |
|         try:
 | |
|             cleanup_resources(cls.api_client, cls._cleanup)
 | |
|         except Exception as e:
 | |
|             raise Exception("Warning: Exception during cleanup : %s" % e)
 | |
| 
 | |
|         return
 | |
| 
 | |
|     def __verify_values(self, expected_vals, actual_vals):
 | |
|         """
 | |
|         @Desc: Function to verify expected and actual values
 | |
|         @Steps:
 | |
|         Step1: Initializing return flag to True
 | |
|         Step1: Verifying length of expected and actual dictionaries is matching.
 | |
|                If not matching returning false
 | |
|         Step2: Listing all the keys from expected dictionary
 | |
|         Step3: Looping through each key from step2 and verifying expected and actual dictionaries have same value
 | |
|                If not making return flag to False
 | |
|         Step4: returning the return flag after all the values are verified
 | |
|         """
 | |
|         return_flag = True
 | |
| 
 | |
|         if len(expected_vals) != len(actual_vals):
 | |
|             return False
 | |
| 
 | |
|         keys = list(expected_vals.keys())
 | |
|         for i in range(0, len(expected_vals)):
 | |
|             exp_val = expected_vals[keys[i]]
 | |
|             act_val = actual_vals[keys[i]]
 | |
|             if exp_val == act_val:
 | |
|                 return_flag = return_flag and True
 | |
|             else:
 | |
|                 return_flag = return_flag and False
 | |
|                 self.debug("expected Value: %s, is not matching with actual value: %s" % (
 | |
|                                                                                           exp_val,
 | |
|                                                                                           act_val
 | |
|                                                                                           ))
 | |
|         return return_flag
 | |
| 
 | |
|     @attr(tags=["advanced", "basic"], required_hardware="true")
 | |
|     def test_01_list_vpncustomergateways_pagination(self):
 | |
|         """
 | |
|         @Desc: Test to List VPN Customer Gateways pagination
 | |
|         @steps:
 | |
|         Step1: Listing all the VPN Customer Gateways for a user
 | |
|         Step2: Verifying that no VPN Customer Gateways are listed
 | |
|         Step3: Creating (page size + 1) number of VPN Customer Gateways
 | |
|         Step4: Listing all the VPN Customer Gateways again for a user
 | |
|         Step5: Verifying that list size is (page size + 1)
 | |
|         Step6: Listing all the VPN Customer Gateways in page1
 | |
|         Step7: Verifying that list size is (page size)
 | |
|         Step8: Listing all the VPN Customer Gateways in page2
 | |
|         Step9: Verifying that list size is 1
 | |
|         Step10: Deleting the VPN Customer Gateways present in page 2
 | |
|         Step11: Listing all the VPN Customer Gateways in page2
 | |
|         Step12: Verifying that no VPN Customer Gateways are listed
 | |
|         """
 | |
|         # Listing all the VPN Customer Gateways for a User
 | |
|         list_vpncustomergateways_before = VpnCustomerGateway.list(
 | |
|                                                                   self.userapiclient,
 | |
|                                                                   listall=self.services["listall"]
 | |
|                                                                   )
 | |
|         # Verifying that no VPN Customer Gateways are listed
 | |
|         self.assertIsNone(
 | |
|                           list_vpncustomergateways_before,
 | |
|                           "VPN Customer Gateways listed for newly created User"
 | |
|                           )
 | |
|         # Creating pagesize + 1 number of VPN Customer Gateways
 | |
|         for i in range(0, (self.services["pagesize"] + 1)):
 | |
|             vpncustomergateway_created = VpnCustomerGateway.create(
 | |
|                                                                    self.userapiclient,
 | |
|                                                                    self.services["vpncustomergateway"],
 | |
|                                                                    name="VPNCustGateway"+str(i+1),
 | |
|                                                                    gateway="10.102.153." + str(i+1),
 | |
|                                                                    cidrlist="10.0.0.0/24",
 | |
|                                                                    account=self.account.name,
 | |
|                                                                    domainid=self.domain.id
 | |
|                                                                    )
 | |
|             self.assertIsNotNone(
 | |
|                                  vpncustomergateway_created,
 | |
|                                  "VPN Customer Gateway creation failed"
 | |
|                                  )
 | |
|             if (i < self.services["pagesize"] + 1):
 | |
|                 self.cleanup.append(vpncustomergateway_created)
 | |
| 
 | |
|         # Listing all the VPN Customer Gateways for a User
 | |
|         list_vpncustomergateways_after = VpnCustomerGateway.list(
 | |
|                                                                  self.userapiclient,
 | |
|                                                                  listall=self.services["listall"]
 | |
|                                                                  )
 | |
|         status = validateList(list_vpncustomergateways_after)
 | |
|         self.assertEqual(
 | |
|                           PASS,
 | |
|                           status[0],
 | |
|                           "VPN Customer Gateway creation failed"
 | |
|                           )
 | |
|         # Verifying that list size is pagesize + 1
 | |
|         self.assertEqual(
 | |
|                           self.services["pagesize"] + 1,
 | |
|                           len(list_vpncustomergateways_after),
 | |
|                           "Failed to create pagesize + 1 number of VPN Customer Gateways"
 | |
|                           )
 | |
|         # Listing all the VPN Customer Gateways in page 1
 | |
|         list_vpncustomergateways_page1 = VpnCustomerGateway.list(
 | |
|                                                                  self.userapiclient,
 | |
|                                                                  listall=self.services["listall"],
 | |
|                                                                  page=1,
 | |
|                                                                  pagesize=self.services["pagesize"]
 | |
|                                                                  )
 | |
|         status = validateList(list_vpncustomergateways_page1)
 | |
|         self.assertEqual(
 | |
|                           PASS,
 | |
|                           status[0],
 | |
|                           "Failed to list VPN Customer Gateways in page 1"
 | |
|                           )
 | |
|         # Verifying the list size to be equal to pagesize
 | |
|         self.assertEqual(
 | |
|                           self.services["pagesize"],
 | |
|                           len(list_vpncustomergateways_page1),
 | |
|                           "Size of VPN Customer Gateways in page 1 is not matching"
 | |
|                           )
 | |
|         # Listing all the VPN Customer Gateways in page 2
 | |
|         list_vpncustomergateways_page2 = VpnCustomerGateway.list(
 | |
|                                                                  self.userapiclient,
 | |
|                                                                  listall=self.services["listall"],
 | |
|                                                                  page=2,
 | |
|                                                                  pagesize=self.services["pagesize"]
 | |
|                                                                  )
 | |
|         status = validateList(list_vpncustomergateways_page2)
 | |
|         self.assertEqual(
 | |
|                           PASS,
 | |
|                           status[0],
 | |
|                           "Failed to list VPN Customer Gateways in page 2"
 | |
|                           )
 | |
|         # Verifying the list size to be equal to 1
 | |
|         self.assertEqual(
 | |
|                           1,
 | |
|                           len(list_vpncustomergateways_page2),
 | |
|                           "Size of VPN Customer Gateways in page 2 is not matching"
 | |
|                           )
 | |
|         # Deleting the VPM Customer Gateway present in page 2
 | |
|         VpnCustomerGateway.delete(
 | |
|                                   vpncustomergateway_created,
 | |
|                                   self.userapiclient
 | |
|                                   )
 | |
|         self.cleanup.remove(vpncustomergateway_created)
 | |
|         # Listing all the VPN Customer Gateways in page 2 again
 | |
|         list_vpncustomergateways_page2 = VpnCustomerGateway.list(
 | |
|                                                                  self.userapiclient,
 | |
|                                                                  listall=self.services["listall"],
 | |
|                                                                  page=2,
 | |
|                                                                  pagesize=self.services["pagesize"]
 | |
|                                                                  )
 | |
|         # Verifying that there are no VPN Customer Gateways listed
 | |
|         self.assertIsNone(
 | |
|                           list_vpncustomergateways_page2,
 | |
|                           "VPN Customer Gateways not deleted from page 2"
 | |
|                           )
 | |
|         return
 | |
| 
 | |
|     @attr(tags=["advanced", "basic"], required_hardware="true")
 | |
|     def test_02_update_vpncustomergateways(self):
 | |
|         """
 | |
|         @Desc: Test to update VPN Customer Gateways pagination
 | |
|         @steps:
 | |
|         Step1: Listing all the VPN Customer Gateways for a user
 | |
|         Step2: Verifying that no VPN Customer Gateways are listed
 | |
|         Step3: Creating a VPN Customer Gateways
 | |
|         Step4: Listing all the VPN Customer Gateways again for a user
 | |
|         Step5: Verifying that list size is 1
 | |
|         Step6: Updating the VPN Customer Gateways created in step3
 | |
|         Step7: Listing the VPN customer gateway by id
 | |
|         Step8: Verifying that list size is 1
 | |
|         Step9: Verifying the details of the listed VPN customer gateway are same as updated in step6
 | |
|         """
 | |
|         # Listing all the VPN Customer Gateways for a User
 | |
|         list_vpncustomergateways_before = VpnCustomerGateway.list(
 | |
|                                                                   self.userapiclient,
 | |
|                                                                   listall=self.services["listall"]
 | |
|                                                                   )
 | |
|         # Verifying that no VPN Customer Gateways are listed
 | |
|         self.assertIsNone(
 | |
|                           list_vpncustomergateways_before,
 | |
|                           "VPN Customer Gateways listed for newly created User"
 | |
|                           )
 | |
|         # Creating A VPN Customer Gateways
 | |
|         vpncustomergateway_created = VpnCustomerGateway.create(
 | |
|                                                                self.userapiclient,
 | |
|                                                                self.services["vpncustomergateway"],
 | |
|                                                                name="VPNCustGateway",
 | |
|                                                                gateway="10.102.153.90",
 | |
|                                                                cidrlist="10.0.0.0/24",
 | |
|                                                                account=self.account.name,
 | |
|                                                                domainid=self.domain.id
 | |
|                                                                )
 | |
|         self.assertIsNotNone(
 | |
|                              vpncustomergateway_created,
 | |
|                              "VPN Customer Gateway creation failed"
 | |
|                              )
 | |
|         self.cleanup.append(vpncustomergateway_created)
 | |
|         # Listing all the VPN Customer Gateways for a User
 | |
|         list_vpncustomergateways_after = VpnCustomerGateway.list(
 | |
|                                                                  self.userapiclient,
 | |
|                                                                  listall=self.services["listall"]
 | |
|                                                                  )
 | |
|         status = validateList(list_vpncustomergateways_after)
 | |
|         self.assertEqual(
 | |
|                           PASS,
 | |
|                           status[0],
 | |
|                           "VPN Customer Gateway creation failed"
 | |
|                           )
 | |
|         # Verifying that list size is 1
 | |
|         self.assertEqual(
 | |
|                           1,
 | |
|                           len(list_vpncustomergateways_after),
 | |
|                           "Failed to create VPN Customer Gateways"
 | |
|                           )
 | |
|         # Updating the VPN Customer gateway
 | |
|         vpncustomergateway_updated = VpnCustomerGateway.update(
 | |
|                                                                vpncustomergateway_created,
 | |
|                                                                self.userapiclient,
 | |
|                                                                self.services["vpncustomergateway"],
 | |
|                                                                name="NewVPNCustGateway",
 | |
|                                                                gateway="10.102.153.90",
 | |
|                                                                cidrlist="10.0.0.0/24",
 | |
|                                                                )
 | |
|         self.assertIsNotNone(
 | |
|                              vpncustomergateway_updated,
 | |
|                              "Updation of VPN Customer Gateway failed"
 | |
|                              )
 | |
|         # Listing the VPN Customer Gateways by Id
 | |
|         list_vpncustomergateway = VpnCustomerGateway.list(
 | |
|                                                           self.userapiclient,
 | |
|                                                           listall=self.services["listall"],
 | |
|                                                           id=vpncustomergateway_created.id
 | |
|                                                           )
 | |
|         status = validateList(list_vpncustomergateway)
 | |
|         self.assertEqual(
 | |
|                           PASS,
 | |
|                           status[0],
 | |
|                           "Failed to list VPN Customer Gateways by Id"
 | |
|                           )
 | |
|         # Verifying the list size to be equal to 1
 | |
|         self.assertEqual(
 | |
|                           1,
 | |
|                           len(list_vpncustomergateway),
 | |
|                           "Size of VPN Customer Gateways by id is not matching"
 | |
|                           )
 | |
|         # Verifying the details of the listed VPN Customer Gateway are same as updated
 | |
|         #Creating expected and actual values dictionaries
 | |
|         expected_dict = {
 | |
|                          "name":vpncustomergateway_updated.name,
 | |
|                          "id":vpncustomergateway_updated.id,
 | |
|                          "account":vpncustomergateway_updated.account,
 | |
|                          "domainid":vpncustomergateway_updated.domainid,
 | |
|                          "gateway":vpncustomergateway_updated.gateway,
 | |
|                          "cidrlist":vpncustomergateway_updated.cidrlist,
 | |
|                          "seckey":vpncustomergateway_updated.ipsecpsk,
 | |
|                          "ikepolicy":vpncustomergateway_updated.ikepolicy,
 | |
|                          "ikelifetime":vpncustomergateway_updated.ikelifetime,
 | |
|                          "esppolicy":vpncustomergateway_updated.esppolicy,
 | |
|                          "esplifetime":vpncustomergateway_updated.esplifetime,
 | |
|                          }
 | |
|         actual_dict = {
 | |
|                        "name":list_vpncustomergateway[0].name,
 | |
|                        "id":list_vpncustomergateway[0].id,
 | |
|                        "account":list_vpncustomergateway[0].account,
 | |
|                        "domainid":list_vpncustomergateway[0].domainid,
 | |
|                        "gateway":list_vpncustomergateway[0].gateway,
 | |
|                        "cidrlist":list_vpncustomergateway[0].cidrlist,
 | |
|                        "seckey":list_vpncustomergateway[0].ipsecpsk,
 | |
|                        "ikepolicy":list_vpncustomergateway[0].ikepolicy,
 | |
|                        "ikelifetime":list_vpncustomergateway[0].ikelifetime,
 | |
|                        "esppolicy":list_vpncustomergateway[0].esppolicy,
 | |
|                        "esplifetime":list_vpncustomergateway[0].esplifetime,
 | |
|                        }
 | |
|         vpncustomergateway_status = self.__verify_values(
 | |
|                                                          expected_dict,
 | |
|                                                          actual_dict
 | |
|                                                          )
 | |
|         self.assertEqual(
 | |
|                          True,
 | |
|                          vpncustomergateway_status,
 | |
|                          "Listed VPN Customer Gateway details are not as Updated"
 | |
|                          )
 | |
|         return
 |