reorg to use common/tosca/ directory for shared TOSCA files, update of opencloud service-profile
unified config into common/Makedefs, included common/Makefile
strip last path component to get directory
clarify container target names, dependency fixes on service dir
fix test-standalone
converted other configs, added .DEFAULT_GOAL's
immediately set paths, run docker under sudo
port and cleanup fixes
fixes after testing cord-pod
follow log files, fix typo metronetwork/xos.yaml

Change-Id: I3e28d10ffd37a22c4a2927288924db453ed6ec44
diff --git a/cord-pod/Makefile b/cord-pod/Makefile
index 55ab1a4..d0bf779 100644
--- a/cord-pod/Makefile
+++ b/cord-pod/Makefile
@@ -1,57 +1,23 @@
-include ../common/Makedefs
+# cord-pod/Makefile
 
-CONFIG_DIR:=$(shell pwd)
-DOCKER_COMPOSE_YML=./onboarding-docker-compose/docker-compose.yml
-BOOTSTRAP_YML=./docker-compose-bootstrap.yml
-DOCKER_PROJECT=cordpod
-BOOTSTRAP_PROJECT=cordpodbs
-XOS_BOOTSTRAP_PORT=81
-XOS_UI_PORT=80
-ADMIN_USERNAME=padmin@vicci.org
-ADMIN_PASSWORD=letmein
-RUN_TOSCA_BOOTSTRAP=python ../common/run_tosca.py $(XOS_BOOTSTRAP_PORT) $(ADMIN_USERNAME) $(ADMIN_PASSWORD)
-RUN_TOSCA=python ../common/run_tosca.py $(XOS_UI_PORT) $(ADMIN_USERNAME) $(ADMIN_PASSWORD)
+CONFIG_DIR         := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
+COMMON_DIR         := $(abspath ../common )
 
-.PHONY: xos
-xos: prereqs dirs download_xos download_services bootstrap onboarding podconfig
+.DEFAULT_GOAL      := xos
 
-prereqs:
-	sudo make -f ../common/Makefile.prereqs
+DOCKER_PROJECT     ?= cordpod
+BOOTSTRAP_PROJECT  ?= cordpodbs
 
-dirs:
-	# if this directory doesn't exist, then docker-compose will create it with root permission
-	mkdir -p key_import
-	mkdir -p onboarding-docker-compose
+# Include common functions
+include $(COMMON_DIR)/Makefile
 
-bootstrap:
-	@echo "[BOOTSTRAP]"
-	@echo "XOS Image Build Date: `docker inspect -f '{{ .Created }}' xosproject/xos`"
-	@echo "XOS Image Commit Hash: `docker inspect -f '{{ .Config.Labels.XOS_GIT_COMMIT_HASH }}' xosproject/xos`"
-	@echo "XOS Image Commit Date: `docker inspect -f '{{ .Config.Labels.XOS_GIT_COMMIT_DATE }}' xosproject/xos`"
-	sudo rm -f onboarding-docker-compose/docker-compose.yml
-	sudo CONFIG_DIR=$(CONFIG_DIR) docker-compose -p $(BOOTSTRAP_PROJECT) -f $(BOOTSTRAP_YML) up -d
-	bash ../common/wait_for_xos_port.sh 81
-	sudo docker-compose -p $(BOOTSTRAP_PROJECT) -f $(BOOTSTRAP_YML) run xos_bootstrap_ui python /opt/xos/tosca/run.py none - < ../common/fixtures.yaml
-	sudo docker-compose -p $(BOOTSTRAP_PROJECT) -f $(BOOTSTRAP_YML) run xos_bootstrap_ui python /opt/xos/tosca/run.py none - < ../common/mydeployment.yaml
-	$(RUN_TOSCA_BOOTSTRAP) xos.yaml
+xos: prereqs config_dirs xos_download cord_services bootstrap onboarding podconfig
 
-download_xos:
-	make -f ../common/Makefile.services xos_core
-
-download_services:
-	make -f ../common/Makefile.services
-
-update_services:
-	make -f ../common/Makefile.services update
-
-update_xos:
-	make -f ../common/Makefile.services update_xos
-
-onboarding:
+onboarding: synchronizers.yaml id_rsa id_rsa.pub
 	@echo "[ONBOARDING]"
 	# on-board any services here
-	bash ../common/wait_for_onboarding_ready.sh 81 xos
-	$(RUN_TOSCA_BOOTSTRAP) ../common/disable-onboarding.yaml
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) xos
+	$(RUN_TOSCA_BOOTSTRAP) $(COMMON_DIR)/tosca/disable-onboarding.yaml
 	sudo cp id_rsa key_import/vsg_rsa
 	sudo cp id_rsa.pub key_import/vsg_rsa.pub
 	sudo cp id_rsa key_import/volt_rsa
@@ -64,23 +30,23 @@
 	$(RUN_TOSCA_BOOTSTRAP) $(SERVICE_DIR)/vsg/xos/vsg-onboard.yaml
 	$(RUN_TOSCA_BOOTSTRAP) $(SERVICE_DIR)/vtn/xos/vtn-onboard.yaml
 	$(RUN_TOSCA_BOOTSTRAP) $(SERVICE_DIR)/onos-service/xos/onos-onboard.yaml
-	$(RUN_TOSCA_BOOTSTRAP) $(SERVICE_DIR)/fabric/xos/\fabric-onboard.yaml
+	$(RUN_TOSCA_BOOTSTRAP) $(SERVICE_DIR)/fabric/xos/fabric-onboard.yaml
 	$(RUN_TOSCA_BOOTSTRAP) $(SERVICE_DIR)/vtr/xos/vtr-onboard.yaml
 	$(RUN_TOSCA_BOOTSTRAP) synchronizers.yaml
-	$(RUN_TOSCA_BOOTSTRAP) ../common/enable-onboarding.yaml
-	bash ../common/wait_for_onboarding_ready.sh 81 services/vrouter
-	bash ../common/wait_for_onboarding_ready.sh 81 services/volt
-	bash ../common/wait_for_onboarding_ready.sh 81 services/vsg
-	bash ../common/wait_for_onboarding_ready.sh 81 services/vtn
-	bash ../common/wait_for_onboarding_ready.sh 81 services/onos
-	bash ../common/wait_for_onboarding_ready.sh 81 services/fabric
-	bash ../common/wait_for_onboarding_ready.sh 81 services/vtr
-	bash ../common/wait_for_onboarding_ready.sh 81 xos
-	bash ../common/wait_for_xos_port.sh 80
+	$(RUN_TOSCA_BOOTSTRAP) $(COMMON_DIR)/tosca/enable-onboarding.yaml
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) services/vrouter
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) services/volt
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) services/vsg
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) services/vtn
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) services/onos
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) services/fabric
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) services/vtr
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) xos
+	bash $(COMMON_DIR)/wait_for_xos_port.sh $(XOS_UI_PORT)
 
 podconfig: nodes.yaml images.yaml
 	@echo "[PODCONFIG]"
-	$(RUN_TOSCA) setup.yaml
+	$(RUN_TOSCA) $(COMMON_DIR)/tosca/setup.yaml
 	$(RUN_TOSCA) nodes.yaml
 	$(RUN_TOSCA) images.yaml
 
@@ -99,113 +65,54 @@
 	$(RUN_TOSCA) fabric.yaml
 
 cord: vsg_custom_images
-	$(RUN_TOSCA) mgmt-net.yaml
+	$(RUN_TOSCA) $(COMMON_DIR)/tosca/mgmt-net.yaml
 	$(RUN_TOSCA) cord-services.yaml
-	$(RUN_TOSCA) cord-volt-devices.yaml
+	$(RUN_TOSCA) $(COMMON_DIR)/tosca/cord-volt-devices.yaml
+
+vsg_custom_images: images/vsg-1.1.img
+	bash -c "source ./admin-openrc.sh; glance image-show vsg-1.1 || glance image-create --name vsg-1.1 --disk-format qcow2 --file ./images/vsg-1.1.img --container-format bare"
 
 cord-subscriber:
 	$(RUN_TOSCA) cord-test-subscriber.yaml
 
