aboutsummaryrefslogtreecommitdiffstats
path: root/sfc/lib/cleanup.py
blob: 6259736a5ca9aad0e2d25feddff2ef0b2227bdce (plain)
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
import sys

import logging
import functest.utils.openstack_utils as os_utils
import functest.utils.openstack_tacker as os_tacker
import sfc.lib.utils as utils


logger = logging.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 len(sys.argv) > 2:
        cleanup(sys.argv[1], sys.argv[2])
    else:
        cleanup()