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:
Nathaniel Case 2017-04-04 15:00:00 -04:00 committed by GitHub
commit 597bca3129
4 changed files with 37 additions and 16 deletions

View file

@ -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):