-clean-nodes:
-	rm -f nodes.yaml
-
-update-nodes: nodes.yaml
+update_nodes: nodes.yaml
 	$(RUN_TOSCA) nodes.yaml
 
-new-nodes: clean-nodes update-nodes vtn
-
-rebuild:
-	bash ../common/rebuild.sh $(XOS_BOOTSTRAP_PORT)
-	bash ../common/wait_for_onboarding_ready.sh 81 xos
+new-nodes: clean_nodes update_nodes vtn
 
 exampleservice: onboard-exampleservice
 	$(RUN_TOSCA) pod-exampleservice.yaml
 
-onboard-exampleservice:
+onboard-exampleservice: $(SERVICE_DIR)/exampleservice
 	sudo cp id_rsa key_import/exampleservice_rsa
 	sudo cp id_rsa.pub key_import/exampleservice_rsa.pub
-	$(RUN_TOSCA_BOOTSTRAP) ../common/disable-onboarding.yaml
+	$(RUN_TOSCA_BOOTSTRAP) $(COMMON_DIR)/tosca/disable-onboarding.yaml
 	$(RUN_TOSCA_BOOTSTRAP) $(SERVICE_DIR)/exampleservice/xos/exampleservice-onboard.yaml
 	$(RUN_TOSCA_BOOTSTRAP) exampleservice-synchronizer.yaml
-	$(RUN_TOSCA_BOOTSTRAP) ../common/enable-onboarding.yaml
-	bash ../common/wait_for_onboarding_ready.sh 81 services/exampleservice
-	bash ../common/wait_for_onboarding_ready.sh 81 xos
-	bash ../common/wait_for_xos_port.sh 80
+	$(RUN_TOSCA_BOOTSTRAP) $(COMMON_DIR)/tosca/enable-onboarding.yaml
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) services/exampleservice
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) xos
+	bash $(COMMON_DIR)/wait_for_xos_port.sh $(XOS_UI_PORT)
 
 cord-monitoringservice: ceilometer_custom_images onboard-monitoringservice
 	$(RUN_TOSCA) monitoringservice.yaml
 	$(RUN_TOSCA) monitoringtenant.yaml
 
-onboard-monitoringservice: download-monitoringservice
+onboard-monitoringservice: $(SERVICE_DIR)/monitoring
 	sudo cp id_rsa key_import/monitoringservice_rsa
 	sudo cp id_rsa.pub key_import/monitoringservice_rsa.pub
 	$(RUN_TOSCA_BOOTSTRAP) $(SERVICE_DIR)/monitoring/xos/monitoring-onboard.yaml
 	$(RUN_TOSCA_BOOTSTRAP) monitoring_synchronizer.yaml
-	bash ../common/wait_for_onboarding_ready.sh 81 services/monitoring
-	bash ../common/wait_for_onboarding_ready.sh 81 xos
-	bash ../common/wait_for_xos_port.sh 80
-
-download-monitoringservice:
-	make -f ../common/Makefile.services monitoring_services
-
-nodes.yaml:
-	export SETUPDIR=.; bash ../common/make-nodes-yaml.sh
-
-images.yaml:
-	export SETUPDIR=.; bash ../common/make-images-yaml.sh
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) services/monitoring
+	bash $(COMMON_DIR)/wait_for_onboarding_ready.sh $(XOS_BOOTSTRAP_PORT) xos
+	bash $(COMMON_DIR)/wait_for_xos_port.sh $(XOS_UI_PORT)
 
 vtn-external.yaml:
-	export SETUPDIR=.; bash ./make-vtn-external-yaml.sh
+	export SETUPDIR=$(CONFIG_DIR); bash ./make-vtn-external-yaml.sh
 
 fabric.yaml:
-	export SETUPDIR=.; bash ./make-fabric-yaml.sh
+	export SETUPDIR=$(CONFIG_DIR); bash ./make-fabric-yaml.sh
 
 virtualbng_json:
