# Copyright © 2017 Amdocs, Bell Canada
#
# 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.

# Default values for so.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
global: # global defaults
  nodePortPrefix: 302
  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
  readinessRepository: oomk8s
  readinessImage: readiness-check:2.0.0
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0

subChartsOnly:
  enabled: true

# application image
repository: nexus3.onap.org:10001
image: openecomp/mso:1.2-STAGING-latest
pullPolicy: Always
  
# flag to enable debugging - application support required
debugEnabled: false

# application configuration
config:
  # message router configuration
  dmaapTopic: "AUTO"
  # openstack configuration
  openStackUserName: "vnf_user"
  openStackRegion: "RegionOne"
  openStackKeyStoneUrl: "http://1.2.3.4:5000"
  openStackServiceTenantName: "service"
  openStackEncryptedPasswordHere: "c124921a3a0efbe579782cde8227681e"
  logstashServiceName: log-ls
  logstashPort: 5044
  sniro:
    serviceName: sniro-emulator
    port: 80
  aai:
    serviceName: aai
    port: 8080
  msb:
    serviceName: msb-iag
    port: 80
  sdnc:
    serviceName: sdnc
    port: 8282
  sdc:
    serviceName: sdc-be
    port: 8443

# 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
  name: so
  externalPort: 23
  internalPort: 8080
  externalPort2: 25
  internalPort2: 3904
  externalPort3: 24
  internalPort3: 3905
  externalPort4: 22
  internalPort4: 9990
  externalPort5: 50
  internalPort5: 8787

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
