################################################################################
# Copyright 2023 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.
#

# Credentials
ADMIN_USERNAME=admin
ADMIN_PASSWORD=Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U

# Network settings
HOST_IP=aaa.bbb.ccc.ddd

# flows (implemened by nodered)
FLOWS_IMAGE=nodered/node-red:latest

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

# apps
APP_VENDOR=O-RAN-SC-OAM-Project
APP_SOURCE=O-RAN-SC-OAM-Test-Component-01
APP_NETWORK_FUNCTION_ID=pnf2

VES_ENDPOINT_AUTH_METHOD=basic-auth
VES_ENDPOINT_USERNAME=sample1
VES_ENDPOINT_PASSWORD=sample1

# tests (implemened by jenkins and robot)
TESTS_IMAGE=jenkins/jenkins:lts

 # Wireshark
WIRESHARK_IMAGE=lscr.io/linuxserver/wireshark
