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
8 # http://www.apache.org/licenses/LICENSE-2.0
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.
16 # ============LICENSE_END=========================================================
20 from config import Config
22 from instantiate import get_customer, check_orchestration_status, get_service_model
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)
32 def get_service_subscription(customer, service_name):
34 service_subscription = next(
35 service_sub for service_sub in customer.service_subscriptions if service_sub.service_type == service_name)
37 logger.error("Service Subscription not found")
39 return service_subscription
42 def get_service_instance(service_subscription, service_instance_name):
44 service_instance = next(instance for instance in service_subscription.service_instances
45 if instance.instance_name == service_instance_name)
47 logger.error("Service Instance not found")
49 return service_instance
52 def delete_service_macro(service_instance):
53 service_deletion = service_instance.delete(a_la_carte=False)
54 check_orchestration_status(service_deletion)
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)
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)
78 vnf_deletion = vnf.delete()
79 check_orchestration_status(vnf_deletion)
80 service_deletion = service_instance.delete()
81 check_orchestration_status(service_deletion)
85 logger.info("*******************************")
86 logger.info("**** SERVICE DELETION ****")
87 logger.info("*******************************")
89 logger.info("******** GET Customer *******")
90 customer = get_customer(Config.GLOBAL_CUSTOMER_ID)
92 logger.info("******** Check Service Subscription *******")
93 service_subscription = get_service_subscription(customer, Config.SERVICENAME)
95 logger.info("******** Get Service Instance details *******")
96 service_instance = get_service_instance(service_subscription, Config.SERVICE_INSTANCE_NAME)
98 service_model = get_service_model(Config.SERVICENAME)
100 logger.info("******** Delete Service %s *******", service_instance.instance_name)
101 if Config.MACRO_INSTANTIATION:
102 delete_service_macro(service_instance)
104 delete_service_alacarte2(service_instance, service_model)
107 if __name__ == "__main__":