Skip to content

Commit eb40676

Browse files
committed
Merge branch 'k8s-job-metadata' into 'master'
k8s: add owner references Closes #25 See merge request acs/public/villas/controller!23
2 parents c46a1e2 + f3469d5 commit eb40676

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

villas/controller/components/managers/kubernetes.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ def __init__(self, **args):
3838

3939
self.namespace = args.get('namespace', 'default')
4040

41+
self.my_namespace = os.environ.get('NAMESPACE')
42+
self.my_pod_name = os.environ.get('POD_NAME')
43+
self.my_pod_uid = os.environ('POD_UID')
44+
4145
self._check_namespace(self.namespace)
4246

4347
# self.pod_watcher_thread.start()

villas/controller/components/simulators/kubernetes.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import annotations
2+
from typing import TYPE_CHECKING
13
import json
24
import signal
35

@@ -7,10 +9,14 @@
79
from villas.controller.exceptions import SimulationException
810
from villas.controller.util import merge
911

12+
if TYPE_CHECKING:
13+
from villas.controller.components.managers.kubernetes \
14+
import KubernetesManager
15+
1016

1117
class KubernetesJob(Simulator):
1218

13-
def __init__(self, manager, **args):
19+
def __init__(self, manager: KubernetesManager, **args):
1420
super().__init__(**args)
1521

1622
self.manager = manager
@@ -40,6 +46,16 @@ def schema(self):
4046
**super().schema
4147
}
4248

49+
def _owner(self):
50+
if self.manager.my_pod_name and self.manager.my_pod_uid:
51+
return k8s.client.V1OwnerReference(
52+
kind='Pod',
53+
name=self.manager.my_pod_name,
54+
uid=self.manager.my_pod_uid
55+
)
56+
57+
return None
58+
4359
def _prepare_job(self, job, payload):
4460
# Create config map
4561
cm = self._create_config_map(payload)
@@ -84,6 +100,9 @@ def _prepare_job(self, job, payload):
84100
job.metadata.generate_name = name + '-'
85101
job.metadata.name = None
86102

103+
if o := self._owner():
104+
job.metadata.owner_references = [o]
105+
87106
if job.metadata.labels is None:
88107
job.metadata.labels = {}
89108

@@ -119,6 +138,9 @@ def _create_config_map(self, payload):
119138
}
120139
)
121140

141+
if o := self._owner():
142+
self.cm.metadata.owner_references = [o]
143+
122144
return c.create_namespaced_config_map(
123145
namespace=self.manager.namespace,
124146
body=self.cm
@@ -147,6 +169,7 @@ def _delete_job(self):
147169
self.properties['pod_names'] = []
148170

149171
def start(self, payload):
172+
# Delete prior job
150173
self._delete_job()
151174

152175
job = payload.get('job', {})

0 commit comments

Comments
 (0)