Skip to content

Expose host connection stats #1374

Description

@sivel

Dependent on ansible/ansible#83354

In the awx_display callback plugin we need to capture per host/task/loop connection stats, and then include those connection stats in the event data created by v2_playbook_on_stats

Basically for all reachable, non skipped tasks, we need to count the number of times a host uses an individual connection plugin.

A PoC of what that would look like in a standalone callback plugin:

callback plugin poc...

# Copyright: Contributors to the Ansible project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

from __future__ import annotations

DOCUMENTATION = '''
    name: track_connections
    short_description: Track connection plugins used for hosts
    description:
        - Track connection plugins used for hosts
    type: aggregate
'''

import json
from collections import defaultdict

from ansible.plugins.callback import CallbackBase


class CallbackModule(CallbackBase):
    CALLBACK_VERSION = 2.0
    CALLBACK_TYPE = 'aggregate'
    CALLBACK_NAME = 'track_connections'

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._conntrack = defaultdict(lambda : defaultdict(int))

    def _track(self, result, *args, **kwargs):
        host = result._host.get_name()
        task = result._task

        self._conntrack[host][task.connection] += 1

    v2_runner_on_ok = v2_runner_on_failed = _track
    v2_runner_on_async_poll = v2_runner_on_async_ok = v2_runner_on_async_failed = _track
    v2_runner_item_on_ok = v2_runner_item_on_failed = _track

    def v2_playbook_on_stats(self, stats):
        self._display.display(json.dumps(self._conntrack, indent=4))

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions