diff options
Diffstat (limited to 'functest')
-rwxr-xr-x | functest/utils/openstack_clean.py | 121 | ||||
-rwxr-xr-x | functest/utils/openstack_snapshot.py | 53 |
2 files changed, 174 insertions, 0 deletions
diff --git a/functest/utils/openstack_clean.py b/functest/utils/openstack_clean.py index 949eee90..0c3ae3e3 100755 --- a/functest/utils/openstack_clean.py +++ b/functest/utils/openstack_clean.py @@ -9,6 +9,8 @@ # - Neutron networks, subnets and ports # - Routers # - Users and tenants +# - Tacker VNFDs and VNFs +# - Tacker SFCs and SFC classifiers # # Author: # jose.lausuch@ericsson.com @@ -23,6 +25,7 @@ import time import functest.utils.functest_logger as ft_logger import functest.utils.openstack_utils as os_utils +import functest.utils.openstack_tacker as os_tacker import yaml import functest.utils.functest_constants as ft_constants @@ -369,6 +372,109 @@ def remove_tenants(keystone_client, default_tenants): "NOT be deleted.") +def remove_tacker_vnfds(tacker_client, default_vnfds): + logger.debug("Removing Tacker VNFDs...") + vnfds = os_tacker.list_vnfds(tacker_client, verbose=True)['vnfds'] + if vnfds is None: + logger.debug("There are no Tacker VNFDs in the deployment. ") + return + + for vnfd in vnfds: + vnfd_name = vnfd['name'] + vnfd_id = vnfd['id'] + logger.debug("'%s', ID=%s " % (vnfd_name, vnfd_id)) + if (vnfd_id not in default_vnfds and + vnfd_name not in default_vnfds.values()): + logger.debug(" Removing '%s'..." % vnfd_name) + deleted = os_tacker.delete_vnfd(tacker_client, vnfd_id=vnfd_id) + if deleted is not None: + logger.debug(" > Done!") + else: + logger.error("There has been a problem removing the " + "VNFD '%s'(%s)..." % (vnfd_name, vnfd_id)) + else: + logger.debug(" > this is a default VNFD and will " + "NOT be deleted.") + + +def remove_tacker_vnfs(tacker_client, default_vnfs): + logger.debug("Removing Tacker VNFs...") + vnfs = os_tacker.list_vnfs(tacker_client, verbose=True)['vnfs'] + if vnfs is None: + logger.debug("There are no Tacker VNFs in the deployment. ") + return + + for vnf in vnfs: + vnf_name = vnf['name'] + vnf_id = vnf['id'] + logger.debug("'%s', ID=%s " % (vnf_name, vnf_id)) + if (vnf_id not in default_vnfs and + vnf_name not in default_vnfs.values()): + logger.debug(" Removing '%s'..." % vnf_name) + deleted = os_tacker.delete_vnf(tacker_client, vnf_id=vnf_id) + if deleted is not None: + logger.debug(" > Done!") + else: + logger.error("There has been a problem removing the " + "VNF '%s'(%s)..." % (vnf_name, vnf_id)) + else: + logger.debug(" > this is a default VNF and will " + "NOT be deleted.") + + +def remove_tacker_sfcs(tacker_client, default_sfcs): + logger.debug("Removing Tacker SFCs...") + sfcs = os_tacker.list_sfcs(tacker_client, verbose=True)['sfcs'] + if sfcs is None: + logger.debug("There are no Tacker SFCs in the deployment. ") + return + + for sfc in sfcs: + sfc_name = sfc['name'] + sfc_id = sfc['id'] + logger.debug("'%s', ID=%s " % (sfc_name, sfc_id)) + if (sfc_id not in default_sfcs and + sfc_name not in default_sfcs.values()): + logger.debug(" Removing '%s'..." % sfc_name) + deleted = os_tacker.delete_sfc(tacker_client, sfc_id=sfc_id) + if deleted is not None: + logger.debug(" > Done!") + else: + logger.error("There has been a problem removing the " + "SFC '%s'(%s)..." % (sfc_name, sfc_id)) + else: + logger.debug(" > this is a default SFC and will " + "NOT be deleted.") + + +def remove_tacker_sfc_classifiers(tacker_client, default_sfc_classifiers): + logger.debug("Removing Tacker SFC classifiers...") + sfc_clfs = os_tacker.list_sfc_classifiers( + tacker_client, verbose=True)['sfc_classfiers'] + if sfc_clfs is None: + logger.debug("There are no Tacker SFC classifiers in the deployment.") + return + + for sfc_clf in sfc_clfs: + sfc_clf_name = sfc_clf['name'] + sfc_clf_id = sfc_clf['id'] + logger.debug("'%s', ID=%s " % (sfc_clf_name, sfc_clf_id)) + if (sfc_clf_id not in default_sfc_classifiers and + sfc_clf_name not in default_sfc_classifiers.values()): + logger.debug(" Removing '%s'..." % sfc_clf_name) + deleted = os_tacker.delete_sfc_classifier( + tacker_client, sfc_clf_id=sfc_clf_id) + if deleted is not None: + logger.debug(" > Done!") + else: + logger.error("There has been a problem removing the " + "SFC classifier '%s'(%s)..." + % (sfc_clf_name, sfc_clf_id)) + else: + logger.debug(" > this is a default SFC classifier and will " + "NOT be deleted.") + + def main(): logger.info("Cleaning OpenStack resources...") @@ -376,6 +482,7 @@ def main(): neutron_client = os_utils.get_neutron_client() keystone_client = os_utils.get_keystone_client() cinder_client = os_utils.get_cinder_client() + tacker_client = os_tacker.get_tacker_client() try: with open(OS_SNAPSHOT_FILE) as f: @@ -394,6 +501,10 @@ def main(): default_floatingips = snapshot_yaml.get('floatingips') default_users = snapshot_yaml.get('users') default_tenants = snapshot_yaml.get('tenants') + default_vnfds = snapshot_yaml.get('vnfds') + default_vnfs = snapshot_yaml.get('vnfs') + default_sfcs = snapshot_yaml.get('sfcs') + default_sfc_classifiers = snapshot_yaml.get('sfc_classifiers') if not os_utils.check_credentials(): logger.error("Please source the openrc credentials and run " @@ -416,6 +527,16 @@ def main(): separator() remove_tenants(keystone_client, default_tenants) separator() + # Note: Delete in this order + # 1. Classifiers, 2. SFCs, 3. VNFs, 4. VNFDs + remove_tacker_sfc_classifiers(tacker_client, default_sfc_classifiers) + separator() + remove_tacker_sfcs(tacker_client, default_sfcs) + separator() + remove_tacker_vnfs(tacker_client, default_vnfs) + separator() + remove_tacker_vnfds(tacker_client, default_vnfds) + separator() if __name__ == '__main__': diff --git a/functest/utils/openstack_snapshot.py b/functest/utils/openstack_snapshot.py index 4be1af44..d6e7fe00 100755 --- a/functest/utils/openstack_snapshot.py +++ b/functest/utils/openstack_snapshot.py @@ -9,6 +9,8 @@ # - Neutron networks, subnets and ports # - Routers # - Users and tenants +# - Tacker VNFDs and VNFs +# - Tacker SFCs and SFC classifiers # # Author: # jose.lausuch@ericsson.com @@ -22,6 +24,7 @@ import functest.utils.functest_logger as ft_logger import functest.utils.openstack_utils as os_utils +import functest.utils.openstack_tacker as os_tacker import yaml import functest.utils.functest_constants as ft_constants @@ -127,6 +130,51 @@ def get_tenants(keystone_client): return {'tenants': dic_tenants} +def get_tacker_vnfds(tacker_client): + logger.debug("Getting Tacker VNFDs...") + dic_vnfds = {} + vnfds = os_tacker.list_vnfds(tacker_client, verbose=True)['vnfds'] + if not (vnfds is None or len(vnfds) == 0): + for vnfd in vnfds: + dic_vnfds.update({vnfd['id']: + vnfd['name']}) + return {'vnfds': dic_vnfds} + + +def get_tacker_vnfs(tacker_client): + logger.debug("Getting Tacker VNFs...") + dic_vnfs = {} + vnfs = os_tacker.list_vnfs(tacker_client, verbose=True)['vnfs'] + if not (vnfs is None or len(vnfs) == 0): + for vnf in vnfs: + dic_vnfs.update({vnf['id']: + vnf['name']}) + return {'vnfs': dic_vnfs} + + +def get_tacker_sfcs(tacker_client): + logger.debug("Getting Tacker SFCs...") + dic_sfcs = {} + sfcs = os_tacker.list_sfcs(tacker_client, verbose=True)['sfcs'] + if not (sfcs is None or len(sfcs) == 0): + for sfc in sfcs: + dic_sfcs.update({sfc['id']: + sfc['name']}) + return {'sfcs': dic_sfcs} + + +def get_tacker_sfc_classifiers(tacker_client): + logger.debug("Getting Tacker SFC classifiers...") + dic_sfc_clfs = {} + sfc_clfs = os_tacker.list_sfc_clasifiers( + tacker_client, verbose=True)['sfc_classifiers'] + if not (sfc_clfs is None or len(sfc_clfs) == 0): + for sfc_clf in sfc_clfs: + dic_sfc_clfs.update({sfc_clf['id']: + sfc_clf['name']}) + return {'sfc_classifiers': dic_sfc_clfs} + + def main(): logger.info("Generating OpenStack snapshot...") @@ -134,6 +182,7 @@ def main(): neutron_client = os_utils.get_neutron_client() keystone_client = os_utils.get_keystone_client() cinder_client = os_utils.get_cinder_client() + tacker_client = os_tacker.get_tacker_client() if not os_utils.check_credentials(): logger.error("Please source the openrc credentials and run the" + @@ -150,6 +199,10 @@ def main(): snapshot.update(get_floatinips(nova_client)) snapshot.update(get_users(keystone_client)) snapshot.update(get_tenants(keystone_client)) + snapshot.update(get_tacker_vnfds(tacker_client)) + snapshot.update(get_tacker_vnfs(tacker_client)) + snapshot.update(get_tacker_sfcs(tacker_client)) + snapshot.update(get_tacker_sfc_classifiers(tacker_client)) with open(OS_SNAPSHOT_FILE, 'w+') as yaml_file: yaml_file.write(yaml.safe_dump(snapshot, default_flow_style=False)) |