No I have never used a collection before. So my ansible.cfg is currently to 
the default

On Tuesday, June 23, 2020 at 11:22:11 AM UTC-4, J C wrote:
>
> Not sure it seems like it is looking for the filter.  Have you used a 
> collection before?  Is the collections_path defined in the ansible.cfg?
>
> On Mon, Jun 22, 2020 at 3:49 PM Jason <[email protected] <javascript:>> 
> wrote:
>
>> This error shows:
>> 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 the full playbook I am using:
>> ---
>> - name: Interface Descrpitions
>>   hosts: uwioc-switches
>>   gather_facts: no
>>   connection: network_cli
>>   collections:
>>     - clay584.genie
>>   vars:
>>     ansible_python_interpreter: "{{ ansible_playbook_python }}"
>>   tasks:
>>     - 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') }}"
>>
>>
>> Tried changing vars to set_facts too, but didn't work. 
>>
>> On Monday, June 22, 2020 at 4:16:54 PM UTC-4, J C wrote:
>>>
>>> I am using the collection not the role.  So it looks like this at the 
>>> top.  Had to add the interpreter variable because Ansible kept using Python 
>>> 2
>>>
>>> ---
>>> - name: Interface Descrpitions
>>>   hosts: all
>>>   gather_facts: no
>>>   connection: network_cli
>>>   collections:
>>>     - clay584.genie
>>>   vars:
>>>     ansible_python_interpreter: "{{ ansible_playbook_python }}"
>>>
>>> On Mon, Jun 22, 2020 at 2:44 PM Jason <[email protected]> wrote:
>>>
>>>> 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]> 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].
>>>>>> 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
>>>>  
>>>> <https://groups.google.com/d/msgid/ansible-project/9a09ee0c-1184-4d74-a41f-b69a89fca04co%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/36cda932-fe68-499b-a70b-acf81cd693cfo%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/ansible-project/36cda932-fe68-499b-a70b-acf81cd693cfo%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/cda449ee-3155-40ab-9feb-474d1355bf8eo%40googlegroups.com.

Reply via email to