---
# Copyright 2017-present Open Networking Foundation
#
# 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.

# Docker images
# YAML variable names can't contain `-`, so substituted with `_`
images:
  xos_core:
    repository: 'xosproject/xos-core'
    tag: '{{ .Chart.AppVersion }}'
    pullPolicy: 'Always'

  xos_chameleon:
    repository: 'xosproject/chameleon'
    tag: '4.0.0'
    pullPolicy: 'Always'

  xos_tosca:
    repository: 'xosproject/xos-tosca'
    tag: '2.0.0'
    pullPolicy: 'Always'

  xos_api_tester:
    repository: 'xosproject/xos-api-tester'
    tag: 'master'
    pullPolicy: 'Always'

global:
  registry: ""

loglevel: "DEBUG"

# NodePorts
xos_chameleonNodePort: 30006
xos_toscaNodePort: 30007
xos_prometheusNodePort: 30009
xos_core_gRPCSecureNodePort: 30010
xos_core_gRPCInsecureNodePort: 30011

# kafka
platformKafka: cord-kafka:9092

# XOS Admin username/password
xosAdminUser: 'admin@opencord.org'
xosAdminPassword: 'letmein'
xosAdminFirstname: 'XOS'
xosAdminLastname: 'Admin'

# CORD site names
cordSiteName: mysite

# Database name/username/password for XOS and the xos-db subchart
xosDBName: 'xos'
xosDBUser: 'postgres'
xosDBPassword: 'password'

xos-db:
  xosDBName: 'xos'
  xosDBUser: 'postgres'
  xosDBPassword: 'password'
