ara icon indicating copy to clipboard operation
ara copied to clipboard

ara doesn't work with ansible-console

Open dmsimard opened this issue 3 years ago • 1 comments

What is the issue ?

ara doesn't work with ansible-console:

export ANSIBLE_CALLBACK_PLUGINS=$(python3 -m ara.setup.callback_plugins)
export ANSIBLE_LOAD_CALLBACK_PLUGINS=true
> ansible-console -i hosts -vvv
[WARNING]: You are running the development version of Ansible. You should only run Ansible from "devel" if you are modifying the Ansible engine, or trying out features under development. This is a rapidly changing source of code and can
become unstable at any point.
ansible-console [core 2.14.0.dev0]
  config file = None
  configured module search path = ['/home/dmsimard/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/dmsimard/tmp/ara/.tox/ansible-integration/lib/python3.10/site-packages/ansible
  ansible collection location = /home/dmsimard/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/dmsimard/tmp/ara/.tox/ansible-integration/bin/ansible-console
  python version = 3.10.4 (main, Mar 25 2022, 00:00:00) [GCC 11.2.1 20220127 (Red Hat 11.2.1-9)]
  jinja version = 3.1.1
  libyaml = True
No config file found; using defaults
host_list declined parsing /home/dmsimard/tmp/ara/hosts as it did not pass its verify_file() method
script declined parsing /home/dmsimard/tmp/ara/hosts as it did not pass its verify_file() method
auto declined parsing /home/dmsimard/tmp/ara/hosts as it did not pass its verify_file() method
Parsed /home/dmsimard/tmp/ara/hosts inventory source with ini plugin
Welcome to the ansible console. Type help or ? to list commands.

dmsimard@all (1)[f:5]$ debug msg=test
Operations to perform:
  Apply all migrations: admin, api, auth, contenttypes, db, sessions
Running migrations:
  No migrations to apply.
Skipping callback 'default', as we already have a stdout callback.
Skipping callback 'minimal', as we already have a stdout callback.
Skipping callback 'oneline', as we already have a stdout callback.
2022-04-21 18:57:44,870 DEBUG ara.plugins.callback.default: v2_playbook_on_play_start
[WARNING]: Failure using method (v2_playbook_on_play_start) in callback plugin (<ansible.plugins.callback.ara_default.CallbackModule object at 0x7fbc8a9bcc40>): 'NoneType' object is not subscriptable
Callback Exception: 
  File "/home/dmsimard/tmp/ara/.tox/ansible-integration/lib/python3.10/site-packages/ansible/executor/task_queue_manager.py", line 434, in send_callback
    method(*new_args, **kwargs)
   File "/home/dmsimard/tmp/ara/ara/plugins/callback/ara_default.py", line 377, in v2_playbook_on_play_start
    self._submit_thread("global", self._set_playbook_labels, labels)
   File "/home/dmsimard/tmp/ara/ara/plugins/callback/ara_default.py", line 294, in _submit_thread
    func(*args, **kwargs)
   File "/home/dmsimard/tmp/ara/ara/plugins/callback/ara_default.py", line 538, in _set_playbook_labels
    current_labels = [label["name"] for label in self.playbook["labels"]]
META: ran handlers
2022-04-21 18:57:44,909 DEBUG ara.plugins.callback.default: v2_playbook_on_task_start
[WARNING]: Failure using method (v2_playbook_on_task_start) in callback plugin (<ansible.plugins.callback.ara_default.CallbackModule object at 0x7fbc8a9bcc40>): 'NoneType' object is not subscriptable
Callback Exception: 
  File "/home/dmsimard/tmp/ara/.tox/ansible-integration/lib/python3.10/site-packages/ansible/executor/task_queue_manager.py", line 434, in send_callback
    method(*new_args, **kwargs)
   File "/home/dmsimard/tmp/ara/ara/plugins/callback/ara_default.py", line 427, in v2_playbook_on_task_start
    path = self.playbook["path"]
2022-04-21 18:57:44,910 DEBUG ara.plugins.callback.default: v2_runner_on_start
testing | SUCCESS => {
    "msg": "test"
}
2022-04-21 18:57:44,930 DEBUG ara.plugins.callback.default: v2_runner_on_ok
2022-04-21 18:57:44,931 DEBUG ara.plugins.callback.default: Host not in cache, getting or creating: testing
[WARNING]: Failure using method (v2_runner_on_ok) in callback plugin (<ansible.plugins.callback.ara_default.CallbackModule object at 0x7fbc8a9bcc40>): 'NoneType' object is not subscriptable
Callback Exception: 
  File "/home/dmsimard/tmp/ara/.tox/ansible-integration/lib/python3.10/site-packages/ansible/executor/task_queue_manager.py", line 434, in send_callback
    method(*new_args, **kwargs)
   File "/home/dmsimard/tmp/ara/ara/plugins/callback/ara_default.py", line 445, in v2_runner_on_ok
    self._submit_thread("task", self._load_result, result, "ok", **kwargs)
   File "/home/dmsimard/tmp/ara/ara/plugins/callback/ara_default.py", line 294, in _submit_thread
    func(*args, **kwargs)
   File "/home/dmsimard/tmp/ara/ara/plugins/callback/ara_default.py", line 623, in _load_result
    host = self._get_or_create_host(hostname)
   File "/home/dmsimard/tmp/ara/ara/plugins/callback/ara_default.py", line 575, in _get_or_create_host
    self.host_cache[host] = self.client.post("/api/v1/hosts", name=host, playbook=self.playbook["id"])
META: ran handlers
META: ran handlers

What should be happening ?

It should work like adhoc commands does.

dmsimard avatar Apr 21 '22 23:04 dmsimard

I created this in a bit of a hurry yesterday but the adhoc commands are recorded by creating a "fake" playbook since everything is tied back to a playbook -- there's probably something a little bit different about how ansible-console runs.

See: https://github.com/ansible-community/ara/blob/db8243c3af938ece12c9cd59dd7fe4d9a711b76d/ara/plugins/callback/ara_default.py#L295-L301

dmsimard avatar Apr 22 '22 14:04 dmsimard