hotdog 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +30 -0
- data/lib/hotdog/application.rb +2 -2
- data/lib/hotdog/commands.rb +17 -2
- data/lib/hotdog/commands/search.rb +4 -2
- data/lib/hotdog/commands/update.rb +1 -1
- data/lib/hotdog/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87916b1a0fd595019d2e97021bd753cc95ea39ad
|
4
|
+
data.tar.gz: 7f525b438a8ea90084f1a22b6277e863f32061be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dbc182c9a25be6d3116065930968379095b0248cbd4bc386f26f6c4860d9e3ed73322ae298e44192e5a16a3cbb5401ec08490fe2f7c717fa480d321e75011df6
|
7
|
+
data.tar.gz: 3a8d9bc7ce921d4f9fbd2ffde40ae2468119a5d082c32551ae4aa494df969dca4757f00ac9fa25a6e339deb1ca8d2fe060ae8a174420b124fe569ba757e8f650
|
data/README.md
CHANGED
@@ -75,6 +75,36 @@ $ hotdog search availability-zone:us-east-1b and 'name:web-*'
|
|
75
75
|
i-03cb56ed
|
76
76
|
```
|
77
77
|
|
78
|
+
|
79
|
+
## Expression
|
80
|
+
|
81
|
+
Acceptable expressions in pseudo BNF.
|
82
|
+
|
83
|
+
```
|
84
|
+
expression: binary_expression
|
85
|
+
| term
|
86
|
+
|
87
|
+
binary_expression: term "&&" term
|
88
|
+
| term "||" term
|
89
|
+
| term "and" term
|
90
|
+
| term "or" term
|
91
|
+
|
92
|
+
unary_expression: '!' expression
|
93
|
+
| '~' expression
|
94
|
+
| "not" expression
|
95
|
+
|
96
|
+
term: unary_expression
|
97
|
+
| atom
|
98
|
+
|
99
|
+
atom: '(' expression ')'
|
100
|
+
| IDENTIFIER separator ATTRIBUTE
|
101
|
+
| IDENTIFIER
|
102
|
+
|
103
|
+
separator: ':'
|
104
|
+
| '='
|
105
|
+
```
|
106
|
+
|
107
|
+
|
78
108
|
## Contributing
|
79
109
|
|
80
110
|
1. Fork it ( https://github.com/yyuu/hotdog/fork )
|
data/lib/hotdog/application.rb
CHANGED
@@ -14,7 +14,7 @@ module Hotdog
|
|
14
14
|
@optparse = OptionParser.new
|
15
15
|
@options = {
|
16
16
|
environment: "default",
|
17
|
-
minimum_expiry:
|
17
|
+
minimum_expiry: 3600, # 1 hour
|
18
18
|
random_expiry: 604800, # 7 days
|
19
19
|
fixed_string: false,
|
20
20
|
force: false,
|
@@ -22,7 +22,7 @@ module Hotdog
|
|
22
22
|
headers: false,
|
23
23
|
listing: false,
|
24
24
|
logger: Logger.new(STDERR),
|
25
|
-
max_time:
|
25
|
+
max_time: 10,
|
26
26
|
api_key: ENV["DATADOG_API_KEY"],
|
27
27
|
application_key: ENV["DATADOG_APPLICATION_KEY"],
|
28
28
|
print0: false,
|
data/lib/hotdog/commands.rb
CHANGED
@@ -104,12 +104,12 @@ module Hotdog
|
|
104
104
|
EOS
|
105
105
|
result = hosts.map { |host_id, host_name|
|
106
106
|
update_host_tags(host_name, @options.dup)
|
107
|
-
logger.debug("get_hosts_q3()")
|
108
107
|
@get_hosts_q3 ||= @db.prepare(<<-EOS)
|
109
108
|
SELECT DISTINCT tags.name FROM hosts_tags
|
110
109
|
INNER JOIN tags ON hosts_tags.tag_id = tags.id
|
111
110
|
WHERE hosts_tags.host_id = ?;
|
112
111
|
EOS
|
112
|
+
logger.debug("get_hosts_q3()")
|
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)
|
@@ -136,6 +136,9 @@ module Hotdog
|
|
136
136
|
end
|
137
137
|
|
138
138
|
def update_hosts(options={})
|
139
|
+
if suspended?
|
140
|
+
return
|
141
|
+
end
|
139
142
|
@db.transaction do
|
140
143
|
if not options[:force]
|
141
144
|
# Update host list on every expirations to update frequently.
|
@@ -159,6 +162,7 @@ module Hotdog
|
|
159
162
|
raise("dog.search(%s) returns (%s: %s)" % ["hosts:".inspect, code.inspect, result.inspect])
|
160
163
|
end
|
161
164
|
|
165
|
+
resume_host_tags
|
162
166
|
execute(<<-EOS % result["results"]["hosts"].map { "LOWER(?)" }.join(", "), result["results"]["hosts"])
|
163
167
|
DELETE FROM hosts_tags WHERE host_id NOT IN
|
164
168
|
( SELECT id FROM hosts WHERE LOWER(name) IN ( %s ) );
|
@@ -181,6 +185,9 @@ module Hotdog
|
|
181
185
|
end
|
182
186
|
|
183
187
|
def update_tags(options={})
|
188
|
+
if suspended?
|
189
|
+
return
|
190
|
+
end
|
184
191
|
@db.transaction do
|
185
192
|
resume_host_tags
|
186
193
|
|
@@ -191,11 +198,11 @@ module Hotdog
|
|
191
198
|
logger.debug("update_tags_q1()")
|
192
199
|
hosts = @update_tags_q1.execute().map { |row| row.first }
|
193
200
|
else
|
194
|
-
logger.debug("update_tags_q2()")
|
195
201
|
@update_tags_q2 ||= @db.prepare(<<-EOS)
|
196
202
|
SELECT DISTINCT hosts_tags.host_id FROM hosts_tags
|
197
203
|
WHERE hosts_tags.expires_at < ?;
|
198
204
|
EOS
|
205
|
+
logger.debug("update_tags_q2()")
|
199
206
|
hosts = @update_tags_q2.execute(Time.new.to_i)
|
200
207
|
end
|
201
208
|
hosts.each do |host_id|
|
@@ -224,8 +231,10 @@ module Hotdog
|
|
224
231
|
def suspend_host_tags()
|
225
232
|
@suspended = true
|
226
233
|
@suspend_host_tags_q1 ||= @db.prepare("INSERT OR IGNORE INTO hosts (name) VALUES (?);")
|
234
|
+
logger.debug("suspend_host_tags_q1(%s)" % [EMPTY_HOST_NAME.inspect])
|
227
235
|
@suspend_host_tags_q1.execute(EMPTY_HOST_NAME)
|
228
236
|
@suspend_host_tags_q2 ||= @db.prepare("INSERT OR IGNORE INTO tags (name, value) VALUES (?, ?);")
|
237
|
+
logger.debug("suspend_host_tags_q2(%s, %s)" % [EMPTY_TAG_NAME.inspect, EMPTY_TAG_VALUE.inspect])
|
229
238
|
@suspend_host_tags_q2.execute(EMPTY_TAG_NAME, EMPTY_TAG_VALUE)
|
230
239
|
@suspend_host_tags_q3 ||= @db.prepare(<<-EOS)
|
231
240
|
INSERT OR REPLACE INTO hosts_tags (host_id, tag_id, expires_at)
|
@@ -233,6 +242,7 @@ module Hotdog
|
|
233
242
|
( SELECT id FROM hosts WHERE name = ?) AS host,
|
234
243
|
( SELECT id FROM tags WHERE name = ? AND value = ? ) AS tag;
|
235
244
|
EOS
|
245
|
+
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])
|
236
246
|
@suspend_host_tags_q3.execute(EMPTY_EXPIRES_AT, EMPTY_HOST_NAME, EMPTY_TAG_NAME, EMPTY_TAG_VALUE)
|
237
247
|
end
|
238
248
|
|
@@ -241,10 +251,15 @@ module Hotdog
|
|
241
251
|
DELETE FROM hosts_tags
|
242
252
|
WHERE host_id IN ( SELECT id FROM hosts WHERE name = ? ) AND tag_id IN ( SELECT id FROM tags WHERE name = ? AND value = ? );
|
243
253
|
EOS
|
254
|
+
logger.debug("resume_host_tags_q1(%s, %s, %s)" % [EMPTY_HOST_NAME.inspect, EMPTY_TAG_NAME.inspect, EMPTY_TAG_VALUE.inspect])
|
244
255
|
@resume_host_tags_q1.execute(EMPTY_HOST_NAME, EMPTY_TAG_NAME, EMPTY_TAG_VALUE)
|
245
256
|
end
|
246
257
|
|
247
258
|
def update_host_tags(host_name, options={})
|
259
|
+
if suspended?
|
260
|
+
# stop updating if the `update_host_tags` has already been suspended
|
261
|
+
return
|
262
|
+
end
|
248
263
|
if Integer === host_name
|
249
264
|
host_id = host_name
|
250
265
|
@update_host_tags_q1 ||= @db.prepare("SELECT name FROM hosts WHERE id = ? LIMIT 1;")
|
@@ -169,11 +169,13 @@ module Hotdog
|
|
169
169
|
if left_values.empty?
|
170
170
|
[]
|
171
171
|
else
|
172
|
-
|
172
|
+
right_values = @right.evaluate(environment)
|
173
|
+
(left_values & right_values)
|
173
174
|
end
|
174
175
|
when "||", "|", /\Aor\z/i
|
175
176
|
left_values = @left.evaluate(environment)
|
176
|
-
|
177
|
+
right_values = @right.evaluate(environment)
|
178
|
+
(left_values | right_values).uniq
|
177
179
|
else
|
178
180
|
raise(SyntaxError.new("unknown binary operator: #{@op}"))
|
179
181
|
end
|
data/lib/hotdog/version.rb
CHANGED
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.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yamashita Yuu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|