Skip to content

Commit 418eef7

Browse files
committed
fix(registry): Add unit tests
1 parent 1d24ed6 commit 418eef7

2 files changed

Lines changed: 37 additions & 10 deletions

File tree

rootfs/scheduler/__init__.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -642,19 +642,11 @@ def _set_container(self, namespace, container_name, data, **kwargs): # noqa
642642
else:
643643
self._default_readiness_probe(data, kwargs.get('build_type'), env.get('PORT', None))
644644

645-
def _set_image_secret(self, data, namespace, **kwargs):
646-
"""
647-
Take registry information and set as an imagePullSecret for an RC / Deployment
648-
http://kubernetes.io/docs/user-guide/images/#specifying-imagepullsecrets-on-a-pod
649-
"""
650-
registry = kwargs.get('registry', {})
651-
if not registry:
652-
return
653-
645+
def _get_private_registry_config(self, registry, image):
654646
# try to get the hostname information
655647
hostname = registry.get('hostname', None)
656648
if not hostname:
657-
hostname, _ = docker_auth.split_repo_name(kwargs.get('image'))
649+
hostname, _ = docker_auth.split_repo_name(image)
658650
if hostname == docker_auth.INDEX_NAME:
659651
hostname = "https://index.docker.io/v1/"
660652

@@ -668,6 +660,17 @@ def _set_image_secret(self, data, namespace, **kwargs):
668660
}
669661
}
670662
})
663+
return docker_config
664+
665+
def _set_image_secret(self, data, namespace, **kwargs):
666+
"""
667+
Take registry information and set as an imagePullSecret for an RC / Deployment
668+
http://kubernetes.io/docs/user-guide/images/#specifying-imagepullsecrets-on-a-pod
669+
"""
670+
registry = kwargs.get('registry', {})
671+
if not registry:
672+
return
673+
docker_config = self._get_private_registry_config(registry, kwargs.get('image')) # noqa
671674
secret_data = {'.dockerconfigjson': docker_config}
672675

673676
secret_name = 'private-registry'

rootfs/scheduler/tests/test_scheduler.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
from django.test import TestCase
88

99
from scheduler import mock
10+
import base64
11+
import json
1012

1113

1214
class SchedulerTest(TestCase):
@@ -66,3 +68,25 @@ def test_set_container_limits(self):
6668
self.assertEqual(data['resources']['limits']['cpu'], '500m', 'CPU should be lower cased')
6769
# make sure first char of Memory is upper cased
6870
self.assertEqual(data['resources']['limits']['memory'], '1024Mi', 'Memory should be upper cased') # noqa
71+
72+
def test_get_private_registry_config(self):
73+
registry = {'username': 'test', 'password': 'test'}
74+
auth = bytes('{}:{}'.format("test", "test"), 'UTF-8')
75+
encAuth = base64.b64encode(auth).decode(encoding='UTF-8')
76+
image = 'test/test'
77+
78+
dockerConfig = self.scheduler_client._get_private_registry_config(registry, image)
79+
dockerConfig = json.loads(dockerConfig)
80+
expected = {"https://index.docker.io/v1/": {
81+
"auth": encAuth
82+
}}
83+
self.assertEqual(dockerConfig.get('auths'), expected)
84+
85+
image = "quay.io/test/test"
86+
87+
dockerConfig = self.scheduler_client._get_private_registry_config(registry, image)
88+
dockerConfig = json.loads(dockerConfig)
89+
expected = {"quay.io": {
90+
"auth": encAuth
91+
}}
92+
self.assertEqual(dockerConfig.get('auths'), expected)

0 commit comments

Comments
 (0)