summaryrefslogtreecommitdiffstats
path: root/src/software/openlmi/software/core/Identity.py
diff options
context:
space:
mode:
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