diff --git a/lib/ansible/module_utils/vyos.py b/lib/ansible/module_utils/vyos.py index 5b8e11c580..fe01558346 100644 --- a/lib/ansible/module_utils/vyos.py +++ b/lib/ansible/module_utils/vyos.py @@ -23,6 +23,7 @@ import re from ansible.module_utils.network import NetworkError, get_module, get_exception from ansible.module_utils.network import register_transport, to_list from ansible.module_utils.network import Command, NetCli +from ansible.module_utils.netcfg import NetworkConfig from ansible.module_utils.shell import Shell, ShellError, HAS_PARAMIKO DEFAULT_COMMENT = 'configured by vyos_config' @@ -36,17 +37,18 @@ def argument_spec(): vyos_argument_spec = argument_spec() def get_config(module): - if module.params['config']: - return module.params['config'] - config = module.config.get_config() - module.params['config'] = config - return config + contents = module.params['config'] + if not contents: + contents = str(module.config.get_config()).split('\n') + module.params['config'] = contents + contents = '\n'.join(contents) + return NetworkConfig(contents=contents, device_os='junos') def diff_config(candidate, config): updates = set() - config = [str(c).replace("'", '') for c in config] + config = [str(c).replace("'", '') for c in str(config).split('\n')] - for line in candidate: + for line in str(candidate).split('\n'): item = str(line).replace("'", '') if not item.startswith('set') and not item.startswith('delete'): @@ -66,8 +68,9 @@ def diff_config(candidate, config): return list(updates) -def load_config(module, candidate): - config = get_config(module).split('\n') +def load_candidate(module, candidate): + config = get_config(module) + updates = diff_config(candidate, config) comment = module.params['comment'] @@ -81,7 +84,6 @@ def load_config(module, candidate): result['diff'] = dict(prepared=diff) result['changed'] = True - result['updates'] = updates if not module.check_mode: module.config.commit_config(comment=comment) @@ -93,8 +95,14 @@ def load_config(module, candidate): # exit from config mode module.cli('exit') + result['updates'] = updates return result +def load_config(module, commands): + contents = '\n'.join(commands) + candidate = NetworkConfig(contents=contents, device_os='junos') + return load_candidate(module, candidate) + class Cli(NetCli):