@ -20,8 +20,9 @@
from __future__ import ( absolute_import , division , print_function )
from __future__ import ( absolute_import , division , print_function )
__metaclass__ = type
__metaclass__ = type
from ansible . compat . tests . mock import patch
from ansible . compat . tests . mock import patch , MagicMock
from ansible . modules . network . iosxr import iosxr_config
from ansible . modules . network . iosxr import iosxr_config
from ansible . plugins . cliconf . iosxr import Cliconf
from units . modules . utils import set_module_args
from units . modules . utils import set_module_args
from . iosxr_module import TestIosxrModule , load_fixture
from . iosxr_module import TestIosxrModule , load_fixture
@ -35,14 +36,25 @@ class TestIosxrConfigModule(TestIosxrModule):
self . patcher_get_config = patch ( ' ansible.modules.network.iosxr.iosxr_config.get_config ' )
self . patcher_get_config = patch ( ' ansible.modules.network.iosxr.iosxr_config.get_config ' )
self . mock_get_config = self . patcher_get_config . start ( )
self . mock_get_config = self . patcher_get_config . start ( )
self . patcher_exec_command = patch ( ' ansible.modules.network.iosxr.iosxr_config.load_config ' )
self . patcher_exec_command = patch ( ' ansible.modules.network.iosxr.iosxr_config.load_config ' )
self . mock_exec_command = self . patcher_exec_command . start ( )
self . mock_exec_command = self . patcher_exec_command . start ( )
self . mock_get_connection = patch ( ' ansible.modules.network.iosxr.iosxr_config.get_connection ' )
self . get_connection = self . mock_get_connection . start ( )
self . conn = self . get_connection ( )
self . conn . edit_config = MagicMock ( )
self . cliconf_obj = Cliconf ( MagicMock ( ) )
self . running_config = load_fixture ( ' iosxr_config_config.cfg ' )
def tearDown ( self ) :
def tearDown ( self ) :
super ( TestIosxrConfigModule , self ) . tearDown ( )
super ( TestIosxrConfigModule , self ) . tearDown ( )
self . patcher_get_config . stop ( )
self . patcher_get_config . stop ( )
self . patcher_exec_command . stop ( )
self . patcher_exec_command . stop ( )
self . mock_get_connection . stop ( )
def load_fixtures ( self , commands = None ) :
def load_fixtures ( self , commands = None ) :
config_file = ' iosxr_config_config.cfg '
config_file = ' iosxr_config_config.cfg '
@ -52,11 +64,13 @@ class TestIosxrConfigModule(TestIosxrModule):
def test_iosxr_config_unchanged ( self ) :
def test_iosxr_config_unchanged ( self ) :
src = load_fixture ( ' iosxr_config_config.cfg ' )
src = load_fixture ( ' iosxr_config_config.cfg ' )
set_module_args ( dict ( src = src ) )
set_module_args ( dict ( src = src ) )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( src , src ) )
self . execute_module ( )
self . execute_module ( )
def test_iosxr_config_src ( self ) :
def test_iosxr_config_src ( self ) :
src = load_fixture ( ' iosxr_config_src.cfg ' )
src = load_fixture ( ' iosxr_config_src.cfg ' )
set_module_args ( dict ( src = src ) )
set_module_args ( dict ( src = src ) )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( src , self . running_config ) )
commands = [ ' hostname foo ' , ' interface GigabitEthernet0/0 ' ,
commands = [ ' hostname foo ' , ' interface GigabitEthernet0/0 ' ,
' no ip address ' ]
' no ip address ' ]
self . execute_module ( changed = True , commands = commands )
self . execute_module ( changed = True , commands = commands )
@ -67,34 +81,51 @@ class TestIosxrConfigModule(TestIosxrModule):
self . assertIn ( ' __backup__ ' , result )
self . assertIn ( ' __backup__ ' , result )
def test_iosxr_config_lines_wo_parents ( self ) :
def test_iosxr_config_lines_wo_parents ( self ) :
set_module_args ( dict ( lines = [ ' hostname foo ' ] ) )
lines = [ ' hostname foo ' ]
set_module_args ( dict ( lines = lines ) )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( ' \n ' . join ( lines ) , self . running_config ) )
commands = [ ' hostname foo ' ]
commands = [ ' hostname foo ' ]
self . execute_module ( changed = True , commands = commands )
self . execute_module ( changed = True , commands = commands )
def test_iosxr_config_lines_w_parents ( self ) :
def test_iosxr_config_lines_w_parents ( self ) :
set_module_args ( dict ( lines = [ ' shutdown ' ] , parents = [ ' interface GigabitEthernet0/0 ' ] ) )
lines = [ ' shutdown ' ]
parents = [ ' interface GigabitEthernet0/0 ' ]
candidate = parents + lines
set_module_args ( dict ( lines = lines , parents = parents ) )
module = MagicMock ( )
module . params = { ' lines ' : lines , ' parents ' : parents , ' src ' : None }
candidate_config = iosxr_config . get_candidate ( module )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( candidate_config , self . running_config ) )
commands = [ ' interface GigabitEthernet0/0 ' , ' shutdown ' ]
commands = [ ' interface GigabitEthernet0/0 ' , ' shutdown ' ]
self . execute_module ( changed = True , commands = commands )
self . execute_module ( changed = True , commands = commands )
def test_iosxr_config_before ( self ) :
def test_iosxr_config_before ( self ) :
set_module_args ( dict ( lines = [ ' hostname foo ' ] , before = [ ' test1 ' , ' test2 ' ] ) )
lines = [ ' hostname foo ' ]
set_module_args ( dict ( lines = lines , before = [ ' test1 ' , ' test2 ' ] ) )
commands = [ ' test1 ' , ' test2 ' , ' hostname foo ' ]
commands = [ ' test1 ' , ' test2 ' , ' hostname foo ' ]
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( ' \n ' . join ( lines ) , self . running_config ) )
self . execute_module ( changed = True , commands = commands , sort = False )
self . execute_module ( changed = True , commands = commands , sort = False )
def test_iosxr_config_after ( self ) :
def test_iosxr_config_after ( self ) :
set_module_args ( dict ( lines = [ ' hostname foo ' ] , after = [ ' test1 ' , ' test2 ' ] ) )
lines = [ ' hostname foo ' ]
set_module_args ( dict ( lines = lines , after = [ ' test1 ' , ' test2 ' ] ) )
commands = [ ' hostname foo ' , ' test1 ' , ' test2 ' ]
commands = [ ' hostname foo ' , ' test1 ' , ' test2 ' ]
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( ' \n ' . join ( lines ) , self . running_config ) )
self . execute_module ( changed = True , commands = commands , sort = False )
self . execute_module ( changed = True , commands = commands , sort = False )
def test_iosxr_config_before_after_no_change ( self ) :
def test_iosxr_config_before_after_no_change ( self ) :
set_module_args ( dict ( lines = [ ' hostname router ' ] ,
lines = [ ' hostname router ' ]
set_module_args ( dict ( lines = lines ,
before = [ ' test1 ' , ' test2 ' ] ,
before = [ ' test1 ' , ' test2 ' ] ,
after = [ ' test3 ' , ' test4 ' ] ) )
after = [ ' test3 ' , ' test4 ' ] ) )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( ' \n ' . join ( lines ) , self . running_config ) )
self . execute_module ( )
self . execute_module ( )
def test_iosxr_config_config ( self ) :
def test_iosxr_config_config ( self ) :
config = ' hostname localhost '
config = ' hostname localhost '
lines = [ ' hostname router ' ]
set_module_args ( dict ( lines = [ ' hostname router ' ] , config = config ) )
set_module_args ( dict ( lines = [ ' hostname router ' ] , config = config ) )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( ' \n ' . join ( lines ) , config ) )
commands = [ ' hostname router ' ]
commands = [ ' hostname router ' ]
self . execute_module ( changed = True , commands = commands )
self . execute_module ( changed = True , commands = commands )
@ -103,16 +134,23 @@ class TestIosxrConfigModule(TestIosxrModule):
parents = [ ' interface GigabitEthernet0/0 ' ]
parents = [ ' interface GigabitEthernet0/0 ' ]
set_module_args ( dict ( lines = lines , replace = ' block ' , parents = parents ) )
set_module_args ( dict ( lines = lines , replace = ' block ' , parents = parents ) )
commands = parents + lines
commands = parents + lines
module = MagicMock ( )
module . params = { ' lines ' : lines , ' parents ' : parents , ' src ' : None }
candidate_config = iosxr_config . get_candidate ( module )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( candidate_config , self . running_config , diff_replace = ' block ' , path = parents ) )
self . execute_module ( changed = True , commands = commands )
self . execute_module ( changed = True , commands = commands )
def test_iosxr_config_force ( self ) :
def test_iosxr_config_force ( self ) :
lines = [ ' hostname router ' ]
lines = [ ' hostname router ' ]
set_module_args ( dict ( lines = lines , force = True ) )
set_module_args ( dict ( lines = lines , force = True ) )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( ' \n ' . join ( lines ) , self . running_config , diff_match = ' none ' ) )
self . execute_module ( changed = True , commands = lines )
self . execute_module ( changed = True , commands = lines )
def test_iosxr_config_admin ( self ) :
def test_iosxr_config_admin ( self ) :
lines = [ ' username admin ' , ' group root-system ' , ' secret P@ssw0rd ' ]
lines = [ ' username admin ' , ' group root-system ' , ' secret P@ssw0rd ' ]
set_module_args ( dict ( lines = lines , admin = True ) )
set_module_args ( dict ( lines = lines , admin = True ) )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( ' \n ' . join ( lines ) , self . running_config ) )
self . execute_module ( changed = True , commands = lines )
self . execute_module ( changed = True , commands = lines )
def test_iosxr_config_match_none ( self ) :
def test_iosxr_config_match_none ( self ) :
@ -120,6 +158,11 @@ class TestIosxrConfigModule(TestIosxrModule):
parents = [ ' interface GigabitEthernet0/0 ' ]
parents = [ ' interface GigabitEthernet0/0 ' ]
set_module_args ( dict ( lines = lines , parents = parents , match = ' none ' ) )
set_module_args ( dict ( lines = lines , parents = parents , match = ' none ' ) )
commands = parents + lines
commands = parents + lines
module = MagicMock ( )
module . params = { ' lines ' : lines , ' parents ' : parents , ' src ' : None }
candidate_config = iosxr_config . get_candidate ( module )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( candidate_config , self . running_config , diff_match = ' none ' , path = parents ) )
self . execute_module ( changed = True , commands = commands , sort = False )
self . execute_module ( changed = True , commands = commands , sort = False )
def test_iosxr_config_match_strict ( self ) :
def test_iosxr_config_match_strict ( self ) :
@ -128,6 +171,11 @@ class TestIosxrConfigModule(TestIosxrModule):
parents = [ ' interface GigabitEthernet0/0 ' ]
parents = [ ' interface GigabitEthernet0/0 ' ]
set_module_args ( dict ( lines = lines , parents = parents , match = ' strict ' ) )
set_module_args ( dict ( lines = lines , parents = parents , match = ' strict ' ) )
commands = parents + [ ' shutdown ' ]
commands = parents + [ ' shutdown ' ]
module = MagicMock ( )
module . params = { ' lines ' : lines , ' parents ' : parents , ' src ' : None }
candidate_config = iosxr_config . get_candidate ( module )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( candidate_config , self . running_config , diff_match = ' strict ' , path = parents ) )
self . execute_module ( changed = True , commands = commands , sort = False )
self . execute_module ( changed = True , commands = commands , sort = False )
def test_iosxr_config_match_exact ( self ) :
def test_iosxr_config_match_exact ( self ) :
@ -136,6 +184,11 @@ class TestIosxrConfigModule(TestIosxrModule):
parents = [ ' interface GigabitEthernet0/0 ' ]
parents = [ ' interface GigabitEthernet0/0 ' ]
set_module_args ( dict ( lines = lines , parents = parents , match = ' exact ' ) )
set_module_args ( dict ( lines = lines , parents = parents , match = ' exact ' ) )
commands = parents + lines
commands = parents + lines
module = MagicMock ( )
module . params = { ' lines ' : lines , ' parents ' : parents , ' src ' : None }
candidate_config = iosxr_config . get_candidate ( module )
self . conn . get_diff = MagicMock ( return_value = self . cliconf_obj . get_diff ( candidate_config , self . running_config , diff_match = ' exact ' , path = parents ) )
self . execute_module ( changed = True , commands = commands , sort = False )
self . execute_module ( changed = True , commands = commands , sort = False )
def test_iosxr_config_src_and_lines_fails ( self ) :
def test_iosxr_config_src_and_lines_fails ( self ) :