Merge changes I4396d3ef,I1f9ce570

* changes:
  Update ping/pong example for R3
  Fix error raising interface
diff --git a/descriptor-packages/mk/pkg.mk b/descriptor-packages/mk/pkg.mk
index 0264602..6a2b553 100644
--- a/descriptor-packages/mk/pkg.mk
+++ b/descriptor-packages/mk/pkg.mk
@@ -24,7 +24,7 @@
 CHARM_SRC_DIR    := $(CHARM_DIR)/layers
 CHARM_DOCKER_TAG := charm-tools
 CHARM_BUILD_DIR  := $(CHARM_DIR)/builds
-DOCKER_BUILD     ?= $(shell which docker)
+DOCKER_BUILD     ?=
 
 Q=@
 
diff --git a/installers/install_osm.sh b/installers/install_osm.sh
index d51cf85..6e114be 100755
--- a/installers/install_osm.sh
+++ b/installers/install_osm.sh
@@ -133,30 +133,28 @@
     echo
 }
 
-function so_is_up(){
+function so_is_up() {
     SO_IP=$1
     time=0
     step=5
     timelength=300
     while [ $time -le $timelength ]
     do
-        curl -k https://$SO_IP:8008/api/operational/vcs/info \
-              --header 'accept: application/vnd.yang.data+json' \
-              --header 'authorization: Basic YWRtaW46YWRtaW4=' \
-              --header 'cache-control: no-cache' \
-              --header 'content-type: application/vnd.yang.data+json' &> /dev/null
-        RET=$?
-        if [ "$RET" == 0 ]; then
-            break
+        if [[ `curl -k -X GET   https://$SO_IP:8008/api/operational/vcs/info \
+                -H 'accept: application/vnd.yang.data+json' \
+                -H 'authorization: Basic YWRtaW46YWRtaW4=' \
+                -H 'cache-control: no-cache' 2> /dev/null | jq  '.[].components.component_info[] | select(.component_name=="RW.Restconf")' 2>/dev/null | grep "RUNNING" | wc -l` -eq 1 ]]
+        then
+            echo "RW.Restconf running....SO is up"
+            return 0
         fi
+
         sleep $step
         echo -n "."
         time=$((time+step))
     done
-    if [ "$RET" != 0 ]; then
-        FATAL "OSM Failed to startup"
-    fi
-    echo
+
+    FATAL "OSM Failed to startup"
 }
 
 #Configure VCA, SO and RO with the initial configuration:
@@ -374,8 +372,12 @@
     trap 'rm -rf "$TEMPDIR"' EXIT
 fi
 
-echo -e "Checking required packages: git"
-dpkg -l git &>/dev/null || ! echo -e "     git not installed.\nInstalling git requires root privileges" || sudo apt-get install -y git
+need_packages="git jq"
+for package in $need_packages; do
+    echo -e "Checking required packages: $package"
+    dpkg -l $package &>/dev/null || ! echo -e "     $package not installed.\nInstalling $package requires root privileges" || sudo apt-get install -y $package
+done
+
 if [ -z "$TEST_INSTALLER" ]; then
     echo -e "\nCloning devops repo temporarily"
     git clone https://osm.etsi.org/gerrit/osm/devops.git $TEMPDIR
diff --git a/juju-charms/Makefile b/juju-charms/Makefile
index 76d21ac..d6aa754 100644
--- a/juju-charms/Makefile
+++ b/juju-charms/Makefile
@@ -24,12 +24,19 @@
 CHARM_SRC_DIRS := $(addprefix $(CHARM_SRC_DIR)/, $(CHARMS))
 CHARM_BUILD_DIRS := $(addprefix $(CHARM_BUILD_DIR)/, $(CHARMS))
 CHARM_DOCKER_TAG := charm-tools
+DOCKER_BUILD     ?=
 
 all: $(CHARM_BUILD_DIRS)
 
 clean:
 	-@ $(RM) -rf $(CHARM_BUILD_DIR)
 
+
+ifdef DOCKER_BUILD
 $(CHARM_BUILD_DIR)/%: $(CHARM_SRC_DIR)/%
 	docker build -t $(CHARM_DOCKER_TAG) .
 	docker run -u $$(id -u):$$(id -g) -v$$(pwd):$$(pwd) -w$$(pwd) $(CHARM_DOCKER_TAG) charm-build -o $(BUILD_DIR) $<
+else
+$(CHARM_BUILD_DIR)/%: $(CHARM_SRC_DIR)/%
+	charm-build -o $(BUILD_DIR) $<
+endif
diff --git a/systest/Makefile b/systest/Makefile
index ce5c68a..90c56d5 100644
--- a/systest/Makefile
+++ b/systest/Makefile
@@ -140,12 +140,15 @@
 $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/%.tar.gz:
 	$(MAKE) -C $(DESCRIPTOR_DIR)/vnfd/pong_vnf
 
-$(DESCRIPTOR_DIR)/vnfd/ping_pong_ns/build/%.tar.gz:
+$(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/%.tar.gz:
 	$(MAKE) -C $(DESCRIPTOR_DIR)/nsd/ping_pong_ns
 
-ping_pong: check_OSM_HOSTNAME check_openstack_env
+ping_pong: check_OSM_HOSTNAME check_openstack_env \
+    $(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz \
+    $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz \
+    $(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz
 	$(Q)$(MAKE) \
-        TEST_VNFD_DESCRIPTORS="$(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz $(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz" \
+        TEST_VNFD_DESCRIPTORS="$(DESCRIPTOR_DIR)/vnfd/ping_vnf/build/ping_vnf.tar.gz,$(DESCRIPTOR_DIR)/vnfd/pong_vnf/build/pong_vnf.tar.gz" \
         TEST_NSD_DESCRIPTORS=$(DESCRIPTOR_DIR)/nsd/ping_pong_ns/build/ping_pong_ns.tar.gz \
         JUNITXML=pytest-$@.xml \
         PYTEST_OPTIONS="$(PYTEST_OPTIONS) -m vnf" _run_test
diff --git a/systest/testcases/vnfs/test_vnfs.py b/systest/testcases/vnfs/test_vnfs.py
index d872715..d32fc71 100644
--- a/systest/testcases/vnfs/test_vnfs.py
+++ b/systest/testcases/vnfs/test_vnfs.py
@@ -89,7 +89,7 @@
             assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='vnf-init-phase')
 
             # make sure ns is running
-            assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='running',wait_time=120)
+            assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='running',wait_time=240)
 
             if ns_scale:
                 # for each descriptor, scale it
@@ -98,10 +98,12 @@
                     assert not osm.get_api().ns.scale(ns_name, scale['name'], 1)
 
                     # ensure ns is scaling-out
-                    assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='scaling-out',wait_time=120)
+                    assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='scaling-out',wait_time=240)
 
                     # wait for ns to be in running-state
-                    assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='running',wait_time=120)
+                    assert utils.wait_for_value(lambda: osm.get_api().ns.get_field(ns_name,'operational-status'),result='running',wait_time=240)
+
+            time.sleep(10)
 
             assert not osm.get_api().ns.delete(ns_name)