Merge "cirros test code changes for VCD"
authormarchettim <mmarchetti@sandvine.com>
Tue, 20 Nov 2018 20:41:07 +0000 (21:41 +0100)
committerGerrit Code Review <root@osm.etsi.org>
Tue, 20 Nov 2018 20:41:07 +0000 (21:41 +0100)
39 files changed:
.gitignore
descriptor-packages/tools/generate_descriptor_pkg.sh
descriptor-packages/tools/validate_descriptor.py
descriptor-packages/vnfd/VyOS_vnf/src/VyOS__vnfd.yaml
descriptor-packages/vnfd/cirros_noportsecurity_vnf/src/cirros_noportsecurity_vnfd.yaml
descriptor-packages/vnfd/cirros_vnf/src/cirros_vnfd.yaml
descriptor-packages/vnfd/dns_aws_vnfd/src/dns_aws_vnfd.yaml
descriptor-packages/vnfd/hackfest_ansible_vnf/src/ansiblecharm_vnfd.yaml
descriptor-packages/vnfd/hackfest_basic_vnf/src/hackfest_basic_vnfd.yaml
descriptor-packages/vnfd/hackfest_cloudinit_vnf/src/hackfest_cloudinit_vnfd.yaml
descriptor-packages/vnfd/hackfest_epasriov_vnf/src/hackfest_epasriov_vnfd.yaml
descriptor-packages/vnfd/hackfest_multivdu_vnf/src/hackfest_multivdu_vnfd.yaml
descriptor-packages/vnfd/hackfest_simplecharm_vnf/src/hackfest_simplecharm_vnfd.yaml
descriptor-packages/vnfd/ims_allin1_2p_vnf/src/IMS-ALLIN1__vnfd.yaml
descriptor-packages/vnfd/ping_vnf/src/ping_vnfd.yaml
descriptor-packages/vnfd/pong_vnf/src/pong_vnfd.yaml
descriptor-packages/vnfd/ref11_vnf/src/ref11_vnfd.yaml
descriptor-packages/vnfd/ref12_vnf/src/ref12_vnfd.yaml
descriptor-packages/vnfd/ref21_vnf/src/ref21_vnfd.yaml
descriptor-packages/vnfd/ref22_vnf/src/ref22_vnfd.yaml
descriptor-packages/vnfd/ubuntu_1iface_cloudinit_new_vnf/src/ubuntu_1iface_cloudinit_newfile_vnfd.yaml
descriptor-packages/vnfd/ubuntu_cirros_multidisk_vnf/src/ubuntu_cirros_multidisk_vnfd.yaml
descriptor-packages/vnfd/ubuntu_epa_virtio_vnf/src/ubuntu_epa_virtio_vnfd.yaml
descriptor-packages/vnfd/ubuntu_xenial_vnf/src/ubuntu_xenial_vnfd.yaml
docker/LCM/Dockerfile
docker/MON/Dockerfile
docker/MON/scripts/runInstall.sh
docker/NBI/Dockerfile
docker/POL/Dockerfile
installers/docker/docker-compose.yaml
installers/docker/osm_elk/metricbeat.yml
installers/docker/osm_metrics/docker-compose.yml
installers/docker/osm_metrics/osm-sample-dashboard.json
installers/full_install_osm.sh
installers/osm_health.sh
jenkins/ci-pipelines/ci_stage_3.groovy
systest/Makefile
systest/testcases/vnfs/test_vnfs.py
tools/osm-report [new file with mode: 0755]

index d9a3498..e750d4e 100644 (file)
@@ -1,2 +1,16 @@
 *.pyc
 .cache
+
+#Debian packaging related files
+debian/osm-devops.install
+pool
+osm-devops-*.post*
+osm-devops_*.post*
+
+#IDEs
+.idea
+
+#local stuff files that end in ".local" or folders called "local"
+*.local
+local
+
index 1a30cf1..336cd8f 100755 (executable)
@@ -61,7 +61,7 @@ DEBUG=false
 ARCHIVE=false
 CREATE_NSD=false
 VENDOR='OSM'
-INTF_TYPE='VIRTIO'
+INTF_TYPE='PARAVIRT'
 VCPU=2
 MEMORY=4096
 STORAGE=10
@@ -98,8 +98,8 @@ Usage:
 
             --vendor : Vendor name for descriptor. Default OSM
 
-            --interface-type : Interface type [VIRTIO|SR-IOV|PCI-PASSTHROUGH|E1000]
-                               Default VIRTIO
+            --interface-type : Interface type [PARAVIRT|SR-IOV|PCI-PASSTHROUGH|E1000]
+                               Default PARAVIRT
 
           VM Flavour options:
 
@@ -137,7 +137,7 @@ EOF
 CP_TYPE='VPORT'
 function get_cp_type() {
     case ${INTF_TYPE} in
-        VIRTIO ) CP_TYPE='VPORT';;
+        PARAVIRT ) CP_TYPE='VPORT';;
         SR-IOV ) CP_TYPE='VPORT';;
         PCI-PASSTHROUGH ) CP_TYPE='VPORT';;
         OM-MGMT ) CP_TYPE='VPORT';;
@@ -230,7 +230,7 @@ EOF
             -   name: eth0
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: vnf-cp0
 EOF
 
index 010ba16..4d5f0e1 100755 (executable)
@@ -126,12 +126,12 @@ if __name__=="__main__":
                     for external_interface in external_interface_list:
                         if external_interface.get("virtual-interface", {}).get("type") == "OM-MGMT":
                             raise KeyError(
-                                "Wrong 'Virtual-interface type': Deprecated 'OM-MGMT' value. Please, use 'VIRTIO' instead")
+                                "Wrong 'Virtual-interface type': Deprecated 'OM-MGMT' value. Please, use 'PARAVIRT' instead")
                     interface_list = vdu.pop("interface", ())
                     for interface in interface_list:
                         if interface.get("virtual-interface", {}).get("type") == "OM-MGMT":
                             raise KeyError(
-                                "Wrong 'Virtual-interface type': Deprecated 'OM-MGMT' value. Please, use 'VIRTIO' instead")
+                                "Wrong 'Virtual-interface type': Deprecated 'OM-MGMT' value. Please, use 'PARAVIRT' instead")
                 if vnfd.get("mgmt-interface"):
                     mgmt_iface = True
                     if vnfd["mgmt-interface"].get("vdu-id"):
index 1d7689b..34548c0 100644 (file)
@@ -64,35 +64,35 @@ vnfd-catalog:
                 type: EXTERNAL
                 virtual-interface:
                     bandwidth: '0'
-                    type: VIRTIO
+                    type: PARAVIRT
                     vpci: 0000:00:0a.0
                 external-connection-point-ref: eth0
             -   name: eth1
                 type: EXTERNAL
                 virtual-interface:
                     bandwidth: '0'
-                    type: VIRTIO
+                    type: PARAVIRT
                     vpci: 0000:00:0b.0
                 external-connection-point-ref: eth1
             -   name: eth2
                 type: EXTERNAL
                 virtual-interface:
                     bandwidth: '0'
-                    type: VIRTIO
+                    type: PARAVIRT
                     vpci: 0000:00:0c.0
                 external-connection-point-ref: eth2
             -   name: eth3
                 type: EXTERNAL
                 virtual-interface:
                     bandwidth: '0'
-                    type: VIRTIO
+                    type: PARAVIRT
                     vpci: 0000:00:0d.0
                 external-connection-point-ref: eth3
             -   name: eth4
                 type: EXTERNAL
                 virtual-interface:
                     bandwidth: '0'
-                    type: VIRTIO
+                    type: PARAVIRT
                     vpci: 0000:00:0e.0
                 external-connection-point-ref: eth4
             guest-epa:
index ed8900b..fc8d458 100755 (executable)
@@ -38,7 +38,7 @@ vnfd-catalog:
             -   name: eth0
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                     bandwidth: '0'
                     vpci: 0000:00:0a.0
                 external-connection-point-ref: eth0
index 6d5da86..e4980bf 100644 (file)
@@ -38,7 +38,7 @@ vnfd-catalog:
             -   name: eth0
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                     bandwidth: '0'
                     vpci: 0000:00:0a.0
                 external-connection-point-ref: eth0
index 25b7e83..80dc1af 100755 (executable)
@@ -19,7 +19,7 @@ vnfd-catalog:
                 type: EXTERNAL
                 virtual-interface:
                     bandwidth: '0'
-                    type: VIRTIO
+                    type: PARAVIRT
                     vpci: 0000:00:0a.0
                 external-connection-point-ref: eth0
             guest-epa:
index 873d041..241bc0c 100644 (file)
@@ -26,7 +26,7 @@ vnfd:vnfd-catalog:
             -   name: vdu-eth0
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: vnf-cp0
             cloud-init-file: cloud-config.txt
         vnf-configuration:
index b407a84..4051eb3 100644 (file)
@@ -13,6 +13,9 @@ vnfd:vnfd-catalog:
         -   id: hackfest_basic-VM
             name: hackfest_basic-VM
             image: ubuntu1604
+            alternative-images:
+            -   vim-type: aws
+                image: ubuntu/images/hvm-ssd/ubuntu-artful-17.10-amd64-server-20180509
             count: '1'
             vm-flavor:
                 vcpu-count: '1'
@@ -22,7 +25,7 @@ vnfd:vnfd-catalog:
             -   name: vdu-eth0
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: vnf-cp0
         mgmt-interface:
             cp: vnf-cp0
index 4510db1..066f698 100644 (file)
@@ -39,13 +39,13 @@ vnfd:vnfd-catalog:
                 position: '1'
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: vnf-mgmt
             -   name: mgmtVM-eth1
                 position: '2'
                 type: INTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 internal-connection-point-ref: mgmtVM-internal
             internal-connection-point:
             -   id: mgmtVM-internal
@@ -66,13 +66,13 @@ vnfd:vnfd-catalog:
                 position: '1'
                 type: INTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 internal-connection-point-ref: dataVM-internal
             -   name: dataVM-xe0
                 position: '2'
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: vnf-data
             internal-connection-point:
             -   id: dataVM-internal
index 9711b3c..598ee60 100644 (file)
@@ -48,13 +48,13 @@ vnfd:vnfd-catalog:
                 position: '1'
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: vnf-mgmt
             -   name: mgmtVM-eth1
                 position: '2'
                 type: INTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 internal-connection-point-ref: mgmtVM-internal
             internal-connection-point:
             -   id: mgmtVM-internal
@@ -84,7 +84,7 @@ vnfd:vnfd-catalog:
                 position: '1'
                 type: INTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 internal-connection-point-ref: dataVM-internal
             -   name: xe0
                 position: '2'
index b7a5139..d658bf5 100644 (file)
@@ -39,13 +39,13 @@ vnfd:vnfd-catalog:
                 position: '1'
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: vnf-mgmt
             -   name: mgmtVM-eth1
                 position: '2'
                 type: INTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 internal-connection-point-ref: mgmtVM-internal
             internal-connection-point:
             -   id: mgmtVM-internal
