[et-mgmt-tools] [PATCH] Added with_triggers=True variable to functions that call triggers.
Michael DeHaan
mdehaan at redhat.com
Thu Nov 15 19:50:47 UTC 2007
Riggs, Ben wrote:
> Michael DeHaan wrote:
> > Ben,
> >
> > This attachment seems to be zero-length ...
> >
> > --Michael
>
> I'm confused, myself. I received this response from
> et-mgmt-tools-bounces at redhat.com:
No idea, as we were saying on IRC, it might have been the missing
message body? Anyhow, I have it now. Will apply.
>
>
>
> You are not allowed to post to this mailing list, and your message has
> been automatically rejected. If you think that your messages are
> being rejected in error, contact the mailing list owner at
> et-mgmt-tools-owner at redhat.com.
>
> ---------------------------------------------------------------------
>
> Subject:
> [PATCH] Added with_triggers=True variable to functions that call
> triggers. This allows one to pass with_triggers=False from the API to
> bypass triggers. It can be used to prevent infinite recursions caused
> by adding a system during a pre/post add trigger.
> From:
> Ben Riggs <rigg0022 at math.umn.edu>
> Date:
> Wed, 14 Nov 2007 14:27:21 -0600
>
> ---
> cobbler/collection.py | 6 +++---
> cobbler/collection_distros.py | 6 +++---
> cobbler/collection_profiles.py | 6 +++---
> cobbler/collection_repos.py | 6 +++---
> cobbler/collection_systems.py | 6 +++---
> 5 files changed, 15 insertions(+), 15 deletions(-)
>
> diff --git a/cobbler/collection.py b/cobbler/collection.py
> index 8e6be39..a9364d4 100644
> --- a/cobbler/collection.py
> +++ b/cobbler/collection.py
> @@ -96,7 +96,7 @@ class Collection(serializable.Serializable):
> item = self.factory_produce(self.config,seed_data)
> self.add(item)
>
> - def add(self,ref,with_copy=False):
> + def add(self,ref,with_copy=False,with_triggers=True):
> """
> Add an object to the collection, if it's valid. Returns True
> if the object was added to the collection. Returns False if the
> @@ -126,7 +126,7 @@ class Collection(serializable.Serializable):
> # perform filesystem operations
> if with_copy:
> # failure of a pre trigger will prevent the object from
> being added
> - self._run_triggers(ref,"/var/lib/cobbler/triggers/add/%s/pre/*" %
> self.collection_type())
> + if with_triggers:
> self._run_triggers(ref,"/var/lib/cobbler/triggers/add/%s/pre/*" %
> self.collection_type())
> self.listing[ref.name.lower()] = ref
>
> # save just this item if possible, if not, save
> @@ -146,7 +146,7 @@ class Collection(serializable.Serializable):
> print _("Internal error. Object type not recognized:
> %s") % type(ref)
>
> # save the tree, so if neccessary, scripts can examine it.
> - self._run_triggers(ref,"/var/lib/cobbler/triggers/add/%s/post/*" %
> self.collection_type())
> + if with_triggers:
> self._run_triggers(ref,"/var/lib/cobbler/triggers/add/%s/post/*" %
> self.collection_type())
>
> # update children cache in parent object
> parent = ref.get_parent()
> diff --git a/cobbler/collection_distros.py
> b/cobbler/collection_distros.py
> index b696738..b415766 100644
> --- a/cobbler/collection_distros.py
> +++ b/cobbler/collection_distros.py
> @@ -31,7 +31,7 @@ class Distros(collection.Collection):
> """
> return distro.Distro(config).from_datastruct(seed_data)
>
> - def remove(self,name,with_delete=True):
> + def remove(self,name,with_delete=True,with_triggers=True):
> """
> Remove element named 'name' from the collection
> """
> @@ -43,13 +43,13 @@ class Distros(collection.Collection):
> obj = self.find(name=name)
> if obj is not None:
> if with_delete:
> - self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/distro/pre/*")
> + if with_triggers: self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/distro/pre/*")
> lite_sync = action_litesync.BootLiteSync(self.config)
> lite_sync.remove_single_profile(name)
> del self.listing[name]
> self.config.serialize_delete(self, obj)
> if with_delete:
> - self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/distro/post/*")
> + if with_triggers: self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/distro/post/*")
> return True
> raise CX(_("cannot delete object that does not exist"))
>
> diff --git a/cobbler/collection_profiles.py
> b/cobbler/collection_profiles.py
> index b878ff9..6892e4e 100644
> --- a/cobbler/collection_profiles.py
> +++ b/cobbler/collection_profiles.py
> @@ -32,7 +32,7 @@ class Profiles(collection.Collection):
> def factory_produce(self,config,seed_data):
> return profile.Profile(config).from_datastruct(seed_data)
>
> - def remove(self,name,with_delete=True):
> + def remove(self,name,with_delete=True,with_triggers=True):
> """
> Remove element named 'name' from the collection
> """
> @@ -43,13 +43,13 @@ class Profiles(collection.Collection):
> obj = self.find(name=name)
> if obj is not None:
> if with_delete:
> - self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/profile/pre/*")
> + if with_triggers: self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/profile/pre/*")
> lite_sync = action_litesync.BootLiteSync(self.config)
> lite_sync.remove_single_profile(name)
> del self.listing[name]
> self.config.serialize_delete(self, obj)
> if with_delete:
> - self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/profile/post/*")
> + if with_triggers: self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/profile/post/*")
> return True
> raise CX(_("cannot delete an object that does not exist"))
>
> diff --git a/cobbler/collection_repos.py b/cobbler/collection_repos.py
> index da1a3bd..62d7ff0 100644
> --- a/cobbler/collection_repos.py
> +++ b/cobbler/collection_repos.py
> @@ -36,7 +36,7 @@ class Repos(collection.Collection):
> """
> return repo.Repo(config).from_datastruct(seed_data)
>
> - def remove(self,name,with_delete=True):
> + def remove(self,name,with_delete=True,with_triggers=True):
> """
> Remove element named 'name' from the collection
> """
> @@ -47,13 +47,13 @@ class Repos(collection.Collection):
> obj = self.find(name=name)
> if obj is not None:
> if with_delete:
> - self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/repo/pre/*")
> + if with_triggers: self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/repo/pre/*")
>
> del self.listing[name]
> self.config.serialize_delete(self, obj)
>
> if with_delete:
> - self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/repo/post/*")
> + if with_triggers: self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/repo/post/*")
> return True
> raise CX(_("cannot delete an object that does not exist"))
>
> diff --git a/cobbler/collection_systems.py
> b/cobbler/collection_systems.py
> index a871f9a..d31ee2e 100644
> --- a/cobbler/collection_systems.py
> +++ b/cobbler/collection_systems.py
> @@ -33,7 +33,7 @@ class Systems(collection.Collection):
> """
> return system.System(config).from_datastruct(seed_data)
>
> - def remove(self,name,with_delete=True):
> + def remove(self,name,with_delete=True,with_triggers=True):
> """
> Remove element named 'name' from the collection
> """
> @@ -43,13 +43,13 @@ class Systems(collection.Collection):
> if obj is not None:
>
> if with_delete:
> - self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/system/pre/*")
> + if with_triggers: self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/system/pre/*")
> lite_sync = action_litesync.BootLiteSync(self.config)
> lite_sync.remove_single_system(name)
> del self.listing[name]
> self.config.serialize_delete(self, obj)
> if with_delete:
> - self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/system/post/*")
> + if with_triggers: self._run_triggers(obj,
> "/var/lib/cobbler/triggers/delete/system/post/*")
>
> return True
> raise CX(_("cannot delete an object that does not exist"))
> -- 1.5.2.4 --------------040405030105090803090001--
>
> _______________________________________________
> et-mgmt-tools mailing list
> et-mgmt-tools at redhat.com
> https://www.redhat.com/mailman/listinfo/et-mgmt-tools
More information about the et-mgmt-tools
mailing list