mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-02 14:40:19 -07:00
Add junos_system declartive module and other related change (#25859)
* Add junos_system declartive module and other related change * junos_system declartive module * integration test for junos_system * integration test for net_system (junos platform) * pep8 fixes for junos modules * move to lxml from elementree for xml parsing as it support complete set of xpath api's * other minor changes * Fix CI and doc changes * Fix unit test failures * Fix typo in import * Fix import issue for py2.6 * Add missed Element in import
This commit is contained in:
parent
dd07d11ae5
commit
b2f46753ec
29 changed files with 1075 additions and 96 deletions
|
@ -137,6 +137,8 @@ options:
|
|||
default: merge
|
||||
choices: ['merge', 'override', 'replace']
|
||||
version_added: "2.3"
|
||||
requirements:
|
||||
- ncclient (>=v0.5.2)
|
||||
notes:
|
||||
- This module requires the netconf system service be enabled on
|
||||
the remote device being managed.
|
||||
|
@ -185,33 +187,47 @@ import re
|
|||
import json
|
||||
import sys
|
||||
|
||||
from xml.etree import ElementTree
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.junos import get_diff, load_config, get_configuration
|
||||
from ansible.module_utils.junos import junos_argument_spec
|
||||
from ansible.module_utils.junos import check_args as junos_check_args
|
||||
from ansible.module_utils.netconf import send_request
|
||||
from ansible.module_utils.six import string_types
|
||||
from ansible.module_utils._text import to_text, to_native
|
||||
from ansible.module_utils._text import to_native
|
||||
|
||||
if sys.version_info < (2, 7):
|
||||
from xml.parsers.expat import ExpatError
|
||||
ParseError = ExpatError
|
||||
else:
|
||||
ParseError = ElementTree.ParseError
|
||||
try:
|
||||
from lxml.etree import Element, fromstring
|
||||
except ImportError:
|
||||
from xml.etree.ElementTree import Element, fromstring
|
||||
|
||||
try:
|
||||
from lxml.etree import ParseError
|
||||
except ImportError:
|
||||
try:
|
||||
from xml.etree.ElementTree import ParseError
|
||||
except ImportError:
|
||||
# for Python < 2.7
|
||||
from xml.parsers.expat import ExpatError
|
||||
ParseError = ExpatError
|
||||
|
||||
USE_PERSISTENT_CONNECTION = True
|
||||
DEFAULT_COMMENT = 'configured by junos_config'
|
||||
|
||||
|
||||
def check_args(module, warnings):
|
||||
junos_check_args(module, warnings)
|
||||
|
||||
if module.params['replace'] is not None:
|
||||
module.fail_json(msg='argument replace is deprecated, use update')
|
||||
|
||||
zeroize = lambda x: send_request(x, ElementTree.Element('request-system-zeroize'))
|
||||
rollback = lambda x: get_diff(x)
|
||||
|
||||
def zeroize(ele):
|
||||
return send_request(ele, Element('request-system-zeroize'))
|
||||
|
||||
|
||||
def rollback(ele):
|
||||
return get_diff(ele)
|
||||
|
||||
|
||||
def guess_format(config):
|
||||
try:
|
||||
|
@ -221,7 +237,7 @@ def guess_format(config):
|
|||
pass
|
||||
|
||||
try:
|
||||
ElementTree.fromstring(config)
|
||||
fromstring(config)
|
||||
return 'xml'
|
||||
except ParseError:
|
||||
pass
|
||||
|
@ -231,6 +247,7 @@ def guess_format(config):
|
|||
|
||||
return 'text'
|
||||
|
||||
|
||||
def filter_delete_statements(module, candidate):
|
||||
reply = get_configuration(module, format='set')
|
||||
match = reply.find('.//configuration-set')
|
||||
|
@ -248,6 +265,7 @@ def filter_delete_statements(module, candidate):
|
|||
|
||||
return modified_candidate
|
||||
|
||||
|
||||
def configure_device(module, warnings):
|
||||
candidate = module.params['lines'] or module.params['src']
|
||||
|
||||
|
@ -283,6 +301,7 @@ def configure_device(module, warnings):
|
|||
|
||||
return load_config(module, candidate, warnings, **kwargs)
|
||||
|
||||
|
||||
def main():
|
||||
""" main entry point for module execution
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue