Class: OpsDeploy::CLI::Notifier::Slack

Inherits:
Generic
  • Object
show all
Defined in:
lib/ops_deploy/cli/notifier.rb

Overview

A notification class for Slack

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(stack, options) ⇒ Slack

Returns a new instance of Slack.



73
74
75
76
77
78
# File 'lib/ops_deploy/cli/notifier.rb', line 73

def initialize(stack, options)
  @stack = stack
  @options = options
  @options[:username] = 'OpsDeploy' unless @options[:username]
  @slack_notifier = Slack::Notifier.new @options[:webhook_url], @options
end

Instance Attribute Details

#slack_notifierObject

Returns the value of attribute slack_notifier.



71
72
73
# File 'lib/ops_deploy/cli/notifier.rb', line 71

def slack_notifier
  @slack_notifier
end

Instance Method Details

#failure_notify(message) ⇒ Object



105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/ops_deploy/cli/notifier.rb', line 105

def failure_notify(message)
  message = message.gsub(/\[[0-9;]+?m/, '')
  @slack_notifier.ping '', channel: @options[:channel], attachments: [
    {
      fallback: message,
      text: "#{message} <!channel>",
      author_name: @stack.name,
      author_link: stack_link(@stack),
      color: 'danger'
    }
  ]
end

#notify(message) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
# File 'lib/ops_deploy/cli/notifier.rb', line 80

def notify(message)
  message = message.gsub(/\[[0-9;]+?m/, '')
  @slack_notifier.ping '', channel: @options[:channel], attachments: [
    {
      fallback: message,
      author_name: @stack.name,
      author_link: stack_link(@stack),
      text: message
    }
  ]
end


118
119
120
121
122
123
# File 'lib/ops_deploy/cli/notifier.rb', line 118

def stack_link(stack)
  region = OpsDeploy::CLI.argument('aws-region', 'AWS_REGION') || 'us-east-1'
  params = "?region=#{region}#/stack/#{stack.stack_id}/stack"

  "https://console.aws.amazon.com/opsworks/home#{params}"
end

#success_notify(message) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/ops_deploy/cli/notifier.rb', line 92

def success_notify(message)
  message = message.gsub(/\[[0-9;]+?m/, '')
  @slack_notifier.ping '', channel: @options[:channel], attachments: [
    {
      fallback: message,
      text: message,
      author_name: @stack.name,
      author_link: stack_link(@stack),
      color: 'good'
    }
  ]
end