@ -26,6 +26,7 @@ NET_COMMON_ARGS = dict(
password = dict ( no_log = True ) ,
authorize = dict ( default = False , type = ' bool ' ) ,
auth_pass = dict ( no_log = True ) ,
provider = dict ( )
)
def to_list ( val ) :
@ -59,10 +60,10 @@ class Cli(object):
def send ( self , commands ) :
return self . shell . send ( commands )
class Ios Module( AnsibleModule ) :
class Network Module( AnsibleModule ) :
def __init__ ( self , * args , * * kwargs ) :
super ( Ios Module, self ) . __init__ ( * args , * * kwargs )
super ( Network Module, self ) . __init__ ( * args , * * kwargs )
self . connection = None
self . _config = None
@ -72,6 +73,14 @@ class IosModule(AnsibleModule):
self . _config = self . get_config ( )
return self . _config
def _load_params ( self ) :
params = super ( NetworkModule , self ) . _load_params ( )
provider = params . get ( ' provider ' ) or dict ( )
for key , value in provider . items ( ) :
if key in NET_COMMON_ARGS . keys ( ) :
params [ key ] = value
return params
def connect ( self ) :
try :
self . connection = Cli ( self )
@ -107,27 +116,19 @@ class IosModule(AnsibleModule):
return self . execute ( cmd ) [ 0 ]
def get_module ( * * kwargs ) :
""" Return instance of Ios Module
""" Return instance of Network Module
"""
argument_spec = NET_COMMON_ARGS . copy ( )
if kwargs . get ( ' argument_spec ' ) :
argument_spec . update ( kwargs [ ' argument_spec ' ] )
kwargs [ ' argument_spec ' ] = argument_spec
kwargs [ ' check_invalid_arguments ' ] = False
module = Ios Module( * * kwargs )
module = Network Module( * * kwargs )
# HAS_PARAMIKO is set by module_utils/shell.py
if not HAS_PARAMIKO :
module . fail_json ( msg = ' paramiko is required but does not appear to be installed ' )
# copy in values from local action.
params = json_dict_unicode_to_bytes ( json . loads ( MODULE_COMPLEX_ARGS ) )
for key , value in params . iteritems ( ) :
module . params [ key ] = value
module . connect ( )
return module