-	export SETUPDIR=.; bash ./make-virtualbng-json.sh
-
-vtn_network_cfg_json:
-	export SETUPDIR=.; bash ./make-vtn-networkconfig-json.sh
-
-stop:
-	test ! -s $(DOCKER_COMPOSE_YML) || sudo docker-compose -p $(DOCKER_PROJECT) -f $(DOCKER_COMPOSE_YML) stop
-	sudo docker-compose -p $(BOOTSTRAP_PROJECT) -f $(BOOTSTRAP_YML) stop
-
-rm: stop
-	test ! -s $(DOCKER_COMPOSE_YML) || sudo docker-compose -p $(DOCKER_PROJECT) -f $(DOCKER_COMPOSE_YML) rm -f
-	sudo docker-compose -p $(BOOTSTRAP_PROJECT) -f $(BOOTSTRAP_YML) rm -f
-	[ -n "$(shell docker images -f \"dangling=true\" -q)" ] && docker rmi $(shell docker images -f "dangling=true" -q) || true
-
-showlogs:
-	sudo docker-compose -p $(DOCKER_PROJECT) -f $(DOCKER_COMPOSE_YML) logs
-
-showlogs_bootstrap:
-	sudo docker-compose -p $(BOOTSTRAP_PROJECT) -f $(BOOTSTRAP_YML) logs
-
-cleanup: stop rm
-	./cleanup.sh
-	bash -c "source ./admin-openrc.sh; nova list --all-tenants; neutron net-list"
-
-ceilometer_custom_images: images/ceilometer-service-trusty-server-multi-nic.img images/ceilometer-trusty-server-multi-nic.img
-	#TODO: Add logic for service VM custom image (ceilometer-service-trusty-server-multi-nic)
-	bash -c "source ./admin-openrc.sh; glance image-show ceilometer-trusty-server-multi-nic || glance image-create --name ceilometer-trusty-server-multi-nic --disk-format qcow2 --file ./images/ceilometer-trusty-server-multi-nic.compressed.qcow2 --container-format bare"
-
-vsg_custom_images: images/vsg-1.1.img
-	bash -c "source ./admin-openrc.sh; glance image-show vsg-1.1 || glance image-create --name vsg-1.1 --disk-format qcow2 --file ./images/vsg-1.1.img --container-format bare"
-
-images/ceilometer-trusty-server-multi-nic.img: images
-	bash -c "source ./admin-openrc.sh; glance image-show ceilometer-trusty-server-multi-nic || wget http://www.vicci.org/cord/ceilometer-trusty-server-multi-nic.compressed.qcow2 -P ./images"
-
-images/ceilometer-service-trusty-server-multi-nic.img: images
-	#TODO: Add logic for service VM custom image (ceilometer-service-trusty-server-multi-nic) once image is uploaded into vicci portal
-	#bash -c "source ../setup/admin-openrc.sh; glance image-show ceilometer-service-trusty-server-multi-nic || wget http://www.vicci.org/cord/ceilometer-service-trusty-server-multi-nic.compressed.qcow2 -P ./images"
-
-images/vsg-1.1.img: images
-	[ -s images/vsg-1.1.img ] || wget http://www.vicci.org/cord/vsg-1.1.img -P ./images
-
-images:
-	mkdir -p ./images
-
-.PHONY: local_containers
-local_containers: prereqs download_xos
-	make -f ../common/Makefile.containers update_certs xos_base xos_devel synchronizer onboarding_synchronizer
+	export SETUPDIR=$(CONFIG_DIR); bash ./make-virtualbng-json.sh
 
