mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-03-26 21:33:12 +00:00
Reformat everything.
This commit is contained in:
@@ -70,6 +70,7 @@ from ansible.plugins.callback import CallbackBase
|
||||
|
||||
try:
|
||||
import prettytable
|
||||
|
||||
HAS_PRETTYTABLE = True
|
||||
except ImportError:
|
||||
HAS_PRETTYTABLE = False
|
||||
@@ -79,20 +80,20 @@ class CallbackModule(CallbackBase):
|
||||
"""This is an ansible callback plugin that sends status
|
||||
updates to a Slack channel during playbook execution.
|
||||
"""
|
||||
|
||||
CALLBACK_VERSION = 2.0
|
||||
CALLBACK_TYPE = 'notification'
|
||||
CALLBACK_NAME = 'community.general.slack'
|
||||
CALLBACK_TYPE = "notification"
|
||||
CALLBACK_NAME = "community.general.slack"
|
||||
CALLBACK_NEEDS_WHITELIST = True
|
||||
|
||||
def __init__(self, display=None):
|
||||
|
||||
super().__init__(display=display)
|
||||
|
||||
if not HAS_PRETTYTABLE:
|
||||
self.disabled = True
|
||||
self._display.warning('The `prettytable` python module is not '
|
||||
'installed. Disabling the Slack callback '
|
||||
'plugin.')
|
||||
self._display.warning(
|
||||
"The `prettytable` python module is not installed. Disabling the Slack callback plugin."
|
||||
)
|
||||
|
||||
self.playbook_name = None
|
||||
|
||||
@@ -102,34 +103,34 @@ class CallbackModule(CallbackBase):
|
||||
self.guid = uuid.uuid4().hex[:6]
|
||||
|
||||
def set_options(self, task_keys=None, var_options=None, direct=None):
|
||||
|
||||
super().set_options(task_keys=task_keys, var_options=var_options, direct=direct)
|
||||
|
||||
self.webhook_url = self.get_option('webhook_url')
|
||||
self.channel = self.get_option('channel')
|
||||
self.username = self.get_option('username')
|
||||
self.show_invocation = (self._display.verbosity > 1)
|
||||
self.validate_certs = self.get_option('validate_certs')
|
||||
self.http_agent = self.get_option('http_agent')
|
||||
self.webhook_url = self.get_option("webhook_url")
|
||||
self.channel = self.get_option("channel")
|
||||
self.username = self.get_option("username")
|
||||
self.show_invocation = self._display.verbosity > 1
|
||||
self.validate_certs = self.get_option("validate_certs")
|
||||
self.http_agent = self.get_option("http_agent")
|
||||
if self.webhook_url is None:
|
||||
self.disabled = True
|
||||
self._display.warning('Slack Webhook URL was not provided. The '
|
||||
'Slack Webhook URL can be provided using '
|
||||
'the `SLACK_WEBHOOK_URL` environment '
|
||||
'variable.')
|
||||
self._display.warning(
|
||||
"Slack Webhook URL was not provided. The "
|
||||
"Slack Webhook URL can be provided using "
|
||||
"the `SLACK_WEBHOOK_URL` environment "
|
||||
"variable."
|
||||
)
|
||||
|
||||
def send_msg(self, attachments):
|
||||
headers = {
|
||||
'Content-type': 'application/json',
|
||||
"Content-type": "application/json",
|
||||
}
|
||||
|
||||
payload = {
|
||||
'channel': self.channel,
|
||||
'username': self.username,
|
||||
'attachments': attachments,
|
||||
'parse': 'none',
|
||||
'icon_url': ('https://cdn2.hubspot.net/hub/330046/'
|
||||
'file-449187601-png/ansible_badge.png'),
|
||||
"channel": self.channel,
|
||||
"username": self.username,
|
||||
"attachments": attachments,
|
||||
"parse": "none",
|
||||
"icon_url": ("https://cdn2.hubspot.net/hub/330046/file-449187601-png/ansible_badge.png"),
|
||||
}
|
||||
|
||||
data = json.dumps(payload)
|
||||
@@ -145,67 +146,63 @@ class CallbackModule(CallbackBase):
|
||||
)
|
||||
return response.read()
|
||||
except Exception as e:
|
||||
self._display.warning(f'Could not submit message to Slack: {e}')
|
||||
self._display.warning(f"Could not submit message to Slack: {e}")
|
||||
|
||||
def v2_playbook_on_start(self, playbook):
|
||||
self.playbook_name = os.path.basename(playbook._file_name)
|
||||
|
||||
title = [
|
||||
f'*Playbook initiated* (_{self.guid}_)'
|
||||
]
|
||||
title = [f"*Playbook initiated* (_{self.guid}_)"]
|
||||
|
||||
invocation_items = []
|
||||
if context.CLIARGS and self.show_invocation:
|
||||
tags = context.CLIARGS['tags']
|
||||
skip_tags = context.CLIARGS['skip_tags']
|
||||
extra_vars = context.CLIARGS['extra_vars']
|
||||
subset = context.CLIARGS['subset']
|
||||
inventory = [os.path.abspath(i) for i in context.CLIARGS['inventory']]
|
||||
tags = context.CLIARGS["tags"]
|
||||
skip_tags = context.CLIARGS["skip_tags"]
|
||||
extra_vars = context.CLIARGS["extra_vars"]
|
||||
subset = context.CLIARGS["subset"]
|
||||
inventory = [os.path.abspath(i) for i in context.CLIARGS["inventory"]]
|
||||
|
||||
invocation_items.append(f"Inventory: {', '.join(inventory)}")
|
||||
if tags and tags != ['all']:
|
||||
if tags and tags != ["all"]:
|
||||
invocation_items.append(f"Tags: {', '.join(tags)}")
|
||||
if skip_tags:
|
||||
invocation_items.append(f"Skip Tags: {', '.join(skip_tags)}")
|
||||
if subset:
|
||||
invocation_items.append(f'Limit: {subset}')
|
||||
invocation_items.append(f"Limit: {subset}")
|
||||
if extra_vars:
|
||||
invocation_items.append(f"Extra Vars: {' '.join(extra_vars)}")
|
||||
|
||||
title.append(f"by *{context.CLIARGS['remote_user']}*")
|
||||
|
||||
title.append(f'\n\n*{self.playbook_name}*')
|
||||
msg_items = [' '.join(title)]
|
||||
title.append(f"\n\n*{self.playbook_name}*")
|
||||
msg_items = [" ".join(title)]
|
||||
if invocation_items:
|
||||
_inv_item = '\n'.join(invocation_items)
|
||||
msg_items.append(f'```\n{_inv_item}\n```')
|
||||
_inv_item = "\n".join(invocation_items)
|
||||
msg_items.append(f"```\n{_inv_item}\n```")
|
||||
|
||||
msg = '\n'.join(msg_items)
|
||||
msg = "\n".join(msg_items)
|
||||
|
||||
attachments = [{
|
||||
'fallback': msg,
|
||||
'fields': [
|
||||
{
|
||||
'value': msg
|
||||
}
|
||||
],
|
||||
'color': 'warning',
|
||||
'mrkdwn_in': ['text', 'fallback', 'fields'],
|
||||
}]
|
||||
attachments = [
|
||||
{
|
||||
"fallback": msg,
|
||||
"fields": [{"value": msg}],
|
||||
"color": "warning",
|
||||
"mrkdwn_in": ["text", "fallback", "fields"],
|
||||
}
|
||||
]
|
||||
|
||||
self.send_msg(attachments=attachments)
|
||||
|
||||
def v2_playbook_on_play_start(self, play):
|
||||
"""Display Play start messages"""
|
||||
|
||||
name = play.name or f'Play name not specified ({play._uuid})'
|
||||
msg = f'*Starting play* (_{self.guid}_)\n\n*{name}*'
|
||||
name = play.name or f"Play name not specified ({play._uuid})"
|
||||
msg = f"*Starting play* (_{self.guid}_)\n\n*{name}*"
|
||||
attachments = [
|
||||
{
|
||||
'fallback': msg,
|
||||
'text': msg,
|
||||
'color': 'warning',
|
||||
'mrkdwn_in': ['text', 'fallback', 'fields'],
|
||||
"fallback": msg,
|
||||
"text": msg,
|
||||
"color": "warning",
|
||||
"mrkdwn_in": ["text", "fallback", "fields"],
|
||||
}
|
||||
]
|
||||
self.send_msg(attachments=attachments)
|
||||
@@ -215,8 +212,7 @@ class CallbackModule(CallbackBase):
|
||||
|
||||
hosts = sorted(stats.processed.keys())
|
||||
|
||||
t = prettytable.PrettyTable(['Host', 'Ok', 'Changed', 'Unreachable',
|
||||
'Failures', 'Rescued', 'Ignored'])
|
||||
t = prettytable.PrettyTable(["Host", "Ok", "Changed", "Unreachable", "Failures", "Rescued", "Ignored"])
|
||||
|
||||
failures = False
|
||||
unreachable = False
|
||||
@@ -224,38 +220,28 @@ class CallbackModule(CallbackBase):
|
||||
for h in hosts:
|
||||
s = stats.summarize(h)
|
||||
|
||||
if s['failures'] > 0:
|
||||
if s["failures"] > 0:
|
||||
failures = True
|
||||
if s['unreachable'] > 0:
|
||||
if s["unreachable"] > 0:
|
||||
unreachable = True
|
||||
|
||||
t.add_row([h] + [s[k] for k in ['ok', 'changed', 'unreachable',
|
||||
'failures', 'rescued', 'ignored']])
|
||||
t.add_row([h] + [s[k] for k in ["ok", "changed", "unreachable", "failures", "rescued", "ignored"]])
|
||||
|
||||
attachments = []
|
||||
msg_items = [
|
||||
f'*Playbook Complete* (_{self.guid}_)'
|
||||
]
|
||||
msg_items = [f"*Playbook Complete* (_{self.guid}_)"]
|
||||
if failures or unreachable:
|
||||
color = 'danger'
|
||||
msg_items.append('\n*Failed!*')
|
||||
color = "danger"
|
||||
msg_items.append("\n*Failed!*")
|
||||
else:
|
||||
color = 'good'
|
||||
msg_items.append('\n*Success!*')
|
||||
color = "good"
|
||||
msg_items.append("\n*Success!*")
|
||||
|
||||
msg_items.append(f'```\n{t}\n```')
|
||||
msg_items.append(f"```\n{t}\n```")
|
||||
|
||||
msg = '\n'.join(msg_items)
|
||||
msg = "\n".join(msg_items)
|
||||
|
||||
attachments.append({
|
||||
'fallback': msg,
|
||||
'fields': [
|
||||
{
|
||||
'value': msg
|
||||
}
|
||||
],
|
||||
'color': color,
|
||||
'mrkdwn_in': ['text', 'fallback', 'fields']
|
||||
})
|
||||
attachments.append(
|
||||
{"fallback": msg, "fields": [{"value": msg}], "color": color, "mrkdwn_in": ["text", "fallback", "fields"]}
|
||||
)
|
||||
|
||||
self.send_msg(attachments=attachments)
|
||||
|
||||
Reference in New Issue
Block a user