diff options
author | Michal Minar <miminar@redhat.com> | 2013-11-30 14:09:13 +0100 |
---|---|---|
committer | Michal Minar <miminar@redhat.com> | 2013-12-02 12:30:22 +0100 |
commit | dc283cceaf1c09721fe67fce229aeeb3efa20390 (patch) | |
tree | f60e7447fb1adf12862ca2463e1440b83642e8c6 /src/software/lmi | |
parent | 6fe40639889fbe748231058d82edd8f6b3eb2714 (diff) | |
download | openlmi-providers-dc283cceaf1c09721fe67fce229aeeb3efa20390.tar.gz openlmi-providers-dc283cceaf1c09721fe67fce229aeeb3efa20390.tar.xz openlmi-providers-dc283cceaf1c09721fe67fce229aeeb3efa20390.zip |
software: raise proper error when repository not found
CIM_ERR_NOT_FOUND shall be raised when objectpath of invoked method does
not refer to existing repository. CIM_ERR_FAILED was raised instead
which is unhelpful.
Resolves: rhbz#1036291
Diffstat (limited to 'src/software/lmi')
-rw-r--r-- | src/software/lmi/software/LMI_SoftwareIdentityResource.py | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/src/software/lmi/software/LMI_SoftwareIdentityResource.py b/src/software/lmi/software/LMI_SoftwareIdentityResource.py index 2e70e80..8f48ee0 100644 --- a/src/software/lmi/software/LMI_SoftwareIdentityResource.py +++ b/src/software/lmi/software/LMI_SoftwareIdentityResource.py @@ -246,23 +246,26 @@ class LMI_SoftwareIdentityResource(CIMProvider2): return ( self.values.RequestStateChange.Invalid_State_Transition , out_params) - with YumDB.get_instance() as ydb: - repo = IdentityResource.object_path2repo(env, - object_name, 'all') - enable = param_requestedstate == \ - self.values.RequestStateChange.RequestedState.Enabled - LOG().info("%s repository %s" % ("enabling" - if enable else "disabling", repo)) - try: - prev = ydb.set_repository_enabled( - repo, enable) - except errors.RepositoryChangeError as exc: - msg = "failed to modify repository %s: %s" % (repo, str(exc)) - LOG().error(msg) - raise pywbem.CIMError(pywbem.CIM_ERR_FAILED, msg) - msg = ( "repository %s already %s" - if prev == enable else "repository %s %s") - LOG().info(msg % (repo, "enabled" if enable else "disabled")) + try: + with YumDB.get_instance() as ydb: + repo = IdentityResource.object_path2repo(env, + object_name, 'all') + enable = param_requestedstate == \ + self.values.RequestStateChange.RequestedState.Enabled + LOG().info("%s repository %s" % ("enabling" + if enable else "disabling", repo)) + try: + prev = ydb.set_repository_enabled( + repo, enable) + except errors.RepositoryChangeError as exc: + msg = "failed to modify repository %s: %s" % (repo, str(exc)) + LOG().error(msg) + raise pywbem.CIMError(pywbem.CIM_ERR_FAILED, msg) + msg = ( "repository %s already %s" + if prev == enable else "repository %s %s") + LOG().info(msg % (repo, "enabled" if enable else "disabled")) + except errors.RepositoryNotFound as err: + raise pywbem.CIMError(pywbem.CIM_ERR_NOT_FOUND, err.message) rval = self.values.RequestStateChange.Completed_with_No_Error return (rval, out_params) |