vFW CNF CDS usecase automation scripts update
[demo.git] / heat / vFW_CNF_CDS / automation / delete.py
1 # ============LICENSE_START=======================================================
2 # Copyright (C) 2021 Orange
3 # ================================================================================
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #      http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 #
16 # ============LICENSE_END=========================================================
17
18 import logging
19
20 from config import Config
21
22 from instantiate import get_customer, check_orchestration_status, get_service_model
23
24 logger = logging.getLogger("")
25 logger.setLevel(logging.DEBUG)
26 fh = logging.StreamHandler()
27 fh_formatter = logging.Formatter('%(asctime)s %(levelname)s %(lineno)d:%(filename)s(%(process)d) - %(message)s')
28 fh.setFormatter(fh_formatter)
29 logger.addHandler(fh)
30
31
32 def get_service_subscription(customer, service_name):
33     try:
34         service_subscription = next(
35             service_sub for service_sub in customer.service_subscriptions if service_sub.service_type == service_name)
36     except StopIteration:
37         logger.error("Service Subscription not found")
38         exit(1)
39     return service_subscription
40
41
42 def get_service_instance(service_subscription, service_instance_name):
43     try:
44         service_instance = next(instance for instance in service_subscription.service_instances
45                                 if instance.instance_name == service_instance_name)
46     except StopIteration:
47         logger.error("Service Instance not found")
48         exit(1)
49     return service_instance
50
51
52 def delete_service_macro(service_instance):
53     service_deletion = service_instance.delete(a_la_carte=False)
54     check_orchestration_status(service_deletion)
55
56
57 def delete_service_alacarte(service_instance):
58     for vnf in service_instance.vnf_instances:
59         for vf_module in vnf.vf_modules:
60             vf_module_deletion = vf_module.delete()
61             check_orchestration_status(vf_module_deletion)
62         vnf_deletion = vnf.delete()
63         check_orchestration_status(vnf_deletion)
64     service_deletion = service_instance.delete()
65     check_orchestration_status(service_deletion)
66
67
68 def delete_service_alacarte2(service_instance, service_model):
69     for vnf in service_instance.vnf_instances:
70         for label in sorted(Config.VF_MODULE_PARAM_LIST, reverse=True):
71             vf_module_model = next(vfmodule for vfmodule in service_model.vf_modules
72                                    if vfmodule.properties["vf_module_label"] == label)
73             vfModuleModelInvariantUUID = vf_module_model.metadata["vfModuleModelInvariantUUID"]
74             vf_module = next(vfmodule for vfmodule in vnf.vf_modules if vfmodule.model_invariant_id == vfModuleModelInvariantUUID)
75             vf_module_deletion = vf_module.delete()
76             check_orchestration_status(vf_module_deletion)
77
78         vnf_deletion = vnf.delete()
79         check_orchestration_status(vnf_deletion)
80     service_deletion = service_instance.delete()
81     check_orchestration_status(service_deletion)
82
83
84 def main():
85     logger.info("*******************************")
86     logger.info("**** SERVICE DELETION ****")
87     logger.info("*******************************")
88
89     logger.info("******** GET Customer *******")
90     customer = get_customer(Config.GLOBAL_CUSTOMER_ID)
91
92     logger.info("******** Check Service Subscription *******")
93     service_subscription = get_service_subscription(customer, Config.SERVICENAME)
94
95     logger.info("******** Get Service Instance details *******")
96     service_instance = get_service_instance(service_subscription, Config.SERVICE_INSTANCE_NAME)
97
98     service_model = get_service_model(Config.SERVICENAME)
99
100     logger.info("******** Delete Service %s *******", service_instance.instance_name)
101     if Config.MACRO_INSTANTIATION:
102         delete_service_macro(service_instance)
103     else:
104         delete_service_alacarte2(service_instance, service_model)
105
106
107 if __name__ == "__main__":
108     main()