Repository :
http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
---------------------------------------------------------------
commit 86456bdd9499aa285cba8e285238c639186e0ba9
Author: Peter Hatina <phatina(a)redhat.com>
Date: Mon Jul 22 09:28:38 2013 +0200
code cleanup in _LmiInstanceMethod::__transform_return_values()
---------------------------------------------------------------
cli-tools/lmi/lmi_client_shell.py | 68 ++++++++++++++++++-------------------
1 files changed, 33 insertions(+), 35 deletions(-)
diff --git a/cli-tools/lmi/lmi_client_shell.py b/cli-tools/lmi/lmi_client_shell.py
index b454e54..1dba86c 100644
--- a/cli-tools/lmi/lmi_client_shell.py
+++ b/cli-tools/lmi/lmi_client_shell.py
@@ -1517,44 +1517,42 @@ class _LmiInstanceMethod(BaseObject):
"""
return job.JobState in range(7, 11)
- def __transform_return_values(self, rparams):
- """
- Transforms returned values from a method call into LMI wrapped objects.
- Returns a dictionary with the same keys as in argument rparams, but with wrapped
- CIMInstance objects into _LmiInstance.
-
- Arguments:
- rparams -- dictionary of returned parameters from a method call
- """
- lmi_rparams = pywbem.NocaseDict()
- for (key, value) in rparams.iteritems():
- if isinstance(value, pywbem.cim_obj.CIMInstance):
- lmi_namespace = None
- if not value.path is None:
- lmi_namespace = _LmiNamespace(self._client, value.path.namespace)
- lmi_class = _LmiClass(self._client, lmi_namespace, value.classname)
- lmi_rparams[key] = _LmiInstance(self._client, lmi_class, value)
- elif isinstance(value, pywbem.cim_obj.CIMInstanceName):
- lmi_rparams[key] = _LmiInstanceName(self._client, value)
- elif isinstance(value, pywbem.CIMInt):
- lmi_rparams[key] = int(value)
- elif isinstance(value, pywbem.CIMFloat):
- lmi_rparams[key] = float(value)
- elif type(value) == list:
- result = []
- for m in value:
- if isinstance(m, pywbem.cim_obj.CIMInstance):
- (lmi_class, _, errorstr) = self._client._get_class(m.classname,
- m.namespace, LocalOnly = False)
- if not lmi_class:
- return None
- lmi_rparams[key] = _LmiInstance(self._client, lmi_class, m)
- elif isinstance(m, pywbem.cim_obj.CIMInstanceName):
- result.append(_LmiInstanceName(self._client, m))
- lmi_rparams[key] = result
- else:
- lmi_rparams[key] = value
- return lmi_rparams
+ def __transform_return_values(self, value):
+ """
+ Transforms returned values from a method call into LMI wrapped objects. Returns
+ transformed input, where CIMInstance and CIMInstanceName are wrapped into LMI
+ wrapper classes and primitive types are cast to python native types.
+
+ Arguments:
+ value -- object to be transformed into python type from pywbem one
+ """
+ if isinstance(value, pywbem.cim_obj.CIMInstance):
+ lmi_namespace = None
+ if not value.path is None:
+ lmi_namespace = _LmiNamespace(self._client, value.path.namespace)
+ lmi_class = _LmiClass(self._client, lmi_namespace, value.classname)
+ return _LmiInstance(self._client, lmi_class, value)
+ elif isinstance(value, pywbem.cim_obj.CIMInstanceName):
+ return _LmiInstanceName(self._client, value)
+ elif isinstance(value, pywbem.CIMInt):
+ return int(value)
+ elif isinstance(value, pywbem.CIMFloat):
+ return float(value)
+ elif type(value) == dict:
+ return dict(
+ zip(value.keys(),
+ map(self.__transform_return_values, value.values()))
+ )
+ elif type(value) == pywbem.NocaseDict:
+ return pywbem.NocaseDict(
+ zip(value.keys(),
+ map(self.__transform_return_values, value.values()))
+ )
+ elif type(value) == list:
+ return map(self.__transform_return_values, value)
+ elif type(value) == tuple:
+ return tuple(map(self.__transform_return_values, value))
+ return value
def __handle_synchro_method_call_indication(self, job_inst):
"""