vaulted_slack.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:ansibilo 作者: Polyconseil 项目源码 文件源码
def v2_playbook_on_stats(self, stats):
        if stats.failures and stats.ok:
            color = 'warning'
        elif not stats.failures:
            color = 'good'
        else:
            color = 'danger'
        end_ts = datetime.now()
        delta = humanize.naturaldelta(end_ts - self.start_ts) if self.start_ts else 'unknown'
        title = "Playbook {name} run in {time}".format(name=self.playbook_name, time=delta)

        hosts = stats.processed.keys()
        payload = {'attachments': [
            {
                'title': title,
                'color': color,
                'author_name': self.user,
                'fields': [{
                    'title': '',
                    'value': "{emoji} {host}".format(
                        emoji=':boom:' if host in stats.failures else ':ok_hand:',
                        host=host,
                    ),
                    'short': True,
                } for host in hosts],
                # For IRC users
                'fallback': '\n'.join([title, "by {0}".format(self.user)] + [
                    ' - {host}: {status}'.format(
                        host=host,
                        status='failed' if host in stats.failures else 'ok',
                    )
                    for host in hosts
                ]),
            }
        ]}

        if os.environ.get('VAGRANT_EXECUTABLE'):  # Do not post on slack when playbook is run by Vagrant
            print('{delimiter}POST {url}\n{payload}{delimiter}'.format(
                url=self.slack_hook_url,
                payload=json.dumps(payload, indent=True),
                delimiter='\n' + '-' * 30 + ' slack ' + '-' * 30 + '\n',
            ))
        elif not self.skip_slack:
            requests.post(self.slack_hook_url, data=json.dumps(payload))
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号