diff options
author | root <root@mdehaan.rdu.redhat.com> | 2007-08-27 15:43:58 -0400 |
---|---|---|
committer | root <root@mdehaan.rdu.redhat.com> | 2007-08-27 15:43:58 -0400 |
commit | 29081a493bf6617ee4a8ebea3893760cc1e711e2 (patch) | |
tree | 653e618ed904bf410f362bd36a6d2bb2300e9772 /cobbler | |
parent | 159c39eef9df2fe4c4797f70a2598edb8a72d15b (diff) | |
download | third_party-cobbler-29081a493bf6617ee4a8ebea3893760cc1e711e2.tar.gz third_party-cobbler-29081a493bf6617ee4a8ebea3893760cc1e711e2.tar.xz third_party-cobbler-29081a493bf6617ee4a8ebea3893760cc1e711e2.zip |
Fix bug in repo evaluation with inherited subprofiles.
Diffstat (limited to 'cobbler')
-rw-r--r-- | cobbler/action_sync.py | 4 | ||||
-rw-r--r-- | cobbler/config.py | 10 | ||||
-rw-r--r-- | cobbler/item_profile.py | 28 |
3 files changed, 26 insertions, 16 deletions
diff --git a/cobbler/action_sync.py b/cobbler/action_sync.py index c844610..4142d4d 100644 --- a/cobbler/action_sync.py +++ b/cobbler/action_sync.py @@ -372,7 +372,7 @@ class BootSync: # the list of repos to things that Anaconda can install from. This corresponds # will replace "TEMPLATE::yum_repo_stanza" in a cobbler kickstart file. buf = "" - repos = profile.repos + repos = utils.blender(False, profile)["repos"] for r in repos: repo = self.repos.find(name=r) if repo is None: @@ -393,7 +393,7 @@ class BootSync: def generate_config_stanza(self, profile): # returns the line in post that would configure yum to use repos added with "cobbler repo add" - repos = profile.repos + repos = utils.blender(False,profile)["repos"] buf = "" for r in repos: repo = self.repos.find(name=r) diff --git a/cobbler/config.py b/cobbler/config.py index 08bd770..88d04da 100644 --- a/cobbler/config.py +++ b/cobbler/config.py @@ -54,22 +54,22 @@ class Config: self.api = api self._distros = distros.Distros(weakref.proxy(self)) + self._repos = repos.Repos(weakref.proxy(self)) self._profiles = profiles.Profiles(weakref.proxy(self)) self._systems = systems.Systems(weakref.proxy(self)) self._settings = settings.Settings() # not a true collection - self._repos = repos.Repos(weakref.proxy(self)) self._classes = [ self._settings, self._distros, + self._repos, self._profiles, - self._systems, - self._repos + self._systems ] self._graph_classes = [ self._distros, + self._repos, self._profiles, - self._systems, - self._repos + self._systems ] self.file_check() diff --git a/cobbler/item_profile.py b/cobbler/item_profile.py index f27f3a7..d8a7152 100644 --- a/cobbler/item_profile.py +++ b/cobbler/item_profile.py @@ -113,28 +113,38 @@ class Profile(item.Item): raise CX(_("distribution not found")) def set_repos(self,repos): + + # allow the magic inherit string to persist if repos == "<<inherit>>": self.repos = "<<inherit>>" return - if type(repos) != list: + # store as an array regardless of input type + if repos is None: + repolist = [] + elif type(repos) != list: # allow backwards compatibility support of string input repolist = repos.split(None) else: repolist = repos - ok = True + + + # make sure there are no empty strings try: repolist.remove('') except: pass + + self.repos = [] + + # if any repos don't exist, fail the operation + ok = True for r in repolist: - if not self.config.repos().find(name=r): - ok = False - break - if ok: - self.repos = repolist - else: - raise CX(_("repository not found")) + if self.config.repos().find(name=r) is not None: + self.repos.append(r) + else: + print _("warning: repository not found: %s" % r) + return True def set_kickstart(self,kickstart): |