hotdog 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7300d7cfb838327013fb49f3012e15a606cb7af4
4
- data.tar.gz: 38666c025172a7873a7746027d64d6a388cd38b5
3
+ metadata.gz: d1a630c98690e6d1df7a32b7baf48e24776da49a
4
+ data.tar.gz: ab4daa9a831412d598eb235e3e4ed8a4516b2dcf
5
5
  SHA512:
6
- metadata.gz: c3e9cd9dff9174e95ba9343f4af840437b721b2ad3e0c46e4bf03ab3433f54d66ea2676c0600f5f30b5278315aa48d3943480a7f40b0e5b43737be7fbb70acb3
7
- data.tar.gz: 86870002dea94e2cefc19ac9c3f028f394d001bab658bb875ee2bbb86a68e5feb2e47bb7cbd59e5465f5416da1f88f0336ce14799a122d9e3f600a1ccf6c6f20
6
+ metadata.gz: cb2c5b244339014184b56d4c1ab68bce58bc8fa2f71e84eef15319a8157be1532304647760fcd0b41d200cd8e1fdb895e6ca6a8309c7cd79d3ce9f6e67379c6f
7
+ data.tar.gz: 00ea3e8ddc439588571c788a0ec4f2546fb084d81ef18749b92cb83ab239ce2ea6df3f7c1ad21f17ca9f487794c805a1c5eb1fd007857d81dc58b3f9be9e3746
@@ -17,14 +17,14 @@ module Hotdog
17
17
  debug: false,
18
18
  environment: "default",
19
19
  minimum_expiry: 3600, # 1 hour
20
- random_expiry: 604800, # 7 days
20
+ random_expiry: 5940, # 99 hours
21
21
  fixed_string: false,
22
22
  force: false,
23
23
  format: "plain",
24
24
  headers: false,
25
25
  listing: false,
26
26
  logger: Logger.new(STDERR),
27
- max_time: 10,
27
+ max_time: 5,
28
28
  api_key: ENV["DATADOG_API_KEY"],
29
29
  application_key: ENV["DATADOG_APPLICATION_KEY"],
30
30
  print0: false,
@@ -5,17 +5,27 @@ module Hotdog
5
5
  class Hosts < BaseCommand
6
6
  def run(args=[])
7
7
  application.run_command("init")
8
- update_hosts(@options.dup)
9
8
 
10
9
  if args.empty?
10
+ update_hosts(@options.dup)
11
11
  @hosts_q1 ||= @db.prepare(<<-EOS)
12
12
  SELECT DISTINCT host_id FROM hosts_tags;
13
13
  EOS
14
14
  logger.debug("hosts_q1()")
15
15
  result = @hosts_q1.execute().to_a.reduce(:+)
16
16
  else
