Update gce.py to correctly handle propagated metadata type from a mother template

My project is using Ansible to automate cloud build process. Ansible has a core module gce.py for managing GCE instances. 
  We've come across a use case that's not yet supported - when executing ansible-playbook, if a child template is included, then metadata which is defined in and propagated from the mother template is treated as string type and not parsed correctly(which instead is dictionary type), and triggers release flow failure.
   We currently put some fix by explicitly casting metadata to string type in our own branch, but would like to contribute the fix to Ansible so that everyone onboarding GCE and using Ansible for release management could benefit from it, or hear owner's opinion on fixing the issue if there's a better fix in owner's mind:)
This commit is contained in:
HelenaTian 2015-05-12 20:53:36 -07:00
parent ed6b95a0bb
commit f620a0ac41

View file

@ -317,7 +317,7 @@ def create_instances(module, gce, instance_names):
# [ {'key': key1, 'value': value1}, {'key': key2, 'value': value2}, ...] # [ {'key': key1, 'value': value1}, {'key': key2, 'value': value2}, ...]
if metadata: if metadata:
try: try:
md = literal_eval(metadata) md = literal_eval(str(metadata))
if not isinstance(md, dict): if not isinstance(md, dict):
raise ValueError('metadata must be a dict') raise ValueError('metadata must be a dict')
except ValueError, e: except ValueError, e: