Adding admin option for iosxr_config (#26509)

* Adding admin option for iosxr_config. Adding unit test for new admin option for iosxr_config. Fixes #24308

* Removing space on empty line.
This commit is contained in:
James Mighion 2017-07-10 09:22:45 -07:00 committed by Chris Alfonso
parent f31d3ddeb7
commit 58ade65ea6
3 changed files with 22 additions and 3 deletions

View file

@ -102,9 +102,12 @@ def run_commands(module, commands, check_rc=True):
return responses
def load_config(module, commands, warnings, commit=False, replace=False, comment=None):
def load_config(module, commands, warnings, commit=False, replace=False, comment=None, admin=False):
cmd = 'configure terminal'
if admin:
cmd = 'admin ' + cmd
rc, out, err = exec_command(module, 'configure terminal')
rc, out, err = exec_command(module, cmd)
if rc != 0:
module.fail_json(msg='unable to enter configuration mode', err=to_text(err, errors='surrogate_or_strict'))
@ -137,6 +140,7 @@ def load_config(module, commands, warnings, commit=False, replace=False, comment
else:
cmd = 'abort'
diff = None
rc, out, err = exec_command(module, cmd)
if rc != 0:
exec_command(module, 'abort')

View file

@ -146,6 +146,14 @@ options:
required: false
default: 'configured by iosxr_config'
version_added: "2.2"
admin:
description:
- Enters into administration configuration mode for making config
changes to the device.
required: false
default: false
choices: [ "yes", "no" ]
version_added: "2.4"
"""
EXAMPLES = """
@ -218,6 +226,7 @@ def run(module, result):
replace_config = replace == 'config'
path = module.params['parents']
comment = module.params['comment']
admin = module.params['admin']
check_mode = module.check_mode
candidate = get_candidate(module)
@ -243,7 +252,7 @@ def run(module, result):
result['commands'] = commands
diff = load_config(module, commands, result['warnings'],
not check_mode, replace_config, comment)
not check_mode, replace_config, comment, admin)
if diff:
result['diff'] = dict(prepared=diff)
result['changed'] = True
@ -270,6 +279,7 @@ def main():
config=dict(),
backup=dict(type='bool', default=False),
comment=dict(default=DEFAULT_COMMIT_COMMENT),
admin=dict(type='bool', default=False)
)
argument_spec.update(iosxr_argument_spec)

View file

@ -107,6 +107,11 @@ class TestIosxrConfigModule(TestIosxrModule):
set_module_args(dict(lines=lines, force=True))
self.execute_module(changed=True, commands=lines)
def test_iosxr_config_admin(self):
lines = ['username admin', 'group root-system', 'secret P@ssw0rd']
set_module_args(dict(lines=lines, admin=True))
self.execute_module(changed=True, commands=lines)
def test_iosxr_config_match_none(self):
lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string']
parents = ['interface GigabitEthernet0/0']