mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-09 18:04:02 -07:00
New voss_config module (#47533)
* New voss_config module * Updated test import paths as per #46996
This commit is contained in:
parent
87de2dde9f
commit
a1b0d20368
10 changed files with 961 additions and 18 deletions
|
@ -27,6 +27,7 @@ from ansible.module_utils._text import to_text
|
|||
from ansible.module_utils.common._collections_compat import Mapping
|
||||
from ansible.module_utils.network.common.config import NetworkConfig, dumps
|
||||
from ansible.module_utils.network.common.utils import to_list
|
||||
from ansible.module_utils.network.voss.voss import VossNetworkConfig
|
||||
from ansible.plugins.cliconf import CliconfBase, enable_mode
|
||||
|
||||
|
||||
|
@ -44,12 +45,11 @@ class Cliconf(CliconfBase):
|
|||
flags = []
|
||||
if source == 'running':
|
||||
cmd = 'show running-config '
|
||||
cmd += ' '.join(to_list(flags))
|
||||
cmd = cmd.strip()
|
||||
else:
|
||||
cmd = 'more /intflash/config.cfg'
|
||||
|
||||
cmd += ' '.join(to_list(flags))
|
||||
cmd = cmd.strip()
|
||||
|
||||
return self.send_command(cmd)
|
||||
|
||||
def get_diff(self, candidate=None, running=None, diff_match='line', diff_ignore_lines=None, path=None, diff_replace='line'):
|
||||
|
@ -83,11 +83,11 @@ class Cliconf(CliconfBase):
|
|||
:return: Configuration diff in json format.
|
||||
{
|
||||
'config_diff': '',
|
||||
'banner_diff': {}
|
||||
}
|
||||
|
||||
"""
|
||||
diff = {}
|
||||
|
||||
device_operations = self.get_device_operations()
|
||||
option_values = self.get_option_values()
|
||||
|
||||
|
@ -101,18 +101,20 @@ class Cliconf(CliconfBase):
|
|||
raise ValueError("'replace' value %s in invalid, valid values are %s" % (diff_replace, ', '.join(option_values['diff_replace'])))
|
||||
|
||||
# prepare candidate configuration
|
||||
candidate_obj = NetworkConfig(indent=1)
|
||||
candidate_obj = VossNetworkConfig(indent=0, ignore_lines=diff_ignore_lines)
|
||||
candidate_obj.load(candidate)
|
||||
|
||||
if running and diff_match != 'none':
|
||||
# running configuration
|
||||
running_obj = NetworkConfig(indent=1, contents=running, ignore_lines=diff_ignore_lines)
|
||||
running_obj = VossNetworkConfig(indent=0, contents=running, ignore_lines=diff_ignore_lines)
|
||||
configdiffobjs = candidate_obj.difference(running_obj, path=path, match=diff_match, replace=diff_replace)
|
||||
|
||||
else:
|
||||
configdiffobjs = candidate_obj.items
|
||||
|
||||
diff['config_diff'] = dumps(configdiffobjs, 'commands') if configdiffobjs else ''
|
||||
diff['diff_path'] = path
|
||||
diff['diff_replace'] = diff_replace
|
||||
return diff
|
||||
|
||||
@enable_mode
|
||||
|
@ -191,7 +193,7 @@ class Cliconf(CliconfBase):
|
|||
|
||||
def get_capabilities(self):
|
||||
result = dict()
|
||||
result['rpc'] = self.get_base_rpc() + ['edit_banner', 'get_diff', 'run_commands', 'get_defaults_flag']
|
||||
result['rpc'] = self.get_base_rpc() + ['get_diff', 'run_commands', 'get_defaults_flag']
|
||||
result['network_api'] = 'cliconf'
|
||||
result['device_info'] = self.get_device_info()
|
||||
result['device_operations'] = self.get_device_operations()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue