summaryrefslogtreecommitdiffstats
path: root/cobbler
diff options
context:
space:
mode:
authorroot <root@mdehaan.rdu.redhat.com>2007-08-27 15:43:58 -0400
committerroot <root@mdehaan.rdu.redhat.com>2007-08-27 15:43:58 -0400
commit29081a493bf6617ee4a8ebea3893760cc1e711e2 (patch)
tree653e618ed904bf410f362bd36a6d2bb2300e9772 /cobbler
parent159c39eef9df2fe4c4797f70a2598edb8a72d15b (diff)
downloadthird_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.py4
-rw-r--r--cobbler/config.py10
-rw-r--r--cobbler/item_profile.py28
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):