@ -23,7 +23,8 @@ NET_COMMON_ARGS = dict(
host = dict ( required = True ) ,
port = dict ( default = 22 , type = ' int ' ) ,
username = dict ( required = True ) ,
password = dict ( no_log = True )
password = dict ( no_log = True ) ,
provider = dict ( )
)
def to_list ( val ) :
@ -53,10 +54,10 @@ class Cli(object):
def send ( self , commands ) :
return self . shell . send ( commands )
class Iosxr Module( AnsibleModule ) :
class Network Module( AnsibleModule ) :
def __init__ ( self , * args , * * kwargs ) :
super ( Iosxr Module, self ) . __init__ ( * args , * * kwargs )
super ( Network Module, self ) . __init__ ( * args , * * kwargs )
self . connection = None
self . _config = None
@ -66,6 +67,14 @@ class IosxrModule(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 )
@ -96,26 +105,18 @@ class IosxrModule(AnsibleModule):
return self . execute ( ' show running-config ' ) [ 0 ]
def get_module ( * * kwargs ) :
""" Return instance of Iosxr 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 = Iosxr Module( * * kwargs )
module = Network Module( * * kwargs )
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