Skip to content

Commit 540f28a

Browse files
committed
adds tests and small fixes
1 parent dc65c7f commit 540f28a

File tree

3 files changed

+48
-25
lines changed

3 files changed

+48
-25
lines changed

calrissian/context.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@ def __init__(self, kwargs=None):
2323
self.pod_serviceaccount = None
2424
self.tool_logs_basepath = None
2525
self.max_gpus = None
26-
self.no_network_access_pod_label = None
27-
self.network_access_pod_label = None
26+
self.no_network_access_pod_labels = None
27+
self.network_access_pod_labels = None
2828
return super(CalrissianRuntimeContext, self).__init__(kwargs)

calrissian/job.py

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ def add_emptydir_volume_binding(self, name, target):
198198

199199
class KubernetesPodBuilder(object):
200200

201-
def __init__(self, name, builder, container_image, environment, volume_mounts, volumes, command_line, stdout, stderr, stdin, labels, nodeselectors, security_context, serviceaccount, no_network_access_pod_label={}, network_access_pod_label={}):
201+
def __init__(self, name, builder, container_image, environment, volume_mounts, volumes, command_line, stdout, stderr, stdin, labels, nodeselectors, security_context, serviceaccount, no_network_access_pod_labels=None, network_access_pod_labels=None):
202202
self.name = name
203203
self.builder = builder
204204
self.cwl_version = self.builder.cwlVersion
@@ -215,8 +215,8 @@ def __init__(self, name, builder, container_image, environment, volume_mounts, v
215215
self.nodeselectors = nodeselectors
216216
self.security_context = security_context
217217
self.serviceaccount = serviceaccount
218-
self.no_network_access_pod_label = no_network_access_pod_label
219-
self.network_access_pod_label = network_access_pod_label
218+
self.no_network_access_pod_labels = no_network_access_pod_labels
219+
self.network_access_pod_labels = network_access_pod_labels
220220
self.requirements = {} if self.builder.requirements is None else self.builder.requirements
221221
self.hints = [] if self.builder.hints is None else self.builder.hints
222222

@@ -350,15 +350,14 @@ def pod_labels(self):
350350
network_access = False
351351

352352
for requirement in self.requirements:
353-
if requirement["class"] in ["NetworkAccess"]:
354-
network_access = requirement.get("networkAccess")
353+
if "class" in requirement.keys() and requirement["class"] in ["NetworkAccess"]:
354+
network_access = True if requirement.get("networkAccess") == "true" else False
355355
break
356-
357-
if not network_access and self.no_network_access_pod_label:
358-
self.labels = {**self.labels, **self.no_network_access_pod_label}
356+
if not network_access and self.no_network_access_pod_labels:
357+
self.labels = {**self.labels, **self.no_network_access_pod_labels}
359358

360-
if network_access and self.network_access_pod_label:
361-
self.labels = {**self.labels, **self.network_access_pod_label}
359+
if network_access and self.network_access_pod_labels:
360+
self.labels = {**self.labels, **self.network_access_pod_labels}
362361

363362
return {str(k): str(v) for k, v in self.labels.items()}
364363

@@ -536,15 +535,15 @@ def get_pod_labels(self, runtimeContext):
536535
else:
537536
return {}
538537

539-
def get_network_access_pod_label(self, runtimeContext):
540-
if runtimeContext.network_access_pod_label:
541-
return read_yaml(runtimeContext.network_access_pod_label)
538+
def get_network_access_pod_labels(self, runtimeContext):
539+
if runtimeContext.network_access_pod_labels:
540+
return read_yaml(runtimeContext.network_access_pod_labels)
542541
else:
543542
return {}
544543

545-
def get_no_network_access_pod_label(self, runtimeContext):
546-
if runtimeContext.no_network_access_pod_label:
547-
return read_yaml(runtimeContext.no_network_access_pod_label)
544+
def get_no_network_access_pod_labels(self, runtimeContext):
545+
if runtimeContext.no_network_access_pod_labels:
546+
return read_yaml(runtimeContext.no_network_access_pod_labels)
548547
else:
549548
return {}
550549

@@ -621,8 +620,8 @@ def create_kubernetes_runtime(self, runtimeContext):
621620
self.get_pod_nodeselectors(runtimeContext),
622621
self.get_security_context(runtimeContext),
623622
self.get_pod_serviceaccount(runtimeContext),
624-
self.get_no_network_access_pod_label(runtimeContext),
625-
self.get_network_access_pod_label(runtimeContext),
623+
self.get_no_network_access_pod_labels(runtimeContext),
624+
self.get_network_access_pod_labels(runtimeContext),
626625
)
627626
built = k8s_builder.build()
628627
log.debug('{}\n{}{}\n'.format('-' * 80, yaml.dump(built), '-' * 80))

