X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwcal%2Ftest%2Ftest_rwcal_openstack.py;h=8278a5e1bef8c0082eea3219ab148f3500e2476a;hb=2b489616b8246c340072e46eb6dc8fb0ffa912ee;hp=38d30f6b7f0384c307785cdc1ca4f56be65862b1;hpb=7203e6545b8957eef84f60845285b3256269637e;p=osm%2FSO.git diff --git a/rwcal/test/test_rwcal_openstack.py b/rwcal/test/test_rwcal_openstack.py index 38d30f6b..8278a5e1 100644 --- a/rwcal/test/test_rwcal_openstack.py +++ b/rwcal/test/test_rwcal_openstack.py @@ -28,7 +28,7 @@ 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, KeystoneDriverV3, KeystoneDriverV2 +#from rift.rwcal.openstack.openstack_drv import KeystoneDriver, NovaDriver, KeystoneDriverV3, KeystoneDriverV2 logger = logging.getLogger('rwcal-openstack') @@ -43,10 +43,10 @@ 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.17:5000/v3/', - 'project_name' : 'demo', + 'username' : 'xxxx', + 'password' : 'xxxxxx', + 'auth_url' : 'http://10.66.4.19:5000/v2.0/', + 'project_name' : 'xxxxx', 'mgmt_network' : 'private', 'reserved_flavor' : 'm1.medium', 'reserved_image' : 'Fedora-x86_64-20-20131211.1-sda-ping.qcow2', @@ -544,6 +544,7 @@ class OpenStackTest(unittest.TestCase): rc = self.cal.do_delete_flavor(self._acct, flavor_id) self.assertEqual(rc, RwStatus.SUCCESS) + ''' @unittest.skip("Skipping test_expiry_token") def test_expiry_token(self): """ @@ -664,6 +665,7 @@ class OpenStackTest(unittest.TestCase): except Exception: auth_exp = True self.assertFalse(auth_exp) + ''' @unittest.skip("Skipping test_vm_operations") def test_vm_operations(self): @@ -929,22 +931,28 @@ class OpenStackTest(unittest.TestCase): vdu.name = "cal.vdu" vdu.node_id = OpenStackTest.NodeID vdu.image_id = self._image.id + vdu.vm_flavor.memory_mb = 512 + vdu.vm_flavor.vcpu_count = 1 + vdu.vm_flavor.storage_gb = 4 vdu.flavor_id = self._flavor.id 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() + try: + meta1 = vdu.supplemental_boot_data.custom_meta_data.add() + meta1.name = "EMS_IP" + meta1.data_type = "STRING" + meta1.value = "10.5.6.6" + #meta2 = vdu.supplemental_boot_data.custom_meta_data.add() + #meta2.name = "Cluster_data" + #meta2.data_type = "JSON" + #meta2.value = '''{ "cluster_id": "12" , "vnfc_id": "112" }''' + except Exception as e: + pass + #vdu.supplemental_boot_data.boot_data_drive = True + customfile1 = vdu.supplemental_boot_data.config_file.add() customfile1.source = "abcdef124" customfile1.dest = "/tmp/tempfile.txt" - customfile2 = vdu.custom_boot_data.custom_config_files.add() + customfile2 = vdu.supplemental_boot_data.config_file.add() customfile2.source = "123456" customfile2.dest = "/tmp/tempfile2.txt" c1 = vdu.connection_points.add() @@ -965,7 +973,137 @@ class OpenStackTest(unittest.TestCase): return vdu - #@unittest.skip("Skipping test_create_delete_virtual_link_and_vdu") + def _get_rbsh_vdu_request_info(self, vlink_list): + """ + Returns object of type RwcalYang.VDUInitParams + """ + vdu = RwcalYang.VDUInitParams() + vdu.name = "cal_rbsh_vdu" + vdu.vm_flavor.memory_mb = 2048 + vdu.vm_flavor.vcpu_count = 1 + vdu.vm_flavor.storage_gb = 10 + vdu.flavor_id = self._flavor.id + vdu.allocate_public_address = True + ctr = 0 + for vl in vlink_list: + c1 = vdu.connection_points.add() + c1.name = "c_point" + str(ctr) + ctr += 1 + c1.virtual_link_id = vl + c1.type_yang = 'VIRTIO' + + vol0 = vdu.volumes.add() + vol0.name = "vda" + vol0.image = "mgmt.img" + vol0.size = 40 + vol0.boot_priority = 0 + vol0.device_bus = "virtio" + vol0.device_type = "disk" + + vol1 = vdu.volumes.add() + vol1.name = "vdb" + vol1.image = "segstore.img" + vol1.size = 60 + vol1.boot_priority = 1 + vol1.device_bus = "virtio" + vol1.device_type = "disk" + + # blank disk + vol2 = vdu.volumes.add() + vol2.name = "vdc" + vol2.size = 10 + vol2.boot_priority = 2 + vol2.device_bus = "virtio" + vol2.device_type = "disk" + + # existing volume disk + vol3 = vdu.volumes.add() + vol3.name = "vdd" + vol3.size = 10 + vol3.volume_ref = "volume-ref1" + vol3.boot_priority = 3 + vol3.device_bus = "virtio" + vol3.device_type = "disk" + return vdu + + @unittest.skip("Skipping test_create_rbsh_vdu") + def test_create_rbsh_vdu(self): + """ + Test to create VDU with mgmt port and 3 additional connection points + """ + logger.info("Openstack-CAL-Test: Test Create Virtual Link API") + vlink_list = [] + for ctr in range(3): + vlink = RwcalYang.VirtualLinkReqParams() + vlink.name = 'rift.cal.virtual_link' + str(ctr) + vlink.subnet = '11.0.{}.0/24'.format(str(1 + ctr)) + + rc, rsp = self.cal.create_virtual_link(self._acct, vlink) + self.assertEqual(rc.status, RwStatus.SUCCESS) + logger.info("Openstack-CAL-Test: Created virtual_link with Id: %s" %rsp) + vlink_id = rsp + + #Check if virtual_link create is successful + rc, rsp = self.cal.get_virtual_link(self._acct, rsp) + self.assertEqual(rc, RwStatus.SUCCESS) + self.assertEqual(rsp.virtual_link_id, vlink_id) + vlink_list.append(vlink_id) + + + # Now create VDU + vdu_req = self._get_rbsh_vdu_request_info(vlink_list) + logger.info("Openstack-CAL-Test: Test Create RB steelhead VDU API (w/ mgmt port) and 3 CPs") + + rc, rsp = self.cal.create_vdu(self._acct, vdu_req) + logger.debug("Openstack-CAL-Test: rc %s rsp %s" % (rc, rsp)) + self.assertEqual(rc.status, RwStatus.SUCCESS) + logger.info("Openstack-CAL-Test: Created vdu with Id: %s" %rsp) + + test_vdu_id = rsp + + ## Check if VDU get is successful + rc, rsp = self.cal.get_vdu(self._acct, test_vdu_id) + logger.debug("Get VDU response %s", rsp) + self.assertEqual(rsp.vdu_id, test_vdu_id) + + ### Wait until vdu_state is active + logger.debug("Waiting 10 secs") + time.sleep(10) + #{'name': 'dp0vhost7', 'connection_point_id': 'dp0vhost7', 'state': 'active', 'virtual_link_id': 'rift.cal.virtual_link', 'ip_address': '192.168.100.6'} + vdu_state = 'inactive' + cp_state = 'inactive' + for i in range(15): + rc, rsp = self.cal.get_vdu(self._acct, test_vdu_id) + self.assertEqual(rc, RwStatus.SUCCESS) + logger.info("Openstack-CAL-Test: Iter %d VDU with id : %s. Reached State : %s, mgmt ip %s" %(i, test_vdu_id, rsp.state, rsp.management_ip)) + if (rsp.state == 'active') and ('management_ip' in rsp) and ('public_ip' in rsp): + vdu_state = 'active' + #'connection_points': [{'name': 'dp0vhost7', 'connection_point_id': 'dp0vhost7', 'state': 'active', 'virtual_link_id': 'rift.cal.virtual_link', 'ip_address': '192.168.100.6'}] + for cp in rsp.connection_points: + logger.info("Openstack-CAL-Test: Iter %d VDU with id : %s. Reached State : %s CP state %s" %(i, test_vdu_id, rsp.state, cp)) + logger.debug("Waiting another 5 secs") + time.sleep(5) + + self.assertEqual(rc, RwStatus.SUCCESS) + self.assertEqual(rsp.state, 'active') + self.assertEqual(vdu_state, 'active') + logger.info("Openstack-CAL-Test: VDU with id : %s reached expected state : %s IP: %s" %(test_vdu_id, rsp.state, rsp.management_ip)) + logger.info("Openstack-CAL-Test: VDUInfo: %s" %(rsp)) + logger.info("Waiting for 30 secs before deletion") + time.sleep(30) + + ### Check vdu list as well + rc, rsp = self.cal.get_vdu_list(self._acct) + self.assertEqual(rc, RwStatus.SUCCESS) + found = False + logger.debug("Get VDU response %s", rsp) + for vdu in rsp.vdu_info_list: + if vdu.vdu_id == test_vdu_id: + found = True + self.assertEqual(found, True) + logger.info("Openstack-CAL-Test: Passed VDU list" ) + + @unittest.skip("Skipping test_create_delete_virtual_link_and_vdu") def test_create_delete_virtual_link_and_vdu(self): """ Test to create VDU @@ -1019,10 +1157,10 @@ class OpenStackTest(unittest.TestCase): vlink_id2= rsp ### Now exercise the modify_vdu_api - vdu_modify = self._get_vdu_modify_request_info(vdu_id, vlink_id2) - rc = self.cal.modify_vdu(self._acct, vdu_modify) - self.assertEqual(rc, RwStatus.SUCCESS) - logger.info("Openstack-CAL-Test: Modified vdu with Id: %s" %vdu_id) + #vdu_modify = self._get_vdu_modify_request_info(vdu_id, vlink_id2) + #rc = self.cal.modify_vdu(self._acct, vdu_modify) + #self.assertEqual(rc, RwStatus.SUCCESS) + #logger.info("Openstack-CAL-Test: Modified vdu with Id: %s" %vdu_id) ### Lets delete the VDU self.cal.delete_vdu(self._acct, vdu_id) @@ -1048,6 +1186,132 @@ class OpenStackTest(unittest.TestCase): logger.info("Openstack-CAL-Test: VDU/Virtual Link create-delete test successfully completed") + def _get_vol_vdu_request_info(self, vlink_list): + """ + Returns object of type RwcalYang.VDUInitParams + """ + vdu = RwcalYang.VDUInitParams() + vdu.name = "cal_vdu" + vdu.vm_flavor.memory_mb = 512 + vdu.vm_flavor.vcpu_count = 1 + vdu.vm_flavor.storage_gb = 4 + vdu.allocate_public_address = True + ctr = 0 + for vl in vlink_list: + c1 = vdu.connection_points.add() + c1.name = "c_point" + str(ctr) + ctr += 1 + c1.virtual_link_id = vl + c1.type_yang = 'VIRTIO' + + vol0 = vdu.volumes.add() + vol0.name = "vda" + vol0.image = openstack_info['reserved_image'] + vol0.size = 10 + try: + vol0.boot_priority = 0 + except Exception as e: + pass + vol0.device_type = "disk" + try: + meta1 = vol0.custom_meta_data.add() + meta1.name = "fs_type" + meta1.data_type = "STRING" + meta1.value = "ext4" + except Exception as e: + pass + + return vdu + + @unittest.skip("Skipping test_create_vol_vdu") + def test_create_vol_vdu(self): + """ + Test to create VDU with mgmt port using Volumes + """ + logger.info("Openstack-CAL-Test: Test Create Virtual Link API") + vlink_list = [] + vlink = RwcalYang.VirtualLinkReqParams() + vlink.name = 'rift.cal.virtual_link' + vlink.subnet = '11.0.1.0/24' + + rc, rsp = self.cal.create_virtual_link(self._acct, vlink) + self.assertEqual(rc.status, RwStatus.SUCCESS) + logger.info("Openstack-CAL-Test: Created virtual_link with Id: %s" %rsp) + vlink_id = rsp + + #Check if virtual_link create is successful + rc, rsp = self.cal.get_virtual_link(self._acct, rsp) + self.assertEqual(rc, RwStatus.SUCCESS) + self.assertEqual(rsp.virtual_link_id, vlink_id) + vlink_list.append(vlink_id) + + # Now create VDU + vdu_req = self._get_vol_vdu_request_info(vlink_list) + logger.info("################################### ") + logger.info("Openstack-CAL-Test: Test Create VDU API (w/ volumes) ") + + rc, rsp = self.cal.create_vdu(self._acct, vdu_req) + logger.debug("Openstack-CAL-Test: rc %s rsp %s" % (rc, rsp)) + self.assertEqual(rc.status, RwStatus.SUCCESS) + logger.info("Openstack-CAL-Test: Created vdu with Id: %s" %rsp) + + test_vdu_id = rsp + + ## Check if VDU get is successful + rc, rsp = self.cal.get_vdu(self._acct, test_vdu_id) + logger.debug("Get VDU response %s", rsp) + self.assertEqual(rsp.vdu_id, test_vdu_id) + + ### Wait until vdu_state is active + logger.debug("Waiting 10 secs") + time.sleep(10) + #{'name': 'dp0vhost7', 'connection_point_id': 'dp0vhost7', 'state': 'active', 'virtual_link_id': 'rift.cal.virtual_link', 'ip_address': '192.168.100.6'} + vdu_state = 'inactive' + cp_state = 'inactive' + for i in range(5): + rc, rsp = self.cal.get_vdu(self._acct, test_vdu_id) + self.assertEqual(rc, RwStatus.SUCCESS) + logger.info("Openstack-CAL-Test: VDU with id : %s. Reached State : %s, mgmt ip %s" %(test_vdu_id, rsp.state, rsp.management_ip)) + if (rsp.state == 'active') and ('management_ip' in rsp) and ('public_ip' in rsp): + vdu_state = 'active' + #'connection_points': [{'name': 'dp0vhost7', 'connection_point_id': 'dp0vhost7', 'state': 'active', 'virtual_link_id': 'rift.cal.virtual_link', 'ip_address': '192.168.100.6'}] + for cp in rsp.connection_points: + logger.info("Openstack-CAL-Test: VDU with id : %s. Reached State : %s CP state %s" %(test_vdu_id, rsp.state, cp)) + if vdu_state == 'active' and cp.ip_address is not None : + cp_state = 'active' + break + logger.debug("Waiting another 5 secs") + time.sleep(5) + + self.assertEqual(rc, RwStatus.SUCCESS) + self.assertEqual(rsp.state, 'active') + self.assertEqual(vdu_state, 'active') + self.assertEqual(cp_state, 'active') + logger.info("Openstack-CAL-Test: VDU with id : %s reached expected state : %s IP: %s" %(test_vdu_id, rsp.state, rsp.management_ip)) + logger.info("Openstack-CAL-Test: VDUInfo: %s" %(rsp)) + logger.info("Waiting for 30 secs before deletion") + time.sleep(30) + + ### Check vdu list as well + rc, rsp = self.cal.get_vdu_list(self._acct) + self.assertEqual(rc, RwStatus.SUCCESS) + found = False + logger.debug("Get VDU response %s", rsp) + for vdu in rsp.vdu_info_list: + if vdu.vdu_id == test_vdu_id: + found = True + self.assertEqual(found, True) + logger.info("Openstack-CAL-Test: Passed VDU list" ) + + @unittest.skip("Skipping test_validate_creds") + def test_validate_creds(self): + """ + Test validate creds + """ + logger.info("Openstack-CAL-Test: Test validate creds") + status = self.cal.validate_cloud_creds(self._acct) + logger.info("Openstack-CAL-Test: Passed validate creds") + class VmData(object): """A convenience class that provides all the stats and EPA Attributes from the VM provided @@ -1174,5 +1438,6 @@ class VmData(object): if __name__ == "__main__": - logging.basicConfig(level=logging.DEBUG) + #logging.basicConfig(level=logging.DEBUG) + logger.setLevel(logging.DEBUG) unittest.main()