Updates for Casbalanca vcpe.py 02/72402/2
authorBrian Freeman <bf1936@att.com>
Mon, 12 Nov 2018 03:36:20 +0000 (22:36 -0500)
committerBrian Freeman <bf1936@att.com>
Mon, 12 Nov 2018 15:28:55 +0000 (10:28 -0500)
Issue-ID: INT-717
Change-Id: I0d5978da205fcc02935e9547424578f90e5a5c38
Signed-off-by: Brian Freeman <bf1936@att.com>
test/vcpe/healthcheck-k8s.py [new file with mode: 0644]
test/vcpe/preload.py
test/vcpe/preload_templates/template.vcpe_gwgra_vfmodule.json [new file with mode: 0644]
test/vcpe/preload_templates/template_sniro_data.json
test/vcpe/vcpe.py
test/vcpe/vcpe_custom_service.py
test/vcpe/vcpecommon.py

diff --git a/test/vcpe/healthcheck-k8s.py b/test/vcpe/healthcheck-k8s.py
new file mode 100644 (file)
index 0000000..0aea3fb
--- /dev/null
@@ -0,0 +1,36 @@
+#! /usr/bin/python
+
+import logging
+import json
+from vcpecommon import *
+import commands
+import sys
+
+if len(sys.argv) <2:
+   print('namespace not provided')
+   print('Usage: healthcheck-k8s.py onap')
+   sys.exit()
+
+namespace=sys.argv[1]
+
+logging.basicConfig(level=logging.INFO, format='%(message)s')
+common = VcpeCommon()
+
+print('Checking vGMUX REST API from SDNC')
+cmd = 'curl -u admin:admin -X GET http://10.0.101.21:8183/restconf/config/ietf-interfaces:interfaces'
+ret = commands.getstatusoutput("kubectl -n {0} exec dev-sdnc-sdnc-0 -- bash -c '{1}'".format(namespace,cmd))
+sz = ret[-1].split('\n')[-1]
+print('\n')
+print(sz)
+
+print('Checking vBRG REST API from SDNC')
+cmd = 'curl -u admin:admin -X GET http://10.3.0.2:8183/restconf/config/ietf-interfaces:interfaces'
+ret = commands.getstatusoutput("kubectl -n {0} exec dev-sdnc-sdnc-0 -- bash -c '{1}'".format(namespace,cmd))
+sz = ret[-1].split('\n')[-1]
+print('\n')
+print(sz)
+
+print('Checking SDNC DB for vBRG MAC address')
+mac = common.get_brg_mac_from_sdnc()
+print(mac)
+
index c4efafd..caf9eb1 100755 (executable)
@@ -121,6 +121,15 @@ class Preload:
         self.logger.info('Preloading vGW')
         return self.preload(template_file, replace_dict, self.vcpecommon.sdnc_preload_vnf_url)
 
