hotdog 0.0.4 → 0.0.5
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.
- 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
|