X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwcal%2Ftest%2Ftest_rwcal_openstack.py;h=38d30f6b7f0384c307785cdc1ca4f56be65862b1;hb=7203e6545b8957eef84f60845285b3256269637e;hp=119c22b1a173265b0eebc43e90f2422dbd2f4c70;hpb=f6914d7d8e3153683139096480a86afec5b07302;p=osm%2FSO.git diff --git a/rwcal/test/test_rwcal_openstack.py b/rwcal/test/test_rwcal_openstack.py index 119c22b1..38d30f6b 100644 --- a/rwcal/test/test_rwcal_openstack.py +++ b/rwcal/test/test_rwcal_openstack.py @@ -20,7 +20,6 @@ import logging import time import unittest import hashlib - import novaclient.exceptions as nova_exception import paramiko import rw_peas @@ -29,24 +28,46 @@ from keystoneclient import v3 as ksclient from gi.repository import RwcalYang from gi.repository.RwTypes import RwStatus -from rift.rwcal.openstack.openstack_drv import KeystoneDriver, NovaDriver +from rift.rwcal.openstack.openstack_drv import KeystoneDriver, NovaDriver, KeystoneDriverV3, KeystoneDriverV2 logger = logging.getLogger('rwcal-openstack') +PING_USERDATA = ''' +#cloud-config +password: fedora +chpasswd: { expire: False } +ssh_pwauth: True +''' + # # Important information about openstack installation. This needs to be manually verified # openstack_info = { 'username' : 'pluto', 'password' : 'mypasswd', - 'auth_url' : 'http://10.66.4.14:5000/v3/', + 'auth_url' : 'http://10.66.4.17:5000/v3/', 'project_name' : 'demo', 'mgmt_network' : 'private', 'reserved_flavor' : 'm1.medium', - 'reserved_image' : 'rift-root-latest.qcow2', + 'reserved_image' : 'Fedora-x86_64-20-20131211.1-sda-ping.qcow2', 'physical_network' : None, 'network_type' : None, - 'segmentation_id' : None + 'segmentation_id' : None, + 'user_domain_name' : 'default', + 'project_domain_name': 'default' + } + +openstack_V3_info = { + 'username' : 'riftdev_admin', + 'password' : 'mypasswd', + 'auth_url' : 'http://10.68.0.11:5000/v3/', + 'project_name' : 'demov3', + 'mgmt_network' : 'center', + 'physical_network' : None, + 'network_type' : None, + 'segmentation_id' : None, + 'user_domain_name' : 'riftdev', + 'project_domain_name': 'riftdev' } @@ -54,13 +75,16 @@ def get_cal_account(): """ Creates an object for class RwcalYang.CloudAccount() """ - account = RwcalYang.CloudAccount() - account.account_type = "openstack" - account.openstack.key = openstack_info['username'] - account.openstack.secret = openstack_info['password'] - account.openstack.auth_url = openstack_info['auth_url'] - account.openstack.tenant = openstack_info['project_name'] - account.openstack.mgmt_network = openstack_info['mgmt_network'] + account = RwcalYang.CloudAccount() + account.name = "Gruntxx" + account.account_type = "openstack" + account.openstack.key = openstack_info['username'] + account.openstack.secret = openstack_info['password'] + account.openstack.auth_url = openstack_info['auth_url'] + account.openstack.tenant = openstack_info['project_name'] + account.openstack.mgmt_network = openstack_info['mgmt_network'] + account.openstack.user_domain = openstack_info['user_domain_name'] + account.openstack.project_domain = openstack_info['project_domain_name'] return account def get_cal_plugin(): @@ -126,8 +150,9 @@ class OpenStackTest(unittest.TestCase): rc, rs = self.cal.get_network_list(self._acct) self.assertEqual(rc, RwStatus.SUCCESS) - networks = [ network for network in rs.networkinfo_list if (network.network_name == 'rift.cal.unittest.network' or network.network_name == 'rift.cal.virtual_link') ] + networks = [ network for network in rs.networkinfo_list if ((network.network_name == 'rift.cal.unittest.network') or ('rift.cal.virtual_link' in network.network_name) ) ] for network in networks: + logger.debug("Openstack-CAL-Test: Deleting old VL %s", network.network_id) self.cal.delete_virtual_link(self._acct, network.network_id) def tearDown(self): @@ -529,6 +554,7 @@ class OpenStackTest(unittest.TestCase): openstack_info['username'], openstack_info['password'], openstack_info['auth_url'], + None, openstack_info['project_name']) # Get hold of the client instance need for Token Manager client = drv._get_keystone_connection() @@ -564,6 +590,81 @@ class OpenStackTest(unittest.TestCase): flavors = nova.flavor_list() self.assertTrue(len(flavors) > 1) + def test_v3_Keystone(self): + # Keystone v3 authentication + auth_exp = False + try: + drv = KeystoneDriverV3(openstack_V3_info['username'], + openstack_V3_info['password'], + openstack_V3_info['auth_url'], + openstack_V3_info['project_name'], + None, + openstack_V3_info['user_domain_name'], + openstack_V3_info['project_domain_name']) + client = drv._get_keystone_connection() + except Exception: + auth_exp = True + self.assertFalse(auth_exp) + + # Incorrect domain being to passed to v3 Keystone API + auth_exp = False + try: + drv = KeystoneDriverV3(openstack_V3_info['username'], + openstack_V3_info['password'], + openstack_V3_info['auth_url'], + openstack_V3_info['project_name'], + None, + "DummyDom", + openstack_V3_info['project_domain_name']) + client = drv._get_keystone_connection() + except Exception: + auth_exp = True + self.assertTrue(auth_exp) + + # Keystone v3 authentication-Backward compatabilty test + auth_exp = False + try: + drv = KeystoneDriverV3(openstack_info['username'], + openstack_info['password'], + openstack_info['auth_url'], + openstack_info['project_name'], + None, + openstack_info['user_domain_name'], + openstack_info['project_domain_name']) + client = drv._get_keystone_connection() + except Exception: + auth_exp = True + self.assertFalse(auth_exp) + + # Keystone v3 authentication-Backward compatabilty + auth_exp = False + try: + drv = KeystoneDriverV3(openstack_info['username'], + openstack_info['password'], + openstack_info['auth_url'], + openstack_info['project_name'], + None, + None, + None) + client = drv._get_keystone_connection() + except Exception: + auth_exp = True + self.assertFalse(auth_exp) + + # Keystone v2 authentication + auth_exp = False + try: + drv2 = KeystoneDriverV2( + openstack_info['username'], + openstack_info['password'], + 'http://10.66.4.17:5000/v2.0', + openstack_info['project_name'], + None) + client = drv2._get_keystone_connection() + except Exception: + auth_exp = True + self.assertFalse(auth_exp) + @unittest.skip("Skipping test_vm_operations") def test_vm_operations(self): """ @@ -829,8 +930,23 @@ class OpenStackTest(unittest.TestCase): vdu.node_id = OpenStackTest.NodeID vdu.image_id = self._image.id vdu.flavor_id = self._flavor.id - vdu.vdu_init.userdata = '' + vdu.vdu_init.userdata = PING_USERDATA vdu.allocate_public_address = True + meta1 = vdu.custom_boot_data.custom_meta_data.add() + meta1.name = "EMS_IP" + meta1.data_type = "STRING" + meta1.value = "10.5.6.6" + #meta2 = vdu.custom_boot_data.custom_meta_data.add() + #meta2.name = "Cluster_data" + #meta2.data_type = "JSON" + #meta2.value = '''{ "cluster_id": "12" , "vnfc_id": "112" }''' + #vdu.custom_boot_data.custom_drive = True + customfile1 = vdu.custom_boot_data.custom_config_files.add() + customfile1.source = "abcdef124" + customfile1.dest = "/tmp/tempfile.txt" + customfile2 = vdu.custom_boot_data.custom_config_files.add() + customfile2.source = "123456" + customfile2.dest = "/tmp/tempfile2.txt" c1 = vdu.connection_points.add() c1.name = "c_point1" c1.virtual_link_id = virtual_link_id @@ -858,7 +974,7 @@ class OpenStackTest(unittest.TestCase): vlink_req = self._get_virtual_link_request_info() rc, rsp = self.cal.create_virtual_link(self._acct, vlink_req) - self.assertEqual(rc, RwStatus.SUCCESS) + self.assertEqual(rc.status, RwStatus.SUCCESS) logger.info("Openstack-CAL-Test: Created virtual_link with Id: %s" %rsp) vlink_id = rsp @@ -872,7 +988,7 @@ class OpenStackTest(unittest.TestCase): logger.info("Openstack-CAL-Test: Test Create VDU API") rc, rsp = self.cal.create_vdu(self._acct, vdu_req) - self.assertEqual(rc, RwStatus.SUCCESS) + self.assertEqual(rc.status, RwStatus.SUCCESS) logger.info("Openstack-CAL-Test: Created vdu with Id: %s" %rsp) vdu_id = rsp @@ -898,7 +1014,7 @@ class OpenStackTest(unittest.TestCase): ### Create another virtual_link rc, rsp = self.cal.create_virtual_link(self._acct, vlink_req) - self.assertEqual(rc, RwStatus.SUCCESS) + self.assertEqual(rc.status, RwStatus.SUCCESS) logger.info("Openstack-CAL-Test: Created virtual_link with Id: %s" %rsp) vlink_id2= rsp @@ -932,7 +1048,6 @@ class OpenStackTest(unittest.TestCase): logger.info("Openstack-CAL-Test: VDU/Virtual Link create-delete test successfully completed") - class VmData(object): """A convenience class that provides all the stats and EPA Attributes from the VM provided @@ -1059,5 +1174,5 @@ class VmData(object): if __name__ == "__main__": - logging.basicConfig(level=logging.INFO) + logging.basicConfig(level=logging.DEBUG) unittest.main()