[Yum-devel] [PATCH] Make mdpolicy to be a list, to give users/callers greater control
James Antill
james at and.org
Tue Oct 6 21:16:42 UTC 2009
---
yum/config.py | 5 ++---
yum/yumRepo.py | 37 ++++++++++++++++++-------------------
2 files changed, 20 insertions(+), 22 deletions(-)
diff --git a/yum/config.py b/yum/config.py
index 63b3d17..ae294d3 100644
--- a/yum/config.py
+++ b/yum/config.py
@@ -667,9 +667,8 @@ class YumConf(StartupConf):
skip_broken = BoolOption(False)
# Note that "instant" is the old behaviour, but group:primary is very
# similar but better :).
- mdpolicy = SelectionOption('group:primary',
- ('instant', 'group:all', 'group:main',
- 'group:small', 'group:primary'))
+ mdpolicy = ListOption(['group:primary'])
+ # ('instant', 'group:all', 'group:main', 'group:small', 'group:primary'))
multilib_policy = SelectionOption('all',('best', 'all'))
# all == install any/all arches you can
# best == use the 'best arch' for the system
diff --git a/yum/yumRepo.py b/yum/yumRepo.py
index 978cb45..0f810cd 100644
--- a/yum/yumRepo.py
+++ b/yum/yumRepo.py
@@ -1355,13 +1355,6 @@ class YumRepository(Repository, config.RepoConf):
self._doneOldRepoXML()
return True
- def _instantLoadRepoXML(self, text=None):
- """ Retrieve the new repomd.xml from the repository, then check it
- and parse it. If it fails revert.
- Mostly traditional behaviour. """
- if self._commonLoadRepoXML(text):
- self._commonRetrieveDataMD([])
-
def _groupLoadRepoXML(self, text=None, mdtypes=None):
""" Retrieve the new repomd.xml from the repository, then check it
and parse it. If it fails we revert to the old version and pretend
@@ -1375,19 +1368,25 @@ class YumRepository(Repository, config.RepoConf):
def _loadRepoXML(self, text=None):
"""retrieve/check/read in repomd.xml from the repository"""
+ md_groups = {'instant' : [],
+ 'group:primary' : ['primary'],
+ 'group:small' : ["primary", "updateinfo"],
+ 'group:main' : ["primary", "group", "filelists",
+ "updateinfo", "prestodelta"]}
+ mdtypes = set()
+ if type(self.mdpolicy) in types.StringTypes:
+ mdtypes.update(md_groups.get(self.mdpolicy, [self.mdpolicy]))
+ else:
+ for mdpolicy in self.mdpolicy:
+ mdtypes.update(md_groups.get(mdpolicy, [mdpolicy]))
+
+ if not mdtypes or 'group:all' in mdtypes:
+ mdtypes = None
+ else:
+ mdtypes = sorted(list(mdtypes))
+
try:
- if self.mdpolicy in ["instant"]:
- return self._instantLoadRepoXML(text)
- if self.mdpolicy in ["group:all"]:
- return self._groupLoadRepoXML(text)
- if self.mdpolicy in ["group:main"]:
- return self._groupLoadRepoXML(text, ["primary", "group",
- "filelists", "updateinfo",
- "prestodelta"])
- if self.mdpolicy in ["group:small"]:
- return self._groupLoadRepoXML(text, ["primary", "updateinfo"])
- if self.mdpolicy in ["group:primary"]:
- return self._groupLoadRepoXML(text, ["primary"])
+ return self._groupLoadRepoXML(text, mdtypes)
except KeyboardInterrupt:
self._revertOldRepoXML() # Undo metadata cookie?
raise
--
1.6.2.5
More information about the Yum-devel
mailing list