-
Notifications
You must be signed in to change notification settings - Fork 64
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add_children is not idempotent #42
Comments
That could be interpreted as expected behavior. Ansible knows not of your true intentions, nor of your XML Schema (which may state that only one instance of any element type may be a child in a given scope). It only knows that you said to add a child element to a parent. I understand your frustration with this. There's no clear and obvious way to add a child element if it doesn't already exist. I could see this going in several ways. Maybe even a merge of some of their ideas. Here's one:
I can think of three common ways people approach this
It becomes more challenging when we consider that a variety of things may be contained in any given parent's scope. What if we have an element foo defined several times in a parent element, but each instance of foo has different attribute (values) or element text values. For example: <funwords>
<foo>with words!</foo>
<foo awesome="1" />
<foo title="The best">Mega Frobber</foo>
</funwords> I guess you'd want to do a kind of "does it exist already?" task and register the result, and then an only_if on the subsequent add. Or modify your playbook approach. If you're adding an element to an xml file, are you only doing that once to configure a service? Maybe split your playbook up more. Maybe you've got a set of defined items you need to have as children somewhere, you can use yaml for variables to ensure the children of a parent are exactly defined as you say in the yaml. This surely is an interesting issue. |
I concur with @tbielawa; definitely an interesting issue. You are correct that I think the best way to handle this scenario is at the playbook level and use I'm going to close this issue without a fix, but I am open to changing my position on how |
When running a task to add a child element, the child element is added on each execution.
The text was updated successfully, but these errors were encountered: