Python 3 has no dict.iteritems()
(Reminder: cannot use six here, module_utils get shipped to remote machines that may not have six installed -- besides six doens't support Python 2.4.)
This commit is contained in:
parent
9f3e5ceb14
commit
c7be004c19
1 changed files with 18 additions and 9 deletions
|
@ -88,6 +88,15 @@ try:
|
||||||
except NameError:
|
except NameError:
|
||||||
bytes = str # Python 2
|
bytes = str # Python 2
|
||||||
|
|
||||||
|
try:
|
||||||
|
dict.iteritems
|
||||||
|
except AttributeError:
|
||||||
|
def iteritems(d): # Python 3
|
||||||
|
return d.items()
|
||||||
|
else:
|
||||||
|
def iteritems(d): # Python 2
|
||||||
|
return d.iteritems()
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import json
|
import json
|
||||||
|
@ -299,7 +308,7 @@ def json_dict_unicode_to_bytes(d, encoding='utf-8'):
|
||||||
if isinstance(d, unicode):
|
if isinstance(d, unicode):
|
||||||
return d.encode(encoding)
|
return d.encode(encoding)
|
||||||
elif isinstance(d, dict):
|
elif isinstance(d, dict):
|
||||||
return dict(imap(json_dict_unicode_to_bytes, d.iteritems(), repeat(encoding)))
|
return dict(imap(json_dict_unicode_to_bytes, iteritems(d), repeat(encoding)))
|
||||||
elif isinstance(d, list):
|
elif isinstance(d, list):
|
||||||
return list(imap(json_dict_unicode_to_bytes, d, repeat(encoding)))
|
return list(imap(json_dict_unicode_to_bytes, d, repeat(encoding)))
|
||||||
elif isinstance(d, tuple):
|
elif isinstance(d, tuple):
|
||||||
|
@ -317,7 +326,7 @@ def json_dict_bytes_to_unicode(d, encoding='utf-8'):
|
||||||
if isinstance(d, str):
|
if isinstance(d, str):
|
||||||
return unicode(d, encoding)
|
return unicode(d, encoding)
|
||||||
elif isinstance(d, dict):
|
elif isinstance(d, dict):
|
||||||
return dict(imap(json_dict_bytes_to_unicode, d.iteritems(), repeat(encoding)))
|
return dict(imap(json_dict_bytes_to_unicode, iteritems(d), repeat(encoding)))
|
||||||
elif isinstance(d, list):
|
elif isinstance(d, list):
|
||||||
return list(imap(json_dict_bytes_to_unicode, d, repeat(encoding)))
|
return list(imap(json_dict_bytes_to_unicode, d, repeat(encoding)))
|
||||||
elif isinstance(d, tuple):
|
elif isinstance(d, tuple):
|
||||||
|
@ -414,7 +423,7 @@ class AnsibleModule(object):
|
||||||
self.aliases = {}
|
self.aliases = {}
|
||||||
|
|
||||||
if add_file_common_args:
|
if add_file_common_args:
|
||||||
for k, v in FILE_COMMON_ARGUMENTS.iteritems():
|
for k, v in FILE_COMMON_ARGUMENTS.items():
|
||||||
if k not in self.argument_spec:
|
if k not in self.argument_spec:
|
||||||
self.argument_spec[k] = v
|
self.argument_spec[k] = v
|
||||||
|
|
||||||
|
@ -950,7 +959,7 @@ class AnsibleModule(object):
|
||||||
|
|
||||||
def _handle_aliases(self):
|
def _handle_aliases(self):
|
||||||
aliases_results = {} #alias:canon
|
aliases_results = {} #alias:canon
|
||||||
for (k,v) in self.argument_spec.iteritems():
|
for (k,v) in self.argument_spec.items():
|
||||||
self._legal_inputs.append(k)
|
self._legal_inputs.append(k)
|
||||||
aliases = v.get('aliases', None)
|
aliases = v.get('aliases', None)
|
||||||
default = v.get('default', None)
|
default = v.get('default', None)
|
||||||
|
@ -971,7 +980,7 @@ class AnsibleModule(object):
|
||||||
return aliases_results
|
return aliases_results
|
||||||
|
|
||||||
def _check_arguments(self, check_invalid_arguments):
|
def _check_arguments(self, check_invalid_arguments):
|
||||||
for (k,v) in self.params.iteritems():
|
for (k,v) in self.params.items():
|
||||||
|
|
||||||
if k == '_ansible_check_mode' and v:
|
if k == '_ansible_check_mode' and v:
|
||||||
if not self.supports_check_mode:
|
if not self.supports_check_mode:
|
||||||
|
@ -1023,7 +1032,7 @@ class AnsibleModule(object):
|
||||||
def _check_required_arguments(self):
|
def _check_required_arguments(self):
|
||||||
''' ensure all required arguments are present '''
|
''' ensure all required arguments are present '''
|
||||||
missing = []
|
missing = []
|
||||||
for (k,v) in self.argument_spec.iteritems():
|
for (k,v) in self.argument_spec.items():
|
||||||
required = v.get('required', False)
|
required = v.get('required', False)
|
||||||
if required and k not in self.params:
|
if required and k not in self.params:
|
||||||
missing.append(k)
|
missing.append(k)
|
||||||
|
@ -1046,7 +1055,7 @@ class AnsibleModule(object):
|
||||||
|
|
||||||
def _check_argument_values(self):
|
def _check_argument_values(self):
|
||||||
''' ensure all arguments have the requested values, and there are no stray arguments '''
|
''' ensure all arguments have the requested values, and there are no stray arguments '''
|
||||||
for (k,v) in self.argument_spec.iteritems():
|
for (k,v) in self.argument_spec.items():
|
||||||
choices = v.get('choices',None)
|
choices = v.get('choices',None)
|
||||||
if choices is None:
|
if choices is None:
|
||||||
continue
|
continue
|
||||||
|
@ -1189,7 +1198,7 @@ class AnsibleModule(object):
|
||||||
|
|
||||||
def _check_argument_types(self):
|
def _check_argument_types(self):
|
||||||
''' ensure all arguments have the requested type '''
|
''' ensure all arguments have the requested type '''
|
||||||
for (k, v) in self.argument_spec.iteritems():
|
for (k, v) in self.argument_spec.items():
|
||||||
wanted = v.get('type', None)
|
wanted = v.get('type', None)
|
||||||
if wanted is None:
|
if wanted is None:
|
||||||
continue
|
continue
|
||||||
|
@ -1208,7 +1217,7 @@ class AnsibleModule(object):
|
||||||
self.fail_json(msg="argument %s is of type %s and we were unable to convert to %s" % (k, type(value), wanted))
|
self.fail_json(msg="argument %s is of type %s and we were unable to convert to %s" % (k, type(value), wanted))
|
||||||
|
|
||||||
def _set_defaults(self, pre=True):
|
def _set_defaults(self, pre=True):
|
||||||
for (k,v) in self.argument_spec.iteritems():
|
for (k,v) in self.argument_spec.items():
|
||||||
default = v.get('default', None)
|
default = v.get('default', None)
|
||||||
if pre == True:
|
if pre == True:
|
||||||
# this prevents setting defaults on required items
|
# this prevents setting defaults on required items
|
||||||
|
|
Loading…
Reference in a new issue