[AETHER-484] Add fabric-tna to tost-onos

Additionally fixes an issue related to the build of fabric-tofino

Change-Id: I1057243ecf647c68033b64ca7081c30118d23fce
diff --git a/.gitignore b/.gitignore
index 690080d..5b30fd6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,5 +8,6 @@
 fabric-tofino/
 up4/
 kafka-onos/
+fabric-tna/
 .m2/
 mvn_settings.xml
diff --git a/Makefile b/Makefile
index cd1bc6b..c7f867f 100644
--- a/Makefile
+++ b/Makefile
@@ -86,9 +86,9 @@
 FABRIC_TOFINO_ARTIFACTID     := fabric-tofino
 FABRIC_TOFINO_ARTIFACT       := ${FABRIC_TOFINO_GROUPID}:${FABRIC_TOFINO_ARTIFACTID}
 FABRIC_TOFINO_VERSION        := 1.1.1-SNAPSHOT
-FABRIC_TOFINO_TARGETS        := clean fabric-spgw
-export SDE_DOCKER_IMG        := opennetworking/bf-sde:9.0.0-p4c
-export P4CFLAGS              := "-DS1U_SGW_PREFIX='(8w192++8w0++8w0++8w0)' -DS1U_SGW_PREFIX_LEN=8"
+FABRIC_TOFINO_TARGETS        := fabric-spgw
+FABRIC_TOFINO_SDE_DOCKER_IMG := opennetworking/bf-sde:9.0.0-p4c
+FABRIC_TOFINO_P4CFLAGS       := "-DS1U_SGW_PREFIX='(8w192++8w0++8w0++8w0)' -DS1U_SGW_PREFIX_LEN=8"
 
 # Up4 related
 UP4_BRANCH                   ?=
@@ -113,9 +113,24 @@
 KAFKA_ONOS_ARTIFACT          := ${KAFKA_ONOS_GROUPID}:${KAFKA_ONOS_ARTIFACTID}
 KAFKA_ONOS_VERSION           := 2.4.0-SNAPSHOT
 
+# Fabric-TNA related
+FABRIC_TNA_BRANCH            ?=
+ONOS_BUILDER_API             ?=
+FABRIC_TNA_ROOT              := $(shell pwd)/fabric-tna
+FABRIC_TNA_ARTIFACTID        := fabric-tna
+FABRIC_TNA_VERSION           := 1.0.0-SNAPSHOT
+FABRIC_TNA_TARGETS           := fabric fabric-spgw
+FABRIC_TNA_SDE_DOCKER_IMG    := opennetworking/bf-sde:9.2.0-p4c
+
+ifeq ($(ONOS_BUILDER_API),)
+  FABRIC_TNA_REPO = https://github.com/stratum/fabric-tna.git
+else
+  FABRIC_TNA_REPO = https://onos-builder:${ONOS_BUILDER_API}@github.com/stratum/fabric-tna.git
+endif
+
 .PHONY:
 
-.SILENT: up4
+.SILENT: up4 fabric-tna
 
 # This should to be the first and default target in this Makefile
 help: ## : Print this help
@@ -141,6 +156,7 @@
 	@echo "KAFKA_ONOS_BRANCH        : Define to use the following branch to build the image"
 	@echo "KAFKA_ONOS_REVIEW        : Define to use the following review to build the image"
 	@echo "KAFKA_ONOS_MVN           : Define to download the app using mvn"
+	@echo "FABRIC_TNA_BRANCH        : Define to use the following branch to build the image"
 	@echo ""
 	@echo "'onos' clones onos if it does not exist in the workspace."
 	@echo "Uses current workspace unless above vars are defined."
@@ -160,6 +176,9 @@
 	@echo "'kafka-onos' clones kafka-onos if it does not exist in the workspace."
 	@echo "Uses current workspace unless above vars are"
 	@echo ""
+	@echo "'fabric-tna' clones fabric-tna if it does not exist in the workspace."
+	@echo "Uses current workspace unless above vars are"
+	@echo ""
 
 ## Make targets
 