17
+ if args.map { |host_name| glob?(host_name) }.any?
18
+ update_hosts(@options.dup)
19
+ else
20
+ args.each do |host_name|
21
+ @hosts_q4 ||= @db.prepare("INSERT OR IGNORE INTO hosts (name) VALUES (?);")
22
+ logger.debug("hosts_q4(%s)" % [host_name.inspect])
23
+ @hosts_q4.execute(host_name)
24
+ update_host_tags(host_name, @options.dup)
25
+ end
26
+ end
17
27
  result = args.map { |host_name|
18
- if host_name.index("*")
28
+ if glob?(host_name)
19
29
  @hosts_q2 ||= @db.prepare(<<-EOS)
20
30
  SELECT DISTINCT hosts_tags.host_id FROM hosts_tags
21
31
  INNER JOIN hosts ON hosts_tags.host_id = hosts.id
@@ -65,13 +65,13 @@ module Hotdog
65
65
  @get_hosts_q6 ||= @db.prepare(<<-EOS)
66
66
  SELECT expires_at FROM hosts_tags WHERE host_id = ? LIMIT 1;
67
67
  EOS
68
- logger.debug("get_hosts_q6()")
68
+ logger.debug("get_hosts_q6(%s)" % [host_id.inspect])
69
69
  @get_hosts_q6.execute(host_id).map { |row| Time.at(row.first).strftime("%Y-%m-%dT%H:%M:%S") }.first
70
70
  when "host"
71
71
  @get_hosts_q1 ||= @db.prepare(<<-EOS)
72
72
  SELECT name FROM hosts WHERE id = ? LIMIT 1;
73
73
  EOS
74
- logger.debug("get_hosts_q1()")
74
+ logger.debug("get_hosts_q1(%s)" % [host_id.inspect])
75
75
  @get_hosts_q1.execute(host_id).map { |row| row.first }.first
76
76
  else
77
77
  if not glob?(tag_name)
@@ -80,7 +80,7 @@ module Hotdog
80
80
  INNER JOIN tags ON hosts_tags.tag_id = tags.id
81
81
  WHERE hosts_tags.host_id = ? AND tags.name = ?;
82
82
  EOS
83
- logger.debug("get_hosts_q2()")
83
+ logger.debug("get_hosts_q2(%s, %s)" % [host_id.inspect, tag_name.inspect])
84
84
  @get_hosts_q2.execute(host_id, tag_name).map { |row| row.first }.join(",")
85
85
  else
86
86
  @get_hosts_q5 ||= @db.prepare(<<-EOS)
@@ -88,7 +88,7 @@ module Hotdog
88
88
  INNER JOIN tags ON hosts_tags.tag_id = tags.id
89
89
  WHERE hosts_tags.host_id = ? AND tags.name GLOB ?;
90
90
  EOS
91
- logger.debug("get_hosts_q5()")
91
+ logger.debug("get_hosts_q5(%s, %s)", host_id.inspect, tag_name.inspect)
92
92
  @get_hosts_q5.execute(host_id, tag_name).map { |row| row.first }.join(",")
93
93
  end
94
94
  end
@@ -109,7 +109,7 @@ module Hotdog
109
109
  INNER JOIN tags ON hosts_tags.tag_id = tags.id
110
110
  WHERE hosts_tags.host_id = ?;
111
111
  EOS
112
- logger.debug("get_hosts_q3()")
112
+ logger.debug("get_hosts_q3(%s)" % [host_id.inspect])
113
113
  tag_names = @get_hosts_q3.execute(host_id).map { |row| row.first }
114
114
  tag_names.each do |tag_name|
115
115
  fields << tag_name unless fields.index(tag_name)
@@ -138,8 +138,7 @@ module Hotdog
138
138
  def update_hosts(options={})
139
139
  if suspended?
140
140
  return
141
- end
142
- @db.transaction do
141
+ else
143
142
  if not options[:force]
144
143
  # Update host list on every expirations to update frequently.
145
144
  @update_hosts_q1 ||= @db.prepare("SELECT MIN(expires_at) FROM hosts_tags;")
@@ -188,8 +187,7 @@ module Hotdog
188
187
  def update_tags(options={})
189
188
  if suspended?
190
189
  return
191
- end
192
- @db.transaction do
190
+ else
193
191
  resume_host_tags
194
192
 
195
193
  if options[:force]
@@ -203,8 +201,8 @@ module Hotdog
203
201
  SELECT DISTINCT hosts_tags.host_id FROM hosts_tags
204
202
  WHERE hosts_tags.expires_at < ?;
205
203
  EOS
206
- logger.debug("update_tags_q2()")
207
- hosts = @update_tags_q2.execute(Time.new.to_i)
204
+ logger.debug("update_tags_q2(%s)" % [Time.new.to_i])
205
+ hosts = @update_tags_q2.execute(Time.new.to_i).map { |row| row.first }
208
206
  end
209
207
  hosts.each_with_index do |host_id, i|
210
208
  @update_tags_q3 ||= @db.prepare("DELETE FROM hosts_tags WHERE host_id = ? AND hosts_tags.expires_at < ?;")
@@ -231,21 +229,23 @@ module Hotdog
231
229
  EMPTY_EXPIRES_AT = Time.at(0).to_i
232
230
 
233
231
  def suspend_host_tags()
234
- @suspended = true
235
- @suspend_host_tags_q1 ||= @db.prepare("INSERT OR IGNORE INTO hosts (name) VALUES (?);")
236
- logger.debug("suspend_host_tags_q1(%s)" % [EMPTY_HOST_NAME.inspect])
237
- @suspend_host_tags_q1.execute(EMPTY_HOST_NAME)
238
- @suspend_host_tags_q2 ||= @db.prepare("INSERT OR IGNORE INTO tags (name, value) VALUES (?, ?);")
239
- logger.debug("suspend_host_tags_q2(%s, %s)" % [EMPTY_TAG_NAME.inspect, EMPTY_TAG_VALUE.inspect])
240
- @suspend_host_tags_q2.execute(EMPTY_TAG_NAME, EMPTY_TAG_VALUE)
241
- @suspend_host_tags_q3 ||= @db.prepare(<<-EOS)
242
- INSERT OR REPLACE INTO hosts_tags (host_id, tag_id, expires_at)
243
- SELECT host.id, tag.id, ? FROM
244
- ( SELECT id FROM hosts WHERE name = ?) AS host,
245
- ( SELECT id FROM tags WHERE name = ? AND value = ? ) AS tag;
246
- EOS
247
- logger.debug("suspend_host_tags_q3(%s, %s, %s, %s)" % [EMPTY_EXPIRES_AT.inspect, EMPTY_HOST_NAME.inspect, EMPTY_TAG_NAME.inspect, EMPTY_TAG_VALUE.inspect])
248
- @suspend_host_tags_q3.execute(EMPTY_EXPIRES_AT, EMPTY_HOST_NAME, EMPTY_TAG_NAME, EMPTY_TAG_VALUE)
232
+ @db.transaction do
233
+ @suspended = true
234
+ @suspend_host_tags_q1 ||= @db.prepare("INSERT OR IGNORE INTO hosts (name) VALUES (?);")
235
+ logger.debug("suspend_host_tags_q1(%s)" % [EMPTY_HOST_NAME.inspect])
236
+ @suspend_host_tags_q1.execute(EMPTY_HOST_NAME)
237
+ @suspend_host_tags_q2 ||= @db.prepare("INSERT OR IGNORE INTO tags (name, value) VALUES (?, ?);")
238
+ logger.debug("suspend_host_tags_q2(%s, %s)" % [EMPTY_TAG_NAME.inspect, EMPTY_TAG_VALUE.inspect])
239
+ @suspend_host_tags_q2.execute(EMPTY_TAG_NAME, EMPTY_TAG_VALUE)
240
+ @suspend_host_tags_q3 ||= @db.prepare(<<-EOS)
241
+ INSERT OR REPLACE INTO hosts_tags (host_id, tag_id, expires_at)
242
+ SELECT host.id, tag.id, ? FROM
243
+ ( SELECT id FROM hosts WHERE name = ?) AS host,
244
+ ( SELECT id FROM tags WHERE name = ? AND value = ? ) AS tag;
245
+ EOS
246
+ logger.debug("suspend_host_tags_q3(%s, %s, %s, %s)" % [EMPTY_EXPIRES_AT.inspect, EMPTY_HOST_NAME.inspect, EMPTY_TAG_NAME.inspect, EMPTY_TAG_VALUE.inspect])
247
+ @suspend_host_tags_q3.execute(EMPTY_EXPIRES_AT, EMPTY_HOST_NAME, EMPTY_TAG_NAME, EMPTY_TAG_VALUE)
248
+ end
249
249
  end
250
250
 
251
251
  def resume_host_tags()
@@ -261,76 +261,79 @@ module Hotdog
261
261
  if suspended?
262
262
  # stop updating if the `update_host_tags` has already been suspended
263
263
  return
264
- end
265
- if Integer === host_name
266
- host_id = host_name
267
- @update_host_tags_q1 ||= @db.prepare("SELECT name FROM hosts WHERE id = ? LIMIT 1;")
268
- logger.debug("update_host_tags_q1(%s)" % [host_id.inspect])
269
- host_name = @update_host_tags_q1.execute(host_id).map { |row| row.first }.first
270
264
  else
271
- @update_host_tags_q2 ||= @db.prepare("SELECT id, name FROM hosts WHERE LOWER(name) = LOWER(?) LIMIT 1;")
272
- logger.debug("update_host_tags_q2(%s)" % [host_name.inspect])
273
- host_id, host_name = @update_host_tags_q2.execute(host_name).map { |row| row }.first
274
- end
265
+ if Integer === host_name
266
+ host_id = host_name
267
+ @update_host_tags_q1 ||= @db.prepare("SELECT name FROM hosts WHERE id = ? LIMIT 1;")
268
+ logger.debug("update_host_tags_q1(%s)" % [host_id.inspect])
269
+ host_name = @update_host_tags_q1.execute(host_id).map { |row| row.first }.first
270
+ else
271
+ @update_host_tags_q2 ||= @db.prepare("SELECT id, name FROM hosts WHERE LOWER(name) = LOWER(?) LIMIT 1;")
272
+ logger.debug("update_host_tags_q2(%s)" % [host_name.inspect])
273
+ host_id, host_name = @update_host_tags_q2.execute(host_name).map { |row| row }.first
274
+ end
275
275
 
276
- if not options[:force]
277
- # Update host tags less frequently.
278
- # Don't need to run updates on every expiration.
279
- @update_host_tags_q3 ||= @db.prepare("SELECT AVG(expires_at) FROM hosts_tags WHERE host_id = ?;")
280
- logger.debug("update_host_tags_q3(%s)" % [host_id.inspect])
281
- if expires_at = @update_host_tags_q3.execute(host_id).map { |row| row.first }.first
282
- if Time.new.to_i < expires_at
283
- logger.debug("%s: next update will run after %s." % [host_name, Time.at(expires_at)])
284
- return
276
+ if not options[:force]
277
+ # Update host tags less frequently.
278
+ # Don't need to run updates on every expiration.
279
+ @update_host_tags_q3 ||= @db.prepare("SELECT AVG(expires_at) FROM hosts_tags WHERE host_id = ?;")
280
+ logger.debug("update_host_tags_q3(%s)" % [host_id.inspect])
281
+ if expires_at = @update_host_tags_q3.execute(host_id).map { |row| row.first }.first
282
+ if Time.new.to_i < expires_at
283
+ logger.debug("%s: next update will run after %s." % [host_name, Time.at(expires_at)])
284
+ return
285
+ else
286
+ logger.debug("%s: average expires_at was %s. start updating." % [host_name, Time.at(expires_at)])
287
+ end
285
288
  else
286
- logger.debug("%s: average expires_at was %s. start updating." % [host_name, Time.at(expires_at)])
289
+ logger.debug("%s: expires_at not found. start updateing." % [host_name])
287
290
  end
288
- else
289
- logger.debug("%s: expires_at not found. start updateing." % [host_name])
290
291
  end
291
- end
292
292
 
293
- code, result = @dog.host_tags(host_name)
294
- logger.debug("dog.host_tags(%s) #==> [%s, %s]" % [host_name.inspect, code.inspect, result.inspect])
295
- if code.to_i / 100 != 2
296
- case code.to_i
297
- when 404 # host not found on datadog
298
- @update_host_tags_q7 ||= @db.prepare("DELETE FROM hosts_tags WHERE host_id IN ( SELECT id FROM hosts WHERE LOWER(name) = LOWER(?) );")
299
- logger.debug("update_host_tags_q7(%s)" % [host_name.inspect])
300
- @update_host_tags_q7.execute(host_name)
293
+ code, result = @dog.host_tags(host_name)
294
+ logger.debug("dog.host_tags(%s) #==> [%s, %s]" % [host_name.inspect, code.inspect, result.inspect])
295
+ if code.to_i / 100 != 2
296
+ case code.to_i
297
+ when 404 # host not found on datadog
298
+ @update_host_tags_q7 ||= @db.prepare("DELETE FROM hosts_tags WHERE host_id IN ( SELECT id FROM hosts WHERE LOWER(name) = LOWER(?) );")
299
+ logger.debug("update_host_tags_q7(%s)" % [host_name.inspect])
300
+ @update_host_tags_q7.execute(host_name)
301
+ end
302
+ raise("dog.host_tags(%s) returns (%s: %s)" % [host_name.inspect, code.inspect, result.inspect])
301
303
  end
302
- raise("dog.host_tags(%s) returns (%s: %s)" % [host_name.inspect, code.inspect, result.inspect])
303
- end
304
304
 
305
- expires_at = Time.new.to_i + (options[:minimum_expiry] + rand(options[:random_expiry]))
306
- logger.debug("%s: expires_at=%s" % [host_name, Time.at(expires_at)])
305
+ expires_at = Time.new.to_i + (options[:minimum_expiry] + rand(options[:random_expiry]))
306
+ logger.debug("%s: expires_at=%s" % [host_name, Time.at(expires_at)])
307
+
308
+ @db.transaction do
309
+ result["tags"].each do |tag|
310
+ tag_name, tag_value = tag.split(":", 2)
311
+ tag_value ||= ""
307
312
 
308
- result["tags"].each do |tag|
309
- tag_name, tag_value = tag.split(":", 2)
310
- tag_value ||= ""
313
+ if options.has_key?(:tags) and not options[:tags].empty? and not options[:tags].index(tag_name)
314
+ next
315
+ else
316
+ @update_host_tags_q4 ||= @db.prepare("INSERT OR IGNORE INTO tags (name, value) VALUES (?, ?);")
317
+ logger.debug("update_host_tags_q4(%s, %s)" % [tag_name.inspect, tag_value.inspect])
318
+ @update_host_tags_q4.execute(tag_name, tag_value)
319
+ @update_host_tags_q5 ||= @db.prepare(<<-EOS)
320
+ INSERT OR REPLACE INTO hosts_tags (host_id, tag_id, expires_at)
321
+ SELECT host.id, tag.id, ? FROM
322
+ ( SELECT id FROM hosts WHERE name = ? ) AS host,
323
+ ( SELECT id FROM tags WHERE name = ? AND value = ? ) AS tag;
324
+ EOS
325
+ logger.debug("update_host_tags_q5(%s, %s)" % [expires_at, host_name, tag_name, tag_value])
326
+ @update_host_tags_q5.execute(expires_at, host_name, tag_name, tag_value)
327
+ end
328
+ end
311
329
 
312
- if options.has_key?(:tags) and not options[:tags].empty? and not options[:tags].index(tag_name)
313
- next
314
- else
315
- @update_host_tags_q4 ||= @db.prepare("INSERT OR IGNORE INTO tags (name, value) VALUES (?, ?);")
316
- logger.debug("update_host_tags_q4(%s, %s)" % [tag_name.inspect, tag_value.inspect])
317
- @update_host_tags_q4.execute(tag_name, tag_value)
318
- @update_host_tags_q5 ||= @db.prepare(<<-EOS)
319
- INSERT OR REPLACE INTO hosts_tags (host_id, tag_id, expires_at)
320
- SELECT host.id, tag.id, ? FROM
321
- ( SELECT id FROM hosts WHERE name = ? ) AS host,
322
- ( SELECT id FROM tags WHERE name = ? AND value = ? ) AS tag;
330
+ @update_host_tags_q6 ||= @db.prepare(<<-EOS)
331
+ DELETE FROM hosts_tags WHERE host_id = ? and expires_at <= ?;
323
332
  EOS
324
- logger.debug("update_host_tags_q5(%s, %s)" % [expires_at, host_name, tag_name, tag_value])
325
- @update_host_tags_q5.execute(expires_at, host_name, tag_name, tag_value)
333
+ logger.debug("update_host_tags_q6(%s, %s)" % [host_id.inspect, Time.new.to_i.inspect])
334
+ @update_host_tags_q6.execute(host_id, Time.new.to_i)
326
335
  end
327
336
  end
328
-
329
- @update_host_tags_q6 ||= @db.prepare(<<-EOS)
330
- DELETE FROM hosts_tags WHERE host_id = ? and expires_at <= ?;
331
- EOS
332
- logger.debug("update_host_tags_q6(%s, %s)" % [host_id.inspect, Time.new.to_i.inspect])
333
- @update_host_tags_q6.execute(host_id, Time.new.to_i)
334
337
  end
335
338
  end
336
339
  end
@@ -1,3 +1,3 @@
1
1
  module Hotdog
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hotdog
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yamashita Yuu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-07 00:00:00.000000000 Z
11
+ date: 2015-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler