From cb64a5fed1b10daa301235a2ef956b4805da99d3 Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Tue, 11 Sep 2018 08:50:28 -0700 Subject: Complete Plugin Functional Tests 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 Issue-ID: MULTICLOUD-301 --- deployments/docker-compose.yml | 31 ++++++++++++++-- deployments/start.sh | 9 +++-- vagrant/tests/plugin.sh | 84 ++++++++++++++++++++++++++++++++---------- 3 files changed, 97 insertions(+), 27 deletions(-) diff --git a/deployments/docker-compose.yml b/deployments/docker-compose.yml index d1b78990..6c9c85ec 100644 --- a/deployments/docker-compose.yml +++ b/deployments/docker-compose.yml @@ -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 diff --git a/deployments/start.sh b/deployments/start.sh index 0a14fc35..19c5ff8c 100755 --- a/deployments/start.sh +++ b/deployments/start.sh @@ -11,22 +11,25 @@ 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 diff --git a/vagrant/tests/plugin.sh b/vagrant/tests/plugin.sh index 2c01c517..744b2207 100755 --- a/vagrant/tests/plugin.sh +++ b/vagrant/tests/plugin.sh @@ -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 -- cgit 1.2.3-korg