#
#   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.
#
---
config:
  core:
    parallelism: 4
    dag_concurrency: 2
    max_active_tasks_per_dag: 2
    worker_concurrency: 2
    dags_folder: "/home/airflow/.local/lib/python3.10/site-packages/osm_ngsa"
defaultAirflowRepository: opensourcemano/airflow
defaultAirflowTag: "16"
executor: LocalExecutor
extraEnv: |
  - name: AIRFLOW__API__AUTH_BACKENDS
    value: 'airflow.api.auth.backend.basic_auth'
  - name: AIRFLOW__LOGGING__LOGGING_LEVEL
    value: 'INFO'
  - name: OSMMON_DATABASE_COMMONKEY
    valueFrom:
      secretKeyRef:
        name: osm-secret
        key: OSM_DATABASE_COMMONKEY
# extraEnvFrom: |
#   - secretRef:
#       name: ngsa-secret
ingress:
  web:
    enabled: True
    hosts:
      - name: "localhost"
    ingressClassName: nginx
# scheduler:
#   resources:
#     requests:
#       memory: 512Mi
#       cpu: 250m
#     limits:
#       memory: 1Gi
#       cpu: 500m
webserverSecretKeySecretName: airflow-webserver-secret
webserver:
  resources:
    requests:
      memory: 256Mi
      cpu: 250m
    limits:
      memory: 1Gi
      cpu: 500m
  service:
    type: ClusterIP
    ports:
      - name: airflow-ui
        port: "{{ .Values.ports.airflowUI }}"
        targetPort: "{{ .Values.ports.airflowUI }}"
workers:
  persistence:
    size: 2Gi
  replicas: 1
  resources:
    requests:
      memory: 512Mi
      cpu: 250m
    limits:
      memory: 1Gi
      cpu: 500m
  logGroomerSidecar:
    retentionDays: 7
    resources:
      limits:
        cpu: 100m
        memory: 128Mi
      requests:
        cpu: 100m
        memory: 128Mi
