#============LICENSE_START========================================================
#=================================================================================
# Copyright (c) 2020 AT&T Intellectual Property. All rights reserved.
# ================================================================================
# 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.
# ============LICENSE_END=========================================================

#################################################################
# Global configuration defaults.
#################################################################
global:
  persistence: {}
  nodePortPrefix: 302
  nodePortPrefixExt: 304
  readinessImage: onap/oom/readiness:3.0.1

  ingress:
    enabled: true
    virtualhost:
        enabled: false

config:
  nifiJarsIndexURL: http://dcaemod-genprocessor:8080/nifi-jars
  distributorAPIURL: /distributor
  curlImage: curlimages/curl:7.68.0

# application image
repository: nexus3.onap.org:10001
image: onap/org.onap.dcaegen2.platform.mod.designtool-web:1.0.2

service:
  type: ClusterIP
  name: dcaemod-designtool
  ports:
    - name: http
      port: 8080

ingress:
    enabled: true
    service:
    - baseaddr: "nifi"
      name: "dcaemod-designtool"
      port: 8080
    - baseaddr: "nifi-api"
      name: "dcaemod-designtool"
      port: 8080
    config:
      ssl: "none"

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

readiness:
  initialDelaySeconds: 60
  periodSeconds: 20
  path: /nifi-api/system-diagnostics
  scheme: HTTP
  port: http

# Resource Limit flavor -By Default using small
flavor: small
# Segregation for Different environment (Small and Large)
resources:
  small:
    limits:
      cpu: 2
      memory: 2Gi
    requests:
      cpu: 1
      memory: 1Gi
  large:
    limits:
      cpu: 4
      memory: 4Gi
    requests:
      cpu: 2
      memory: 2Gi
  unlimited: {}
