mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-23 21:30:22 -07:00
junos_config: Remove reliance on ability to output configuration in set
format (#23225)
* Remove reliance on ability to output configuration in `set` format * Support multiple warnings per rpc-reply
This commit is contained in:
parent
01e27b1083
commit
597bca3129
4 changed files with 37 additions and 16 deletions
|
@ -31,13 +31,31 @@ from xml.etree.ElementTree import tostring, fromstring
|
|||
|
||||
from ansible.module_utils.connection import exec_command
|
||||
|
||||
|
||||
NS_MAP = {'nc': "urn:ietf:params:xml:ns:netconf:base:1.0"}
|
||||
|
||||
def send_request(module, obj, check_rc=True):
|
||||
request = tostring(obj)
|
||||
rc, out, err = exec_command(module, request)
|
||||
if rc != 0:
|
||||
if check_rc:
|
||||
if rc != 0 and check_rc:
|
||||
error_root = fromstring(err)
|
||||
fake_parent = Element('root')
|
||||
fake_parent.append(error_root)
|
||||
|
||||
error_list = fake_parent.findall('.//nc:rpc-error', NS_MAP)
|
||||
if not error_list:
|
||||
module.fail_json(msg=str(err))
|
||||
return fromstring(out)
|
||||
|
||||
warnings = []
|
||||
for rpc_error in error_list:
|
||||
message = rpc_error.find('./nc:error-message', NS_MAP).text
|
||||
severity = rpc_error.find('./nc:error-severity', NS_MAP).text
|
||||
|
||||
if severity == 'warning':
|
||||
warnings.append(message)
|
||||
else:
|
||||
module.fail_json(msg=str(err))
|
||||
return warnings
|
||||
return fromstring(out)
|
||||
|
||||
def children(root, iterable):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue