1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
import sys
import logging as ft_logger
# 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 sfc.lib.utils as utils
logger = ft_logger.getLogger(__name__)
def delete_odl_resources(odl_ip, odl_port, resource):
rsrc_list = utils.get_odl_resource_list(odl_ip, odl_port, resource)
elem_names = utils.odl_resource_list_names(resource, rsrc_list)
for elem in elem_names:
logger.info("Removing ODL resource: {0}/{1}".format(resource, elem))
utils.delete_odl_resource_elem(odl_ip, odl_port, resource, elem)
def delete_odl_ietf_access_lists(odl_ip, odl_port):
acl_list = utils.get_odl_acl_list(odl_ip, odl_port)
acl_types_names = utils.odl_acl_types_names(acl_list)
for acl_type, acl_name in acl_types_names:
utils.delete_odl_acl(odl_ip, odl_port, acl_type, acl_name)
def delete_vnfds():
t = os_tacker.get_tacker_client()
vnfds = os_tacker.list_vnfds(t)
if vnfds is None:
return
for vnfd in vnfds:
logger.info("Removing vnfd: {0}".format(vnfd))
os_tacker.delete_vnfd(t, vnfd_id=vnfd)
def delete_vnfs():
t = os_tacker.get_tacker_client()
vnfs = os_tacker.list_vnfs(t)
if vnfs is None:
return
for vnf in vnfs:
logger.info("Removing vnf: {0}".format(vnf))
os_tacker.delete_vnf(t, vnf_id=vnf)
def delete_sfcs():
t = os_tacker.get_tacker_client()
sfcs = os_tacker.list_sfcs(t)
if sfcs is None:
return
for sfc in sfcs:
logger.info("Removing sfc: {0}".format(sfc))
os_tacker.delete_sfc(t, sfc_id=sfc)
def delete_sfc_clfs():
t = os_tacker.get_tacker_client()
sfc_clfs = os_tacker.list_sfc_classifiers(t)
if sfc_clfs is None:
return
for sfc_clf in sfc_clfs:
logger.info("Removing sfc classifier: {0}".format(sfc_clf))
os_tacker.delete_sfc_classifier(t, sfc_clf_id=sfc_clf)
def delete_floating_ips():
n = os_utils.get_nova_client()
fips = os_utils.get_floating_ips(n)
if fips is None:
return
for fip in fips:
logger.info("Removing floating ip: {0}".format(fip.ip))
os_utils.delete_floating_ip(n, fip.id)
def delete_stacks():
logger.info("Removing stack: sfc")
utils.run_cmd('openstack stack delete sfc --y')
logger.info("Removing stack: sfc_test1")
utils.run_cmd('openstack stack delete sfc_test1 --y')
logger.info("Removing stack: sfc_test2")
utils.run_cmd('openstack stack delete sfc_test2 --y')
def delete_instances():
n = os_utils.get_nova_client()
instances = os_utils.get_instances(n)
if instances is None:
return
for inst in instances:
logger.info("Removing instance: {0}".format(inst.id))
os_utils.delete_instance(n, inst.id)
def cleanup_odl(odl_ip, odl_port):
delete_odl_resources(odl_ip, odl_port, 'service-function-forwarder')
delete_odl_resources(odl_ip, odl_port, 'service-function-chain')
delete_odl_resources(odl_ip, odl_port, 'service-function-path')
delete_odl_resources(odl_ip, odl_port, 'service-function')
delete_odl_ietf_access_lists(odl_ip, odl_port)
def cleanup(odl_ip=None, odl_port=None):
delete_sfc_clfs()
delete_sfcs()
delete_vnfs()
delete_vnfds()
delete_stacks()
delete_floating_ips()
delete_instances()
if odl_ip is not None and odl_port is not None:
cleanup_odl(odl_ip, odl_port)
if __name__ == '__main__':
if sys.argv > 2:
cleanup(sys.argv[1], sys.argv[2])
else:
cleanup()
|