From a4c92ff7477d09b480cab028411bc7c6b250604e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isma=C3=ABl=20Bouya?= Date: Mon, 5 Mar 2018 17:29:29 +0100 Subject: Add notification for app deployment --- modules/role/files/cryptoportfolio/slack-notify.py | 27 ++++++++++++++++++++++ modules/role/manifests/cryptoportfolio.pp | 25 ++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 modules/role/files/cryptoportfolio/slack-notify.py (limited to 'modules/role') diff --git a/modules/role/files/cryptoportfolio/slack-notify.py b/modules/role/files/cryptoportfolio/slack-notify.py new file mode 100644 index 0000000..fe64fb6 --- /dev/null +++ b/modules/role/files/cryptoportfolio/slack-notify.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python3 + +import sys +import json +import urllib3 + +project = sys.argv[1] +url = sys.argv[2] +version = sys.argv[3] + +def post(url, data): + urllib3.disable_warnings() + http = urllib3.PoolManager() + + encoded = data.encode('utf-8') + + r = http.request("POST", url, + headers={'Content-Type': 'application/json'}, + body=encoded) + +data = { + "icon_url": "https://learn.puppet.com/static/images/logos/Puppet-Logo-Mark-Amber.png", + "text": "Deployed {} on {}".format(version, project), + } + +json_data = json.dumps(data) +post(url, json_data) diff --git a/modules/role/manifests/cryptoportfolio.pp b/modules/role/manifests/cryptoportfolio.pp index 6c760b5..67d88fb 100644 --- a/modules/role/manifests/cryptoportfolio.pp +++ b/modules/role/manifests/cryptoportfolio.pp @@ -41,6 +41,8 @@ class role::cryptoportfolio { $cf_bot_app_conf = "${cf_home}/bot_config.ini" $cf_bot_app_reports = "${cf_home}/bot_reports" + $cf_webhook_url = lookup("cryptoportfolio::slack_webhook") |$key| { "" } + file { "/var/lib/postgres/data/certs": ensure => directory, mode => "0700", @@ -179,6 +181,11 @@ class role::cryptoportfolio { password => '!!', } + file { "/usr/local/bin/slack-notify": + mode => "0755", + source => "puppet:///modules/role/cryptoportfolio/slack-notify.py", + } + $front_version = lookup("cryptoportfolio::front_version") |$key| { {} } $front_sha256 = lookup("cryptoportfolio::front_sha256") |$key| { {} } @@ -261,6 +268,15 @@ class role::cryptoportfolio { Archive["${cf_home}/trader_${bot_version}.tar.gz"] ], } + + unless empty($cf_webhook_url) { + exec { "bot-slack-notify": + refreshonly => true, + command => "/usr/local/bin/slack-notify Trader '${cf_webhook_url}' '${bot_version}'", + require => File["/usr/local/bin/slack-notify"], + subscribe => Exec["py-cryptoportfolio-dependencies"], + } + } } # FIXME: restore backup @@ -387,5 +403,14 @@ class role::cryptoportfolio { command => "/usr/bin/make static ENV=${cf_env}", refreshonly => true, } + + unless empty($cf_webhook_url) { + exec { "front-slack-notify": + refreshonly => true, + command => "/usr/local/bin/slack-notify Front '${cf_webhook_url}' '${front_version}'", + require => File["/usr/local/bin/slack-notify"], + subscribe => [Exec["go-cryptoportfolio-app"], Exec["web-cryptoportfolio-build"]], + } + } } } -- cgit v1.2.3