Skip to content

Commit 8c364ab

Browse files
committed
Merge pull request #593 from helgi/secrets_decode
feat(k8s): base64 decode secrets on the fly and insert into response
2 parents 60e500a + 52d939b commit 8c364ab

1 file changed

Lines changed: 11 additions & 9 deletions

File tree

rootfs/scheduler/__init__.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import io
12
import json
23
import logging
34
import os
@@ -475,7 +476,8 @@ def create(self, namespace, **kwargs):
475476
try:
476477
self._get_secret(namespace, 'objectstorage-keyfile')
477478
except KubeException:
478-
self._create_objectstore_secret(namespace)
479+
secret = self._get_secret('deis', 'objectstorage-keyfile').json()
480+
self._create_secret(namespace, 'objectstorage-keyfile', secret['data'])
479481

480482
try:
481483
self._get_service(namespace, namespace)
@@ -1056,20 +1058,20 @@ def _healthcheck(self, controller, routable=False, path='/', port=5000, delay=30
10561058

10571059
# SECRETS #
10581060
# http://kubernetes.io/v1.1/docs/api-reference/v1/definitions.html#_v1_secret
1059-
def _create_objectstore_secret(self, namespace):
1060-
secret = self._get_secret('deis', 'objectstorage-keyfile').json()
1061-
data = {}
1062-
for key, value in secret['data'].items():
1063-
data[key] = base64.b64decode(value)
1064-
self._create_secret(namespace, 'objectstorage-keyfile', data)
1065-
10661061
def _get_secret(self, namespace, name):
10671062
url = self._api("/namespaces/{}/secrets/{}", namespace, name)
10681063
response = self.session.get(url)
10691064
if unhealthy(response.status_code):
10701065
error(response, 'get Secret "{}" in Namespace "{}"', name, namespace)
10711066

1072-
# FIXME decode data - can it be done without affecting the response object too much???
1067+
# decode the base64 data
1068+
secrets = response.json()
1069+
for key, value in secrets['data'].items():
1070+
secrets['data'][key] = base64.b64decode(value).decode(encoding='UTF-8')
1071+
1072+
# tell python-requests it actually hasn't consumed the data
1073+
response._content_consumed = False
1074+
response.raw = io.StringIO(json.dumps(secrets))
10731075

10741076
return response
10751077

0 commit comments

Comments
 (0)