#
#   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.
#
---
defaultAirflowRepository: opensourcemano/airflow
defaultAirflowTag: "testing-daily"
webserverSecretKeySecretName: airflow-webserver-secret
webserver:
  service:
    type: NodePort
    ports:
      - name: airflow-ui
        port: "{{ .Values.ports.airflowUI }}"
        targetPort: "{{ .Values.ports.airflowUI }}"
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
config:
  core:
    dags_folder: "/home/airflow/.local/lib/python3.10/site-packages/osm_ngsa"
workers:
  persistence:
    size: 8Gi
