Source code for LMIInstanceName
# Copyright (C) 2012-2013 Peter Hatina <phatina@redhat.com>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>.
import sys
import pywbem
from LMIBaseObject import LMIWrapperBaseObject
from LMIUtil import lmi_wrap_cim_instance
from LMIUtil import lmi_wrap_cim_instance_name
[docs]class LMIInstanceName(LMIWrapperBaseObject):
"""
LMI wrapper class representing :py:class:`CIMInstanceName`.
:param LMIConnection conn: connection object
:param CIMInstanceName cim_instance_name: wrapped object
"""
def __init__(self, conn, cim_instance_name):
super(LMIInstanceName, self).__init__(conn)
if isinstance(cim_instance_name, LMIInstanceName):
cim_instance_name = cim_instance_name.wrapped_object
self._cim_instance_name = cim_instance_name
def __cmp__(self, other):
"""
:param LMIInstanceName other: :py:class:`LMIInstanceName` object to compare
:returns: negative number, if self < other; 0 if self == other or positive
number, if self > other
:rtype: int
"""
if not isinstance(other, LMIInstanceName):
return -1
return cmp(self._cim_instance_name, other._cim_instance_name)
def __contains__(self, key):
"""
:param string key: key name, which will be tested for presence in keybindings
:returns: True, if the specified key is present in keybindings, False otherwise
"""
return key in self._cim_instance_name
def __getattr__(self, name):
"""
Simplifies the code. Key properties values can be retrieved by
:samp:`object.key_property`.
:param string name: class member or key property name
:returns: class member or key property
"""
if name in self.__dict__:
return self.__dict__[name]
key_props = self.key_properties()
if key_props and name in key_props:
member = self._cim_instance_name[name]
if isinstance(member, pywbem.CIMInstanceName):
member = lmi_wrap_cim_instance_name(self._conn, member)
return member
raise AttributeError(name)
def __str__(self):
"""
:returns: string of serialized object
"""
return "%s(classname=\"%s\", %s)" % ( \
self.__class__.__name__, \
self.classname, \
str(self._cim_instance_name) \
)
def __repr__(self):
"""
:returns: pretty string for the object
"""
return "%s(classname=\"%s\"...)" % ( \
self.__class__.__name__, \
self.classname \
)
[docs] def copy(self):
"""
:returns: copy of itself
"""
return lmi_wrap_cim_instance_name(
self._conn, self._cim_instance_name.copy())
[docs] def to_instance(self):
"""
Creates a new :py:class:`LMIInstance` object from :py:class:`LMIInstanceName`.
:returns: :py:class:`LMIInstance` object if the object was retrieved successfully;
None otherwise.
**Usage:** :ref:`instance_names_conversion`.
"""
(cim_instance, _, errorstr) = self._conn._client._get_instance(
self._cim_instance_name, LocalOnly=False)
if not cim_instance:
return None
return lmi_wrap_cim_instance(self._conn, cim_instance,
self._cim_instance_name.classname,
self._cim_instance_name.namespace
)
[docs] def key_properties(self):
"""
:returns: list of strings of key properties
**Usage:** :ref:`instance_names_key_properties`.
"""
return self._cim_instance_name.keys()
[docs] def print_key_properties(self):
"""
Prints out the list of key properties.
**Usage:** :ref:`instance_names_key_properties`.
"""
for name in self._cim_instance_name.keys():
sys.stdout.write("%s\n" % name)
[docs] def key_properties_dict(self):
"""
:returns: dictionary with key properties and corresponding values
"""
return self._cim_instance_name.keybindings.copy()
[docs] def key_property_value(self, prop_name):
"""
:param string prop_name: key property name
:returns: key property value
"""
return getattr(self, prop_name)
@property
[docs] def classname(self):
"""
:returns: class name
:rtype: string
"""
return self._cim_instance_name.classname
@property
[docs] def namespace(self):
"""
:returns: namespace name
:rtype: string
"""
return self._cim_instance_name.namespace
@property
[docs] def hostname(self):
"""
:returns: host name
:rtype: string
"""
return self._cim_instance_name.host
@property
[docs] def wrapped_object(self):
"""
:returns: wrapped :py:class:`CIMInstanceName` object
"""
return self._cim_instance_name