From 29081a493bf6617ee4a8ebea3893760cc1e711e2 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 27 Aug 2007 15:43:58 -0400 Subject: Fix bug in repo evaluation with inherited subprofiles. --- cobbler/action_sync.py | 4 ++-- cobbler/config.py | 10 +++++----- cobbler/item_profile.py | 28 +++++++++++++++++++--------- 3 files changed, 26 insertions(+), 16 deletions(-) (limited to 'cobbler') 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 == "<>": self.repos = "<>" 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): -- cgit