summaryrefslogtreecommitdiffstats
path: root/cobbler
diff options
context:
space:
mode:
authorMichael DeHaan <mdehaan@redhat.com>2007-12-18 12:32:19 -0500
committerMichael DeHaan <mdehaan@redhat.com>2007-12-18 12:32:19 -0500
commit510ec333d4e26d30b998abd320c0c02f56d83af8 (patch)
tree7527520ff8c39ba487fe7c88535d92d7a0953674 /cobbler
parent13ea0a8fcc2b8a12b410372d7861fa2f5d825801 (diff)
downloadthird_party-cobbler-510ec333d4e26d30b998abd320c0c02f56d83af8.tar.gz
third_party-cobbler-510ec333d4e26d30b998abd320c0c02f56d83af8.tar.xz
third_party-cobbler-510ec333d4e26d30b998abd320c0c02f56d83af8.zip
The repo management code generates some things on a per-profile basis which
should be generated on a per-system basis to support --server-override correctly. This is a fix.
Diffstat (limited to 'cobbler')
-rw-r--r--cobbler/action_sync.py4
-rw-r--r--cobbler/collection.py30
2 files changed, 30 insertions, 4 deletions
diff --git a/cobbler/action_sync.py b/cobbler/action_sync.py
index 86bfc0d..ffee4ad 100644
--- a/cobbler/action_sync.py
+++ b/cobbler/action_sync.py
@@ -549,8 +549,8 @@ class BootSync:
ksmeta = meta["ks_meta"]
del meta["ks_meta"]
meta.update(ksmeta) # make available at top level
- meta["yum_repo_stanza"] = self.generate_repo_stanza(profile)
- meta["yum_config_stanza"] = self.generate_config_stanza(profile)
+ meta["yum_repo_stanza"] = self.generate_repo_stanza(s, False)
+ meta["yum_config_stanza"] = self.generate_config_stanza(s, False)
meta["kickstart_done"] = self.generate_kickstart_signal(profile, s)
meta["kernel_options"] = utils.hash_to_string(meta["kernel_options"])
kfile = open(kickstart_path)
diff --git a/cobbler/collection.py b/cobbler/collection.py
index 2fe3967..a06a663 100644
--- a/cobbler/collection.py
+++ b/cobbler/collection.py
@@ -27,6 +27,31 @@ import item_repo
from rhpl.translate import _, N_, textdomain, utf8
+class ProxiedItem:
+
+ def __init__(self,collection,seed_data):
+
+ self.real_object = None
+ self.collection = collection
+ self.config = collection.config
+ self.seed_data = seed_data
+
+
+ def __getattr__(self,name):
+
+ if self.real_object is not None:
+ return getattr(self.real_object,name)
+
+ if name == "name":
+ return self.seed_data["name"]
+
+ self.real_object = self.collection.factory_produce(
+ self.config,
+ self.seed_data
+ )
+
+ return getattr(self.real_object, name)
+
class Collection(serializable.Serializable):
def __init__(self,config):
@@ -95,8 +120,9 @@ class Collection(serializable.Serializable):
if datastruct is None:
return
for seed_data in datastruct:
- item = self.factory_produce(self.config,seed_data)
- self.add(item)
+ #item = self.factory_produce(self.config,seed_data)
+ #self.add(item)
+ self.add(ProxiedItem(self,seed_data))
def add(self,ref,save=False,with_copy=False,with_triggers=True,with_sync=True,quick_pxe_update=False):
"""