diff options
author | Michal Minar <miminar@redhat.com> | 2014-02-26 12:35:58 +0100 |
---|---|---|
committer | Michal Minar <miminar@redhat.com> | 2014-02-26 12:39:56 +0100 |
commit | a1eaebac55259cf7e733a4c98a4f22fbd1d897bd (patch) | |
tree | af63560da119730c2947e7363b98aae87f331091 | |
parent | f287e2521b8e9c26d79afd009e2a57ef43e3661c (diff) | |
download | openlmi-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__.py | 26 |
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): """ |