tests/test_job.py

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ class KubernetesPodBuilderTestCase(TestCase):
274274

275275
def setUp(self):
276276
builder = Mock()
277-
builder.cwlVersion = "v1.0"
277+
builder.cwlVersion = "v1.2"
278278
builder.requirements = []
279279
builder.resources = {'cores': 1, 'ram': 1024}
280280
self.name = 'PodName'
@@ -291,12 +291,12 @@ def setUp(self):
291291
self.nodeselectors = {'disktype': 'ssd', 'cachelevel': 2}
292292
self.security_context = { 'runAsUser': os.getuid(),'runAsGroup': os.getgid() }
293293
self.pod_serviceaccount = "podmanager"
294-
self.no_network_access_pod_label = {}
295-
self.network_access_pod_label = {}
294+
self.no_network_access_pod_labels = {"calrissian-network": "disabled"}
295+
self.network_access_pod_labels = {"calrissian-network": "enabled"}
296296
self.pod_builder = KubernetesPodBuilder(self.name, self.builder, self.container_image, self.environment, self.volume_mounts,
297297
self.volumes, self.command_line, self.stdout, self.stderr, self.stdin,
298298
self.labels, self.nodeselectors, self.security_context, self.pod_serviceaccount,
299-
self.no_network_access_pod_label, self.network_access_pod_label)
299+
self.no_network_access_pod_labels, self.network_access_pod_labels)
300300

301301
@patch('calrissian.job.random_tag')
302302
def test_safe_pod_name(self, mock_random_tag):
@@ -382,14 +382,37 @@ def test_gpu_hints(self):
382382
}
383383
self.assertEqual(expected, resources)
384384

385+
def test_network_access_1_2(self):
386+
self.pod_builder.cwl_version = "v1.2"
387+
self.pod_builder.requirements = [OrderedDict([("class", "NetworkAccess"), ("networkAccess", "true")])]
388+
self.assertEqual(self.pod_builder.pod_labels(), {"calrissian-network": "enabled", 'key1':'val1', 'key2':'123'})
389+
390+
def test_no_network_access_1_2(self):
391+
self.pod_builder.cwl_version = "v1.2"
392+
self.pod_builder.requirements = [OrderedDict([("class", "NetworkAccess"), ("networkAccess", "false")])]
393+
self.assertEqual(self.pod_builder.pod_labels(), {"calrissian-network": "disabled", 'key1':'val1', 'key2':'123'})
394+
395+
def test_network_access_1_0(self):
396+
self.pod_builder.cwl_version = "v1.0"
397+
self.pod_builder.requirements = [OrderedDict([])]
398+
self.assertEqual(self.pod_builder.pod_labels(), {"calrissian-network": "enabled", 'key1':'val1', 'key2':'123'})
399+
385400
def test_string_labels(self):
386401
self.pod_builder.labels = {'key1': 123}
387-
self.assertEqual(self.pod_builder.pod_labels(), {'key1':'123'})
402+
self.assertEqual(self.pod_builder.pod_labels(), {"calrissian-network": "disabled", 'key1':'123'})
388403

389404
def test_string_nodeselectors(self):
390405
self.pod_builder.nodeselectors = {'cachelevel': 2}
391406
self.assertEqual(self.pod_builder.pod_nodeselectors(), {'cachelevel':'2'})
392407

408+
def test_string_no_network_access_pod_label(self):
409+
self.pod_builder.no_network_access_pod_labels = {"calrissian-network": "disabled"}
410+
self.assertEqual(self.pod_builder.pod_labels(), {"calrissian-network": "disabled", 'key1': 'val1', 'key2': '123'})
411+
412+
def test_string_network_access_pod_label(self):
413+
self.pod_builder.network_access_pod_labels = {"calrissian-network": "enabled"}
414+
self.assertEqual(self.pod_builder.pod_labels(), {"calrissian-network": "disabled", 'key1': 'val1', 'key2': '123'})
415+
393416
def test_init_containers_empty_when_no_stdout_or_stderr(self):
394417
self.pod_builder.stdout = None
395418
self.pod_builder.stderr = None
@@ -435,6 +458,7 @@ def test_build(self, mock_random_tag):
435458
'labels': {
436459
'key1': 'val1',
437460
'key2': '123',
461+
'calrissian-network': 'disabled',
438462
}
439463
},
440464
'apiVersion': 'v1',

0 commit comments

Comments
 (0)