# Copyright © 2018 Orange
#
# 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.

#################################################################
# Global configuration defaults.
#################################################################
global:
  nodePortPrefix: 302
  readinessRepository: oomk8s
  readinessImage: readiness-check:1.1.0
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0

subChartsOnly:
  enabled: true

# application image
repository: nexus3.onap.org:10001
image: onap/externalapi/nbi:2.0.0
pullPolicy: Always
sdc_authorization: Basic YWFpOktwOGJKNFNYc3pNMFdYbGhhazNlSGxjc2UyZ0F3ODR2YW9HR21KdlV5MlU=
aai_authorization: Basic QUFJOkFBSQ==
so_authorization:

# application configuration
config:
  loglevel: INFO
  logstashServiceName: log-ls
  logstashPort: 5044
  cloudOwner: CloudOwner
  ecompInstanceId: OOM
  openStackRegion: RegionOne
  openStackVNFTenantId: 31047205ce114b60833b23e400d6a535

mariadb:
  nameOverride: nbi-mariadb
  service:
    name: nbi-mariadbhost
    internalPort: 3306
  config:
    db:
      database: nbi
      user: rene
      password: lkjgklqsdareyhjujlnnbvfvdttuiukgpiokqbfsjdhfigquosegombvjfqhb
      root_password: dhqjdshjdsguryebvcnbvcvdsqghyjqgktgjjfhjfghbfs
  persistence:
    mountSubPath: nbi/maria/data
    enabled: true
  disableNfsProvisioner: true

mongo:
  nameOverride: nbi-mongo
  config:
    dbName: ServiceOrderDB
  service:
    name: nbi-mongohost
    internalPort: 27017
  nfsprovisionerPrefix: nbi
  sdnctlPrefix: nbi
  persistence:
    mountSubPath: nbi/mongo/data
    enabled: true
  disableNfsProvisioner: true


# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

# probe configuration parameters
liveness:
  initialDelaySeconds: 10
  periodSeconds: 10
  # necessary to disable liveness probe when setting breakpoints
  # in debugger so K8s doesn't restart unresponsive container
  enabled: true

readiness:
  initialDelaySeconds: 10
  periodSeconds: 10

service:
  type: NodePort
  portName: api
  name: nbi
  nodePort: 74
  internalPort: 8080

ingress:
  enabled: false

resources: {}
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  #
  # Example:
  # Configure resource requests and limits
  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
  # Minimum memory for development is 2 CPU cores and 4GB memory
  # Minimum memory for production is 4 CPU cores and 8GB memory
#resources:
#  limits:
#    cpu: 2
#    memory: 4Gi
#  requests:
#    cpu: 2
#    memory: 4Gi