@@ -273,7 +292,8 @@
 		chown -R ${CURRENT_UID}:${CURRENT_GID} /root"
 else
 	# This workaround is temporary - typically we need to build only the pipeconf
-	cd ${FABRIC_TOFINO_ROOT} && make ${FABRIC_TOFINO_TARGETS}
+	cd ${FABRIC_TOFINO_ROOT} && make ${FABRIC_TOFINO_TARGETS} SDE_DOCKER_IMG=${FABRIC_TOFINO_SDE_DOCKER_IMG} \
+		P4CFLAGS=${FABRIC_TOFINO_P4CFLAGS}
 	docker run -t --rm -v ${CURRENT_DIR}:/root -w /root/fabric-tofino ${DOCKER_MVN_IMAGE} \
 		bash -c "mvn clean install -s mvn_settings.xml; \
 		chown -R ${CURRENT_UID}:${CURRENT_GID} /root"
@@ -288,7 +308,7 @@
 	cd ${UP4_ROOT} && git checkout ${UP4_BRANCH}
 endif
 
-up4-build: mvn_settings.xml local-apps up4  ## : Builds up4 using local app or mvn
+up4-build: mvn_settings.xml local-apps up4  ## : Builds up4 using local app
 	cp mvn_settings.xml ${UP4_ROOT}/app
 	# Copy the p4 reources inside the app before the actual build
 	cd ${UP4_ROOT} && make ${UP4_TARGETS}
@@ -331,6 +351,23 @@
 endif
 	cp ${KAFKA_ONOS_ROOT}/target/${KAFKA_ONOS_ARTIFACTID}-${KAFKA_ONOS_VERSION}.oar ${LOCAL_APPS}/
 
+fabric-tna: ## : Checkout fabric-tna code
+	if [ ! -d "fabric-tna" ]; then \
+		git clone ${FABRIC_TNA_REPO}; \
+	fi
+ifdef FABRIC_TNA_BRANCH
+	cd ${FABRIC_TNA_ROOT} && git checkout ${FABRIC_TNA_BRANCH}
+endif
+
+fabric-tna-build: mvn_settings.xml local-apps fabric-tna  ## : Builds fabric-tna using local app
+	cp mvn_settings.xml ${FABRIC_TNA_ROOT}/
+	# Rebuilds the artifact and the pipeconf
+	cd ${FABRIC_TNA_ROOT} && make ${FABRIC_TNA_TARGETS} SDE_DOCKER_IMG=${FABRIC_TNA_SDE_DOCKER_IMG}
+	docker run -t --rm -v ${CURRENT_DIR}:/root -w /root/fabric-tna ${DOCKER_MVN_IMAGE} \
+		bash -c "mvn clean install -s mvn_settings.xml; \
+		chown -R ${CURRENT_UID}:${CURRENT_GID} /root"
+	cp ${FABRIC_TNA_ROOT}/target/${FABRIC_TNA_ARTIFACTID}-${FABRIC_TNA_VERSION}.oar ${LOCAL_APPS}/
+
 onos: ## : Checkout onos code
 	if [ ! -d "onos" ]; then \
 		git clone https://gerrit.onosproject.org/onos; \
@@ -374,7 +411,7 @@
 	docker push ${TOST_IMAGENAME}
 
 # Used for CI job
-docker-build: onos trellis-control-build trellis-t3-build kafka-onos-build fabric-tofino-build up4-build tost-build ## : Builds the tost image
+docker-build: onos trellis-control-build trellis-t3-build fabric-tofino-build up4-build kafka-onos-build fabric-tna-build tost-build ## : Builds the tost image
 
 # User for CD job
 docker-push: tost-push ## : Pushes the tost image
@@ -386,6 +423,7 @@
 	rm -rf ${FABRIC_TOFINO_ROOT}
 	rm -rf ${UP4_ROOT}
 	rm -rf ${KAFKA_ONOS_ROOT}
+	rm -rf ${FABRIC_TNA_ROOT}
 	rm -rf ${LOCAL_APPS}
 	rm -rf .m2
 	rm -rf mvn_settings.xml