summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichal Minar <miminar@redhat.com>2012-10-24 16:38:37 +0200
committerMichal Minar <miminar@redhat.com>2012-10-24 16:38:37 +0200
commit659f348cd2fe6587f5daaf91e227509b95be6d6f (patch)
tree3cc006b7f92a436a30626540785161bc5881ec19 /src
parent371066acd6e0c37e9558c2143069a758b9f26070 (diff)
downloadopenlmi-providers-659f348cd2fe6587f5daaf91e227509b95be6d6f.tar.gz
openlmi-providers-659f348cd2fe6587f5daaf91e227509b95be6d6f.tar.xz
openlmi-providers-659f348cd2fe6587f5daaf91e227509b95be6d6f.zip
modified for used under tog-pegasus
Checkum property of LMI_SoftwareFileCheck had different type than in base class. This prevented registration. - Solved by renaming: Checksum -> FileChecksum ExpectedChecksum -> ExpectedFileChecksum ChecksumType -> FileChecksumType fixed filtering of found available and installed packages - search by nevra replaced with search for particular keys
Diffstat (limited to 'src')
-rw-r--r--src/software/providers/LMI_SoftwareFileCheck.py9
-rw-r--r--src/software/providers/util/common.py43
-rwxr-xr-xsrc/software/test/test_software_file_check.py16
3 files changed, 35 insertions, 33 deletions
diff --git a/src/software/providers/LMI_SoftwareFileCheck.py b/src/software/providers/LMI_SoftwareFileCheck.py
index 0058f78..7e1782c 100644
--- a/src/software/providers/LMI_SoftwareFileCheck.py
+++ b/src/software/providers/LMI_SoftwareFileCheck.py
@@ -70,10 +70,11 @@ class LMI_SoftwareFileCheck(CIMProvider2):
logger.log_debug('Entering %s.get_instance()' \
% self.__class__.__name__)
- vpkg = SoftwareFileCheck.object_path2yumcheck(env, model.path)
- pkg = vpkg.po
- fi = pkg.hdr.fiFromHeader()
- return filecheck2model(vpkg, model['Name'], env, False)
+ with YumDB.getInstance(env) as yb:
+ vpkg = SoftwareFileCheck.object_path2yumcheck(env, model.path)
+ pkg = vpkg.po
+ fi = pkg.hdr.fiFromHeader()
+ return filecheck2model(vpkg, model['Name'], env, False)
def enum_instances(self, env, model, keys_only):
"""Enumerate instances.
diff --git a/src/software/providers/util/common.py b/src/software/providers/util/common.py
index 4190d41..4c73830 100644
--- a/src/software/providers/util/common.py
+++ b/src/software/providers/util/common.py
@@ -354,19 +354,20 @@ class SoftwarePackage:
if not m:
raise pywbem.CIMError(pywbem.CIM_ERR_INVALID_PARAMETER,
"SoftwareElementID could not be parsed.")
- match_props['nevra'] = _get_key('SoftwareElementID')
- match_props['name'] = m.group('name')
+ for k in ('name', 'version', 'release', 'arch'):
+ mk = k if k not in ('version', 'release') else k[:3]
+ match_props[k] = m.group(mk)
+ if not m.group("epoch"):
+ match_props["epoch"] = "0"
else:
- for matchattr, instattr in (
- ('name', 'name'), ('epoch', 'epoch'), ('version', 'ver'),
- ('release', 'rel'), ('arch', 'arch')):
- if _get_key(matchattr):
- match_props[matchattr] = _get_key(matchattr)
+ for k in ('name', 'epoch', 'version', 'release', 'arch'):
+ ik = k if k != 'arch' else "architecture"
+ if _get_key(ik): match_props[k] = _get_key(ik)
if not match_props:
raise pywbem.CIMError(pywbem.CIM_ERR_FAILED,
"Too few key values given (give at least a Name).")
- if not 'name' in match_props and not 'nevra' in match_props:
+ if not 'name' in match_props:
raise pywbem.CIMError(pywbem.CIM_ERR_FAILED,
"Missing either Name or SoftwareElementID property.")
@@ -460,7 +461,7 @@ class SoftwareFileCheck:
"File Type",
"File Size",
"File Mode",
- "Checksum",
+ "File Checksum",
"Device major/minor number",
"Symlink Target",
"User Ownership", "Group Ownership",
@@ -652,7 +653,7 @@ class SoftwareFileCheck:
"""
FileCheck = collections.namedtuple('FileCheck',
'exists, md5_checksum, file_type, file_size, file_mode, '
- 'checksum, device, link_target, user_id, group_id, '
+ 'file_checksum, device, link_target, user_id, group_id, '
'last_modification_time')
@staticmethod
@@ -667,14 +668,14 @@ class SoftwareFileCheck:
exists = os.path.lexists(vpf.filename)
md5_checksum = None
expected = {
- "file_type" : SoftwareFileCheck.filetype_str2pywbem(vpf.ftype),
- "user_id" : pywbem.Uint32(pwd.getpwnam(vpf.user).pw_uid),
- "group_id" : pywbem.Uint32(grp.getgrnam(vpf.group).gr_gid),
- "file_mode" : pywbem.Uint32(vpf.mode),
- "file_size" : pywbem.Uint64(vpf.size),
- "link_target" : vpf.readlink if vpf.readlink else None,
- "checksum" : vpf.digest[1],
- "device" : (pywbem.Uint64(vpf.dev)
+ "file_type" : SoftwareFileCheck.filetype_str2pywbem(vpf.ftype),
+ "user_id" : pywbem.Uint32(pwd.getpwnam(vpf.user).pw_uid),
+ "group_id" : pywbem.Uint32(grp.getgrnam(vpf.group).gr_gid),
+ "file_mode" : pywbem.Uint32(vpf.mode),
+ "file_size" : pywbem.Uint64(vpf.size),
+ "link_target" : vpf.readlink if vpf.readlink else None,
+ "file_checksum" : vpf.digest[1],
+ "device" : (pywbem.Uint64(vpf.dev)
if vpf.ftype.endswith('device') else None),
"last_modification_time" : pywbem.Uint64(vpf.mtime)
}
@@ -697,7 +698,7 @@ class SoftwareFileCheck:
if os.path.islink(vpf.filename) else None)
md5_checksum, checksum = SoftwareFileCheck.compute_checksums(
env, checksum_type, reality["file_type"], vpf.filename)
- reality["checksum"] = checksum
+ reality["file_checksum"] = checksum
kwargs = dict(exists=exists, md5_checksum=md5_checksum,
**dict((k, (expected[k], reality[k])) for k in expected))
return SoftwareFileCheck.FileCheck(**kwargs)
@@ -769,7 +770,7 @@ class SoftwareFileCheck:
#model['ElementName'] = '' # TODO
#model['InstanceID'] = '' # TODO
model['FileName'] = os.path.basename(vpf.filename)
- model['ChecksumType'] = csumt = \
+ model['FileChecksumType'] = csumt = \
pywbem.Uint16(SoftwareFileCheck.pkg_checksum_type(pkg))
if fc is None:
fc = SoftwareFileCheck.test_file(env, csumt, vpf)
@@ -781,7 +782,7 @@ class SoftwareFileCheck:
('LastModificationTime', 'last_modification_time'),
('FileSize', 'file_size'),
('LinkTarget', 'link_target'),
- ('Checksum', 'checksum')):
+ ('FileChecksum', 'file_checksum')):
exp, rea = getattr(fc, fattr)
if exp is not None:
model['Expected' + mattr] = exp
diff --git a/src/software/test/test_software_file_check.py b/src/software/test/test_software_file_check.py
index 66b2452..a92f9a1 100755
--- a/src/software/test/test_software_file_check.py
+++ b/src/software/test/test_software_file_check.py
@@ -70,8 +70,8 @@ class TestSoftwareInstalledPackage(SoftwareBaseTestCase):
self.assertEqual(inst["FileMode"], stats.st_mode)
self.assertEqual(inst["FileSize"], stats.st_size)
self.assertEqual(inst["LinkTarget"], target)
- self.assertEqual(inst["Checksum"],
- "0"*self.hash_num2length[inst["ChecksumType"]])
+ self.assertEqual(inst["FileChecksum"],
+ "0"*self.hash_num2length[inst["FileChecksumType"]])
self.assertEqual(inst["LastModificationTime"],
int(stats.st_mtime))
@@ -128,8 +128,8 @@ class TestSoftwareInstalledPackage(SoftwareBaseTestCase):
self.assertEqual(inst["FileMode"], stats.st_mode)
self.assertEqual(inst["FileSize"], stats.st_size)
self.assertIs(inst["LinkTarget"], None)
- self.assertEqual(inst["Checksum"],
- "0"*self.hash_num2length[inst["ChecksumType"]])
+ self.assertEqual(inst["FileChecksum"],
+ "0"*self.hash_num2length[inst["FileChecksumType"]])
self.assertEqual(inst["LastModificationTime"],
int(stats.st_mtime))
@@ -142,8 +142,8 @@ class TestSoftwareInstalledPackage(SoftwareBaseTestCase):
self.assertEqual(inst["FileMode"], stats.st_mode)
self.assertEqual(inst["FileSize"], stats.st_size)
self.assertIs(inst["LinkTarget"], None)
- csum = self.make_checksum_str(inst['ChecksumType'], f)
- self.assertEqual(inst["Checksum"].lower(), csum)
+ csum = self.make_checksum_str(inst['FileChecksumType'], f)
+ self.assertEqual(inst["FileChecksum"].lower(), csum)
self.assertEqual(inst["ExpectedLastModificationTime"],
inst["LastModificationTime"])
self.assertEqual(inst["LastModificationTime"],
@@ -201,7 +201,7 @@ class TestSoftwareInstalledPackage(SoftwareBaseTestCase):
self.assertNotEqual(inst["FileSize"], inst["ExpectedFileSize"])
self.assertIsNone(inst["LastModificationTime"])
self.assertIsNone(inst["FileType"])
- self.assertIsNone(inst["Checksum"])
+ self.assertIsNone(inst["FileChecksum"])
self.assertIsNone(inst["FileMode"])
self.assertIsNone(inst["FileUserID"])
self.assertIsNone(inst["FileGroupID"])
@@ -240,7 +240,7 @@ class TestSoftwareInstalledPackage(SoftwareBaseTestCase):
self.assertTrue(all(f is True for f in inst["PassedFlags"]))
for prop in ( "FileType", "FileUserID", "FileGroupID"
, "FileMode", "FileSize", "LinkTarget"
- , "Checksum", "FileModeFlags"):
+ , "FileChecksum", "FileModeFlags"):
self.assertEqual(inst["Expected"+prop], inst[prop])
if os.path.islink(f):
self.do_test_symlink(op, nevra, f, inst)