Complete Plugin Functional Tests 51/65951/1
authorVictor Morales <victor.morales@intel.com>
Tue, 11 Sep 2018 15:50:28 +0000 (08:50 -0700)
committerVictor Morales <victor.morales@intel.com>
Tue, 11 Sep 2018 15:50:28 +0000 (08:50 -0700)
It was fixed the issue to connect the plugin with the consul DB.
This was a main roadblock to complete the functional Tests for the
plugin.

Change-Id: I3032e82a8f6baf4739c7433a5ffa97dac23daac8
Signed-off-by: Victor Morales <victor.morales@intel.com>
Issue-ID: MULTICLOUD-301

deployments/docker-compose.yml
deployments/start.sh
vagrant/tests/plugin.sh

index d1b7899..6c9c85e 100644 (file)
@@ -14,6 +14,9 @@ version: '2'
 services:
   multicloud-k8s:
     image: nexus3.onap.org:10003/onap/multicloud/k8plugin
+    networks:
+      multicloud_net:
+        ipv4_address: 172.19.0.3
     build:
       context: ./
       args:
@@ -26,18 +29,38 @@ services:
       - CSAR_DIR=/opt/csar
       - KUBE_CONFIG_DIR=/opt/kubeconfig
       - DATABASE_TYPE=consul
-      - DATABASE_IP=consul-svr
+      - DATABASE_IP=172.19.0.2
       - PLUGINS_DIR=/opt/multicloud/k8s
+      - HTTP_PROXY=$HTTP_PROXY
+      - HTTPS_PROXY=$HTTPS_PROXY
+      - NO_PROXY=$NO_PROXY,172.19.0.2
     depends_on:
-      - "consul"
+      - consul
+    links:
+      - consul
     volumes:
       - /opt/csar:/opt/csar
       - /opt/kubeconfig:/opt/kubeconfig
   consul:
     image: consul
-    hostname: consul-svr
+    networks:
+      multicloud_net:
+        ipv4_address: 172.19.0.2
     environment:
-      - CONSUL_LOCAL_CONFIG={"datacenter":"us_west","server":true}
+      CONSUL_CLIENT_INTERFACE: 'eth0'
+      CONSUL_BIND_INTERFACE: 'eth0'
+      HTTP_PROXY: $HTTP_PROXY
+      HTTPS_PROXY: $HTTPS_PROXY
+      NO_PROXY: $NO_PROXY
     command: ["agent", "-server", "-bootstrap-expect=1"]
     volumes:
       - /opt/consul/config:/consul/config
+
+networks:
+  multicloud_net:
+    driver: bridge
+    ipam:
+      driver: default
+      config:
+      -
+        subnet: 172.19.0.0/27
index 0a14fc3..19c5ff8 100755 (executable)
 set -o nounset
 set -o pipefail
 
+source /etc/environment
+
 k8s_path="$(git rev-parse --show-toplevel)"
 export GOPATH=$k8s_path
 
 export CSAR_DIR=/opt/csar
 export KUBE_CONFIG_DIR=/opt/kubeconfig
 export DATABASE_TYPE=consul
-export DATABASE_IP=consul-svr
 export PLUGINS_DIR=$k8s_path/src/k8splugin/plugins
 
 echo "Starting consul services"
 docker-compose kill
 docker-compose up -d consul
-echo "Compiling source code"
+export DATABASE_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' deployments_consul_1)
+export no_proxy=$no_proxy,$DATABASE_IP
+export NO_PROXY=$NO_PROXY,$DATABASE_IP
 
+echo "Compiling source code"
 pushd $k8s_path/src/k8splugin/
-make clean
 make plugins
 go run cmd/main.go
 popd
index 2c01c51..744b220 100755 (executable)
@@ -12,12 +12,11 @@ set -o errexit
 set -o nounset
 set -o pipefail
 
-base_url="http://localhost:8081/v1/vnf_instances/"
-cloud_region_id="krd"
-namespace="default"
-csar_id="94e414f6-9ca4-11e8-bb6a-52540067263b"
-
-if [[ -z $(docker images -q generic_sim) ]]; then
+# _build_generic_sim() - Creates a generic simulator image in case that doesn't exist
+function _build_generic_sim {
+    if [[ -n $(docker images -q generic_sim) ]]; then
+        return
+    fi
     BUILD_ARGS="--no-cache"
     if [ $HTTP_PROXY ]; then
         BUILD_ARGS+=" --build-arg HTTP_PROXY=${HTTP_PROXY}"
@@ -25,30 +24,37 @@ if [[ -z $(docker images -q generic_sim) ]]; then
     if [ $HTTPS_PROXY ]; then
         BUILD_ARGS+=" --build-arg HTTPS_PROXY=${HTTPS_PROXY}"
     fi
+
     pushd generic_simulator
+    echo "Building generic simulator image..."
     docker build ${BUILD_ARGS} -t generic_sim:latest .
     popd
-fi
-
-if [[ $(docker ps -q --all --filter "name=aai") ]]; then
-    docker rm aai -f
-fi
-docker run --name aai -v $(mktemp):/tmp/generic_sim/ -v $(pwd)/generic_simulator/aai/:/etc/generic_sim/ -p 8443:8080 -d generic_sim
+}
 
-vnf_id_list=$(curl -s "${base_url}${cloud_region_id}/${namespace}" | jq -r '.vnf_id_list')
+# start_aai_service() - Starts a simulator for AAI service
+function start_aai_service {
+    _build_generic_sim
+    if [[ $(docker ps -q --all --filter "name=aai") ]]; then
+        docker rm aai -f
+    fi
+    echo "Start AAI simulator.."
+    docker run --name aai -v $(mktemp):/tmp/generic_sim/ -v $(pwd)/generic_simulator/aai/:/etc/generic_sim/ -p 8443:8080 -d generic_sim
+}
 
-mkdir -p ${CSAR_DIR}/${csar_id}
-cat << SEQ > ${CSAR_DIR}/${csar_id}/metadata.yaml
+# populate_csar_dir()- Creates content used for Functional tests
+function populate_csar_dir {
+    mkdir -p ${CSAR_DIR}/${csar_id}
+    cat << SEQ > ${CSAR_DIR}/${csar_id}/metadata.yaml
 deployment:
   - deployment.yaml
 service:
   - service.yaml
 SEQ
-cat << DEPLOYMENT > ${CSAR_DIR}/${csar_id}/deployment.yaml
+    cat << DEPLOYMENT > ${CSAR_DIR}/${csar_id}/deployment.yaml
 apiVersion: apps/v1
 kind: Deployment
 metadata:
-  name: multus-deployment
+  name: $deployment_name
   labels:
     app: multus
 spec:
@@ -73,11 +79,11 @@ spec:
         stdin: true
         tty: true
 DEPLOYMENT
-cat << SERVICE >  ${CSAR_DIR}/${csar_id}/service.yaml
+    cat << SERVICE >  ${CSAR_DIR}/${csar_id}/service.yaml
 apiVersion: v1
 kind: Service
 metadata:
-  name: sise-svc
+  name: $service_name
 spec:
   ports:
   - port: 80
@@ -85,7 +91,20 @@ spec:
   selector:
     app: sise
 SERVICE
+}
+
+# Configuration
+base_url="http://localhost:8081/v1/vnf_instances/"
+cloud_region_id="krd"
+namespace="default"
+csar_id="94e414f6-9ca4-11e8-bb6a-52540067263b"
+deployment_name="plugin_functional_test_deployment"
+service_name="plugin_functional_test_service"
+
+#start_aai_service
+populate_csar_dir
 
+#Functional Tests execution
 payload_raw="
 {
     \"cloud_region_id\": \"$cloud_region_id\",
@@ -94,4 +113,29 @@ payload_raw="
 }
 "
 payload=$(echo $payload_raw | tr '\n' ' ')
-curl -v -d "$payload" "${base_url}"
+echo "Creating VNF Instance"
+curl -d "$payload" "${base_url}"
+
+vnf_id=$(curl -s -X GET "${base_url}${cloud_region_id}/${namespace}" | jq -r '.vnf_id_list[0]')
+if [[ -z "$vnf_id" ]]; then
+    echo "VNF Instance not created"
+    exit 1
+fi
+echo "VNF Instance created succesfully with id: $vnf_id"
+#kubectl get deployment $deployment_name
+#kubectl get service $service_name
+
+vnf_details=$(curl -s -X GET "${base_url}${cloud_region_id}/${namespace}/${vnf_id}")
+if [[ -z "$vnf_details" ]]; then
+    echo "Cannot retrieved VNF Instance details"
+    exit 1
+fi
+echo "VNF details $vnf_details"
+
+echo "Deleting $vnf_id VNF Instance"
+curl -X DELETE "${base_url}${cloud_region_id}/${namespace}/${vnf_id}"
+if [[ -n $(curl -s -X GET "${base_url}${cloud_region_id}/${namespace}/${vnf_id}") ]]; then
+    echo "VNF Instance not deleted"
+    exit 1
+fi
+docker logs deployments_multicloud-k8s_1