Repository : http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
commit fd20035f0b0357ca3b78e24bcc5610b5350ed0b3 Author: Peter Hatina phatina@redhat.com Date: Mon Dec 10 15:52:04 2012 +0100
introduce _LmiInstance::push() modification
cli-tools/lmi/lmi_client_base.py | 7 +++++ cli-tools/lmi/lmi_client_shell.py | 52 +++++++++++++++++++----------------- 2 files changed, 34 insertions(+), 25 deletions(-)
diff --git a/cli-tools/lmi/lmi_client_base.py b/cli-tools/lmi/lmi_client_base.py index 639839b..dbe0188 100644 --- a/cli-tools/lmi/lmi_client_base.py +++ b/cli-tools/lmi/lmi_client_base.py @@ -144,3 +144,10 @@ class LmiBaseClient(object):
def _get_associators(self, instance, **params): return self._cliconn.Associators(instance.path, **params) + + def _modify_instance(self, instance, **params): + try: + self._cliconn.ModifyInstance(instance, **params) + except pywbem.CIMError, e: + return LmiReturnValue(rval = e.args[0], rparams = {}, errorstr = e.args[1]) + return LmiReturnValue(rval = 0, rparams = {}, errorstr = "") diff --git a/cli-tools/lmi/lmi_client_shell.py b/cli-tools/lmi/lmi_client_shell.py index 1b5d4ab..edd8fc5 100644 --- a/cli-tools/lmi/lmi_client_shell.py +++ b/cli-tools/lmi/lmi_client_shell.py @@ -403,7 +403,7 @@ class _LmiInstance(BaseObject): cast_func = cast[t] kwargs[param] = cast_func(value) return_value = self._client.call_method_raw( - self._instance, self._method.name, **kwargs) + self._instance, self._method, **kwargs) lmi_rparams = [] if return_value.rparams: lmi_rparams = self.__transform_return_values(return_value.rparams) @@ -430,35 +430,22 @@ class _LmiInstance(BaseObject): self._inst = inst
def __getattr__(self, name): - methods = self.__methods() + methods = self.methods() if methods and name in methods: - return _LmiInstance._LmiInstanceMethod(self._client, self, self.__method(name)) - elif not name in self._inst.properties.keys(): - return None - return self._inst.properties[name].value - - def __getitem__(self, key): - return self.__getattr__(key) + return _LmiInstance._LmiInstanceMethod(self._client, self, name) + elif name in self._inst: + return self._inst[name] + return self.__dict__[name] + + def __setattr__(self, name, value): + if "_inst" in self.__dict__ and name in self._inst.properties.keys(): + self._inst[name] = value + else: + self.__dict__[name] = value
def __repr__(self): return "%s(classname='%s', ...)" % (self.__class__.__name__, self.classname)
- def __methods(self): - (klass, _, errorstr) = self._client.get_class(self._inst.classname, self._class.namespace, - LocalOnly = False) - if not klass: - return [] - return klass.methods - - def __method(self, name): - methods = self.__methods() - if not methods: - return None - try: - return methods[name] - except KeyError, e: - return None - @property def classname(self): return self._class.classname @@ -513,6 +500,16 @@ class _LmiInstance(BaseObject): def print_methods(self): self._class.print_methods()
+ def push(self): + return_value = self._client.push(self._inst) + return LmiReturnValue( + hostname = return_value.hostname, + instance = return_value.instance, + use_display_hook = True, + rval = return_value.rval, + rparams = return_value.rparams, + errorstr = return_value.errorstr) + class _LmiShellClient(LmiBaseClient): def __init__(self, hostname, username = "", password = "", interactive = False): super(self.__class__, self).__init__(hostname, username, password) @@ -538,6 +535,11 @@ class _LmiShellClient(LmiBaseClient): return LmiReturnValue(hostname = self._hostname, instance = instance, rval = rv, rparams = rp, errorstr = err)
+ def push(self, instance, **params): + (rval, rparams, errorstr) = self._modify_instance(instance, **params) + return LmiReturnValue(hostname = self._hostname, instance = instance, + rval = rval, rparams = rparams, errorstr = errorstr) + @property def interactive(self): return self._interactive
cura-tools-devel@lists.fedorahosted.org