################################################################################
# Copyright 2021 highstreet technologies and others
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

HOST_IP=aaa.bbb.ccc.ddd
# NETWORK_SUBNET_DCN_IPv4=172.60.0.0/24
NETWORK_SUBNET_DCN_IPv6=2001:db8:1:60::/96

# Credentials
ADMIN_USERNAME=admin
ADMIN_PASSWORD=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U

# gateway network implemented by traefik
HTTP_DOMAIN=smo.o-ran-sc.org

# SDN Controller
SDN_CONTROLLER_PROTOCOL=https
SDNC_OAM_HOST=odlux.oam.${HTTP_DOMAIN}
SDNC_DCN_HOST=controller.dcn.${HTTP_DOMAIN}
SDNC_REST_PORT=443
SDN_CONTROLLER_CALLHOME_SSH_PORT=4334
SDN_CONTROLLER_CALLHOME_TLS_PORT=4335

# VES Collector
VES_ENDPOINT_PROTOCOL=https
VES_COLLECTOR_DCN_HOST=ves-collector.dcn.${HTTP_DOMAIN}
VES_ENDPOINT_PORT=443
VES_COMMON_HEADER_VERSION=7.2.1
VES_ENDPOINT_AUTH_METHOD=basic-auth
VES_ENDPOINT_USERNAME=sample1
VES_ENDPOINT_PASSWORD=sample1

# NTS NG settings
NEXUS3_DOCKER_REPO=nexus3.o-ran-sc.org:10004/o-ran-sc/
LOCAL_DOCKER_REPO=o-ran-sc/
NTS_MANAGER_PORT=8300
NTS_BUILD_VERSION=1.8.1

IPv6_ENABLED=true
SSH_CONNECTIONS=1
TLS_CONNECTIONS=0
NTS_HOST_IP=2a00:7b80:454:2000::2
NTS_HOST_BASE_PORT=50000
NTS_HOST_NETCONF_SSH_BASE_PORT=0
NTS_HOST_NETCONF_TLS_BASE_PORT=1000
NTS_HOST_TRANSFER_FTP_BASE_PORT=2000
NTS_HOST_TRANSFER_SFTP_BASE_PORT=2000

NTS_NF_MOUNT_POINT_ADDRESSING_METHOD=docker-mapping
