ansible / ansible-navigator

A text-based user interface (TUI) for Ansible.
https://ansible.readthedocs.io/projects/navigator/
Apache License 2.0
391 stars 101 forks source link

ansible-navigator collections command failing #1482

Closed djgoosen closed 1 year ago

djgoosen commented 1 year ago
ISSUE TYPE
SUMMARY

The ansible-navigator collections command is failing in 3.0.2 (as well as at least 2.1.0 and 2.2.0 with the same behavior). In walking up and down various versions on multiple OSes and virtualenvs, so far in my spot checking, only ansible-navigator 1.1.0 seems to produce the expected collections list. 3.0.2 appears to be considered latest here as of today, and is what pip3 currently installs when running out of a Python 3.9.13 virtualenv.

ANSIBLE-NAVIGATOR VERSION
ansible-navigator 3.0.2
CONFIGURATION

No custom config file is being used

LOG FILE

This command does not log anything to ansible-navigator.log-- see screenshots attached in lieu of a log file.

STEPS TO REPRODUCE

Run ansible-navigator collections

EXPECTED RESULTS

A list of collections.

ACTUAL RESULTS

Managed to catch screen caps of the flyby error message before the command basically failed silently and then did not write to log file on either macOS or RHEL 8 platforms. Verbatim: "The requested content could not be converted to YAML. The content was Form(type=<FormType.NOTIFICATION: 'A text box with a dismiss button'>, cancelled=False Please log an issue for this, it should not have happened Error details: Content type not recognized Content view: ContentView.NORMAL

Update: I should have also noted, attempting to run :collections in interactive mode also fails silently.

ADDITIONAL INFORMATION

It looks like the above error is coming from this block in src/ansible_navigator/utils/serialize.py:

SERIALIZATION_FAILURE_MSG = ( "The requested content could not be converted to {serialization_format}.\n" "The content was {content}\n" "Please log an issue for this, it should not have happened\n" "Error details: {exception_str}\n"

error-macos error-rhel8
cidrblock commented 1 year ago

@djgoosen The form issue looks like a real bug, but I suspect the underlying issue has to do with a specific collection that may have an issue.

Does it work with the default execution environment?

Can you try and identify which collection is causing the issue, or send us a list of the collections you were using?

We will look at the form issue.

djgoosen commented 1 year ago

@cidrblock thanks for the reply. I am not using anything other than defaults in terms of EEI, etc. Here's the list of collections currently installed on the macOS system I am experiencing this on (though the other screenshot with the same error was a fresh Vagrant box (generic/rhel8) that had no additional collections manually installed):

$ ansible-galaxy collection list

# /Users/\<USER>/.ansible/collections/ansible_collections Collection Version


amazon.aws 3.0.0 ansible.controller 4.3.0 ansible.netcommon 3.0.1 ansible.utils 2.6.1 ari_stark.ansible_oracle_modules 1.2.1 azure.azcollection 1.13.0 cisco.nxos 3.0.0 cloud.common 2.1.2 community.general 5.6.0 community.vmware 1.12.0 f5networks.f5_modules 1.16.0 google.cloud 1.0.2 mason_splunk.ansible_role_for_splunk 1.0.5 moreati.jq 0.2.1 netapp.ontap 21.24.1 nginxinc.nginx_controller 3.9.0 nginxinc.nginx_core 0.3.0 vmware.vmware_rest 2.2.0

# /Users/\<USER>/venvs/\<VENV>/lib/python3.9/site-packages/ansible_collections Collection Version


amazon.aws 5.4.0 ansible.netcommon 4.1.0 ansible.posix 1.5.1 ansible.utils 2.9.0 ansible.windows 1.13.0 arista.eos 6.0.0 awx.awx 21.14.0 azure.azcollection 1.15.0 check_point.mgmt 4.0.0 chocolatey.chocolatey 1.4.0 cisco.aci 2.4.0 cisco.asa 4.0.0 cisco.dnac 6.6.4 cisco.intersight 1.0.24 cisco.ios 4.4.0 cisco.iosxr 4.1.0 cisco.ise 2.5.12 cisco.meraki 2.15.1 cisco.mso 2.2.1 cisco.nso 1.0.3 cisco.nxos 4.1.0 cisco.ucs 1.8.0 cloud.common 2.1.3 cloudscale_ch.cloud 2.2.4 community.aws 5.4.0 community.azure 2.0.0 community.ciscosmb 1.0.5 community.crypto 2.11.1 community.digitalocean 1.23.0 community.dns 2.5.2 community.docker 3.4.3 community.fortios 1.0.0 community.general 6.5.0 community.google 1.0.0 community.grafana 1.5.4 community.hashi_vault 4.2.0 community.hrobot 1.8.0 community.libvirt 1.2.0 community.mongodb 1.5.1 community.mysql 3.6.0 community.network 5.0.0 community.okd 2.3.0 community.postgresql 2.3.2 community.proxysql 1.5.1 community.rabbitmq 1.2.3 community.routeros 2.8.0 community.sap 1.0.0 community.sap_libs 1.4.1 community.skydive 1.0.0 community.sops 1.6.1 community.vmware 3.5.0 community.windows 1.12.0 community.zabbix 1.9.2 containers.podman 1.10.1 cyberark.conjur 1.2.0 cyberark.pas 1.0.17 dellemc.enterprise_sonic 2.0.0 dellemc.openmanage 6.3.0 dellemc.os10 1.1.1 dellemc.os6 1.0.7 dellemc.os9 1.0.4 dellemc.powerflex 1.5.0 dellemc.unity 1.5.0 f5networks.f5_modules 1.23.0 fortinet.fortimanager 2.1.7 fortinet.fortios 2.2.3 frr.frr 2.0.0 gluster.gluster 1.0.2 google.cloud 1.1.3 grafana.grafana 1.1.1 hetzner.hcloud 1.10.0 hpe.nimble 1.1.4 ibm.qradar 2.1.0 ibm.spectrum_virtualize 1.11.0 infinidat.infinibox 1.3.12 infoblox.nios_modules 1.4.1 inspur.ispim 1.3.0 inspur.sm 2.3.0 junipernetworks.junos 4.1.0 kubernetes.core 2.4.0 lowlydba.sqlserver 1.3.1 mellanox.onyx 1.0.0 netapp.aws 21.7.0 netapp.azure 21.10.0 netapp.cloudmanager 21.22.0 netapp.elementsw 21.7.0 netapp.ontap 22.4.1 netapp.storagegrid 21.11.1 netapp.um_info 21.8.0 netapp_eseries.santricity 1.4.0 netbox.netbox 3.11.0 ngine_io.cloudstack 2.3.0 ngine_io.exoscale 1.0.0 ngine_io.vultr 1.1.3 openstack.cloud 1.10.0 openvswitch.openvswitch 2.1.0 ovirt.ovirt 2.4.1 purestorage.flasharray 1.17.2 purestorage.flashblade 1.10.0 purestorage.fusion 1.4.1 sensu.sensu_go 1.13.2 splunk.es 2.1.0 t_systems_mms.icinga_director 1.32.2 theforeman.foreman 3.9.0 vmware.vmware_rest 2.3.1 vultr.cloud 1.7.0 vyos.vyos 4.0.1 wti.remote 1.0.4 $

shatakshiiii commented 1 year ago

Hey @djgoosen, thanks for this whole list. Looks like there is problem in a specific collection out of these. Could you try to identify and let us know which collection might be causing this issue ?

cidrblock commented 1 year ago

Hey @djgoosen -

I think we solved this, let us know if you get a chance to test from source please!

Thanks for the issue again, it helped us find some issues to resolve :)

