## K8S/DRIVER ATTRIBUTES
########################

# version: version of this values file
# Note: Do not change this value
# Examples : "v2.9.1" , "nightly"
version: "v2.9.1"

images:
  # "driver" defines the container image, used for the driver container.
  driver: dellemc/csi-unity:v2.9.1
  # CSI sidecars
  attacher: registry.k8s.io/sig-storage/csi-attacher:v4.4.2
  provisioner: registry.k8s.io/sig-storage/csi-provisioner:v3.6.2
  snapshotter: registry.k8s.io/sig-storage/csi-snapshotter:v6.3.2
  resizer: registry.k8s.io/sig-storage/csi-resizer:v1.9.2
  registrar: registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.9.1
  healthmonitor: registry.k8s.io/sig-storage/csi-external-health-monitor-controller:v0.10.0

  # CSM sidecars
  podmon: dellemc/podmon:v1.8.1

# LogLevel is used to set the logging level of the driver.
# Allowed values: "error", "warn"/"warning", "info", "debug"
# Default value: "info"
logLevel: "info"

# certSecretCount: Represents number of certificate secrets, which user is going to create for
# ssl authentication. (unity-cert-0..unity-cert-n)
# Allowed values: n, where n > 0
# Default value: None
certSecretCount: 1

# imagePullPolicy: Policy to determine if the image should be pulled prior to starting the container.
# Allowed values:
# Always: Always pull the image.
# IfNotPresent: Only pull the image if it does not already exist on the node.
# Never: Never pull the image.
# Default value: IfNotPresent
imagePullPolicy: Always

# Specify kubelet config dir path.
# Ensure that the config.yaml file is present at this path.
# Default value: None
kubeletConfigDir: /var/lib/kubelet

# fsGroupPolicy: Defines if the underlying volume supports changing ownership and permission of the volume before being mounted.
# Allowed values:
#   ReadWriteOnceWithFSType: supports volume ownership and permissions change only if the fsType is defined
#   and the volume's accessModes contains ReadWriteOnce.
#   File: kubernetes may use fsGroup to change permissions and ownership of the volume 
#   to match user requested fsGroup in the pod's security policy regardless of fstype or access mode.
#   None: volumes will be mounted with no modifications.
# Default value: ReadWriteOnceWithFSType
fsGroupPolicy: ReadWriteOnceWithFSType

#To set nodeSelectors and tolerations for controller.
# controller: configure controller pod specific parameters
controller:
  # controllerCount: defines the number of csi-unity controller pods to deploy to
  # the Kubernetes release.
  # Allowed values: n, where n > 0
  # Default value: None
  controllerCount: 2

  # volumeNamePrefix: Prefix of PersistentVolume names created
  # Allowed values: string
  # Default value: None
  volumeNamePrefix: csivol

  snapshot:
    # enabled: Enable/Disable volume snapshot feature
    # Allowed values:
    #   true: enable volume snapshot feature(install snapshotter sidecar)
    #   false: disable volume snapshot feature(do not install snapshotter sidecar)
    # Default value: None
    enabled: true

    # snapNamePrefix: Prefix to apply to the names of a created snapshots
    # Allowed values: string
    # Default value: None
    snapNamePrefix: csi-snap

  resizer:
    # enabled: Enable/Disable volume expansion feature
    # Allowed values:
    #   true: enable volume expansion feature(install resizer sidecar)
    #   false: disable volume snapshot feature(do not install resizer sidecar)
    # Default value: None
    enabled: true

  # nodeSelector: Define node selection constraints for controller pods.
  # For the pod to be eligible to run on a node, the node must have each
  # of the indicated key-value pairs as labels.
  # Leave as blank to consider all nodes
  # Allowed values: map of key-value pairs
  # Default value: None
  nodeSelector:
  # Uncomment if nodes you wish to use have the node-role.kubernetes.io/master taint
  #  node-role.kubernetes.io/master: ""
  # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
  #  node-role.kubernetes.io/control-plane: ""

  # tolerations: Define tolerations for the controllers, if required.
  # Leave as blank to install controller on worker nodes
  # Default value: None
  tolerations:
  # Uncomment if nodes you wish to use have the node-role.kubernetes.io/master taint
  #  - key: "node-role.kubernetes.io/master"
  #    operator: "Exists"
  #    effect: "NoExecute"
  # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
  #  - key: "node-role.kubernetes.io/control-plane"
  #    operator: "Exists"
  #    effect: "NoSchedule"

  healthMonitor:
    # enabled: Enable/Disable health monitor of CSI volumes- volume state, volume condition
    # Allowed values:
    #   true: enable checking of health condition of CSI volumes
    #   false: disable checking of health condition of CSI volumes
    # Default value: None
    enabled: false

    # interval: Interval of monitoring volume health condition
    # Allowed values: Number followed by unit of time (s,m,h)
    # Default value: 60s
    interval: 60s

