[Pulp-list] Upgrade from v1 to v2 failed
Andreas Piesk
a.piesk at gmx.net
Sun Mar 16 21:27:16 UTC 2014
Hello list,
i tried to upgrade from v1 (1.1.15) to v2 (2.1.3), unfortunately it
failed upgrading the database. these are the issue i encountered:
1. missing package attributes
some packages miss some attributes which pulp depends on.
# pulp-v1-upgrade
= Upgrading Database =
..
Upgrading: Packages, Errata, and Distributions
Traceback (most recent call last):
File "/usr/bin/pulp-v1-upgrade", line 50, in <module>
upgrader.upgrade()
File "/usr/lib/python2.6/site-packages/pulp/server/upgrade/main.py",
line 187, in upgrade
self._upgrade_database()
File "/usr/lib/python2.6/site-packages/pulp/server/upgrade/main.py",
line 228, in _upgrade_database
report = db_call(v1_database, tmp_database)
File
"/usr/lib/python2.6/site-packages/pulp/server/upgrade/db/units.py", line
121, in upgrade
rpms_success = _rpms(v1_database, v2_database, report)
File
"/usr/lib/python2.6/site-packages/pulp/server/upgrade/db/units.py", line
217, in _rpms
return _packages(v1_database, v2_database, rpm_coll, all_rpms,
'rpm', report)
File
"/usr/lib/python2.6/site-packages/pulp/server/upgrade/db/units.py", line
247, in _packages
'description' : v1_rpm['description'],
KeyError: 'description'
this is one of the the culprits:
SON([(u'repoids', [u'oracle-jdk-x86_64']), (u'checksum',
SON([(u'sha256',
u'338a454a36b034bc1373dbdda00d99a3eeba184fb2b690d3a81adb3825812727')])),
(u'filename', u'jdk-1.6.0_33-fcs.x86_64.rpm'), (u'epoch', u'2000'),
(u'version', u'1.6.0_33'), (u'_ns', u'packages'), (u'release', u'fcs'),
(u'_id', u'f516b651-f958-4d22-bd1d-e7d8ee66bcc4'), (u'arch', u'x86_64'),
(u'id', u'f516b651-f958-4d22-bd1d-e7d8ee66bcc4'), (u'name', u'jdk')])
i fixed it by assigning defaults:
# diff -Purp
/usr/lib/python2.6/site-packages/pulp/server/upgrade/db/units.py.org
/usr/lib/python2.6/site-packages/pulp/server/upgrade/db/units.py
--- /usr/lib/python2.6/site-packages/pulp/server/upgrade/db/units.py.org
2013-08-18 21:42:25.723204539 +0200
+++ /usr/lib/python2.6/site-packages/pulp/server/upgrade/db/units.py
2013-08-18 22:02:27.581580546 +0200
@@ -244,13 +244,13 @@ def _packages(v1_database, v2_database,
'version' : v1_rpm['version'],
'release' : v1_rpm['release'],
'arch' : v1_rpm['arch'],
- 'description' : v1_rpm['description'],
- 'vendor' : v1_rpm['vendor'],
+ 'description' : v1_rpm.get('description',None),
+ 'vendor' : v1_rpm.get('vendor', None),
'filename' : v1_rpm['filename'],
- 'requires' : v1_rpm['requires'],
- 'provides' : v1_rpm['provides'],
- 'buildhost' : v1_rpm['buildhost'],
- 'license' : v1_rpm['license'],
+ 'requires' : v1_rpm.get('requires', None),
+ 'provides' : v1_rpm.get('provides', None),
+ 'buildhost' : v1_rpm.get('buildhost', None),
+ 'license' : v1_rpm.get('license', None),
'_id' : new_rpm_id,
'_content_type_id' : unit_type_id
2. package names with '.'
# pulp-v1-upgrade
..
Upgrading: Packages, Errata, and Distributions
Traceback (most recent call last):
File "/usr/bin/pulp-v1-upgrade", line 50, in <module>
upgrader.upgrade()
File "/usr/lib/python2.6/site-packages/pulp/server/upgrade/main.py",
line 187, in upgrade
self._upgrade_database()
File "/usr/lib/python2.6/site-packages/pulp/server/upgrade/main.py",
line 228, in _upgrade_database
report = db_call(v1_database, tmp_database)
File
"/usr/lib/python2.6/site-packages/pulp/server/upgrade/db/units.py", line
125, in upgrade
groups_success = _package_groups(v1_database, v2_database, report)
File
"/usr/lib/python2.6/site-packages/pulp/server/upgrade/db/units.py", line
622, in _package_groups
v2_coll.insert(new_group, safe=True)
File "/usr/lib64/python2.6/site-packages/pymongo/collection.py",
line 312, in insert
continue_on_error, self.__uuid_subtype), safe)
bson.errors.InvalidDocument: key 'openoffice.org-langpack-pt_PT' must
not contain '.'
I believe, this was introduced in pymongo >2.0.1 and pulp v2 requires 2.1.
RHEL5 contains these openoffice packages and i believe (but i might be
wrong), rpm allows dots.
Funny thing, this issue was mentioned in
http://www.pulpproject.org/ug/UGFAQ.html. workaround for this is to
downgrade.
The issue has been discovered some time ago, see
http://osdir.com/ml/pulp-list/2013-06/msg00014.html.
To sucessfully upgrade i have to set check_keys=False (w=1 is the same
as safe=True on recent versions of pymongo):
---
/usr/lib/python2.6/site-packages/pulp/server/upgrade/db/units.py.org
2013-08-18 21:42:25.723204539 +0200
+++ /usr/lib/python2.6/site-packages/pulp/server/upgrade/db/units.py
2013-08-20 21:57:16.201263427 +0200
@@ -619,7 +619,7 @@ def _package_groups(v1_database, v2_data
'translated_name' : v1_group['translated_name'],
'user_visible' : v1_group['user_visible'],
}
- v2_coll.insert(new_group, safe=True)
+ v2_coll.insert(new_group, check_keys=False, w=1)
new_association = {
'_id' : ObjectId(),
Unfortunately "check_keys=False" must be set on every insert, save,
update, upsert.
3. upgrade documentation
the upgrade documentation
https://pulp-user-guide.readthedocs.org/en/pulp-2.1/v1_upgrade.html is
missing a important step: running pulp-manage-db after db upgrade and
updating pulp to the last stable version.
Do you want pull requests for issue 1 and/or issue 2?
Regards,
-ap
More information about the Pulp-list
mailing list