aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/build_defs/docker/rewrite_json.py
diff options
context:
space:
mode:
authorGravatar Damien Martin-Guillerez <dmarting@google.com>2015-08-07 19:08:21 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2015-08-10 10:09:38 +0000
commit63e9822b4205e474c7aaecc26e84d920a4ebf8ed (patch)
treec6d6a2ba96986f3cac67f100ad6f69629bf7979d /tools/build_defs/docker/rewrite_json.py
parente588d6544be98a275d4e965c5add45127846c7ab (diff)
docker_build: fix JSON rewriting when some fields are null
Image generated by docker build might put "null" as entry value in the JSON metadata. Ignore those value when doing the deep copy to avoid error on assigning to "NoneType". -- MOS_MIGRATED_REVID=100145909
Diffstat (limited to 'tools/build_defs/docker/rewrite_json.py')
-rw-r--r--tools/build_defs/docker/rewrite_json.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/tools/build_defs/docker/rewrite_json.py b/tools/build_defs/docker/rewrite_json.py
index 846bf5ceaa..850e321f1f 100644
--- a/tools/build_defs/docker/rewrite_json.py
+++ b/tools/build_defs/docker/rewrite_json.py
@@ -91,6 +91,14 @@ def Resolve(value, environment):
os.environ = outer_env
+def DeepCopySkipNull(data):
+ """Do a deep copy, skipping null entry."""
+ if type(data) == type(dict()):
+ return dict((DeepCopySkipNull(k), DeepCopySkipNull(v))
+ for k, v in data.iteritems() if v is not None)
+ return copy.deepcopy(data)
+
+
def RewriteMetadata(data, options):
"""Rewrite and return a copy of the input data according to options.
@@ -106,7 +114,7 @@ def RewriteMetadata(data, options):
Raises:
Exception: a required option was missing.
"""
- output = copy.deepcopy(data)
+ output = DeepCopySkipNull(data)
if not options.name:
raise Exception('Missing required option: name')