From cf1c3cf5b4dec39f1e6cdf05443866c9fab9d29c Mon Sep 17 00:00:00 2001 From: Matt Moore Date: Wed, 28 Feb 2018 04:02:15 +0000 Subject: [PATCH] Properly support multi-document yaml files. Fixes: https://github.com/bazelbuild/rules_k8s/issues/116 --- examples/todocontroller/deployment.yaml | 4 ++++ k8s/BUILD | 3 +++ k8s/resolver.py | 8 ++------ k8s/reverser.py | 7 ++----- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/examples/todocontroller/deployment.yaml b/examples/todocontroller/deployment.yaml index 730970cb..bfe470c0 100644 --- a/examples/todocontroller/deployment.yaml +++ b/examples/todocontroller/deployment.yaml @@ -2,6 +2,10 @@ apiVersion: apps/v1beta1 kind: Deployment metadata: name: todo-controller-staging + annotations: + rules-k8s.bazel.io/foo: | + --- + foo: bar spec: replicas: 1 template: diff --git a/k8s/BUILD b/k8s/BUILD index 2fe00711..059c94aa 100644 --- a/k8s/BUILD +++ b/k8s/BUILD @@ -72,4 +72,7 @@ par_binary( srcs = ["reverser.py"], main = "reverser.py", visibility = ["//visibility:public"], + deps = [ + "@yaml", + ], ) diff --git a/k8s/resolver.py b/k8s/resolver.py index a44b39e9..19fb5b7c 100644 --- a/k8s/resolver.py +++ b/k8s/resolver.py @@ -50,7 +50,6 @@ 'publishing them.')) _THREADS = 32 -_DOCUMENT_DELIMITER = '---\n' def Resolve(input, string_to_digest): @@ -79,7 +78,7 @@ def walk(o): return walk_string(o) return o - return yaml.dump(walk(yaml.load(input))) + return yaml.dump_all(map(walk, yaml.load_all(input))) def StringToDigest(string, overrides, transport): @@ -186,10 +185,7 @@ def _StringToDigest(t): unseen_strings.remove(t) return StringToDigest(t, overrides, transport) - content = _DOCUMENT_DELIMITER.join([ - Resolve(x, _StringToDigest) - for x in inputs.split(_DOCUMENT_DELIMITER) - ]) + content = Resolve(inputs, _StringToDigest) if len(unseen_strings) > 0: print('The following image references were not found: [%s]' % "\n".join([ diff --git a/k8s/reverser.py b/k8s/reverser.py index 37a45a24..86619be0 100644 --- a/k8s/reverser.py +++ b/k8s/reverser.py @@ -16,7 +16,7 @@ from __future__ import print_function import argparse - +import yaml parser = argparse.ArgumentParser( description='Reverse a potential multi-document input.') @@ -25,8 +25,6 @@ '--template', action='store', help='The template file to resolve.') -_DOCUMENT_DELIMITER = '---\n' - def main(): args = parser.parse_args() @@ -34,8 +32,7 @@ def main(): with open(args.template, 'r') as f: inputs = f.read() - content = _DOCUMENT_DELIMITER.join( - reversed(inputs.split(_DOCUMENT_DELIMITER))) + content = yaml.dump_all(reversed([x for x in yaml.load_all(inputs)])) print(content)