Brad

djgoosen commented 1 year ago

Screenshot 2023-05-17 at 8 16 36 AM Screenshot 2023-05-17 at 8 16 22 AM

Unfortunately this is still occurring on 3.3.0:

$ ansible-navigator --version ansible-navigator 3.3.0

cidrblock commented 1 year ago

Can you provide the last lines of the log? We should be dumping better information now.

At least something is on the screen :)

djgoosen commented 1 year ago

@cidrblock yes! :)

$ tail -n 20 ansible-navigator.log | nl
     1  2023-05-18T14:56:52.983002+00:00 WARNING 'ansible_navigator.image_manager.puller._log_message' Image inspection failed, image assumed to be corrupted or missing
     2  2023-05-18T14:56:52.984039+00:00 WARNING 'ansible_navigator.image_manager.puller._log_message' stdout:
     3  2023-05-18T14:56:52.984103+00:00 WARNING 'ansible_navigator.image_manager.puller._log_message' stderr: Error: failed to connect: dial tcp [::1]:51935: connect: connection refused

     4  2023-05-18T14:56:53.016112+00:00 ERROR 'ansible_navigator.image_manager.puller._log_message' Execution environment pull failed
     5  2023-05-18T14:56:53.259303+00:00 ERROR 'ansible_navigator.actions.collections._run_runner' Error: failed to connect: dial tcp [::1]:51935: connect: connection refused

     6  2023-05-18T14:56:57.775255+00:00 ERROR 'ansible_navigator.actions.collections._parse' Unable to extract collection json from stdout
$ 
cidrblock commented 1 year ago

@djgoosen My bad here, I should have suggested using --ll debug --la false that should create a new log file with all kinds of debug goodness in it. What I'm after is the json payload returned from the container invocation which should have some error information in it that might help narrow down where the issue is

djgoosen commented 1 year ago

@cidrblock here you go, thanks!

$ ansible-navigator collections list --ll debug --la false
---------------------------------------------------------------------
Execution environment image and pull policy overview
---------------------------------------------------------------------
Execution environment image name:     ghcr.io/ansible/creator-ee:v0.17.0
Execution environment image tag:      v0.17.0
Execution environment pull arguments: None
Execution environment pull policy:    tag
Execution environment pull needed:    True
---------------------------------------------------------------------
Updating the execution environment
---------------------------------------------------------------------
Running the command: podman pull ghcr.io/ansible/creator-ee:v0.17.0
Error: failed to connect: dial tcp [::1]:51935: connect: connection refused

ansible-navigator.log

cidrblock commented 1 year ago

Thanks- The info isn't in there that I need, will make a code change to make sure it's being logged corectly.

Sorry about that, and thanks for helping.

shatakshiiii commented 1 year ago

@djgoosen, There are some known issues with podman on Macos, which might be causing this.

If you are facing this on Macos can you please try to run ansible-navigator collections using docker instead of default podman - by doing ansible-navigator collections --ce docker and let us know how it is working ?

djgoosen commented 1 year ago

Hi @shatakshiiii running ansible-navigator collections --ce docker does show a list of collections on macOS, just tested on ansible-navigator 3.4.0.