summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Minar <miminar@redhat.com>2014-02-26 12:35:58 +0100
committerMichal Minar <miminar@redhat.com>2014-02-26 12:39:56 +0100
commita1eaebac55259cf7e733a4c98a4f22fbd1d897bd (patch)
treeaf63560da119730c2947e7363b98aae87f331091
parentf287e2521b8e9c26d79afd009e2a57ef43e3661c (diff)
downloadopenlmi-scripts-a1eaebac55259cf7e733a4c98a4f22fbd1d897bd.tar.gz
openlmi-scripts-a1eaebac55259cf7e733a4c98a4f22fbd1d897bd.tar.xz
openlmi-scripts-a1eaebac55259cf7e733a4c98a4f22fbd1d897bd.zip
service: fixed error reporting
Handle errors cases gracefully. AttributeError is confusing when actually an instance can not be found on remove host. Behave the same when exception handling is set to enable or disable (lmishell thing).
-rw-r--r--commands/service/lmi/scripts/service/__init__.py26
1 files changed, 18 insertions, 8 deletions
diff --git a/commands/service/lmi/scripts/service/__init__.py b/commands/service/lmi/scripts/service/__init__.py
index 1f7e3c6..18f8661 100644
--- a/commands/service/lmi/scripts/service/__init__.py
+++ b/commands/service/lmi/scripts/service/__init__.py
@@ -100,8 +100,9 @@ def list_services(ns, kind='enabled'):
continue
yield service
except pywbem.CIMError as err:
- raise LmiFailed('Failed to get service "%s": %s'
- % (service, err.args[1]))
+ if err.args[0] == pywbem.CIM_ERR_NOT_SUPPORTED:
+ raise LmiFailed('Service provider is not installed or registered.')
+ raise LmiFailed('Failed to list services: %s' % err.args[1])
def start_service(ns, service):
"""
@@ -195,12 +196,17 @@ def get_service(ns, service):
inst = iname.to_instance()
elif isinstance(service, (LMIInstance, LMIInstanceName)):
- inst = service
- service = inst.Name
- if isinstance(inst, LMIInstanceName):
- inst = inst.to_instance()
+ try:
+ inst = service
+ service = inst.Name
+ if isinstance(inst, LMIInstanceName):
+ inst = inst.to_instance()
+ except AttributeError:
+ raise ValueError('Invalid service instance name. It\'s missing'
+ ' Name property.')
- return inst
+ else:
+ raise TypeError("service must be either string or ``LMIInstanceName``")
except pywbem.CIMError as err:
if err.args[0] == pywbem.CIM_ERR_NOT_FOUND:
@@ -209,7 +215,11 @@ def get_service(ns, service):
raise LmiFailed('Failed to get service "%s": %s'
% (service, err.args[1]))
- raise TypeError("service must be either string or ``LMIInstanceName``")
+ if inst is None:
+ raise LmiFailed('No such service "%s".' % service)
+
+ return inst
+
def get_status_string(ns, service):
"""