aws-cleaner 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/aws_cleaner.rb +55 -6
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d960635f67336a50cd494f8c4886cb2d288dac07
4
- data.tar.gz: b2e13460c1390ff2a38484d42c19cbe9cb2b7805
3
+ metadata.gz: f4e9cb3c17a953b6e31c33653adfabcc8e624de4
4
+ data.tar.gz: 2a02b8c09de9ca83022b0da35a97fbf3a71fa55a
5
5
  SHA512:
6
- metadata.gz: e17e67a8eb0ad493b54cc106f019c5a70201ad55ad032309fcef253ef76f78c29e4bc71e155a614c40f5ccb48a23e84decbb2049944a70f71f65254b79d92a10
7
- data.tar.gz: 4ff7266734e55f77f702f83b90f2c32eb28c46d569786437addcacc1960db6196950264b4650dcd48999b953526cc26b080c67bae706d7e609f787346dccf3ba
6
+ metadata.gz: 26e021cc9cdd9a950de13bc6246cb3458b61c79308f4acbb7dbeb8ee3ff4c9ff340f3b62be4827f1d10411293f5b8d76ca3ce8c3c3689c9c2f9eefcc1e35c081
7
+ data.tar.gz: c5abb5b0ed1a2244b14f99734b06a5e38450e26cd0d1ba0cd6260227dee4e60337bbf3c910a6d3e0d43b91276095754599fa932ee731046c0cbf2ab59ec4466c
@@ -22,13 +22,13 @@ end
22
22
 
23
23
  def config(file)
24
24
  YAML.load(File.read(file))
25
- rescue StandardError => e
26
- raise "Failed to open config file: #{e}"
25
+ rescue StandardError => e
26
+ raise "Failed to open config file: #{e}"
27
27
  end
28
28
 
29
29
  # get options
30
30
  opts = Trollop::options do
31
- opt :config, 'Path to config file', :type => :string, :default => 'config.yml'
31
+ opt :config, 'Path to config file', type: 'string', default: 'config.yml'
32
32
  end
33
33
 
34
34
  @config = config(opts[:config])
@@ -46,15 +46,15 @@ def delete_message(id)
46
46
  delete = @sqs.delete_message(
47
47
  queue_url: @config[:sqs][:queue],
48
48
  receipt_handle: id
49
- )
49
+ )
50
50
  delete ? true : false
51
51
  end
52
52
 
53
53
  # return the body of the SQS message in JSON
54
54
  def parse(body)
55
55
  JSON.parse(body)
56
- rescue JSON::ParserError
57
- return false
56
+ rescue JSON::ParserError
57
+ return false
58
58
  end
59
59
 
60
60
  # return the instance_id of the terminated instance
@@ -81,6 +81,16 @@ def get_chef_node_name(instance_id)
81
81
  end
82
82
  end
83
83
 
84
+ # call the Chef API to get the FQDN of the instance
85
+ def get_chef_fqdn(instance_id)
86
+ results = @chef.search.query(:node, "ec2_instance_id:#{instance_id} OR chef_provisioning_reference_server_id:#{instance_id}")
87
+ if results.rows.size > 0
88
+ return results.rows.first['automatic']['fqdn']
89
+ else
90
+ return false
91
+ end
92
+ end
93
+
84
94
  # check if the node exists in Sensu
85
95
  def in_sensu?(node_name)
86
96
  begin
@@ -131,6 +141,37 @@ def notify_hipchat(msg)
131
141
  hipchat[room].send('AWS Cleaner', msg)
132
142
  end
133
143
 
144
+ # generate the URL for the webhook
145
+ def generate_webhook_url(url, template_variable_method, template_variable_argument, template_variable)
146
+ replacement = send(template_variable_method, eval(template_variable_argument))
147
+ url.gsub!(/{#{template_variable}/, replacement)
148
+ url
149
+ end
150
+
151
+ # call an HTTP endpoint
152
+ def fire_webhook(config)
153
+ # generate templated URL
154
+ if config[:template_variables] && config[:url] =~ /\{\S+\}/
155
+ url = generate_webhook_url(
156
+ config[:url],
157
+ config[:template_variables][:method],
158
+ config[:template_variables][:argument],
159
+ config[:template_variables][:variable]
160
+ )
161
+ else
162
+ url = config[:url]
163
+ end
164
+
165
+ hook = { method: config[:method].to_sym, url: url }
166
+ begin
167
+ RestClient::Request.execute(hook)
168
+ rescue
169
+ return false
170
+ else
171
+ return true
172
+ end
173
+ end
174
+
134
175
  # main loop
135
176
  loop do
136
177
  # get messages from SQS
@@ -176,6 +217,14 @@ loop do
176
217
  delete_message(id)
177
218
  end
178
219
  end
220
+
221
+ if @config[:webhooks]
222
+ @config[:webbooks].each do |_hook, config|
223
+ fire_webhook(config)
224
+ end
225
+ delete_message(id)
226
+ end
227
+
179
228
  else
180
229
  puts 'Message not relevant, deleting'
181
230
  delete_message(id)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-cleaner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Heydrick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-31 00:00:00.000000000 Z
11
+ date: 2015-12-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core