Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions chart/templates/_helpers.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -255,27 +255,31 @@ If release name contains chart name it will be used as a full name.
- name: GITSYNC_SSH_KNOWN_HOSTS
value: "false"
{{- end }}
{{ else if .Values.dags.gitSync.credentialsSecret }}
- name: GIT_SYNC_USERNAME
{{- else if .Values.dags.gitSync.credentialsSecret }}
{{- $tag := trimPrefix "v" .Values.images.gitSync.tag }}
{{- if or (eq $tag "latest") (semverCompare ">=4.0.0" $tag) }}
- name: GITSYNC_USERNAME
valueFrom:
secretKeyRef:
name: {{ .Values.dags.gitSync.credentialsSecret | quote }}
key: GIT_SYNC_USERNAME
- name: GITSYNC_USERNAME
key: GITSYNC_USERNAME
- name: GITSYNC_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.dags.gitSync.credentialsSecret | quote }}
key: GITSYNC_USERNAME
- name: GIT_SYNC_PASSWORD
key: GITSYNC_PASSWORD
{{- else }}
- name: GIT_SYNC_USERNAME
valueFrom:
secretKeyRef:
name: {{ .Values.dags.gitSync.credentialsSecret | quote }}
key: GIT_SYNC_PASSWORD
- name: GITSYNC_PASSWORD
key: GIT_SYNC_USERNAME
- name: GIT_SYNC_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.dags.gitSync.credentialsSecret | quote }}
key: GITSYNC_PASSWORD
key: GIT_SYNC_PASSWORD
{{- end }}
{{- end }}
- name: GIT_SYNC_REV
value: {{ .Values.dags.gitSync.rev | quote }}
Expand Down
3 changes: 3 additions & 0 deletions chart/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,9 @@ images:
gitSync:
repository: registry.k8s.io/git-sync/git-sync
tag: v4.4.2
# NOTE:
# - If the tag is "v3.x.x" or any version < 4.0.0 - use GIT_SYNC_* env variables
# - If the tag is "v4.x.x" or "latest" - use GITSYNC_* env variables
pullPolicy: IfNotPresent

# Select certain nodes for airflow pods.
Expand Down
40 changes: 23 additions & 17 deletions helm-tests/tests/helm_tests/airflow_aux/test_pod_template_file.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,15 @@ def test_validate_if_ssh_known_hosts_are_added(self):
"readOnly": True,
} in jmespath.search("spec.initContainers[0].volumeMounts", docs[0])

def test_should_set_username_and_pass_env_variables(self):
@pytest.mark.parametrize(
"tag,expected_prefix",
[
("v3.6.7", "GIT_SYNC_"),
("v4.4.2", "GITSYNC_"),
("latest", "GITSYNC_"),
],
)
def test_should_set_username_and_pass_env_variables(self, tag, expected_prefix):
docs = render_chart(
values={
"dags": {
Expand All @@ -263,30 +271,28 @@ def test_should_set_username_and_pass_env_variables(self):
"credentialsSecret": "user-pass-secret",
"sshKeySecret": None,
}
}
},
"images": {
"gitSync": {
"tag": tag,
}
},
},
show_only=["templates/pod-template-file.yaml"],
chart_dir=self.temp_chart_dir,
)

assert {
"name": "GIT_SYNC_USERNAME",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GIT_SYNC_USERNAME"}},
} in jmespath.search("spec.initContainers[0].env", docs[0])
assert {
"name": "GIT_SYNC_PASSWORD",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GIT_SYNC_PASSWORD"}},
} in jmespath.search("spec.initContainers[0].env", docs[0])
envs = jmespath.search("spec.initContainers[0].env", docs[0])

# Testing git-sync v4
assert {
"name": "GITSYNC_USERNAME",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GITSYNC_USERNAME"}},
} in jmespath.search("spec.initContainers[0].env", docs[0])
"name": f"{expected_prefix}USERNAME",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": f"{expected_prefix}USERNAME"}},
} in envs

assert {
"name": "GITSYNC_PASSWORD",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GITSYNC_PASSWORD"}},
} in jmespath.search("spec.initContainers[0].env", docs[0])
"name": f"{expected_prefix}PASSWORD",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": f"{expected_prefix}PASSWORD"}},
} in envs

def test_should_set_the_dags_volume_claim_correctly_when_using_an_existing_claim(self):
docs = render_chart(
Expand Down
39 changes: 23 additions & 16 deletions helm-tests/tests/helm_tests/other/test_git_sync_scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from __future__ import annotations

import jmespath
import pytest
from chart_utils.helm_template_generator import render_chart


Expand Down Expand Up @@ -266,7 +267,15 @@ def test_validate_sshkeysecret_not_added_when_persistence_is_enabled(self):
)
assert "git-sync-ssh-key" not in jmespath.search("spec.template.spec.volumes[].name", docs[0])

def test_should_set_username_and_pass_env_variables(self):
@pytest.mark.parametrize(
"tag,expected_prefix",
[
("v3.6.7", "GIT_SYNC_"),
("v4.4.2", "GITSYNC_"),
("latest", "GITSYNC_"),
],
)
def test_should_set_username_and_pass_env_variables_in_scheduler(self, tag, expected_prefix):
docs = render_chart(
values={
"airflowVersion": "2.10.5",
Expand All @@ -277,28 +286,26 @@ def test_should_set_username_and_pass_env_variables(self):
"sshKeySecret": None,
}
},
"images": {
"gitSync": {
"tag": tag,
}
},
},
show_only=["templates/scheduler/scheduler-deployment.yaml"],
)

assert {
"name": "GIT_SYNC_USERNAME",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GIT_SYNC_USERNAME"}},
} in jmespath.search("spec.template.spec.containers[1].env", docs[0])
assert {
"name": "GIT_SYNC_PASSWORD",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GIT_SYNC_PASSWORD"}},
} in jmespath.search("spec.template.spec.containers[1].env", docs[0])
envs = jmespath.search("spec.template.spec.containers[1].env", docs[0])

# Testing git-sync v4
assert {
"name": "GITSYNC_USERNAME",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GITSYNC_USERNAME"}},
} in jmespath.search("spec.template.spec.containers[1].env", docs[0])
"name": f"{expected_prefix}USERNAME",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": f"{expected_prefix}USERNAME"}},
} in envs

assert {
"name": "GITSYNC_PASSWORD",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": "GITSYNC_PASSWORD"}},
} in jmespath.search("spec.template.spec.containers[1].env", docs[0])
"name": f"{expected_prefix}PASSWORD",
"valueFrom": {"secretKeyRef": {"name": "user-pass-secret", "key": f"{expected_prefix}PASSWORD"}},
} in envs

def test_should_set_the_volume_claim_correctly_when_using_an_existing_claim(self):
docs = render_chart(
Expand Down
Loading