# common/Makedefs
# Defines commonly used Makefile variables

COMMON_DIR           ?= $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
CONFIG_DIR           ?= $(COMMON_DIR)

HOME_DIR             ?= $(shell echo ~)
MYIP                 ?= $(shell hostname -i)

XOS_DIR              ?= $(HOME_DIR)/xos
SERVICE_DIR          ?= $(HOME_DIR)/xos_services
LIBRARY_DIR          ?= $(HOME_DIR)/xos_libraries
REST_GW_DIR          ?= $(HOME_DIR)/xos-rest-gw
GUI_DIR              ?= $(HOME_DIR)/xos-gui

XOS_BOOTSTRAP_PORT   ?= 81
XOS_UI_PORT          ?= 80

DOCKER_PROJECT       ?= unknown
BOOTSTRAP_PROJECT    ?= $(DOCKER_PROJECT)bs

ADMIN_USERNAME       ?= padmin@vicci.org
ADMIN_PASSWORD       ?= letmein

BOOTSTRAP_YML        ?= $(CONFIG_DIR)/docker-compose-bootstrap.yml
DOCKER_COMPOSE_YML   ?= $(CONFIG_DIR)/onboarding-docker-compose/docker-compose.yml

# git repos
CORD_BASE_GIT_URL ?= https://gerrit.opencord.org/p
DEFAULT_BRANCH ?= cord-2.0

XOS_BRANCH ?= $(DEFAULT_BRANCH)
XOS_GIT_URL ?= $(CORD_BASE_GIT_URL)/xos.git

EXAMPLESERVICE_BRANCH ?= $(DEFAULT_BRANCH)
EXAMPLESERVICE_GIT_URL ?= $(CORD_BASE_GIT_URL)/exampleservice.git

OLT_BRANCH ?= $(DEFAULT_BRANCH)
OLT_GIT_URL ?= $(CORD_BASE_GIT_URL)/olt.git

VSG_BRANCH ?= $(DEFAULT_BRANCH)
VSG_GIT_URL ?= $(CORD_BASE_GIT_URL)/vsg.git

VTN_BRANCH ?= $(DEFAULT_BRANCH)
VTN_GIT_URL ?= $(CORD_BASE_GIT_URL)/vtn.git

VROUTER_BRANCH ?= $(DEFAULT_BRANCH)
VROUTER_GIT_URL ?= $(CORD_BASE_GIT_URL)/vrouter.git

VTR_BRANCH ?= $(DEFAULT_BRANCH)
VTR_GIT_URL ?= $(CORD_BASE_GIT_URL)/vtr.git

ONOS_BRANCH ?= $(DEFAULT_BRANCH)
ONOS_GIT_URL ?= $(CORD_BASE_GIT_URL)/onos-service.git

FABRIC_BRANCH ?= $(DEFAULT_BRANCH)
FABRIC_GIT_URL ?= $(CORD_BASE_GIT_URL)/fabric.git

MONITORING_BRANCH ?= $(DEFAULT_BRANCH)
MONITORING_GIT_URL ?= $(CORD_BASE_GIT_URL)/monitoring.git

HYPERCACHE_BRANCH ?= $(DEFAULT_BRANCH)
HYPERCACHE_GIT_URL ?= $(CORD_BASE_GIT_URL)/hypercache.git

METRONETWORK_BRANCH ?= $(DEFAULT_BRANCH)
METRONETWORK_GIT_URL ?= $(CORD_BASE_GIT_URL)/metro-net.git

OPENSTACK_BRANCH ?= $(DEFAULT_BRANCH)
OPENSTACK_GIT_URL ?= $(CORD_BASE_GIT_URL)/openstack.git

NG_XOS_LIB_BRANCH ?= $(DEFAULT_BRANCH)
NG_XOS_LIB_URL ?= $(CORD_BASE_GIT_URL)/ng-xos-lib.git

VNODLOCAL_BRANCH ?= $(DEFAULT_BRANCH)
VNODLOCAL_GIT_URL ?= $(CORD_BASE_GIT_URL)/metronet-local.git

GLOBALXOS_BRANCH ?= $(DEFAULT_BRANCH)
GLOBALXOS_GIT_URL ?= $(CORD_BASE_GIT_URL)/globalxos.git