# node: configure node pod specific parameters
node:
  # dnsPolicy : Define the DNS Policy of the Node service.
  # ClusterFirstWithHostNet is the recommended and default DNS policy for the driver.
  # Prior to v1.6 of the driver, the default DNS policy was ClusterFirst.
  # In certain scenarios, users might need to change the default dnsPolicy.
  # Default value: None
  dnsPolicy: "ClusterFirstWithHostNet"

  healthMonitor:
    # enabled: Enable/Disable health monitor of CSI Volumes - volume usage
    # Allowed values:
    #   true: enable checking of health condition of CSI volumes
    #   false: disable checking of health condition of CSI volumes
    # Default value: None
    enabled: false

  # nodeSelector: Define node selection constraints for node pods.
  # For the pod to be eligible to run on a node, the node must have each
  # of the indicated key-value pairs as labels.
  # Leave as blank to consider all nodes
  # Allowed values: map of key-value pairs
  # Default value: None
  nodeSelector:
  # Uncomment if nodes you wish to use have the node-role.kubernetes.io/master taint
  #  node-role.kubernetes.io/master: ""
  # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
  #  node-role.kubernetes.io/control-plane: ""

  # tolerations: Define tolerations for the node daemonset, if required.
  # Default value: None
  tolerations:
  # Uncomment if nodes you wish to use have the node-role.kubernetes.io/master taint
  #  - key: "node-role.kubernetes.io/master"
  #    operator: "Exists"
  #    effect: "NoExecute"
  # Uncomment if nodes you wish to use have the node-role.kubernetes.io/control-plane taint
  #  - key: "node-role.kubernetes.io/control-plane"
  #    operator: "Exists"
  #    effect: "NoExecute"
  #  - key: "node.kubernetes.io/memory-pressure"
  #    operator: "Exists"
  #    effect: "NoExecute"
  #  - key: "node.kubernetes.io/disk-pressure"
  #    operator: "Exists"
  #    effect: "NoExecute"
  #  - key: "node.kubernetes.io/network-unavailable"
  #    operator: "Exists"
  #    effect: "NoExecute"
  # Uncomment if CSM for Resiliency and CSI Driver pods monitor are enabled 
  #  - key: "offline.vxflexos.storage.dell.com"
  #    operator: "Exists"
  #    effect: "NoSchedule"
  #  - key: "vxflexos.podmon.storage.dell.com"
  #    operator: "Exists"
  #    effect: "NoSchedule"
  #  - key: "offline.unity.storage.dell.com"
  #    operator: "Exists"
  #    effect: "NoSchedule"
  #  - key: "unity.podmon.storage.dell.com"
  #    operator: "Exists"
  #    effect: "NoSchedule"
  #  - key: "offline.isilon.storage.dell.com"
  #    operator: "Exists"
  #    effect: "NoSchedule"
  #  - key: "isilon.podmon.storage.dell.com"
  #    operator: "Exists"
  #    effect: "NoSchedule"

# CSM module attributes
# service to monitor failing jobs and notify
podmon:
  # enabled - flag to enable or disable podmon
  # allowed values : boolean
  # defaule value : None
  # Examples : true , false
  enabled: false
  controller:
    args:
      - "--csisock=unix:/var/run/csi/csi.sock"
      - "--labelvalue=csi-unity"
      - "--driverPath=csi-unity.dellemc.com"
      - "--mode=controller"
      - "--skipArrayConnectionValidation=false"
      - "--driver-config-params=/unity-config/driver-config-params.yaml"
      - "--driverPodLabelValue=dell-storage"
      - "--ignoreVolumelessPods=false"
  node:
    args:
      - "--csisock=unix:/var/lib/kubelet/plugins/unity.emc.dell.com/csi_sock"
      - "--labelvalue=csi-unity"
      - "--driverPath=csi-unity.dellemc.com"
      - "--mode=node"
      - "--leaderelection=false"
      - "--driver-config-params=/unity-config/driver-config-params.yaml"
      - "--driverPodLabelValue=dell-storage"
      - "--ignoreVolumelessPods=false"

### The below parameters have been discontinued for configuration from secret.yaml and will have to be configured only in values.yaml

# syncNodeInfoInterval - Time interval to add node info to array. Default 15 minutes. Minimum value should be 1.
# Allowed values: integer
# Default value: 15
# Examples : 0 , 2
syncNodeInfoInterval: 15

# allowRWOMultiPodAccess - Flag to enable sharing of volumes across multiple pods within the same node in RWO access mode.
# Allowed values: boolean
# Default value: "false"
# Examples : "true" , "false"
allowRWOMultiPodAccess: "false"

# maxUnityVolumesPerNode - Maximum number of volumes that controller can publish to the node.
# Allowed values: integer
# Default value: 0
# Examples : 0 , 1
maxUnityVolumesPerNode: 0

# tenantName - Tenant name that need to added while adding host entry to the array.
# Allowed values: string
# Default value: ""
# Examples : "tenant2" , "tenant3"
tenantName: ""

# Storage Capacity Tracking
# Note: Capacity tracking is supported in kubernetes v1.24 and above, this feature will be automatically disabled in older versions.
storageCapacity:
  # enabled : Enable/Disable storage capacity tracking
  # Allowed values:
  #   true: enable storage capacity tracking
  #   false: disable storage capacity tracking
  # Default value: true
  enabled: true
  # pollInterval : Configure how often external-provisioner polls the driver to detect changed capacity
  # Allowed values: 1m,2m,3m,...,10m,...,60m etc
  # Default value: 5m
  pollInterval: 5m