backend/satellite_tools/satsync.py | 1 + backend/server/importlib/errataImport.py | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-)
New commits: commit 311120151a5c00a3d76ebded80394df456a31890 Author: Michael Mraka michael.mraka@redhat.com Date: Tue Dec 15 14:15:43 2009 +0100
fixed import of pre-sha256 exports
diff --git a/backend/server/importlib/errataImport.py b/backend/server/importlib/errataImport.py index 54fd677..305a24e 100644 --- a/backend/server/importlib/errataImport.py +++ b/backend/server/importlib/errataImport.py @@ -76,7 +76,10 @@ class ErrataImport(GenericPackageImport):
def _preprocessErratumFiles(self, erratum): for f in (erratum['files'] or []): - checksum = ('md5', f['md5sum']) # FIXME sha256 + if 'md5sum' in f: # old pre-sha256 export + checksum = ('md5', f['md5sum']) + else: + checksum = (f['checksum_type'], f['checksum']) f['checksum'] = checksum if not self.checksums.has_key(checksum): self.checksums[checksum] = None
commit 82dfed1e154c9998b815bfad53733b03dd2f588a Author: Michael Mraka michael.mraka@redhat.com Date: Tue Dec 15 14:08:41 2009 +0100
fixed ORA-01400: cannot insert NULL into ("RHNSAT"."RHNERRATAPACKAGE"."PACKAGE_ID")
Traceback (most recent call last): File "/usr/bin/satellite-sync", line 142, in main return satsync.Runner().main() File "/usr/share/rhn/satellite_tools/satsync.py", line 214, in main ret = method() File "/usr/share/rhn/satellite_tools/satsync.py", line 329, in _step_errata self.syncer.import_errata() File "/usr/share/rhn/satellite_tools/satsync.py", line 1766, in import_errata sync_handlers.import_errata(chunk) File "/usr/share/rhn/satellite_tools/sync_handlers.py", line 449, in import_errata importer.run() File "/usr/share/rhn/server/importlib/importLib.py", line 630, in run self.submit() File "/usr/share/rhn/server/importlib/errataImport.py", line 197, in submit dml = self.backend.processErrata(self.batch) File "/usr/share/rhn/server/importlib/backend.py", line 740, in processErrata transactional=1) File "/usr/share/rhn/server/importlib/backend.py", line 1409, in +__processObjectCollection return self.__processObjectCollection__(objColl, parentTable, childDict, **kwargs) File "/usr/share/rhn/server/importlib/backend.py", line 1579, in +__processObjectCollection__ return self.__doDML(dml) File "/usr/share/rhn/server/importlib/backend.py", line 1687, in __doDML self.__doInsert(dml.insert, dml.tables) File "/usr/share/rhn/server/importlib/backend.py", line 1696, in __doInsert raise rhnFault(54, str(e[1]), explain=0) rhnFault: (54, 'ORA-01400: cannot insert NULL into +("RHNSAT"."RHNERRATAPACKAGE"."PACKAGE_ID")\n', '\n Package Upload Failed due to +uniqueness constraint violation.\n Make sure the package does not have any +duplicate dependencies or\n does not already exists on the server\n ')
diff --git a/backend/server/importlib/errataImport.py b/backend/server/importlib/errataImport.py index 03e556e..54fd677 100644 --- a/backend/server/importlib/errataImport.py +++ b/backend/server/importlib/errataImport.py @@ -260,14 +260,19 @@ class ErrataImport(GenericPackageImport):
def _fix_erratum_packages(self, erratum): - pkgs = {} - for nevrao, package in erratum['packages'].items(): + pkgs = [] + # This is a workaround; It would be much straightforward to use + # 'package in erratum['packages'].values()' here. But for (to me) unknown + # reason it sometimes has package.id == None which makes whole import fail. + # And self.packages[nevrao].id contains always right value. + for nevrao in erratum['packages'].keys(): + package = self.packages[nevrao] if package.ignored: # Ignore this package continue - pkgs[package.id] = None + pkgs.append({'package_id' : package.id})
- erratum['packages'] = map(lambda x: {'package_id' : x}, pkgs.keys()) + erratum['packages'] = pkgs
for ef in (erratum['files'] or []): if ef['file_type'] == 'RPM':
commit 348d5c5be2327a5933ca82b49c7078246154e6b2 Author: Michael Mraka michael.mraka@redhat.com Date: Tue Dec 15 13:56:26 2009 +0100
added comment; otherwise it isn't easy to figure out what this piece of code actually does
diff --git a/backend/satellite_tools/satsync.py b/backend/satellite_tools/satsync.py index 17ff868..38a50d9 100644 --- a/backend/satellite_tools/satsync.py +++ b/backend/satellite_tools/satsync.py @@ -1784,6 +1784,7 @@ Please contact your RHN representative""" % (generation, sat_cert.generation)) pids = unique(erratum['packages']) # map all the pkgs objects to the erratum packages = [] + # remove packages which are not in the export (e.g. archs we are not syncing) for pid in pids: try: timestamp = sp_coll.get_package_timestamp(pid)