mirror of
https://github.com/valitydev/salt.git
synced 2024-11-06 16:45:27 +00:00
add _zypper_check_result() to raise and error or return stdout
This commit is contained in:
parent
a6785ef7a9
commit
7c5d5a2b7a
@ -26,6 +26,7 @@ except ImportError:
|
||||
# pylint: enable=import-error,redefined-builtin,no-name-in-module
|
||||
|
||||
from xml.dom import minidom as dom
|
||||
from xml.parsers.expat import ExpatError
|
||||
|
||||
# Import salt libs
|
||||
import salt.utils
|
||||
@ -79,6 +80,44 @@ def _is_zypper_error(retcode):
|
||||
return not int(retcode) in [0, 100, 101, 102, 103]
|
||||
|
||||
|
||||
def _zypper_check_result(result, xml=False):
|
||||
'''
|
||||
Check the result of a zypper command. In case of an error, it raise
|
||||
a CommandExecutionError. Otherwise it returns stdout string of the
|
||||
command.
|
||||
|
||||
result
|
||||
The result of a zypper command called with cmd.run_all
|
||||
|
||||
xml
|
||||
Set to True if zypper command was called with --xmlout.
|
||||
In this case it try to read an error message out of the XML
|
||||
stream. Default is False.
|
||||
'''
|
||||
if _is_zypper_error(result['retcode']):
|
||||
msg = list()
|
||||
if not xml:
|
||||
msg.append(result['stderr'] and result['stderr'] or "")
|
||||
else:
|
||||
try:
|
||||
doc = dom.parseString(result['stdout'])
|
||||
except ExpatError as err:
|
||||
log.error(err)
|
||||
doc = None
|
||||
if doc:
|
||||
msg_nodes = doc.getElementsByTagName('message')
|
||||
for node in msg_nodes:
|
||||
if node.getAttribute('type') == 'error':
|
||||
msg.append(node.childNodes[0].nodeValue)
|
||||
elif result['stderr'].strip():
|
||||
msg.append(result['stderr'].strip())
|
||||
|
||||
raise CommandExecutionError("zypper command failed: {0}".format(
|
||||
msg and os.linesep.join(msg) or "Check zypper logs"))
|
||||
|
||||
return result['stdout']
|
||||
|
||||
|
||||
def list_upgrades(refresh=True):
|
||||
'''
|
||||
List all available package upgrades on this system
|
||||
|
Loading…
Reference in New Issue
Block a user