backend/satellite_exporter/exporter/dumper.py | 22 +++++----
backend/satellite_exporter/exporter/exportLib.py | 52 +++++++++++++++++------
backend/satellite_tools/disk_dumper/dumper.py | 12 +++--
backend/satellite_tools/exporter/exportLib.py | 42 +++++++++++++++---
backend/satellite_tools/xmlSource.py | 13 +++++
backend/server/importlib/backend.py | 11 ++++
backend/server/importlib/importLib.py | 4 -
backend/server/importlib/packageImport.py | 10 +++-
8 files changed, 130 insertions(+), 36 deletions(-)
New commits:
commit 924c1466da044d171627b426fbcfbf3c86ac1462
Author: Pradeep Kilambi <pkilambi(a)redhat.com>
Date: Wed Jul 1 18:35:39 2009 -0400
Sha256 support exporter/importer. Should export the checksum as a separate dumper and
handle the inserts. More work follows
diff --git a/backend/satellite_exporter/exporter/dumper.py
b/backend/satellite_exporter/exporter/dumper.py
index 1f95d34..c08f8ee 100644
--- a/backend/satellite_exporter/exporter/dumper.py
+++ b/backend/satellite_exporter/exporter/dumper.py
@@ -777,15 +777,17 @@ class ShortPackagesDumper(CachedDumper,
exportLib.ShortPackagesDumper):
pe.evr.release release,
pe.evr.epoch epoch,
pa.label package_arch,
- p.md5sum,
+ pcs.checksum as md5sum,
p.package_size,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
- from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa
- where p.id = :package_id
+ from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
+ rhnPackageArch pa,
+ rhnPackageChecksum pcs
+ where p.id = :package_id
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
+ and pcs.package_id = p.id
""")
CachedDumper.__init__(self, writer, statement=h, params=packages)
@@ -817,8 +819,8 @@ class PackagesDumper(CachedDumper, exportLib.PackagesDumper):
p.payload_size,
p.build_host,
TO_CHAR(p.build_time, 'YYYYMMDDHH24MISS') build_time,
- sr.name source_rpm,
- p.md5sum,
+ sr.name source_rpm,
+ pcs.checksum as md5sum,
p.vendor,
p.payload_format,
p.compat,
@@ -828,14 +830,16 @@ class PackagesDumper(CachedDumper, exportLib.PackagesDumper):
p.copyright,
p.cookie,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
- from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr
- where p.id = :package_id
+ from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
+ rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr,
+ rhnPackageChecksum pcs
+ where p.id = :package_id
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.package_group = pg.id
and p.source_rpm_id = sr.id
+ and pcs.package_id = p.id
""")
CachedDumper.__init__(self, writer, statement=h, params=packages)
diff --git a/backend/satellite_exporter/exporter/exportLib.py
b/backend/satellite_exporter/exporter/exportLib.py
index 3b0ce75..201df43 100644
--- a/backend/satellite_exporter/exporter/exportLib.py
+++ b/backend/satellite_exporter/exporter/exportLib.py
@@ -557,7 +557,6 @@ class PackagesDumper(BaseDumper):
p.build_host,
TO_CHAR(p.build_time, 'YYYYMMDDHH24MISS') build_time,
sr.name source_rpm,
- p.md5sum,
p.vendor,
p.payload_format,
p.compat,
@@ -566,14 +565,17 @@ class PackagesDumper(BaseDumper):
p.cookie,
p.header_start,
p.header_end,
+ pcs.checksum as md5sum,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
- from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr
+ from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
+ rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr,
+ rhnPackageChecksum pcs
where p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.package_group = pg.id
and p.source_rpm_id = sr.id
+ and pcs.package_id = p.id
and p.path is not null
and rownum < 3
""")
@@ -590,8 +592,8 @@ class _PackageDumper(BaseRowDumper):
def set_attributes(self):
attrs = ["name", "version", "release",
"package_arch",
- "package_group", "rpm_version", "package_size",
"payload_size",
- "build_host", "source_rpm", "md5sum",
"payload_format",
+ "package_group", "rpm_version", "package_size",
"payload_size",
+ "build_host", "source_rpm", "md5sum",
"payload_format",
"compat", "cookie"]
attrdict = {
'id' : "rhn-package-%s" %
self._row['id'],
@@ -627,6 +629,18 @@ class _PackageDumper(BaseRowDumper):
""")
h.execute(package_id = self._row['id'])
arr.append(_ChangelogDumper(self._writer, data_iterator=h))
+
+ # checksum
+ h = rhnSQL.prepare("""
+ select cst.label, pcs.checksum
+ from rhnPackageChecksum pcs,
+ rhnChecksumType cst
+ where pcs.package_id = :package_id
+ and pcs.checksum_type_id = cst.id
+ """)
+ h.execute(package_id = self._row['id'])
+ arr.append(_PackageChecksumDumper(self._writer, data_iterator=h))
+
# Dependency information
mappings = [
@@ -657,7 +671,8 @@ class _PackageDumper(BaseRowDumper):
pc.name, pf.device, pf.inode, pf.file_mode, pf.username,
pf.groupname, pf.rdev, pf.file_size,
TO_CHAR(mtime, 'YYYYMMDDHH24MISS') mtime,
- pf.md5, pf.linkto, pf.flags, pf.verifyflags, pf.lang
+ pf.checksum,
+ pf.linkto, pf.flags, pf.verifyflags, pf.lang
from rhnPackageFile pf, rhnPackageCapability pc
where pf.capability_id = pc.id
and pf.package_id = :package_id
@@ -683,14 +698,16 @@ class ShortPackagesDumper(BaseDumper):
pe.evr.release release,
pe.evr.epoch epoch,
pa.label package_arch,
- p.md5sum,
+ pcs.checksum as md5sum,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
- from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa
+ from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
+ rhnPackageArch pa,
+ rhnPackageChecksum pcs
where p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.path is not null
+ and pcs.package_id = p.id
and rownum < 3
""")
h.execute()
@@ -699,8 +716,8 @@ class ShortPackagesDumper(BaseDumper):
def dump_subelement(self, data):
attributes = {}
attrs = [
- "id", "name", "version", "release",
"epoch",
- "package_arch", "md5sum", "package_size",
+ "id", "name", "version", "release",
"epoch",
+ "package_arch", "package_size", "md5sum"
]
for attr in attrs:
attributes[attr.replace('_', '-')] = data[attr]
@@ -801,13 +818,24 @@ class _DependencyDumper(BaseDumper):
})
d.dump()
+class _PackageChecksumDumper(BaseDumper):
+ tag_name = 'rhn-package-checksum'
+
+ def dump_subelement(self, data):
+ data['checksum_type'] = data['label'] or ""
+ data['checksum'] = data['checksum'] or ""
+ d = EmptyDumper(self._writer, 'rhn-package-checksum',
+ attributes=data)
+ d.dump()
+
+
## Files
class _PackageFilesDumper(BaseDumper):
tag_name = 'rhn-package-files'
def dump_subelement(self, data):
data['mtime'] = _dbtime2timestamp(data['mtime'])
- data['md5'] = data['md5'] or ""
+ data['checksum'] = data['checksum'] or ""
data['linkto'] = data['linkto'] or ""
data['lang'] = data['lang'] or ""
d = EmptyDumper(self._writer, 'rhn-package-file',
diff --git a/backend/satellite_tools/disk_dumper/dumper.py
b/backend/satellite_tools/disk_dumper/dumper.py
index 42bda4c..b67e0c9 100644
--- a/backend/satellite_tools/disk_dumper/dumper.py
+++ b/backend/satellite_tools/disk_dumper/dumper.py
@@ -923,15 +923,17 @@ class ShortPackagesDumper(CachedDumper,
exportLib.ShortPackagesDumper):
pe.evr.release release,
pe.evr.epoch epoch,
pa.label package_arch,
- p.md5sum,
+ pcs.checksum as md5sum,
p.package_size,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa
+ rhnPackageArch pa,
+ rhnPackageChecksum pcs
where p.id = :package_id
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
+ and pcs.package_id = p.id
""")
CachedDumper.__init__(self, writer, statement=h, params=packages)
@@ -965,7 +967,7 @@ class PackagesDumper(CachedDumper, exportLib.PackagesDumper):
p.build_host,
TO_CHAR(p.build_time, 'YYYYMMDDHH24MISS') build_time,
sr.name source_rpm,
- p.md5sum,
+ pcs.checksum as md5sum,
p.vendor,
p.payload_format,
p.compat,
@@ -976,13 +978,15 @@ class PackagesDumper(CachedDumper, exportLib.PackagesDumper):
p.cookie,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr
+ rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr,
+ rhnPackageChecksum pcs
where p.id = :package_id
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.package_group = pg.id
and p.source_rpm_id = sr.id
+ and pcs.package_id = p.id
""")
CachedDumper.__init__(self, writer, statement=h, params=packages)
diff --git a/backend/satellite_tools/exporter/exportLib.py
b/backend/satellite_tools/exporter/exportLib.py
index cd88b52..9cb6dcb 100644
--- a/backend/satellite_tools/exporter/exportLib.py
+++ b/backend/satellite_tools/exporter/exportLib.py
@@ -520,7 +520,6 @@ class PackagesDumper(BaseDumper):
p.build_host,
TO_CHAR(p.build_time, 'YYYYMMDDHH24MISS') build_time,
sr.name source_rpm,
- p.md5sum,
p.vendor,
p.payload_format,
p.compat,
@@ -529,14 +528,17 @@ class PackagesDumper(BaseDumper):
p.cookie,
p.header_start,
p.header_end,
+ pcs.checksum as md5sum,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr
+ rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr,
+ rhnPackageChecksum pcs
where p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.package_group = pg.id
and p.source_rpm_id = sr.id
+ and pcs.package_id = p.id
and p.path is not null
and rownum < 3
""")
@@ -591,6 +593,18 @@ class _PackageDumper(BaseRowDumper):
""")
h.execute(package_id = self._row['id'])
arr.append(_ChangelogDumper(self._writer, data_iterator=h))
+
+ # checksum
+ h = rhnSQL.prepare("""
+ select cst.label, pcs.checksum
+ from rhnPackageChecksum pcs,
+ rhnChecksumType cst
+ where pcs.package_id = :package_id
+ and pcs.checksum_type_id = cst.id
+ """)
+ h.execute(package_id = self._row['id'])
+ arr.append(_PackageChecksumDumper(self._writer, data_iterator=h))
+
# Dependency information
mappings = [
@@ -621,7 +635,8 @@ class _PackageDumper(BaseRowDumper):
pc.name, pf.device, pf.inode, pf.file_mode, pf.username,
pf.groupname, pf.rdev, pf.file_size,
TO_CHAR(mtime, 'YYYYMMDDHH24MISS') mtime,
- pf.md5, pf.linkto, pf.flags, pf.verifyflags, pf.lang
+ pf.checksum,
+ pf.linkto, pf.flags, pf.verifyflags, pf.lang
from rhnPackageFile pf, rhnPackageCapability pc
where pf.capability_id = pc.id
and pf.package_id = :package_id
@@ -647,14 +662,16 @@ class ShortPackagesDumper(BaseDumper):
pe.evr.release release,
pe.evr.epoch epoch,
pa.label package_arch,
- p.md5sum,
+ pcs.checksum as md5sum,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa
+ rhnPackageArch pa,
+ rhnPackageChecksum pcs
where p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.path is not null
+ and pcs.package_id = p.id
and rownum < 3
""")
h.execute()
@@ -664,7 +681,7 @@ class ShortPackagesDumper(BaseDumper):
attributes = {}
attrs = [
"id", "name", "version", "release",
"epoch",
- "package_arch", "md5sum", "package_size",
+ "package_arch", "package_size", "md5sum"
]
for attr in attrs:
attributes[string.replace(attr, '_', '-')] = data[attr]
@@ -765,13 +782,24 @@ class _DependencyDumper(BaseDumper):
})
d.dump()
+class _PackageChecksumDumper(BaseDumper):
+ tag_name = 'rhn-package-checksum'
+
+ def dump_subelement(self, data):
+ data['checksum_type'] = data['label'] or ""
+ data['checksum'] = data['checksum'] or ""
+ d = EmptyDumper(self._writer, 'rhn-package-checksum',
+ attributes=data)
+ d.dump()
+
+
## Files
class _PackageFilesDumper(BaseDumper):
tag_name = 'rhn-package-files'
def dump_subelement(self, data):
data['mtime'] = _dbtime2timestamp(data['mtime'])
- data['md5'] = data['md5'] or ""
+ data['checksum'] = data['checksum'] or ""
data['linkto'] = data['linkto'] or ""
data['lang'] = data['lang'] or ""
d = EmptyDumper(self._writer, 'rhn-package-file',
diff --git a/backend/satellite_tools/xmlSource.py b/backend/satellite_tools/xmlSource.py
index 0bfbda2..a12c6f6 100644
--- a/backend/satellite_tools/xmlSource.py
+++ b/backend/satellite_tools/xmlSource.py
@@ -517,6 +517,7 @@ class PackageItem(IncompletePackageItem):
'rhn-package-conflicts' : 'conflicts',
'rhn-package-obsoletes' : 'obsoletes',
'rhn-package-changelog' : 'changelog',
+ 'rhn-package-checksum' : 'checksum',
}
tagMap.update(IncompletePackageItem.tagMap)
addItem(PackageItem)
@@ -556,6 +557,16 @@ class ChangelogItem(BaseItem):
}
addItem(ChangelogItem)
+class ChecksumItem(BaseItem):
+ item_name = 'rhn-package-checksum'
+ item_class = importLib.Checksum
+ tagMap = {
+ 'checksum_type' : 'checksum_type',
+ 'checksum' : 'checksum',
+ }
+addItem(ChecksumItem)
+
+
class ProvidesItem(BaseItem):
item_name = 'rhn-package-provides-entry'
item_class = importLib.Dependency
@@ -600,7 +611,7 @@ class FileItem(BaseItem):
'rhn-package-file-rdev' : 'rdev',
'rhn-package-file-file_size': 'file_size',
'rhn-package-file-mtime' : 'mtime',
- 'rhn-package-file-md5' : 'md5',
+ 'rhn-package-file-md5' : 'checksum',
'rhn-package-file-linkto' : 'linkto',
'rhn-package-file-flags' : 'flags',
'rhn-package-file-verifyflags': 'verifyflags',
diff --git a/backend/server/importlib/backend.py b/backend/server/importlib/backend.py
index 55d0390..99df7c2 100644
--- a/backend/server/importlib/backend.py
+++ b/backend/server/importlib/backend.py
@@ -540,6 +540,16 @@ class Backend:
return self._lookup_in_table('rhnKSInstallType',
'rhn_ksinstalltype_id_seq', hash)
+ def lookup_checksum_type(self, checksums):
+ sql = "select id from rhnChecksumType where label = :ctype"
+ h = self.dbmodule.prepare(sql)
+ for checksum in checksums:
+ h.execute(ctype = checksum['checksum_type'])
+ row = h.fetchone_dict()
+ if row:
+ checksum['checksum_type_id'] = row['id']
+
+
def _lookup_in_table(self, table_name, sequence_name, hash):
t = self.dbmodule.Table(table_name, 'label')
seq = self.dbmodule.Sequence(sequence_name)
@@ -697,6 +707,7 @@ class Backend:
'rhnPackageObsoletes': 'package_id',
'rhnPackageFile': 'package_id',
'rhnPackageChangeLog': 'package_id',
+ 'rhnpackageChecksum' : 'package_id',
}
solarisChildTables = {
diff --git a/backend/server/importlib/importLib.py
b/backend/server/importlib/importLib.py
index 1900cb6..cd54578 100644
--- a/backend/server/importlib/importLib.py
+++ b/backend/server/importlib/importLib.py
@@ -262,7 +262,7 @@ class ChangeLog(Item):
class Checksum(Information):
attributeTypes = {
- 'checksum_type_id' : StringType,
+ 'checksum_type' : StringType,
'checksum' : StringType,
}
@@ -348,7 +348,7 @@ class Package(IncompletePackage):
'obsoletes' : [Dependency],
'changelog' : [ChangeLog],
'channels' : [StringType],
- #'checksum' : [Checksum],
+ 'checksum' : [Checksum],
}
def __init__(self):
# Inherit from IncompletePackage
diff --git a/backend/server/importlib/packageImport.py
b/backend/server/importlib/packageImport.py
index a1fb009..ee17c6d 100644
--- a/backend/server/importlib/packageImport.py
+++ b/backend/server/importlib/packageImport.py
@@ -113,7 +113,7 @@ class ChannelPackageSubscription(GenericPackageImport):
def submit(self):
self.backend.lookupPackages(self.batch)
- self.backend.processPackageChecksum(self.batch)
+ #self.backend.processPackageChecksum(self.batch)
try:
affected_channels = self.backend.subscribeToChannels(self.batch,
strict=self._strict_subscription)
@@ -271,6 +271,14 @@ class PackageImport(ChannelPackageSubscription):
cmp(a['name'], b['name']))
package['changelog'] = changelogs
+ checksums = {}
+ for checksum in package['checksum']:
+ self.backend.lookup_checksum_type(package['checksum'])
+ key = (checksum['checksum_type_id'], checksum['checksum'])
+ checksums[key] = checksum
+ package['checksum'] = checksums
+
+
if 'solaris_patch_set' in package:
if package.arch.startswith("sparc"):
self.package_arches['sparc-solaris-patch'] = None