#
#   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: "testing-daily"
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
