Thanks alot. 

I have been getting this error for the past few days when trying to use 
genie:

fatal: [SW1]: FAILED! => {
    "msg": "template error while templating string: no filter named 
'clay584.genie.parse_genie'. String: {{ neighbors['stdout'][0] | 
clay584.genie.parse_genie(command='show cdp neighbors', os='ios') }}"
}

*This is my playbook (what you sent but I needed to import the role first):*
- hosts: uwioc-switches
  gather_facts: no
  tasks:
    - name: Import role
      include_role:
        name: clay584.parse_genie

    - name: Run show cdp neighbors
      ios_command:
        commands:
          - show cdp neighbors
      register: neighbors

# Using the Genie Filter Plugin from the Genie Parse Role
# Set pyats_neighbors as a dictionary
    - name: Set fact with Genie
    - name: Import role
      include_role:
        name: clay584.parse_genie

    - name: Run show cdp neighbors
      ios_command:
        commands:
          - show cdp neighbors
      register: neighbors

# Using the Genie Filter Plugin from the Genie Parse Role
# Set pyats_neighbors as a dictionary
    - name: Set fact with Genie Filter Plugin
      set_fact:
        pyats_neighbors: "{{ neighbors['stdout'][0] | 
clay584.genie.parse_genie(command='show cdp neighbors', os='ios') }}"


    - name: Add interface description
      ios_interfaces:
        config:
          - name: "{{ item.value.local_interface }}"
            description: "{{ item.value.device_id }} - {{ 
item.value.port_id }}"
        state: merged
      loop: "{{ q('dict', pyats_neighbors.index) }}"
      when: item.value.port_id is "AIR-AP280"

My python version is 3.6.8 and Ansible is 2.9.9

I followed this guide to install the necessary libraries:
https://developer.cisco.com/codeexchange/github/repo/clay584/parse_genie/ 

The error still persists.  Also posted the issue on GitHub. Not sure if it 
is bug in the parsing library. 

Any assistance would greatly be appreciated. 

Thanks.

On Monday, June 22, 2020 at 9:07:18 AM UTC-4, J C wrote:
>
> Something like that I suppose. 
>
>
> #Sets a varaiable for cdp neighbor detail
>   - name: Run show cdp neighbors command
>     ios_command:
>       commands:
>         - show cdp neighbors detail
>     register: neighbors
>
> # Using the Genie Filter Plugin from the Genie Parse Role
> # Set pyats_neighbors as a dictionary
>   - name: Set fact with Genie Filter Plugin
>     set_fact:
>       pyats_neighbors: "
> {{ neighbors['stdout'][0] | clay584.genie.parse_genie(command='show cdp 
> neighbors detail', os='ios') }}
> "
>   - name: Add interface desription
>     ios_interfaces:
>       config:
>         - name: "{{ item.value.local_interface }}"
>           description: "
> {{ item.value.device_id }} - {{ item.value.port_id }}"
>       state: merged
>     loop: "{{ q('dict', pyats_neighbors.index) }}"
>     when: item.value.port_id is "AIR-AP280"
>
> On Sat, Jun 20, 2020 at 1:34 PM Jason <[email protected] <javascript:>> 
> wrote:
>
>> Thanks. If you don't mind me asking because I am not familiar with this, 
>> can you give me an example of how to use the set fact and when statement 
>> for my case? 
>>
>> On Friday, June 19, 2020 at 11:22:31 PM UTC-4, J C wrote:
>>>
>>> I would use the genie module and run the show cdp neighbor command. Then 
>>> set fact and use that with the when command.
>>>
>>> On Fri, Jun 19, 2020, 10:05 PM Jason <[email protected]> wrote:
>>>
>>>> I am working on a project that would require me to bump (shutdown and 
>>>> re-enable) switchports that are connected to an Access Point. 
>>>>
>>>> I have created a playbook to run a command "show cdp neighbours" on the 
>>>> switch, and that output would look like:
>>>> [image: sh cdp neighbours.JPG]
>>>>
>>>> What I want to do, is to use ansible to only run a command (ansible 
>>>> play) on Gig 1/0/19 in this case. For other switches, it may be more 
>>>> switchports and maybe in different format (eg. Gi 2/0/35). 
>>>>
>>>> Is there a way to filter ansible output by looking for 'AIR-AP280' and 
>>>> then extract that corresponding Local Interface (switchport number)?
>>>>
>>>> Or if there is another way to get done what I want, then great. 
>>>>
>>>> Any suggestions/recommendations?
>>>>
>>>> It is over 50 switches, so it would be great if ansible can do what I 
>>>> want to do. 
>>>>
>>>> -- 
>>>> 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 view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/ansible-project/fd4b0f7a-85ba-4921-b252-9b760d1bd3d8o%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/ansible-project/fd4b0f7a-85ba-4921-b252-9b760d1bd3d8o%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> -- 
>> 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] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/644c6f2a-5a02-49fd-b84a-1c74ad722daao%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/ansible-project/644c6f2a-5a02-49fd-b84a-1c74ad722daao%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/9a09ee0c-1184-4d74-a41f-b69a89fca04co%40googlegroups.com.

Reply via email to