@ -33,7 +33,7 @@ import json
import re
from ansible . module_utils . _text import to_text
from ansible . module_utils . basic import env_fallback , return_values
from ansible . module_utils . basic import env_fallback , return_values , get_timestamp
from ansible . module_utils . network . common . utils import to_list , ComplexList
from ansible . module_utils . connection import Connection , ConnectionError
from ansible . module_utils . common . _collections_compat import Mapping
@ -154,13 +154,13 @@ class Cli:
self . _device_configs [ cmd ] = cfg
return cfg
def run_commands ( self , commands , check_rc = True ):
def run_commands ( self , commands , check_rc = True , return_timestamps = False ):
""" Run list of commands on remote device and return results
"""
connection = self . _get_connection ( )
try :
out = connection . run_commands ( commands , check_rc )
out , timestamps = connection . run_commands ( commands , check_rc )
if check_rc == ' retry_json ' :
capabilities = self . get_capabilities ( )
network_api = capabilities . get ( ' network_api ' )
@ -170,8 +170,11 @@ class Cli:
if ( ' Invalid command at ' in resp or ' Ambiguous command at ' in resp ) and ' json ' in resp :
if commands [ index ] [ ' output ' ] == ' json ' :
commands [ index ] [ ' output ' ] = ' text '
out = connection . run_commands ( commands , check_rc )
return out
out , timestamps = connection . run_commands ( commands , check_rc )
if return_timestamps :
return out , timestamps
else :
return out
except ConnectionError as exc :
self . _module . fail_json ( msg = to_text ( exc ) )
@ -339,6 +342,7 @@ class LocalNxapi:
headers = { ' Content-Type ' : ' application/json ' }
result = list ( )
timestamps = list ( )
timeout = self . _module . params [ ' timeout ' ]
use_proxy = self . _module . params [ ' provider ' ] [ ' use_proxy ' ]
@ -346,6 +350,7 @@ class LocalNxapi:
if self . _nxapi_auth :
headers [ ' Cookie ' ] = self . _nxapi_auth
timestamp = get_timestamp ( )
response , headers = fetch_url (
self . _module , self . _url , data = req , headers = headers ,
timeout = timeout , method = ' POST ' , use_proxy = use_proxy
@ -373,12 +378,13 @@ class LocalNxapi:
self . _error ( output = output , * * item )
elif ' body ' in item :
result . append ( item [ ' body ' ] )
timestamps . append ( timestamp )
# else:
# error in command but since check_status is disabled
# silently drop it.
# result.append(item['msg'])
return result
return result , timestamps
def get_config ( self , flags = None ) :
""" Retrieves the current config from the device or cache
@ -392,17 +398,18 @@ class LocalNxapi:
try :
return self . _device_configs [ cmd ]
except KeyError :
out = self . send_request ( cmd )
out , out_timestamps = self . send_request ( cmd )
cfg = str ( out [ 0 ] ) . strip ( )
self . _device_configs [ cmd ] = cfg
return cfg
def run_commands ( self , commands , check_rc = True ):
def run_commands ( self , commands , check_rc = True , return_timestamps = False ):
""" Run list of commands on remote device and return results
"""
output = None
queue = list ( )
responses = list ( )
timestamps = list ( )
def _send ( commands , output ) :
return self . send_request ( commands , output , check_status = check_rc )
@ -413,16 +420,23 @@ class LocalNxapi:
item [ ' output ' ] = ' json '
if all ( ( output == ' json ' , item [ ' output ' ] == ' text ' ) ) or all ( ( output == ' text ' , item [ ' output ' ] == ' json ' ) ) :
responses . extend ( _send ( queue , output ) )
out , out_timestamps = _send ( queue , output )
responses . extend ( out )
timestamps . extend ( out_timestamps )
queue = list ( )
output = item [ ' output ' ] or ' json '
queue . append ( item [ ' command ' ] )
if queue :
responses . extend ( _send ( queue , output ) )
out , out_timestamps = _send ( queue , output )
responses . extend ( out )
timestamps . extend ( out_timestamps )
return responses
if return_timestamps :
return responses , timestamps
else :
return responses
def load_config ( self , commands , return_error = False , opts = None , replace = None ) :
""" Sends the ordered set of commands to the device
@ -435,8 +449,8 @@ class LocalNxapi:
commands = to_list ( commands )
msg = self . send_request ( commands , output = ' config ' , check_status = True ,
return_error = return_error , opts = opts )
msg , msg_timestamps = self . send_request ( commands , output = ' config ' , check_status = True ,
return_error = return_error , opts = opts )
if return_error :
return msg
else :
@ -515,7 +529,7 @@ class HttpApi:
return self . _connection_obj
def run_commands ( self , commands , check_rc = True ):
def run_commands ( self , commands , check_rc = True , return_timestamps = False ):
""" Runs list of commands on remote device and returns results
"""
try :
@ -702,9 +716,9 @@ def get_config(module, flags=None):
return conn . get_config ( flags = flags )
def run_commands ( module , commands , check_rc = True ):
def run_commands ( module , commands , check_rc = True , return_timestamps = False ):
conn = get_connection ( module )
return conn . run_commands ( to_command ( module , commands ) , check_rc )
return conn . run_commands ( to_command ( module , commands ) , check_rc , return_timestamps )
def load_config ( module , config , return_error = False , opts = None , replace = None ) :