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(a)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(a)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(a)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)