summaryrefslogtreecommitdiffstats
path: root/src/software/openlmi/software/core/Identity.py
diff options
context:
space:
mode:
authorMichal Minar <miminar@redhat.com>2013-03-21 16:41:18 +0100
committerMichal Minar <miminar@redhat.com>2013-03-21 18:07:08 +0100
commit1c9627272440844c726052dc53900ecfe544d598 (patch)
tree23c1d9fe487998cc06e47cb4314cba87b186ff69 /src/software/openlmi/software/core/Identity.py
parentc110c6309306b3208eb1c3dabfb0d9d860d06b9a (diff)
downloadopenlmi-providers-1c9627272440844c726052dc53900ecfe544d598.tar.gz
openlmi-providers-1c9627272440844c726052dc53900ecfe544d598.tar.xz
openlmi-providers-1c9627272440844c726052dc53900ecfe544d598.zip
various enhancements
consistent access to Package's version and release attributes - all 'ver' and 'rel' replaced to full names added tracing decorators to some functions providers having Values class under core subpackage now reference it with self.values property Identity.pkg2model now accepts also nevra as string removed tabs in source code
Diffstat (limited to 'src/software/openlmi/software/core/Identity.py')
-rw-r--r--src/software/openlmi/software/core/Identity.py86
1 files changed, 24 insertions, 62 deletions
diff --git a/src/software/openlmi/software/core/Identity.py b/src/software/openlmi/software/core/Identity.py
index b7e8020..eda0ab9 100644
--- a/src/software/openlmi/software/core/Identity.py
+++ b/src/software/openlmi/software/core/Identity.py
@@ -162,6 +162,7 @@ class Values(object):
@cmpi_logging.trace_function
def object_path2nevra(op, with_epoch='NOT_ZERO'):
+ """Get nevra out of object path. Also checks for validity."""
if not isinstance(op, pywbem.CIMInstanceName):
raise pywbem.CIMError(pywbem.CIM_ERR_INVALID_PARAMETER,
"op must be an instance of CIMInstanceName")
@@ -185,8 +186,8 @@ def object_path2nevra(op, with_epoch='NOT_ZERO'):
return util.make_nevra(
match.group('name'),
epoch,
- match.group('ver'),
- match.group('rel'),
+ match.group('version'),
+ match.group('release'),
match.group('arch'), with_epoch=with_epoch)
@cmpi_logging.trace_function
@@ -224,85 +225,46 @@ def object_path2pkg(op,
op["InstanceID"])
@cmpi_logging.trace_function
-def pkg2model(pkg_info, keys_only=True, model=None):
+def pkg2model(pkg, keys_only=True, model=None):
"""
+ @param pkg can either be an instance of PackageInfo or nevra as string
@param model if not None, will be filled with data, otherwise
a new instance of CIMInstance or CIMObjectPath is created
"""
- if not isinstance(pkg_info, PackageInfo):
- raise TypeError("pkg must be an instance of PackageInfo")
+ if not isinstance(pkg, (basestring, PackageInfo)):
+ raise TypeError("pkg must be an instance of PackageInfo or nevra")
+ if isinstance(pkg, basestring) and not keys_only:
+ raise ValueError("can not create instance out of nevra")
if model is None:
model = pywbem.CIMInstanceName("LMI_SoftwareIdentity",
namespace="root/cimv2")
if not keys_only:
model = pywbem.CIMInstance("LMI_SoftwareIdentity", path=model)
- if isinstance(model, pywbem.CIMInstance):
- def _set_key(k, value):
- """Sets the value of key property of cim instance"""
- model[k] = value
- model.path[k] = value #pylint: disable=E1103
- else:
- _set_key = model.__setitem__
- _set_key('InstanceID', 'LMI:SoftwareIdentity:'+pkg_info.nevra)
+ nevra = pkg if isinstance(pkg, basestring) else pkg.nevra
+ model['InstanceID'] = 'LMI:SoftwareIdentity:'+nevra
if not keys_only:
- #model['BuildNumber'] = pywbem.Uint16() # TODO
- model['Caption'] = pkg_info.summary
- #model['ClassificationDescriptions'] = ['',] # TODO
+ model.path['InstanceID'] = model['InstanceID'] #pylint: disable=E1103
+ model['Caption'] = pkg.summary
model['Classifications'] = [pywbem.Uint16(0)]
- #model['CommunicationStatus'] = \
- # self.Values.CommunicationStatus.<VAL> # TODO
- model['Description'] = pkg_info.description
- #model['DetailedStatus'] = self.Values.DetailedStatus.<VAL> # TODO
- model['ElementName'] = pkg_info.nevra
- #model['ExtendedResourceType'] = \
- #self.Values.ExtendedResourceType.<VAL> # TODO
- #model['HealthState'] = self.Values.HealthState.<VAL> # TODO
- #model['IdentityInfoType'] = ['',] # TODO
- #model['IdentityInfoValue'] = ['',] # TODO
- if pkg_info.installed:
- model['InstallDate'] = pywbem.CIMDateTime(pkg_info.install_time)
+ model['Description'] = pkg.description
+ model['ElementName'] = pkg.nevra
+ if pkg.installed:
+ model['InstallDate'] = pywbem.CIMDateTime(pkg.install_time)
else:
model['InstallDate'] = pywbem.CIMProperty(
'InstallDate', None, type='datetime')
model['IsEntity'] = True
- #model['IsLargeBuildNumber'] = bool(False) # TODO
- #model['Languages'] = ['',] # TODO
- #model['LargeBuildNumber'] = pywbem.Uint64() # TODO
- #model['MajorVersion'] = pywbem.Uint16() # TODO
- #model['Manufacturer'] = '' # TODO
- #model['MinExtendedResourceTypeBuildNumber'] = \
- #pywbem.Uint16() # TODO
- #model['MinExtendedResourceTypeMajorVersion'] = \
- #pywbem.Uint16() # TODO
- #model['MinExtendedResourceTypeMinorVersion'] = \
- #pywbem.Uint16() # TODO
- #model['MinExtendedResourceTypeRevisionNumber'] = \
- #pywbem.Uint16() # TODO
- #model['MinorVersion'] = pywbem.Uint16() # TODO
- model['Name'] = pkg_info.name
+ model['Name'] = pkg.name
try:
- model["Epoch"] = pywbem.Uint32(int(pkg_info.epoch))
+ model["Epoch"] = pywbem.Uint32(int(pkg.epoch))
except ValueError:
cmpi_logging.logger.error('Could not convert epoch "%s"'
- ' to integer for package \"%s\"!' % (pkg_info.epoch, pkg_info))
+ ' to integer for package \"%s\"!' % (pkg.epoch, pkg))
model["Epoch"] = pywbem.CIMProperty('Epoch', None, type='uint32')
- model['Version'] = pkg_info.version
- model['Release'] = pkg_info.release
- model['Architecture'] = pkg_info.arch
- #model['OperatingStatus'] = \
- #self.Values.OperatingStatus.<VAL> # TODO
- #model['OperationalStatus'] = \
- #[self.Values.OperationalStatus.<VAL>,] # TODO
- #model['OtherExtendedResourceTypeDescription'] = '' # TODO
- #model['PrimaryStatus'] = self.Values.PrimaryStatus.<VAL> # TODO
- #model['ReleaseDate'] = pywbem.CIMDateTime() # TODO
- #model['RevisionNumber'] = pywbem.Uint16() # TODO
- #model['SerialNumber'] = '' # TODO
- #model['Status'] = self.Values.Status.<VAL> # TODO
- #model['StatusDescriptions'] = ['',] # TODO
- #model['TargetOperatingSystems'] = ['',] # TODO
- #model['TargetOSTypes'] = [pywbem.Uint16(),] # TODO
+ model['Version'] = pkg.version
+ model['Release'] = pkg.release
+ model['Architecture'] = pkg.arch
model['TargetTypes'] = ['rpm', 'yum']
- model['VersionString'] = pkg_info.evra
+ model['VersionString'] = pkg.evra
return model