@@ -65,13 +65,13 @@ vnfd:vnfd-catalog:
                 position: '1'
                 type: INTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 internal-connection-point-ref: dataVM-internal
             -   name: dataVM-xe0
                 position: '2'
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: vnf-data
             internal-connection-point:
             -   id: dataVM-internal
index 9c6f095..2642f1b 100644 (file)
@@ -39,13 +39,13 @@ vnfd:vnfd-catalog:
                 position: '1'
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: vnf-mgmt
             -   name: mgmtVM-eth1
                 position: '2'
                 type: INTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 internal-connection-point-ref: mgmtVM-internal
             internal-connection-point:
             -   id: mgmtVM-internal
@@ -66,13 +66,13 @@ vnfd:vnfd-catalog:
                 position: '1'
                 type: INTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 internal-connection-point-ref: dataVM-internal
             -   name: dataVM-xe0
                 position: '2'
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: vnf-data
             internal-connection-point:
             -   id: dataVM-internal
index fb903fc..1943ffb 100644 (file)
@@ -60,14 +60,14 @@ vnfd-catalog:
                 type: EXTERNAL
                 virtual-interface:
                     bandwidth: '0'
-                    type: VIRTIO
+                    type: PARAVIRT
                     vpci: 0000:00:0a.0
                 external-connection-point-ref: eth0
             -   name: eth1
                 type: EXTERNAL
                 virtual-interface:
                     bandwidth: '0'
-                    type: VIRTIO
+                    type: PARAVIRT
                     vpci: 0000:00:0b.0
                 external-connection-point-ref: eth1
             guest-epa:
index 0639419..a2e2c1e 100644 (file)
@@ -52,13 +52,13 @@ vnfd-catalog:
                 position: 0
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: ping_vnfd/cp0
             -   name: eth1
                 position: 1
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: ping_vnfd/cp1
             id: iovdu_0
             image: Fedora-x86_64-20-20131211.1-sda-ping.qcow2
index 4dfbab0..935f04e 100644 (file)
@@ -52,13 +52,13 @@ vnfd-catalog:
                 position: 0
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: pong_vnfd/cp0
             -   name: eth1
                 position: 1
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: pong_vnfd/cp1
             id: iovdu_0
             image: Fedora-x86_64-20-20131211.1-sda-pong.qcow2
index d1b7840..a022a85 100644 (file)
@@ -25,12 +25,12 @@ vnfd-catalog:
             -   name: iface10
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: mgmt0
             -   name: iface11
                 type: INTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 internal-connection-point-ref: iface11
             internal-connection-point:
             -   name: iface11
@@ -47,12 +47,12 @@ vnfd-catalog:
             -   name: iface22
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: west
             -   name: iface21
                 type: INTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 internal-connection-point-ref: iface21
             internal-connection-point:
             -   name: iface21
index ae534a8..424eb77 100644 (file)
@@ -28,13 +28,13 @@ vnfd-catalog:
             -   name: iface30
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: mgmt0
             -   name: iface31
                 type: INTERNAL
                 internal-connection-point-ref: iface31
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
             guest-epa:
                 cpu-pinning-policy: DEDICATED
                 mempage-size: "LARGE"
@@ -64,7 +64,7 @@ vnfd-catalog:
                 type: INTERNAL
                 internal-connection-point-ref: iface41
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
             guest-epa:
                 cpu-pinning-policy: DEDICATED
             id: e526e
index 58cd499..7a21394 100644 (file)
@@ -16,12 +16,12 @@ vnfd-catalog:
             -   name: iface50
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: mgmt
             -   name: iface51
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: data
             id: ref_vm21
             image: ref_vm21.qcow2
index 02987b1..9e1388c 100644 (file)
@@ -18,7 +18,7 @@ vnfd-catalog:
             -   name: iface60
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: mgmt
             -   name: iface61
                 type: EXTERNAL
index 53df870..60d2379 100644 (file)
@@ -39,7 +39,7 @@ vnfd-catalog:
             -   name: eth0
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                     bandwidth: '0'
                     vpci: 0000:00:0a.0
                 external-connection-point-ref: eth0
index 9d56adb..a6f9fd6 100644 (file)
@@ -33,7 +33,7 @@ vnfd-catalog:
             -   name: eth0
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                 external-connection-point-ref: eth0
             # Specify the volume
             # There can be multiple interfaces defined
index 9935f76..bb26ba0 100644 (file)
@@ -35,7 +35,7 @@ vnfd-catalog:
             -   name: eth0
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                     bandwidth: '0'
                     vpci: 0000:00:0a.0
                 external-connection-point-ref: eth0
index 5d0eed0..f230501 100644 (file)
@@ -39,7 +39,7 @@ vnfd-catalog:
             -   name: eth0
                 type: EXTERNAL
                 virtual-interface:
-                    type: VIRTIO
+                    type: PARAVIRT
                     bandwidth: '0'
                     vpci: 0000:00:0a.0
                 external-connection-point-ref: eth0
index 1a750d3..909ea3a 100644 (file)
@@ -84,8 +84,11 @@ ENV OSMLCM_VCA_SECRET:     secret
 
 # database
 ENV OSMLCM_DATABASE_DRIVER mongo
-ENV OSMLCM_DATABASE_HOST   mongo
-ENV OSMLCM_DATABASE_PORT   27017
+ENV OSMLCM_DATABASE_URI    mongodb://mongo:27017
+#ENV OSMLCM_DATABASE_HOST    mongo
+#ENV OSMLCM_DATABASE_PORT    27017
+
+
 ENV OSMLCM_STORAGE_DRIVER  local
 ENV OSMLCM_STORAGE_PATH    /app/storage
 
