diff options
Diffstat (limited to 'src/software/openlmi/software/core/Identity.py')
-rw-r--r-- | src/software/openlmi/software/core/Identity.py | 86 |
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 |