@ -25,6 +25,7 @@
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
from ansible . module_utils . _text import to_text
from ansible . module_utils . basic import env_fallback , return_values
from ansible . module_utils . network_common import to_list , ComplexList
from ansible . module_utils . connection import exec_command
@ -43,20 +44,22 @@ ios_argument_spec = {
' provider ' : dict ( type = ' dict ' ) ,
}
def check_args ( module , warnings ) :
provider = module . params [ ' provider ' ] or { }
for key in ios_argument_spec :
if key not in [ ' provider ' , ' authorize ' ] and module . params [ key ] :
warnings . append ( ' argument %s has been deprecated and will be '
' removed in a future version ' % key )
warnings . append ( ' argument %s has been deprecated and will be removed in a future version ' % key )
if provider :
for param in ( ' auth_pass ' , ' password ' ) :
if provider . get ( param ) :
module . no_log_values . update ( return_values ( provider [ param ] ) )
def get_defaults_flag ( module ) :
rc , out , err = exec_command ( module , ' show running-config ? ' )
out = to_text ( out , errors = ' surrogate_then_replace ' )
commands = set ( )
for line in out . splitlines ( ) :
@ -68,6 +71,7 @@ def get_defaults_flag(module):
else :
return ' full '
def get_config ( module , flags = [ ] ) :
cmd = ' show running-config '
cmd + = ' ' . join ( flags )
@ -78,11 +82,12 @@ def get_config(module, flags=[]):
except KeyError :
rc , out , err = exec_command ( module , cmd )
if rc != 0 :
module . fail_json ( msg = ' unable to retrieve current config ' , stderr = err)
cfg = str ( out ) . strip ( )
module . fail_json ( msg = ' unable to retrieve current config ' , stderr = to_text( err, errors = ' surrogate_then_replace ' ) )
cfg = to_text ( out , errors = ' surrogate_then_replace ' ) . strip ( )
_DEVICE_CONFIGS [ cmd ] = cfg
return cfg
def to_commands ( module , commands ) :
spec = {
' command ' : dict ( key = True ) ,
@ -100,21 +105,22 @@ def run_commands(module, commands, check_rc=True):
cmd = module . jsonify ( cmd )
rc , out , err = exec_command ( module , cmd )
if check_rc and rc != 0 :
module . fail_json ( msg = err, rc = rc )
responses . append ( out)
module . fail_json ( msg = to_text( err, errors = ' surrogate_then_replace ' ) , rc = rc )
responses . append ( to_text( out, errors = ' surrogate_then_replace ' ) )
return responses
def load_config ( module , commands ) :
rc , out , err = exec_command ( module , ' configure terminal ' )
if rc != 0 :
module . fail_json ( msg = ' unable to enter configuration mode ' , err = err)
module . fail_json ( msg = ' unable to enter configuration mode ' , err = to_text( out , errors= ' surrogate_then_replace ' ) )
for command in to_list ( commands ) :
if command == ' end ' :
continue
rc , out , err = exec_command ( module , command )
if rc != 0 :
module . fail_json ( msg = err, command = command , rc = rc )
module . fail_json ( msg = to_text( err, errors = ' surrogate_then_replace ' ) , command = command , rc = rc )
exec_command ( module , ' end ' )