Skip to content

Commit 310ea94

Browse files
committed
Programmatically check if in-cluster config or kube config should be loaded
Rename endpoint of server tests to /config instead of /key
1 parent 9d5689f commit 310ea94

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ jobs:
128128

129129
helm:
130130
runs-on: ubuntu-latest
131+
needs:
132+
- server-tests
133+
- operator-tests
131134
steps:
132135
- name: Checkout repository
133136
uses: actions/checkout@v4

opr/operator.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
import json
22
import logging
3+
import os
34

45
import kopf
56
import kubernetes
67
from kubernetes.client import ApiClient, CoreV1Api, AppsV1Api, CustomObjectsApi, V1ConfigMap, V1Service
78

89

10+
def load_kubernetes_config():
11+
if 'KUBERNETES_SERVICE_HOST' in os.environ:
12+
# We're running inside a Kubernetes cluster
13+
return kubernetes.config.load_incluster_config()
14+
else:
15+
# We're running outside the cluster
16+
return kubernetes.config.load_kube_config()
17+
18+
919
@kopf.on.create('configserver')
1020
def create_fn(meta, spec, **kwargs):
11-
client = ApiClient(configuration=kubernetes.config.load_incluster_config())
21+
client = ApiClient(configuration=load_kubernetes_config())
1222
api = CoreV1Api(api_client=client)
1323
apps_api = AppsV1Api(api_client=client)
1424
crd_api = CustomObjectsApi(api_client=client)
@@ -100,7 +110,7 @@ def create_fn(meta, spec, **kwargs):
100110

101111
@kopf.on.delete('configserver')
102112
def delete_fn(meta, spec, **kwargs):
103-
client = ApiClient(configuration=kubernetes.config.load_incluster_config())
113+
client = ApiClient(configuration=load_kubernetes_config())
104114
api = CoreV1Api(api_client=client)
105115
apps_api = AppsV1Api(api_client=client)
106116

@@ -122,7 +132,7 @@ def delete_fn(meta, spec, **kwargs):
122132

123133

124134
def _get_config_map(config_name: str, namespace: str, logger: logging.Logger) -> tuple[V1ConfigMap | None, CoreV1Api]:
125-
client = kubernetes.client.api_client.ApiClient(configuration=kubernetes.config.load_incluster_config())
135+
client = kubernetes.client.api_client.ApiClient(configuration=load_kubernetes_config())
126136
api = kubernetes.client.CoreV1Api(api_client=client)
127137
try:
128138
config_map = api.read_namespaced_config_map(name=f"{config_name}-values", namespace=namespace)

tests/server_tests/test_key_handler.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ def test_root(self):
2424
self.assertEqual(response.code, 404)
2525

2626
def test_not_found(self):
27-
response = self.fetch('/key/not-found')
27+
response = self.fetch('/config/not-found')
2828
self.assertEqual(response.code, 404)
2929
# self.assertEqual(response.body, 'Hello, world')
3030

3131
def test_key(self):
3232
test_file = self.config_values / "test"
3333
test_file.write_text(json.dumps({"foo": "bar"}))
3434

35-
response = self.fetch('/key/test')
35+
response = self.fetch('/config/test')
3636
self.assertEqual(response.code, 200)
3737
self.assertEqual(response.body.decode(), json.dumps({"foo": "bar"}))
3838

@@ -42,7 +42,7 @@ def test_key_not_json(self):
4242
test_file = self.config_values / "test"
4343
test_file.write_text("something: not json")
4444

45-
response = self.fetch('/key/test')
45+
response = self.fetch('/config/test')
4646
self.assertEqual(response.code, 400)
4747

4848
test_file.unlink()

0 commit comments

Comments
 (0)