From 84e5c0644eb20b34da33aee8921c8f8b84e75f4d Mon Sep 17 00:00:00 2001 From: Joseph Schorr Date: Mon, 2 Feb 2015 14:07:32 -0500 Subject: [PATCH] Address comments --- endpoints/verbs.py | 2 +- formats/aci.py | 5 +++-- test/data/test.db | Bin 251904 -> 684032 bytes util/tarlayerformat.py | 3 +++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/endpoints/verbs.py b/endpoints/verbs.py index 6e9de7d90..8eb46bcc3 100644 --- a/endpoints/verbs.py +++ b/endpoints/verbs.py @@ -168,7 +168,7 @@ def _repo_verb(namespace, repository, tag, verb, formatter, checker=None, **kwar @verbs.route('/aci/////aci///', methods=['GET']) @process_auth -def get_rocket_image(server, namespace, repository, tag, os, arch): +def get_aci_image(server, namespace, repository, tag, os, arch): def checker(image_json): # Verify the architecture and os. operating_system = image_json.get('os', 'linux') diff --git a/formats/aci.py b/formats/aci.py index 156858ed2..1d82d8c6a 100644 --- a/formats/aci.py +++ b/formats/aci.py @@ -150,7 +150,7 @@ class ACIImage(TarImageFormatter): manifest = { "acKind": "ImageManifest", - "acVersion": "0.1.1", + "acVersion": "0.2.0", "name": '%s/%s/%s/%s' % (hostname, namespace, repository, tag), "labels": [ { @@ -172,7 +172,8 @@ class ACIImage(TarImageFormatter): "group": config.get('Group', '') or 'root', "eventHandlers": [], "workingDirectory": config.get('WorkingDir', ''), - "environment": {key:value for (key, value) in [e.split('=') for e in config.get('Env')]}, + "environment": [(key, value) + for (key, value) in [e.split('=') for e in config.get('Env')]], "isolators": self._build_isolators(config), "mountPoints": self._build_volumes(config), "ports": self._build_ports(config), diff --git a/test/data/test.db b/test/data/test.db index cdaa66e57f768e5e4463ddc644aca0f4add444b4..c37aec119f0b2d599ca2fc5db9c1e1660280afa0 100644 GIT binary patch delta 24289 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 IoZI^U0OrgtQUCw| delta 25833 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 M`~Mw(#@I#w55Zu_YXATM diff --git a/util/tarlayerformat.py b/util/tarlayerformat.py index 3d6ddd94b..37aee16a7 100644 --- a/util/tarlayerformat.py +++ b/util/tarlayerformat.py @@ -39,6 +39,9 @@ class TarLayerFormat(object): # Yield the tar header. if self.path_prefix: + # Note: We use a copy here because we need to make sure we copy over all the internal + # data of the tar header. We cannot use frombuf(tobuf()), however, because it doesn't + # properly handle large filenames. clone = copy.deepcopy(tar_info) clone.name = os.path.join(self.path_prefix, clone.name) yield clone.tobuf()