@ -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 . ite rite ms( ) :
for k , v in FILE_COMMON_ARGUMENTS . ite ms( ) :
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 . ite rite ms( ) :
for ( k , v ) in self . argument_spec . ite ms( ) :
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 . ite rite ms( ) :
for ( k , v ) in self . params . ite ms( ) :
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 . ite rite ms( ) :
for ( k , v ) in self . argument_spec . ite ms( ) :
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 . ite rite ms( ) :
for ( k , v ) in self . argument_spec . ite ms( ) :
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 . ite rite ms( ) :
for ( k , v ) in self . argument_spec . ite ms( ) :
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 . ite rite ms( ) :
for ( k , v ) in self . argument_spec . ite ms( ) :
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