index 5b9da33..c276000 100644 (file)
@@ -30,28 +30,38 @@ RUN apt-get --yes update \
  && apt-get --yes install git python python-pip python3 python3-pip libmysqlclient-dev libssl-dev libffi-dev \
  && pip3 install pip==9.0.3
 
+RUN pip3 install  'macaroonbakery>=1.1,<2.0' 'pyRFC3339>=1.0,<2.0' \
+      'pyyaml>=3.0,<4.0' 'theblues>=0.3.8,<1.0' 'websockets>=4.0,<5.0' \
+      'paramiko'   # PyNaCl
+
 ARG REPOSITORY_BASE=http://osm-download.etsi.org/repository/osm/debian
 ARG RELEASE=ReleaseFOUR-daily
 ARG REPOSITORY_KEY=OSM%20ETSI%20Release%20Key.gpg
 ARG REPOSITORY=testing
 
 RUN curl ${REPOSITORY_BASE}/${RELEASE}/${REPOSITORY_KEY} | apt-key add -
-RUN add-apt-repository -y "deb ${REPOSITORY_BASE}/${RELEASE} ${REPOSITORY} MON common" && apt update
+RUN add-apt-repository -y "deb ${REPOSITORY_BASE}/${RELEASE} ${REPOSITORY} MON N2VC common" && apt update
 
 ARG MON_VERSION
 ARG COMMON_VERSION
+ARG N2VC_VERSION
 
-RUN apt-get --yes update  && apt-get -y install python3-osm-common${COMMON_VERSION} python3-osm-mon${MON_VERSION}
+RUN apt-get --yes update  && apt-get -y install python3-osm-common${COMMON_VERSION} python3-osm-mon${MON_VERSION} python3-n2vc${N2VC_VERSION}
 
 COPY scripts/ scripts/
 
 ENV BROKER_URI kafka:9092
-ENV MONGO_URI mongo:27017
+ENV MONGO_URI mongodb://mongo:27017
 ENV DATABASE sqlite:///mon_sqlite.db
 ENV OS_NOTIFIER_URI localhost:8662
 ENV OS_DEFAULT_GRANULARITY 300
 ENV REQUEST_TIMEOUT 10
+ENV OSMMON_LOG_LEVEL INFO
+ENV OSMMON_KAFKA_LOG_LEVEL INFO
+ENV OSMMON_VCA_HOST localhost
+ENV OSMMON_VCA_SECRET secret
+ENV OSMMON_VCA_USER admin
 
-EXPOSE 8662
+EXPOSE 8662 8000
 
 CMD /bin/bash scripts/runInstall.sh
index 236aa3d..b3228b6 100755 (executable)
@@ -20,7 +20,6 @@
 # For those usages not covered by the Apache License, Version 2.0 please
 # contact: bdiaz@whitestack.com or glavado@whitestack.com
 ##
-/bin/bash /mon/osm_mon/plugins/vRealiseOps/vROPs_Webservice/install.sh
-python3 /usr/lib/python3/dist-packages/osm_mon/plugins/OpenStack/Aodh/notifier.py &
-python3 ./usr/lib/python3/dist-packages/osm_mon/core/message_bus/common_consumer.py
-
+osm-mon-server &
+osm-mon-evaluator &
+osm-mon-collector
index d2d0c36..04a9acd 100644 (file)
@@ -51,8 +51,10 @@ ENV OSMNBI_SOCKET_PORT     9999
 ENV OSMNBI_STORAGE_PATH    /app/storage
 # database
 ENV OSMNBI_DATABASE_DRIVER mongo
-ENV OSMNBI_DATABASE_HOST   mongo
-ENV OSMNBI_DATABASE_PORT   27017
+ENV OSMNBI_DATABASE_URI   mongodb://mongo:27017
+#ENV OSMNBI_DATABASE_HOST   mongo
+#ENV OSMNBI_DATABASE_PORT   27017
+
 # web
 ENV OSMNBI_STATIC_DIR      /app/osm_nbi/html_public
 # logs
index f5ce057..1eb8634 100644 (file)
@@ -52,8 +52,7 @@ ENV OSMPOL_MESSAGE_HOST kafka
 ENV OSMPOL_MESSAGE_PORT 9092
 
 ENV OSMPOL_DATABASE_DRIVER mongo
-ENV OSMPOL_DATABASE_HOST mongo
-ENV OSMPOL_DATABASE_PORT 27017
+ENV OSMPOL_DATABASE_URI mongodb://mongo:27017
 
 ENV OSMPOL_SQL_DATABASE_URI sqlite:///mon_sqlite.db
 
index e45fabd..29b7857 100644 (file)
@@ -3,8 +3,10 @@ volumes:
   ro_db:
   mongo_db:
   mon_db:
+  pol_db:
   osm_packages:
   keystone_db:
+  prom_db:
 networks:
   netOSM:
     external:
@@ -53,6 +55,7 @@ services:
       - "${OSM_PROM_PORTS:-9091:9090}"
     volumes:
       - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
+      - prom_db:/prometheus
     networks:
       - netOSM
   keystone-db:
@@ -148,7 +151,10 @@ services:
     image: ${DOCKER_USER:-osm}/pol:${TAG:-latest}
     networks:
       - netOSM
+    volumes:
+      - pol_db:/app/database
     environment:
+      OSMPOL_SQL_DATABASE_URI: sqlite:///app/database/policy_module.db
       BROKER_URI: kafka:9092
     #depends_on:
     #  - kafka
index 61feaef..907253e 100644 (file)
@@ -54,7 +54,7 @@ fields:
 output.elasticsearch:
   hosts: ["elasticsearch:9200"]
 
-logging.level: debug
+logging.level: info
 logging.to_files: true
 logging.files:
   path: /var/log/metricbeat
index fb0e835..98fd565 100644 (file)
@@ -2,7 +2,7 @@ version: '3'
 networks:
   netOSM:
     external:
-       name: ${OSM_NETWORK:-netOSM}
+       name: ${OSM_NETWORK:-netosm}
 services:
   grafana:
     image: grafana/grafana
index cb9ca06..415a7cd 100644 (file)
@@ -54,7 +54,7 @@
       "steppedLine": false,
       "targets": [
         {
-          "expr": "cpu_utilization",
+          "expr": "osm_cpu_utilization",
           "format": "time_series",
           "interval": "",
           "intervalFactor": 1,
       "steppedLine": false,
       "targets": [
         {
-          "expr": "average_memory_utilization",
+          "expr": "osm_average_memory_utilization",
           "format": "time_series",
           "interval": "",
           "intervalFactor": 1,
       "steppedLine": false,
       "targets": [
         {
-          "expr": "load",
+          "expr": "osm_load",
           "format": "time_series",
           "interval": "",
           "intervalFactor": 1,
       "steppedLine": false,
       "targets": [
         {
-          "expr": "users",
+          "expr": "osm_users",
           "format": "time_series",
           "interval": "",
           "intervalFactor": 1,
index ddff44a..f67ba08 100755 (executable)
@@ -105,6 +105,10 @@ function parse_juju_password {
    }'
 }
 
+function generate_secret() {
+    head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32
+}
+
 function remove_volumes() {
     stack=$1
     volumes="mongo_db mon_db osm_packages ro_db"
@@ -384,7 +388,7 @@ function configure_RO(){
 
 function configure_VCA(){
     echo -e "       Configuring VCA"
-    JUJU_PASSWD=`date +%s | sha256sum | base64 | head -c 32`
+    JUJU_PASSWD=$(generate_secret)
     echo -e "$JUJU_PASSWD\n$JUJU_PASSWD" | lxc exec VCA -- juju change-user-password
 }
 
@@ -744,10 +748,25 @@ function generate_config_log_folders() {
 
 function generate_docker_env_files() {
     echo "Generating docker env files"
-    echo "OSMLCM_VCA_HOST=${OSM_VCA_HOST}" | $WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/lcm.env
-    echo "OSMLCM_VCA_SECRET=${OSM_VCA_SECRET}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/lcm.env
+    # LCM
+    if [ ! -f $OSM_DOCKER_WORK_DIR/lcm.env ]; then
+        echo "OSMLCM_DATABASE_COMMONKEY=${OSM_DATABASE_COMMONKEY}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/lcm.env
+    fi
+
+    if ! grep -Fq "OSMLCM_VCA_HOST" $OSM_DOCKER_WORK_DIR/lcm.env; then
+        echo "OSMLCM_VCA_HOST=${OSM_VCA_HOST}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/lcm.env
+    else
+        $WORKDIR_SUDO sed -i "s|OSMLCM_VCA_HOST.*|OSMLCM_VCA_HOST=$OSM_VCA_HOST|g" $OSM_DOCKER_WORK_DIR/lcm.env
+    fi
 
-    MYSQL_ROOT_PASSWORD=`date +%s | sha256sum | base64 | head -c 32`
+    if ! grep -Fq "OSMLCM_VCA_SECRET" $OSM_DOCKER_WORK_DIR/lcm.env; then
+        echo "OSMLCM_VCA_SECRET=${OSM_VCA_SECRET}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/lcm.env
+    else
+        $WORKDIR_SUDO sed -i "s|OSMLCM_VCA_SECRET.*|OSMLCM_VCA_SECRET=$OSM_VCA_SECRET|g" $OSM_DOCKER_WORK_DIR/lcm.env
+    fi
+
+    # RO
+    MYSQL_ROOT_PASSWORD=$(generate_secret)
     if [ ! -f $OSM_DOCKER_WORK_DIR/ro-db.env ]; then
         echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/ro-db.env
     fi
@@ -755,27 +774,47 @@ function generate_docker_env_files() {
         echo "RO_DB_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/ro.env
     fi
 
-    MYSQL_ROOT_PASSWORD=`date +%s | sha256sum | base64 | head -c 32` && sleep 1
-    KEYSTONE_DB_PASSWORD=`date +%s | sha256sum | base64 | head -c 32` && sleep 1
-    #ADMIN_PASSWORD=`date +%s | sha256sum | base64 | head -c 32` && sleep 1
-    NBI_PASSWORD=`date +%s | sha256sum | base64 | head -c 32`
+    # Keystone
+    MYSQL_ROOT_PASSWORD=$(generate_secret)
+    KEYSTONE_DB_PASSWORD=$(generate_secret)
+    NBI_PASSWORD=$(generate_secret)
     if [ ! -f $OSM_DOCKER_WORK_DIR/keystone-db.env ]; then
         echo "MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/keystone-db.env
     fi
     if [ ! -f $OSM_DOCKER_WORK_DIR/keystone.env ]; then
         echo "ROOT_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/keystone.env
         echo "KEYSTONE_DB_PASSWORD=${KEYSTONE_DB_PASSWORD}" |$WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/keystone.env
-        #echo "ADMIN_PASSWORD=${ADMIN_PASSWORD}" |$WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/keystone.env
         echo "NBI_PASSWORD=${NBI_PASSWORD}" |$WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/keystone.env
     fi
 
+    # NBI
     if [ ! -f $OSM_DOCKER_WORK_DIR/nbi.env ]; then
         echo "OSMNBI_AUTHENTICATION_SERVICE_PASSWORD=${NBI_PASSWORD}" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/nbi.env
+        echo "OSMNBI_DATABASE_COMMONKEY=${OSM_DATABASE_COMMONKEY}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/nbi.env
     fi
 
-    echo "OS_NOTIFIER_URI=http://${DEFAULT_IP}:8662" |$WORKDIR_SUDO tee $OSM_DOCKER_WORK_DIR/mon.env
-    echo "OSMMON_VCA_HOST=${OSM_VCA_HOST}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
-    echo "OSMMON_VCA_SECRET=${OSM_VCA_SECRET}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
+    # MON
+    if [ ! -f $OSM_DOCKER_WORK_DIR/mon.env ]; then
+        echo "OSMMON_DATABASE_COMMONKEY=${OSM_DATABASE_COMMONKEY}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
+    fi
+
+    if ! grep -Fq "OS_NOTIFIER_URI" $OSM_DOCKER_WORK_DIR/mon.env; then
+        echo "OS_NOTIFIER_URI=http://${DEFAULT_IP}:8662" |$WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
+    else
+        $WORKDIR_SUDO sed -i "s|OS_NOTIFIER_URI.*|OS_NOTIFIER_URI=http://$DEFAULT_IP:8662|g" $OSM_DOCKER_WORK_DIR/mon.env
+    fi
+
+    if ! grep -Fq "OSMMON_VCA_HOST" $OSM_DOCKER_WORK_DIR/mon.env; then
+        echo "OSMMON_VCA_HOST=${OSM_VCA_HOST}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
+    else
+        $WORKDIR_SUDO sed -i "s|OSMMON_VCA_HOST.*|OSMMON_VCA_HOST=$OSM_VCA_HOST|g" $OSM_DOCKER_WORK_DIR/mon.env
+    fi
+
+    if ! grep -Fq "OSMMON_VCA_SECRET" $OSM_DOCKER_WORK_DIR/mon.env; then
+        echo "OSMMON_VCA_SECRET=${OSM_VCA_SECRET}" | $WORKDIR_SUDO tee -a $OSM_DOCKER_WORK_DIR/mon.env
+    else
+        $WORKDIR_SUDO sed -i "s|OSMMON_VCA_SECRET.*|OSMMON_VCA_SECRET=$OSM_VCA_SECRET|g" $OSM_DOCKER_WORK_DIR/mon.env
+    fi
 
     echo "Finished generation of docker env files"
 }
@@ -853,9 +892,10 @@ function deploy_lightweight() {
 
 function deploy_elk() {
     echo "Pulling docker images for ELK"
-    sg docker -c "docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.3" || FATAL "cannot get elasticsearch docker image"
-    sg docker -c "docker pull docker.elastic.co/logstash/logstash-oss:6.2.3" || FATAL "cannot get logstash docker image"
-    sg docker -c "docker pull docker.elastic.co/kibana/kibana-oss:6.2.3" || FATAL "cannot get kibana docker image"
+    sg docker -c "docker pull docker.elastic.co/elasticsearch/elasticsearch-oss:${ELASTIC_VERSION}" || FATAL "cannot get elasticsearch docker image"
+    sg docker -c "docker pull docker.elastic.co/beats/metricbeat:${ELASTIC_VERSION}" || FATAL "cannot get metricbeat docker image"
+    sg docker -c "docker pull docker.elastic.co/beats/filebeat:${ELASTIC_VERSION}" || FATAL "cannot get filebeat docker image"
+    sg docker -c "docker pull docker.elastic.co/kibana/kibana-oss:${ELASTIC_VERSION}" || FATAL "cannot get kibana docker image"
     echo "Finished pulling elk docker images"
     $WORKDIR_SUDO mkdir -p "$OSM_DOCKER_WORK_DIR/osm_elk"
     $WORKDIR_SUDO cp -b ${OSM_DEVOPS}/installers/docker/osm_elk/* $OSM_DOCKER_WORK_DIR/osm_elk
@@ -879,21 +919,21 @@ function deploy_elk() {
         echo "ELK is up and running. Trying to create index pattern..."
         #Create index pattern
         curl -f -XPOST -H "Content-Type: application/json" -H "kbn-xsrf: anything" \
-          "http://127.0.0.1:5601/api/saved_objects/index-pattern/logstash-*" \
-          -d"{\"attributes\":{\"title\":\"logstash-*\",\"timeFieldName\":\"@timestamp\"}}" 2>/dev/null
+          "http://127.0.0.1:5601/api/saved_objects/index-pattern/filebeat-*" \
+          -d"{\"attributes\":{\"title\":\"filebeat-*\",\"timeFieldName\":\"@timestamp\"}}" 2>/dev/null
         #Make it the default index
         curl -f -XPOST -H "Content-Type: application/json" -H "kbn-xsrf: anything" \
           "http://127.0.0.1:5601/api/kibana/settings/defaultIndex" \
-          -d"{\"value\":\"logstash-*\"}" 2>/dev/null
+          -d"{\"value\":\"filebeat-*\"}" 2>/dev/null
     else
         echo "Cannot connect to Kibana to create index pattern."
         echo "Once Kibana is running, you can use the following instructions to create index pattern:"
         echo 'curl -f -XPOST -H "Content-Type: application/json" -H "kbn-xsrf: anything" \
-          "http://127.0.0.1:5601/api/saved_objects/index-pattern/logstash-*" \
-          -d"{\"attributes\":{\"title\":\"logstash-*\",\"timeFieldName\":\"@timestamp\"}}"'
+          "http://127.0.0.1:5601/api/saved_objects/index-pattern/filebeat-*" \
+          -d"{\"attributes\":{\"title\":\"filebeat-*\",\"timeFieldName\":\"@timestamp\"}}"'
         echo 'curl -XPOST -H "Content-Type: application/json" -H "kbn-xsrf: anything" \
           "http://127.0.0.1:5601/api/kibana/settings/defaultIndex" \
-          -d"{\"value\":\"logstash-*\"}"'
+          -d"{\"value\":\"filebeat-*\"}"'
     fi
     echo "Finished deployment of ELK stack"
     return 0
@@ -955,16 +995,21 @@ function install_lightweight() {
         [ -z "$OSM_VCA_SECRET" ] && FATAL "Cannot obtain juju secret"
     fi
 
+    if [ -z "$OSM_DATABASE_COMMONKEY" ]; then
+        OSM_DATABASE_COMMONKEY=$(generate_secret)
+        [ -z "OSM_DATABASE_COMMONKEY" ] && FATAL "Cannot generate common db secret"
+    fi
+
     track juju
     [ -n "$INSTALL_NODOCKER" ] || install_docker_ce
     track docker_ce
     #install_docker_compose
+    [ -n "$INSTALL_NODOCKER" ] || init_docker_swarm
     [ -z "$DOCKER_NOBUILD" ] && generate_docker_images
     track docker_build
     generate_docker_env_files
     generate_config_log_folders
 
-    [ -n "$INSTALL_NODOCKER" ] || init_docker_swarm
     # remove old stack
     remove_stack $OSM_STACK_NAME
     create_docker_network
@@ -1098,6 +1143,8 @@ DOCKER_USER=osm
 KAFKA_TAG=2.11-1.0.2
 PROMETHEUS_TAG=v2.4.3
 KEYSTONEDB_TAG=10
+OSM_DATABASE_COMMONKEY=
+ELASTIC_VERSION=6.4.2
 
 while getopts ":hy-:b:r:k:u:R:l:p:D:o:m:H:S:s:w:t:" o; do
     case "${o}" in
index b8e24ad..2684af7 100755 (executable)
@@ -3,6 +3,7 @@
 WAIT_TIME=180  # LCM healthcheck needs 140 senconds
 SERVICES_WITH_HEALTH="nbi ro zookeeper lcm"
 NUM_SERVICES_WITH_HEALTH=$(echo $SERVICES_WITH_HEALTH | wc -w)
+WAIT_FINAL=30
 
 while getopts "w:s:n:c:" o; do
     case "${o}" in
@@ -26,6 +27,9 @@ time=0
 step=2
 while [ $time -le "$WAIT_TIME" ]; do
     if [ "$(docker ps | grep " ${STACK_NAME}_" | grep -i healthy | wc -l)" -ge "$NUM_SERVICES_WITH_HEALTH" ]; then
+        # all dockers are healthy now.
+        # final sleep is needed until more health checks are added to validate system is ready to handle requests
+        sleep $WAIT_FINAL
         exit 0
     fi
 
index 724daad..47ab0e1 100644 (file)
@@ -35,7 +35,7 @@ properties([
         booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_FAIL'),
         booleanParam(defaultValue: false, description: '', name: 'SAVE_CONTAINER_ON_PASS'),
         booleanParam(defaultValue: true, description: '', name: 'SAVE_ARTIFACTS_ON_SMOKE_SUCCESS'),
-        booleanParam(defaultValue: false, description: '', name: 'DO_STAGE_4'),
+        booleanParam(defaultValue: true, description: '', name: 'DO_STAGE_4'),
         booleanParam(defaultValue: true, description: '',  name: 'DO_BUILD'),
         booleanParam(defaultValue: true, description: '', name: 'DO_INSTALL'),
         booleanParam(defaultValue: true, description: '', name: 'DO_SMOKE'),
@@ -225,6 +225,11 @@ node("${params.NODE}") {
                         release = "-R ${params.RELEASE}"
                     }
              
+                    if ( params.REPOSITORY_BASE )
+                    {
+                        repo_base_url = "-u ${params.REPOSITORY_BASE}"
+                    }
+             
                     sh """
                         export PATH=$PATH:/snap/bin
                         installers/full_install_osm.sh -y -s ${container_name} --test --nolxd --nodocker --nojuju --nohostports --nohostclient \
index df43019..a5b6303 100644 (file)
@@ -38,6 +38,7 @@ VIM_EMU ?=
 
 TOPDIR=$(shell readlink -f .|sed -e 's/systest.*//')
 
+
 ifdef OS_AUTH_URL
     OPTION_OS_AUTH_URL=--os-url $(OS_AUTH_URL)
 endif
index 53f39ac..b84da44 100644 (file)
@@ -117,6 +117,12 @@ class TestClass(object):
 
             assert not osm.get_api().ns.delete(ns_name)
 
+            #wait for the ns to delete
+            try:
+                utils.wait_for_value( lambda: osm.get_api().ns.get(nsd_desc['name']), result=False, wait_time=60)
+            except:
+                pass
+
             assert not osm.get_api().nsd.delete(nsd_desc['name'])
 
         for file in vnfd_file_list:
diff --git a/tools/osm-report b/tools/osm-report
new file mode 100755 (executable)
index 0000000..4e00b9a
--- /dev/null
@@ -0,0 +1,158 @@
+#!/bin/bash
+
+# OSM devops/tools - Tool that generates a report for debugging
+#
+# Copyright 2018 Telefonica
+#
+# 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.
+
+DIRNAME=$(readlink -f ${BASH_SOURCE[0]})
+DIRNAME=$(dirname $DIRNAME)
+
+#Get versions
+echo "-------------------------------"
+echo "Versions"
+echo "-------------------------------"
+echo "DIRNAME: $DIRNAME"
+echo "docker version:"
+docker version
+echo "lxd version:"
+lxd --version
+echo "juju version:"
+juju --version
+echo "osm-devops deb package:"
+dpkg -l |grep osm-devops
+echo "osm-imdocs deb package:"
+dpkg -l |grep osm-imdocs
+echo "python-osmclient deb package:"
+dpkg -l |grep 
+echo "whereis osm:"
+whereis osm
+echo "which osmclient:"
+which osm
+#dockers deb packages
+echo "dockers deb packages"
+for i in kafka keystone keystone-db lcm light-ui mon mongo nbi pol prometheus ro ro-db zookeeper; do
+    echo "docker osm_$i"
+    docker exec $(docker ps -q -f name=osm_$i -l) dpkg -l |grep osm
+done
+#dockers source code
+echo "dockers deb packages"
+echo "docker osm_ro"
+docker exec $(docker ps -q -f name=osm_ro -l) git -C /root/RO rev-parse HEAD
+docker exec $(docker ps -q -f name=osm_ro -l) git -C /root/RO describe --tags --long --dirty
+echo "docker osm_lcm"
+docker exec $(docker ps -q -f name=osm_lcm -l) git -C /app rev-parse HEAD
+docker exec $(docker ps -q -f name=osm_lcm -l) git -C /app describe --tags --long --dirty
+echo "docker osm_nbi"
+docker exec $(docker ps -q -f name=osm_nbi -l) git -C /app/NBI rev-parse HEAD
+docker exec $(docker ps -q -f name=osm_nbi -l) git -C /app/NBI describe --tags --long --dirty
+echo "docker osm_light-ui"
+docker exec $(docker ps -q -f name=osm_light-ui -l) git -C /usr/share/osm-lightui rev-parse HEAD
+docker exec $(docker ps -q -f name=osm_light-ui -l) git -C /usr/share/osm-lightui describe --tags --long --dirty
+echo "docker osm_mon"
+docker exec $(docker ps -q -f name=osm_mon -l) git -C /mon rev-parse HEAD
+docker exec $(docker ps -q -f name=osm_mon -l) git -C /mon describe --tags --long --dirty
+echo "docker osm_pol"
+docker exec $(docker ps -q -f name=osm_pol -l) git -C /policy_module rev-parse HEAD
+docker exec $(docker ps -q -f name=osm_pol -l) git -C /policy_module describe --tags --long --dirty
+
+#Get configuration files
+echo "-------------------------------"
+echo "Configuration files"
+echo "-------------------------------"
+for i in $(find /etc/osm -type f -exec echo {} \;); do
+    [ -f "$i" ] || continue
+    echo "File $i:"
+    cat $i
+done
+
+#Get status of docker swarm
+echo "-------------------------------"
+echo "Docker swarm status"
+echo "-------------------------------"
+echo "Node ls:"
+docker node ls
+echo "Node inspect self:"
+docker node inspect self --pretty
+echo "Network inspect docker_gwbridge:"
+docker network inspect docker_gwbridge
+echo "Network inspect netOSM:"
+docker network inspect netOSM
+echo "Network inspect netosm:"
+docker network inspect netosm
+
+#Get status of dockers
+echo "-------------------------------"
+echo "Docker status"
+echo "-------------------------------"
+echo "-------------------------------"
+echo "Docker stack ls"
+echo "-------------------------------"
+docker stack ls
+echo "-------------------------------"
+echo "Docker service ls"
+echo "-------------------------------"
+docker service ls
+for i in $(docker stack ps |tail -n +2|awk '{print $1}'); do
+    echo "-------------------------------"
+    echo "Docker stack $i"
+    echo "-------------------------------"
+    docker stack ps $i
+done
+
+#Get log files
+echo
+echo "-------------------------------"
+echo "Log files"
+echo "-------------------------------"
+echo "To be added"
+
+#Get OSM general info
+echo "-------------------------------"
+echo "OSM info"
+echo "-------------------------------"
+for i in vim-list sdnc-list vnfd-list nsd-list ns-list vnf-list; do
+    echo "-------------------------------"
+    echo "OSM info: $i"
+    echo "-------------------------------"
+    osm $i
+done
+
+#Get OSM details
+echo "-------------------------------"
+echo "OSM details"
+echo "-------------------------------"
+for i in vim sdnc vnfd nsd ns; do
+    echo "-------------------------------"
+    echo "OSM details: $i"
+    echo "-------------------------------"
+    for j in $(osm $i-list|tail -n +4|awk '{print $4}'); do
+        echo "-------------------------------"
+        echo "OSM details: vim $j"
+        echo "-------------------------------"
+        osm $i-show $j
+    done
+done
+for i in vnf; do
+    echo "-------------------------------"
+    echo "OSM details: $i"
+    echo "-------------------------------"
+    for j in $(osm $i-list|tail -n +4|awk '{print $2}'); do
+        echo "-------------------------------"
+        echo "OSM details: vim $j"
+        echo "-------------------------------"
+        osm $i-show $j
+    done
+done
+