+    def preload_vgw_gra(self, template_file, brg_mac, commont_dict, name_suffix, vgw_vfmod_name_index):
+        replace_dict = {'${brg_mac}': brg_mac,
+                        '${suffix}': name_suffix
+                        '${vgw_vfmod_name_index}': vgw_vfmod_name_index
+                        }
+        replace_dict.update(commont_dict)
+        self.logger.info('Preloading vGW-GRA')
+        return self.preload(template_file, replace_dict, self.vcpecommon.sdnc_preload_vnf_url)
+
     def preload_vfmodule(self, template_file, service_instance_id, vnf_model, vfmodule_model, common_dict, name_suffix):
         """
         :param template_file:
diff --git a/test/vcpe/preload_templates/template.vcpe_gwgra_vfmodule.json b/test/vcpe/preload_templates/template.vcpe_gwgra_vfmodule.json
new file mode 100644 (file)
index 0000000..856212b
--- /dev/null
@@ -0,0 +1,125 @@
+{
+       "GENERIC-RESOURCE-API:input": {
+               "GENERIC-RESOURCE-API:request-information": {
+                       "GENERIC-RESOURCE-API:notification-url": "https://so.onap.org",
+                       "GENERIC-RESOURCE-API:order-number": "robot12",
+                       "GENERIC-RESOURCE-API:order-version": "1.0",
+                       "GENERIC-RESOURCE-API:request-action": "PreloadVfModuleRequest",
+                       "GENERIC-RESOURCE-API:request-id": "robot12",
+                       "GENERIC-RESOURCE-API:source": "VID"
+               },
+               "GENERIC-RESOURCE-API:sdnc-request-header": {
+                       "GENERIC-RESOURCE-API:svc-action": "reserve",
+                       "GENERIC-RESOURCE-API:svc-notification-url": "https://son.onap.org",
+                       "GENERIC-RESOURCE-API:svc-request-id": "robot12"
+               },
+               "preload-vf-module-topology-information": {
+                       "vf-module-topology": {
+                               "vf-module-parameters":  {
+                                       "param": [
+                                       {
+                                           "name": "public_net_id", 
+                                           "value": "${public_net_id}"
+                                       }, 
+                                       {
+                                           "name": "mux_gw_private_net_id", 
+                                           "value": "${mux_gw_net}"
+                                       }, 
+                                       {
+                                           "name": "mux_gw_private_subnet_id", 
+                                           "value": "${mux_gw_subnet}"
+                                       }, 
+                                       {
+                                           "name": "mux_gw_private_net_cidr", 
+                                           "value": "10.5.0.0/24"
+                                       }, 
+                                       {
+                                           "name": "cpe_public_net_id", 
+                                           "value": "${cpe_public_net}"
+                                       }, 
+                                       {
+                                           "name": "cpe_public_subnet_id", 
+                                           "value": "${cpe_public_subnet}"
+                                       }, 
+                                       {
+                                           "name": "cpe_public_net_cidr", 
+                                           "value": "10.2.0.0/24"
+                                       }, 
+                                       {
+                                           "name": "vgw_private_ip_0", 
+                                           "value": "10.5.0.92"
+                                       }, 
+                                       {
+                                           "name": "vgw_private_ip_1", 
+                                           "value": "10.0.101.92"
+                                       }, 
+                                       {
+                                           "name": "vgw_private_ip_2", 
+                                           "value": "10.2.0.7"
+                                       }, 
+                                       {
+                                           "name": "vgw_name_0", 
+                                           "value": "zdcpe1cpe01gw01_${suffix}"
+                                       }, 
+                                       {
+                                           "name": "mux_ip_addr", 
+                                           "value": "10.5.0.21"
+                                       }, 
+                                       {
+                                           "name": "vg_vgmux_tunnel_vni", 
+                                           "value": "92"
+                                       }, 
+                                       {
+                                           "name": "onap_private_net_id", 
+                                           "value": "${oam_onap_net}"
+                                       }, 
+                                       {
+                                           "name": "onap_private_subnet_id", 
+                                           "value": "${oam_onap_subnet}"
+                                       }, 
+                                       {
+                                           "name": "onap_private_net_cidr", 
+                                           "value": "10.0.0.0/16"
+                                       }, 
+                                       {
+                                           "name": "repo_url_blob", 
+                                           "value": "https://nexus.onap.org/content/sites/raw"
+                                       }, 
+                                       {
+                                           "name": "repo_url_artifacts", 
+                                           "value": "https://nexus.onap.org/content/groups/staging"
+                                       }, 
+                                       {
+                                           "name": "demo_artifacts_version", 
+                                           "value": "1.1.1"
+                                       }, 
+                                       {
+                                           "name": "install_script_version", 
+                                           "value": "1.1.1"
+                                       }, 
+                                       {
+                                           "name": "key_name", 
+                                           "value": "vgw_key"
+                                       }, 
+                                       {
+                                           "name": "pub_key", 
+                                           "value": "${pub_key}"
+                                       }, 
+                                       {
+                                           "name": "cloud_env", 
+                                           "value": "openstack"
+                                       }
+                               ] },
+                               "vf-module-assignments": {},
+                               "vf-module-topology-identifier": {
+                                       "vf-module-name": "zRegionOne{$vgw_vfmod_name_index}_base_vcpe_vgw_0"
+                               }
+                       },
+                       "vnf-resource-assignments": {},
+                       "vnf-topology-identifier-structure": {
+                               "nf-type": "vgw",
+                                "vnf-id": "VGW2BRG-${brg_mac}" 
+                       }
+               }
+       }
+}
index 92c9cc7..c2c6421 100644 (file)
@@ -1,6 +1,6 @@
 {
    "solutionInfo" : {
-      "placement" : [
+      "placementInfo" : [
          {
             "cloudRegionId" : "RegionOne",
             "inventoryType" : "service",
index 26f27fb..efebecb 100755 (executable)
@@ -142,8 +142,9 @@ def deploy_custom_service():
     # create new service
     csar_file = vcpecommon.find_file('rescust', 'csar', 'csar')
     vgw_template_file = vcpecommon.find_file('vgw', 'json', 'preload_templates')
+    vgw_gra_template_file = vcpecommon.find_file('gwgra', 'json', 'preload_templates')
     preload_dict = vcpecommon.load_preload_data()
-    custom_service.create_custom_service(csar_file, vgw_template_file, preload_dict)
+    custom_service.create_custom_service(csar_file, vgw_template_file, vgw_gra_template_file, preload_dict)
 
 
 def closed_loop(lossrate=0):
@@ -174,6 +175,8 @@ def init_so_sdnc():
     vcpecommon = VcpeCommon()
     config_sdnc_so.insert_customer_service_to_so(vcpecommon)
     config_sdnc_so.insert_customer_service_to_sdnc(vcpecommon)
+    vgw_vfmod_name_index=0
+    self.save_object(vgw_vfmod_name_index, vgw_vfmod_name_index_file)
 
 
 def tmp_sniro():
index 8c56354..ad55ed5 100755 (executable)
@@ -66,18 +66,25 @@ class CustomService:
             print(' 6. ping the web server: ping {0}'.format('10.2.0.10'))
             print(' 7. wget http://{0}'.format('10.2.0.10'))
 
-    def create_custom_service(self, csar_file, vgw_template_file, preload_dict=None):
+    def create_custom_service(self, csar_file, vgw_template_file, vgw_gra_template_file, preload_dict=None):
         name_suffix = datetime.now().strftime('%Y%m%d%H%M')
+        self.load_object(vgw_vfmod_name_index,vgw_vfmod_name_index_file)
         if self.vcpecommon.oom_mode:
             brg_mac = str(raw_input("Enter the BRG MAC address: "))
         else:
             brg_mac = self.vcpecommon.get_brg_mac_from_sdnc()
+        # get name index
+        self.load_object(vgw_vfmod_name_index,vgw_vfmod_name_index_file)
+        vgw_vfmod_name_index=vgw_vfmod_name_index+1
+        self.save_object(vgw_vfmod_name_index,vgw_vfmod_name_index_file)
         # preload vGW
         if preload_dict:
             preloader = preload.Preload(self.vcpecommon)
             parameters_to_change = ['vgw_private_ip_0', 'vgw_private_ip_1', 'vgw_private_ip_2','vg_vgmux_tunnel_vni']
             self.vcpecommon.increase_ip_address_or_vni_in_template(vgw_template_file, parameters_to_change)
             preloader.preload_vgw(vgw_template_file, brg_mac, preload_dict, name_suffix)
+            # preload vGW-GRA
+            preloader.preload_vgw_gra(vgw_gra_template_file, brg_mac, preload_dict, name_suffix, vgw_vfmod_name_index)
 
         # create service
         so = soutils.SoUtils(self.vcpecommon, 'v5')
index 75f8838..5928603 100755 (executable)
@@ -85,6 +85,8 @@ class VcpeCommon:
         self.hosts = self.get_vm_ip(self.host_names, self.external_net_addr, self.external_net_prefix_len)
         # this is the keyword used to name vgw stack, must not be used in other stacks
         self.vgw_name_keyword = 'base_vcpe_vgw'
+        # this is the file that will keep the index of last assigned SO name
+        self.vgw_vfmod_name_index_file= '__var/vgw_vfmod_name_index'
         self.svc_instance_uuid_file = '__var/svc_instance_uuid'
         self.preload_dict_file = '__var/preload_dict'
         self.vgmux_vnf_name_file = '__var/vgmux_vnf_name'
@@ -123,6 +125,8 @@ class VcpeCommon:
                                         ':' + self.sdnc_preloading_port + '/restconf/operations/VNF-API:preload-network-topology-operation'
         self.sdnc_preload_vnf_url = 'http://' + self.hosts['sdnc'] + \
                                     ':' + self.sdnc_preloading_port + '/restconf/operations/VNF-API:preload-vnf-topology-operation'
+        self.sdnc_preload_gra_url = 'http://' + self.hosts['sdnc'] + \
+                                    ':' + self.sdnc_preloading_port + '/restconf/operations/GENERIC-RESOURCE-API:preload-vf-module-topology-operation'
         self.sdnc_ar_cleanup_url = 'http://' + self.hosts['sdnc'] + ':' + self.sdnc_preloading_port + \
                                    '/restconf/config/GENERIC-RESOURCE-API:'