# Copyright 2018 Intel Corporation, Inc
#
# 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:
  tpm:
    enabled: false
    # if enabled, nodeselector will use the below
    # values in the nodeselector section of the pod
    nodeLabel: "tpm-node"
    nodeLabelValue: "true"
  abrmd:
    enabled: true
  distcenter:
    enabled: true
  testca:
    enabled: true
  persistence: {}

persistence:
  enabled: true
  data:
    enabled: true
    size: 10Mi
    volumeReclaimPolicy: Retain
    accessMode: ReadWriteOnce
    mountSubPath: sshsm/data
  dbus:
    enabled: true
    size: 10Mi
    volumeReclaimPolicy: Retain
    accessMode: ReadWriteOnce
    mountSubPath: sshsm/dbus



# Configure resource requests and limits
resources:
  small:
    limits:
      cpu: 20m
      memory: 50Mi
    requests:
      cpu: 10m
      memory: 10Mi
  large:
    limits:
      cpu: 400m
      memory: 1Gi
    requests:
      cpu: 10m
      memory: 100Mi
  unlimited: {}
