On Fri, Mar 7, 2014 at 4:52 PM, Michael Nelson <[email protected]> wrote:
>
>
> On Friday, 7 March 2014 16:31:45 UTC+1, Michael Nelson wrote:
>>
>> Hi!
>>
>> Just a heads-up that I'm thinking of adding a --list-tags option to
>> ansible-playbook. Let me know if there's a reason why that wouldn't be a
>> good idea, or it's not needed etc.
>>
>> My use-case is that I'd like to know in advance whether a tag is included
>> in the playbook, rather than running the playbook and erroring. I can
>> currently work around this by parsing the error output of `ansible-playbook
>> --tags random-hash myplaybook`, but I'd like a nicer way :)
>
>
> Actually, I've just taken a look at the code and seen that, given that I'm
> already using python helpers for the ansible support, I could just use
> ansible.playbook.Play().compare_tags() directly. So no change needed :)
>

Just getting back to this - it seems quite complicated to get the tags
for a playbook... here's the helper function that I have:

{{{
def get_tags_for_playbook(playbook_path):
    """Return all tags within a playbook."""
    # utils imported first to avoid circular import failure.
    import ansible.utils
    import ansible.callbacks
    import ansible.playbook
    stats = ansible.callbacks.AggregateStats()
    callbacks = ansible.callbacks.PlaybookRunnerCallbacks(stats)
    runner_callbacks =
ansible.callbacks.PlaybookRunnerCallbacks(stats)
    playbook = ansible.playbook.PlayBook(playbook=playbook_path,

callbacks=callbacks,

runner_callbacks=runner_callbacks,
                                                             stats=stats)
    myplay = ansible.playbook.Play(playbook, ds=playbook.playbook[0],

basedir=os.path.dirname(playbook_path))

    _, playbook_tags = myplay.compare_tags([])
    playbook_tags.remove('all')
    return playbook_tags
}}}

Perhaps it is worth a feature request - let me know if this should be
easier or if I've missed something above?

Thanks.
-Michael

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CABgyWipybYRJGkwt4MgXgOZcWNEE4bYOiZZeuac8PeTCApebzw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to