Repository :
http://git.fedorahosted.org/cgit/cura-tools.git
On branch : master
---------------------------------------------------------------
commit c68b4af0a3c10fffe37a51651c587c2b249f153a
Author: Peter Hatina <phatina(a)redhat.com>
Date: Tue Feb 12 14:03:10 2013 +0100
introduce _LmiClass::instance_names(), ::first_instance_name()
---------------------------------------------------------------
cli-tools/lmi/lmi_client_base.py | 16 ++++++++++++++++
cli-tools/lmi/lmi_client_shell.py | 16 ++++++++++++++++
2 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/cli-tools/lmi/lmi_client_base.py b/cli-tools/lmi/lmi_client_base.py
index 2509d1f..320d035 100644
--- a/cli-tools/lmi/lmi_client_base.py
+++ b/cli-tools/lmi/lmi_client_base.py
@@ -76,6 +76,20 @@ class LmiBaseClient(object):
(self._username, self._password))
def _get_instance_names(self, klass, **kwargs):
+ filter_value = ""
+ filter_key = "Name"
+ if "key" in kwargs:
+ filter_key = kwargs["key"]
+ kwargs.pop("key")
+ elif "Key" in kwargs:
+ filter_key = kwargs["Key"]
+ kwargs.pop("Key")
+ if "value" in kwargs:
+ filter_value = kwargs["value"]
+ kwargs.pop("value")
+ if "Value" in kwargs:
+ filter_value = kwargs["Value"]
+ kwargs.pop("Value")
try:
inst_name_list = self._cliconn.EnumerateInstanceNames(klass, **kwargs)
except pywbem.cim_operations.CIMError, e:
@@ -84,6 +98,8 @@ class LmiBaseClient(object):
except pywbem.cim_http.AuthError, e:
raise_or_dump_exception(e)
return LmiReturnValue(rval = None, rparams = {}, errorstr = e.args[0])
+ if filter_value:
+ inst_name_list = filter(lambda n: not filter_key in n or n[filter_key] ==
filter_value, inst_name_list)
return LmiReturnValue(rval = inst_name_list, rparams = {}, errorstr =
"")
def _get_instance(self, path, **kwargs):
diff --git a/cli-tools/lmi/lmi_client_shell.py b/cli-tools/lmi/lmi_client_shell.py
index a7f85aa..efa9006 100644
--- a/cli-tools/lmi/lmi_client_shell.py
+++ b/cli-tools/lmi/lmi_client_shell.py
@@ -395,6 +395,22 @@ class _LmiClass(BaseObject):
def doc(self):
_LmiXmlFormatter(self._cim_class.tocimxml()).fancy_format(self._client.interactive)
+ def instance_names(self, **kwargs):
+ (inst_name_list, _, errorstr) = self._client._get_instance_names(
+ self._cim_class.classname, **kwargs)
+ if not inst_name_list:
+ return []
+ result = []
+ for i in inst_name_list:
+ result.append(_LmiInstanceName(self._client, i))
+ return result
+
+ def first_instance_name(self, **kwargs):
+ inst_name_list = self.instance_names(**kwargs)
+ if not inst_name_list:
+ return None
+ return inst_name_list[0]
+
def instances(self, **kwargs):
(instance_list, _, errorstr) = self._client._get_instances(
self._cim_class.classname, **kwargs)