diff options
author | Michael DeHaan <mdehaan@redhat.com> | 2007-12-18 12:32:19 -0500 |
---|---|---|
committer | Michael DeHaan <mdehaan@redhat.com> | 2007-12-18 12:32:19 -0500 |
commit | 510ec333d4e26d30b998abd320c0c02f56d83af8 (patch) | |
tree | 7527520ff8c39ba487fe7c88535d92d7a0953674 /cobbler | |
parent | 13ea0a8fcc2b8a12b410372d7861fa2f5d825801 (diff) | |
download | third_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.py | 4 | ||||
-rw-r--r-- | cobbler/collection.py | 30 |
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): """ |