Thanks .
The issue was with my csv file , i created new file and pasted same data(with same format ) and it worked both json_query and item[''column_data'] working properly On Tuesday, January 24, 2023 at 6:06:41 PM UTC+5:30 [email protected] wrote: > I like to use json_query to search a JSON list. This saves "looping" in > ansible. I find it faster. The result is a list, but you can always select > your_list[0] for the first one. > > # query json list for data center and region match > - set_fact: > *my_isilons*: "{{ isilon_cluster_output.list | *json_query('[?`Data > Center`==`'+primary_data_center+'` && `Dedicated region` ==`'+region+'`]')* > | list }}" > > # display entire result of query > - debug: > msg: "{{ *my_isilons* }}' > > # display first item if query returned 1 or more > - debug: > msg: "{{ *my_isilons**[0]* }}' > when: *my_isilons* is iterable and len(*my_isilons*) > 0 > > The added benefit of this method is you can now test in later tasks > whether the query result is interable and has a length greater than zero to > determine whether you found a match. > > # get cluster name and ip address if query returned 1 or more > - set_fact: > isilon_cluster_name_p: "{{ *my_isilons**[0]*['Cluster Name'] }}" > isilon_ip_address_p: "{{ *my_isilons**[0]*['IP Address'] }}" > when: *my_isilons* is iterable and len(*my_isilons*) > 0 > > You also can act on more than one item if the json query matched multiple > items. > > # do some operation on all the returned results > - set_fact: > isilon_cluster_name_p: "{{ *item*['Cluster Name'] }}" > isilon_ip_address_p: "{{ *item*['IP Address'] }}" > loop: "{{ *my_isilons* }}" > when: *my_isilons* is iterable and len(*my_isilons*) > 0 > > Walter > -- > Walter Rowe, Division Chief > Infrastructure Services, OISM > Mobile: 202.355.4123 <(202)%20355-4123> > > On Jan 24, 2023, at 5:38 AM, javed khan <[email protected]> wrote: > > Yes, that was same , i also got the perfect list of dictionaries , but it > giving bad error > > On Tuesday, January 24, 2023 at 3:38:37 AM UTC+5:30 [email protected] > wrote: > >> That is strange, because I copy-n-pasted you play and data, and it worked >> for me. Does your output before your last step look like mine? >> >> $ ansible-playbook isilon.yml >> >> PLAY [Isilon tests] >> **************************************************************************** >> >> TASK [First Read isilon cluster csv file from mount point for login] >> *************************** >> ok: [localhost] >> >> TASK [Print The inventry Full File in List format] >> ********************************************* >> ok: [localhost] => { >> "msg": [ >> { >> "Business Purpose": "KPHC", >> "Cluster Name": "cnnndcisip-hc01", >> "Data Center": "NDC", >> "Dedicated region": "SC", >> "Environment": "Production", >> "IP Address": "172.19.94.62", >> "Serial No.": "CF2ZJ203800133" >> }, >> { >> "Business Purpose": "KPHC", >> "Cluster Name": "", >> "Data Center": "NDC", >> "Dedicated region": "", >> "Environment": "Production", >> "IP Address": "172.19.94.63", >> "Serial No.": "CF2ZJ204300024" >> }, >> { >> "Business Purpose": "KPHC", >> "Cluster Name": "", >> "Data Center": "NDC", >> "Dedicated region": "", >> "Environment": "Production", >> "IP Address": "172.19.94.64", >> "Serial No.": "CF2ZJ204300026" >> }, >> { >> "Business Purpose": "KPHC", >> "Cluster Name": "massdcisip-hc01", >> "Data Center": "SSDC", >> "Dedicated region": "MA", >> "Environment": "Production", >> "IP Address": "172.30.146.231", >> "Serial No.": "JACNT205160062" >> }, >> { >> "Business Purpose": "KPHC", >> "Cluster Name": "", >> "Data Center": "SSDC", >> "Dedicated region": "", >> "Environment": "Production", >> "IP Address": "172.30.146.232", >> "Serial No.": "JACNT210260055" >> }, >> { >> "Business Purpose": "KPHC", >> "Cluster Name": "", >> "Data Center": "SSDC", >> "Dedicated region": "", >> "Environment": "Production", >> "IP Address": "172.30.146.233", >> "Serial No.": "JACNT210260073" >> }, >> { >> "Business Purpose": "KPHC", >> "Cluster Name": "", >> "Data Center": "SSDC", >> "Dedicated region": "", >> "Environment": "Production", >> "IP Address": "172.30.146.234", >> "Serial No.": "JACNT210260083" >> } >> ] >> } >> >> TASK [Get isilon host from isilon cluster file.] >> *********************************************** >> skipping: [localhost] => (item={'Data Center': 'NDC', 'Environment': >> 'Production', 'Business Purpose': 'KPHC', 'Serial No.': 'CF2ZJ203800133', >> 'Cluster Name': 'cnnndcisip-hc01', 'Dedicated region': 'SC', 'IP Address': >> '172.19.94.62'}) >> skipping: [localhost] => (item={'Data Center': 'NDC', 'Environment': >> 'Production', 'Business Purpose': 'KPHC', 'Serial No.': 'CF2ZJ204300024', >> 'Cluster Name': '', 'Dedicated region': '', 'IP Address': '172.19.94.63'}) >> >> skipping: [localhost] => (item={'Data Center': 'NDC', 'Environment': >> 'Production', 'Business Purpose': 'KPHC', 'Serial No.': 'CF2ZJ204300026', >> 'Cluster Name': '', 'Dedicated region': '', 'IP Address': '172.19.94.64'}) >> >> ok: [localhost] => (item={'Data Center': 'SSDC', 'Environment': >> 'Production', 'Business Purpose': 'KPHC', 'Serial No.': 'JACNT205160062', >> 'Cluster Name': 'massdcisip-hc01', 'Dedicated region': 'MA', 'IP Address': >> '172.30.146.231'}) >> skipping: [localhost] => (item={'Data Center': 'SSDC', 'Environment': >> 'Production', 'Business Purpose': 'KPHC', 'Serial No.': 'JACNT210260055', >> 'Cluster Name': '', 'Dedicated region': '', 'IP Address': '172.30.146.232'}) >> >> skipping: [localhost] => (item={'Data Center': 'SSDC', 'Environment': >> 'Production', 'Business Purpose': 'KPHC', 'Serial No.': 'JACNT210260073', >> 'Cluster Name': '', 'Dedicated region': '', 'IP Address': '172.30.146.233'}) >> >> skipping: [localhost] => (item={'Data Center': 'SSDC', 'Environment': >> 'Production', 'Business Purpose': 'KPHC', 'Serial No.': 'JACNT210260083', >> 'Cluster Name': '', 'Dedicated region': '', 'IP Address': '172.30.146.234'}) >> >> >> TASK [Print The File System Name] >> ************************************************************** >> ok: [localhost] => { >> "msg": [ >> "massdcisip-hc01", >> "172.30.146.231" >> ] >> } >> >> PLAY RECAP >> ************************************************************************************* >> localhost : ok=4 changed=0 unreachable=0 >> failed=0 skipped=0 rescued=0 ignored=0 >> >> On Monday, January 23, 2023 at 9:42:02 AM UTC-5 [email protected] >> wrote: >> >>> Hi Team, >>> >>> how i will get rid of dictionary or only grab first match in loop output >>> with satisfying when condition. >>> >>> >>> >>> ============================================================== >>> files/isilon-allocation-KPHC.csv >>> =============================================================== >>> Data Center,Environment,Business Purpose,Serial No.,Cluster >>> Name,Dedicated region,IP Address >>> NDC,Production,KPHC,CF2ZJ203800133,cnnndcisip-hc01,SC,172.19.94.62 >>> NDC,Production,KPHC,CF2ZJ204300024,,,172.19.94.63 >>> NDC,Production,KPHC,CF2ZJ204300026,,,172.19.94.64 >>> SSDC,Production,KPHC,JACNT205160062,massdcisip-hc01,MA,172.30.146.231 >>> SSDC,Production,KPHC,JACNT210260055,,,172.30.146.232 >>> SSDC,Production,KPHC,JACNT210260073,,,172.30.146.233 >>> SSDC,Production,KPHC,JACNT210260083,,,172.30.146.234 >>> >>> >>> >>> >>> >>> =============================================================== >>> default/main.yml >>> =============================================================== >>> region: MA >>> primary_data_center: SSDC >>> >>> >>> >>> >>> >>> =============================================================== >>> task/main.yml >>> =============================================================== >>> >>> - name: "First Read isilon cluster csv file from mount point for login" >>> community.general.read_csv: >>> path: "{{ role_path }}/files/isilon-allocation-KPHC.csv" >>> register: isilon_cluster_output >>> >>> >>> - name: "Print The inventry Full File in List format" >>> ansible.builtin.debug: >>> msg: "{{ isilon_cluster_output.list }}" >>> >>> >>> - name: "Get isilon host from isilon cluster file." >>> ansible.builtin.set_fact: >>> isilon_cluster_name_p: "{{ item['Cluster Name'] }}" >>> isilon_ip_address_p: "{{ item['IP Address'] }}" >>> when: (item['Data Center'] == primary_data_center) and >>> (item['Dedicated region'] == region) >>> loop: "{{ isilon_cluster_output.list }}" >>> >>> >>> - name: "Print The File System Name" >>> ansible.builtin.debug: >>> msg: >>> - "{{ isilon_cluster_name_p }}" >>> - "{{ isilon_ip_address_p }}" >>> >>> >>> >>> ========================== >>> Error >>> ========================== >>> >>> >>> TASK [isilon_allocation_for_KPHP_environment : Get isilon host from >>> isilon cluster file.] ************************************* >>> task path: >>> /home/ansiblecontroller/Desktop/PROJECT/NAS/roles/isilon_allocation_for_KPHP_environment/tasks/naming_standard_creation.yml:13 >>> fatal: [localhost]: FAILED! => { >>> "msg": "The conditional check '(item['Data Center'] == >>> primary_data_center) and (item['Dedicated region'] == region)' failed. The >>> error was: error while evaluating conditional ((item['Data Center'] == >>> primary_data_center) and (item['Dedicated region'] == region)): 'dict >>> object' has no attribute 'Data Center'. 'dict object' has no attribute >>> 'Data Center'\n\nThe error appears to be in >>> '/home/ansiblecontroller/Desktop/PROJECT/NAS/roles/isilon_allocation_for_KPHP_environment/tasks/naming_standard_creation.yml': >>> >>> line 13, column 3, but may\nbe elsewhere in the file depending on the exact >>> syntax problem.\n\nThe offending line appears to be:\n\n\n- name: \"Get >>> isilon host from isilon cluster file.\"\n ^ here\n" >>> } >>> >>> > -- > 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/e63f1b39-494b-4f28-a256-2bf4509d5c75n%40googlegroups.com > > <https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fd%2Fmsgid%2Fansible-project%2Fe63f1b39-494b-4f28-a256-2bf4509d5c75n%2540googlegroups.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=05%7C01%7Cwalter.rowe%40nist.gov%7C1f8b462bb26e4ba6353b08dafdf76a5d%7C2ab5d82fd8fa4797a93e054655c61dec%7C1%7C0%7C638101536358934866%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=dt0Zw0ML9b%2B5wKXcZbH2G6Gl6rBl2kHJc0Ae6PMF1Ec%3D&reserved=0> > . > > > -- 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/27ffbaed-2a71-49a7-934b-e4c67fcfbeb7n%40googlegroups.com.
