aboutsummaryrefslogtreecommitdiffstats
path: root/heat/vFW_CNF_CDS/automation/onboard.py
diff options
context:
space:
mode:
authorMichal Chabiera <michal.chabiera@orange.com>2020-12-07 18:18:27 +0100
committerMorgan Richomme <morgan.richomme@orange.com>2020-12-07 21:27:43 +0000
commit303fe3b4343838ae4c7b7a2511cb065f3abe7699 (patch)
treeb440bd4803ec5d8a19d3d4398573701456c5621b /heat/vFW_CNF_CDS/automation/onboard.py
parent28107b9b3116d05eead52f9b88bfa385f4762f0a (diff)
Automation scripts for vFW_CNF_CDS usecase
Automation scripts for vFW_CNF_CDS usecase Issue-ID: INT-1658 Signed-off-by: Michal Chabiera <michal.chabiera@orange.com> Change-Id: I32ba9afe0ca95c5db66c6789756508a76a13f948 (cherry picked from commit 6a7d598d08aa0e145a5aff71c4ed6deafb098e39)
Diffstat (limited to 'heat/vFW_CNF_CDS/automation/onboard.py')
-rwxr-xr-xheat/vFW_CNF_CDS/automation/onboard.py98
1 files changed, 98 insertions, 0 deletions
diff --git a/heat/vFW_CNF_CDS/automation/onboard.py b/heat/vFW_CNF_CDS/automation/onboard.py
new file mode 100755
index 00000000..c97b3510
--- /dev/null
+++ b/heat/vFW_CNF_CDS/automation/onboard.py
@@ -0,0 +1,98 @@
+# ============LICENSE_START=======================================================
+# Copyright (C) 2020 Orange
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# ============LICENSE_END=========================================================
+
+import logging
+
+import time
+import zipfile
+from io import BytesIO
+
+import oyaml as yaml
+
+from config import Config
+from onapsdk.sdc.properties import Property
+
+from onapsdk.sdc.vendor import Vendor
+from onapsdk.sdc.vsp import Vsp
+from onapsdk.sdc.vf import Vf
+from onapsdk.sdc.service import Service, ServiceInstantiationType
+
+import os
+
+logger = logging.getLogger("")
+logger.setLevel(logging.DEBUG)
+fh = logging.StreamHandler()
+fh_formatter = logging.Formatter('%(asctime)s %(levelname)s %(lineno)d:%(filename)s(%(process)d) - %(message)s')
+fh.setFormatter(fh_formatter)
+logger.addHandler(fh)
+
+# Read SDNC MODEL NAME and VERSION from CBA.zip
+logger.info("*******************************")
+logger.info("Retrieving SDNC MODEL NAME and VERSION")
+logger.info("*******************************")
+with zipfile.ZipFile(Config.VSPFILE, 'r') as package:
+ cba_io = BytesIO(package.read("CBA.zip"))
+ with zipfile.ZipFile(cba_io) as cba:
+ with cba.open('TOSCA-Metadata/TOSCA.meta') as meta_file:
+ tosca_meta = yaml.load(meta_file, Loader=yaml.FullLoader)
+ SDNC_MODEL_NAME = tosca_meta.get("Template-Name")
+ SDNC_MODEL_VERSION = tosca_meta.get("Template-Version")
+
+logger.info("*******************************")
+logger.info("******** SERVICE DESIGN *******")
+logger.info("*******************************")
+
+logger.info("******** Onboard Vendor *******")
+vendor = Vendor(name=Config.VENDOR)
+vendor.onboard()
+
+logger.info("******** Onboard VSP *******")
+mypath = os.path.dirname(os.path.realpath(__file__))
+myvspfile = os.path.join(mypath, Config.VSPFILE)
+vsp = Vsp(name=Config.VSPNAME, vendor=vendor, package=open(myvspfile, 'rb'))
+vsp.onboard()
+
+logger.info("******** Onboard VF *******")
+vf = Vf(name=Config.VFNAME, properties=[
+ Property(name="sdnc_model_name", property_type="string", value=SDNC_MODEL_NAME),
+ Property(name="sdnc_model_version", property_type="string", value=SDNC_MODEL_VERSION),
+ Property(name="sdnc_artifact_name", property_type="string", value=Config.SDNC_ARTIFACT_NAME)
+]
+ )
+vf.vsp = vsp
+vf.onboard()
+
+logger.info("******** Onboard Service *******")
+svc = Service(name=Config.SERVICENAME, resources=[vf], instantiation_type=ServiceInstantiationType.MACRO)
+svc.onboard()
+
+logger.info("******** Check Service Distribution *******")
+distribution_completed = False
+nb_try = 0
+nb_try_max = 10
+while distribution_completed is False and nb_try < nb_try_max:
+ distribution_completed = svc.distributed
+ if distribution_completed is True:
+ logger.info("Service Distribution for %s is successfully finished", svc.name)
+ break
+ logger.info("Service Distribution for %s ongoing, Wait for 60 s", svc.name)
+ time.sleep(60)
+ nb_try += 1
+
+if distribution_completed is False:
+ logger.error("Service Distribution for %s failed !!", svc.name)
+ exit(1)