[SEBA-497]

Delayer XOS containers for xos-core and xos-client

Build venv-xos using the Makefile

Change-Id: I6d9324a51e574c847a0698040d930e2d947b185c
diff --git a/Makefile b/Makefile
index c1f9032..08299be 100644
--- a/Makefile
+++ b/Makefile
@@ -18,26 +18,78 @@
 SHELL = bash -e -o pipefail
 
 # Variables
-XOS_LIBRARIES := $(wildcard lib/*)
-XOS_DIR := "."
+VERSION                  ?= $(shell cat ./VERSION)
+CORE_NAME                ?= xos-core
+CLIENT_NAME              ?= xos-client
 
+## Testing related
+XOS_LIBRARIES            := $(wildcard lib/*)
+
+## Docker related
+DOCKER_REGISTRY          ?=
+DOCKER_REPOSITORY        ?=
+DOCKER_BUILD_ARGS        ?=
+DOCKER_TAG               ?= ${VERSION}
+CORE_IMAGENAME           := ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}${CORE_NAME}:${DOCKER_TAG}
+CLIENT_IMAGENAME         := ${DOCKER_REGISTRY}${DOCKER_REPOSITORY}${CLIENT_NAME}:${DOCKER_TAG}
+
+## Docker labels. Only set ref and commit date if committed
+DOCKER_LABEL_VCS_URL     ?= $(shell git remote get-url $(shell git remote))
+DOCKER_LABEL_VCS_REF     ?= $(shell git diff-index --quiet HEAD -- && git rev-parse HEAD || echo "unknown")
+DOCKER_LABEL_COMMIT_DATE ?= $(shell git diff-index --quiet HEAD -- && git show -s --format=%cd --date=iso-strict HEAD || echo "unknown" )
+DOCKER_LABEL_BUILD_DATE  ?= $(shell date -u "+%Y-%m-%dT%H:%M:%SZ")
+
+# Targets
+all: test
+
+## Docker targets
+docker-build:
+	docker build $(DOCKER_BUILD_ARGS) \
+    -t ${CORE_IMAGENAME} \
+    --build-arg org_label_schema_version="${VERSION}" \
+    --build-arg org_label_schema_vcs_url="${DOCKER_LABEL_VCS_URL}" \
+    --build-arg org_label_schema_vcs_ref="${DOCKER_LABEL_VCS_REF}" \
+    --build-arg org_label_schema_build_date="${DOCKER_LABEL_BUILD_DATE}" \
+    --build-arg org_opencord_vcs_commit_date="${DOCKER_LABEL_COMMIT_DATE}" \
+    -f Dockerfile.core .
+	docker build $(DOCKER_BUILD_ARGS) \
+    -t ${CLIENT_IMAGENAME} \
+    --build-arg org_label_schema_version="${VERSION}" \
+    --build-arg org_label_schema_vcs_url="${DOCKER_LABEL_VCS_URL}" \
+    --build-arg org_label_schema_vcs_ref="${DOCKER_LABEL_VCS_REF}" \
+    --build-arg org_label_schema_build_date="${DOCKER_LABEL_BUILD_DATE}" \
+    --build-arg org_opencord_vcs_commit_date="${DOCKER_LABEL_COMMIT_DATE}" \
+    -f Dockerfile.client .
+
+docker-push:
+	docker push ${CORE_IMAGENAME}
+	docker push ${CLIENT_IMAGENAME}
+
+# Create a virtualenv and install all the libraries
 venv-xos:
-	./scripts/setup_venv.sh
+	virtualenv $@;\
+    source ./$@/bin/activate ; set -u ;\
+    pip install -r requirements.txt nose2 mock requests_mock;\
+    pip install -e lib/xos-util ;\
+    pip install -e lib/xos-config ;\
+    pip install -e lib/xos-genx ;\
+    pip install -e lib/xos-kafka ;\
+    pip install -e lib/xos-api ;\
+    pip install -e lib/xos-synchronizer ;\
+    pip install -e lib/xos-migrate
 
 # tests
-test: lib-test xos-test migration-test core-xproto-test
+test: lib-test unit-test migration-test core-xproto-test
 
 lib-test:
 	for lib in $(XOS_LIBRARIES); do pushd $$lib; tox; popd; done
 
-xos-test: venv-xos
-	source ./venv-xos/bin/activate ; set -u ;\
-	nose2 -c tox.ini --verbose --junit-xml
-	# FIXME: should run `flake8 xos` as a part of this target
+unit-test:
+	tox
 
 migration-test: venv-xos
 	source ./venv-xos/bin/activate ; set -u ;\
-	xos-migrate --xos-dir . -s core --check
+    xos-migrate --xos-dir . -s core --check
 
 create-migrations: venv-xos
 	source ./venv-xos/bin/activate ; set -u ;\
@@ -45,7 +97,7 @@
 
 core-xproto-test: venv-xos
 	source ./venv-xos/bin/activate ; set -u ;\
-	xosgenx xos/core/models/core.xproto --lint --strict
+    xosgenx xos/core/models/core.xproto --lint --strict
 
 clean:
 	find . -name '*.pyc' | xargs rm -f