diff options
author | Michal Minar <miminar@redhat.com> | 2013-08-06 11:29:56 +0200 |
---|---|---|
committer | Michal Minar <miminar@redhat.com> | 2013-08-06 17:06:02 +0200 |
commit | fc0036ab7df2d336d10d4f9ce3af2eb731f3a9c3 (patch) | |
tree | 7d31897d920731f039d74f3704c1b97064a3107c /src/software/lmi | |
parent | b9f795b8b9196c42d93d9d0022d2c4a02377844e (diff) | |
download | openlmi-providers-fc0036ab7df2d336d10d4f9ce3af2eb731f3a9c3.tar.gz openlmi-providers-fc0036ab7df2d336d10d4f9ce3af2eb731f3a9c3.tar.xz openlmi-providers-fc0036ab7df2d336d10d4f9ce3af2eb731f3a9c3.zip |
assign __ReturnValue property of CIM_ConcreteJob
Diffstat (limited to 'src/software/lmi')
-rw-r--r-- | src/software/lmi/software/core/InstMethodCall.py | 22 | ||||
-rw-r--r-- | src/software/lmi/software/core/Job.py | 32 |
2 files changed, 37 insertions, 17 deletions
diff --git a/src/software/lmi/software/core/InstMethodCall.py b/src/software/lmi/software/core/InstMethodCall.py index d314375..ec9356e 100644 --- a/src/software/lmi/software/core/InstMethodCall.py +++ b/src/software/lmi/software/core/InstMethodCall.py @@ -24,10 +24,9 @@ CIM values for enumeration types of CIM_InstMethodCall indication class. import pywbem from lmi.software import util -from lmi.software.core import InstallationService from lmi.software.core import Job from lmi.software.util import cmpi_logging -from lmi.software.yumdb import jobs, errors +from lmi.software.yumdb import jobs class Values(object): class ReturnValueType(object): @@ -123,20 +122,9 @@ def job2model(job, pre=True): if error is not None: inst["Error"].append(error) inst["ReturnValueType"] = Values.ReturnValueType.uint32 - if job.state == job.COMPLETED: - inst["ReturnValue"] = str(InstallationService. \ - Values.InstallFromURI.Job_Completed_with_No_Error) - elif job.state == job.EXCEPTION: - if issubclass(job.result_data[0], ( - errors.InvalidNevra, errors.InvalidURI, - errors.PackageNotFound)): - inst["ReturnValue"] = str(InstallationService.Values. \ - InstallFromURI.Invalid_Parameter) - else: - inst["ReturnValue"] = str(InstallationService.Values. \ - InstallFromURI.Failed) - else: - inst["ReturnValue"] = str(InstallationService.Values. \ - InstallFromURI.Unspecified_Error) + return_value = Job.make_return_value(job) + if return_value is not None: + inst["ReturnValue"] = str(return_value) + return inst diff --git a/src/software/lmi/software/core/Job.py b/src/software/lmi/software/core/Job.py index f199081..b3ccd5d 100644 --- a/src/software/lmi/software/core/Job.py +++ b/src/software/lmi/software/core/Job.py @@ -485,8 +485,40 @@ def make_method_params(job, class_name, include_input, include_output): # overwrite any input parameter for (name, value) in job.metadata["output_params"].iteritems(): inst[name] = value + return_value = make_return_value(job) + if return_value is not None: + inst["__ReturnValue"] = return_value return inst +def make_return_value(job): + """ + Compute return value of particular job. + + :param job: (``jobs.YumAsyncJob``) Asynchronous job. + :rtype: (``pywbem.Uint32``) Return value of asynchronous method or ``None`` + if job has not completed yet. + """ + from lmi.software.core import InstallationService + + if not isinstance(job, jobs.YumAsyncJob): + raise TypeError("job must be a YumAsyncJob") + + if job.state == job.COMPLETED: + return InstallationService. \ + Values.InstallFromURI.Job_Completed_with_No_Error + if job.state == job.EXCEPTION: + if issubclass(job.result_data[0], ( + errors.InvalidNevra, errors.InvalidURI, + errors.PackageNotFound)): + return InstallationService.Values.InstallFromURI.Invalid_Parameter + else: + return InstallationService.Values.InstallFromURI.Failed + if job.state == job.TERMINATED: + return InstallationService.Values.InstallFromURI.Unspecified_Error + + # job has not finished yet + return None + def job_class2cim_class_name(jobcls): """ Here we map classes of job objects to their corresponding CIM class |