diff --git a/cord-pod/cord-volt-devices.yaml b/cord-pod/cord-volt-devices.yaml
deleted file mode 100644
index 8b41623..0000000
--- a/cord-pod/cord-volt-devices.yaml
+++ /dev/null
@@ -1,47 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Just enough Tosca to get the vSG slice running on the CORD POD
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    service#volt:
-      type: tosca.nodes.VOLTService
-      properties:
-          no-create: True
-          no-delete: True
-          no-update: True
-
-    voltdev-1:
-      type: tosca.nodes.VOLTDevice
-      properties:
-            driver: pmc-olt
-            openflow_id: of:1000000000000001
-            access_devices: >
-              2 222,
-              3 223,
-              4 224
-      requirements:
-          - volt_service:
-              node: service#volt
-              relationship: tosca.relationships.MemberOfService
-          - access_agent:
-              node: agent-1
-              relationship: tosca.relationships.UsesAgent
-
-    agent-1:
-      type: tosca.nodes.AccessAgent
-      properties:
-          mac: AA:BB:CC:DD:EE:FF
-          port_mappings: >
-            of:0000000000000002/2 DE:AD:BE:EF:BA:11,
-            of:0000000000000002/3 BE:EF:DE:AD:BE:EF
-      requirements:
-          - volt_service:
-              node: service#volt
-              relationship: tosca.relationships.MemberOfService
-
-
-
diff --git a/cord-pod/mgmt-net.yaml b/cord-pod/mgmt-net.yaml
deleted file mode 100644
index b45f0d5..0000000
--- a/cord-pod/mgmt-net.yaml
+++ /dev/null
@@ -1,64 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Set up management network for CORD POD
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-
-    management_template:
-      type: tosca.nodes.NetworkTemplate
-      properties:
-          visibility: private
-          translation: none
-          vtn_kind: MANAGEMENT_LOCAL
-
-    management:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-          cidr: 172.27.0.0/24
-      requirements:
-          - network_template:
-              node: management_template
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_management
-              relationship: tosca.relationships.MemberOfSlice
-
-    management_hosts_template:
-      type: tosca.nodes.NetworkTemplate
-      properties:
-          visibility: private
-          translation: none
-          vtn_kind: MANAGEMENT_HOST
-
-#    management_hosts:
-#      type: tosca.nodes.network.Network
-#      properties:
-#          ip_version: 4
-#          cidr: 10.1.0.0/24
-#          start_ip: 10.1.0.128
-#          end_ip: 10.1.0.254
-#      requirements:
-#          - network_template:
-#              node: management_hosts_template
-#              relationship: tosca.relationships.UsesNetworkTemplate
-#          - owner:
-#              node: mysite_management
-#              relationship: tosca.relationships.MemberOfSlice
-
-    mysite:
-      type: tosca.nodes.Site
-
-    mysite_management:
-      description: This slice exists solely to own the management network
-      type: tosca.nodes.Slice
-      properties:
-          network: noauto
-      requirements:
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-
diff --git a/cord-pod/setup.yaml b/cord-pod/setup.yaml
deleted file mode 100644
index 20b1b12..0000000
--- a/cord-pod/setup.yaml
+++ /dev/null
@@ -1,60 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Adds OpenCloud Sites, Deployments, and Controllers.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-
-    MyDeployment:
-      type: tosca.nodes.Deployment
-      properties:
-          flavors: m1.large, m1.medium, m1.small
-
-    MyOpenStack:
-      type: tosca.nodes.Controller
-      requirements:
-          - deployment:
-              node: MyDeployment
-              relationship: tosca.relationships.ControllerDeployment
-      properties:
-          backend_type: OpenStack
-          version: Kilo
-          auth_url: { get_script_env: [ SELF, adminrc, OS_AUTH_URL, LOCAL_FILE] }
-          admin_user: { get_script_env: [ SELF, adminrc, OS_USERNAME, LOCAL_FILE] }
-          admin_password: { get_script_env: [ SELF, adminrc, OS_PASSWORD, LOCAL_FILE] }
-          admin_tenant: { get_script_env: [ SELF, adminrc, OS_TENANT_NAME, LOCAL_FILE] }
-          domain: Default
-      artifacts:
-          adminrc: /root/setup/admin-openrc.sh
-
-    mysite:
-      type: tosca.nodes.Site
-      properties:
-          display_name: MySite
-          site_url: http://xosproject.org/
-      requirements:
-          - deployment:
-               node: MyDeployment
-               relationship: tosca.relationships.MemberOfDeployment
-          - controller:
-               node: MyOpenStack
-               relationship: tosca.relationships.UsesController
-
-    # This user already exists in XOS with this password
-    # It's an example of how to create new users
-    padmin@vicci.org:
-      type: tosca.nodes.User
-      requirements:
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-      properties:
-          is_admin: true
-          is_active: true
-          firstname: XOS
-          lastname: admin
-          password: letmein