hotdog 0.15.1 → 0.16.0

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: d5b53511f20a525f2baeb0c2c197e9516d5e4a36
4
- data.tar.gz: 47575d0d13c97ad14f8aa5177f75b8da418b0ab8
3
+ metadata.gz: b815e449286ca6604e3f3b04fdd18c5588dd07ee
4
+ data.tar.gz: e022e85d07a01c4738861a85f3285937949a5390
5
5
  SHA512:
6
- metadata.gz: 45c616efb98546a29fd48b3738547ef7b86d4342aa27eef7c9f50807e3ec7d5cb5f7a567f25e1ba5441e37660b5a3e97e98055ceb7e1b7eef36a04ebac4a4e37
7
- data.tar.gz: 3ebfd7e79f4840b404b9b80092bff089f3b06ad092f4dbcc37d080371d9f7a257d703f0e1ebc3ad829935b1edeedeb5556fa03f8acfc4cc9d3ac6d1c4e889852
6
+ metadata.gz: 5c6f2faf19be1bb5350abf82b119fcf80ba2ae30a608a58bf387d8a3fec849de226559d4434f335bbdceab98305c9880d952d8df3e6fe56896dc3c458efcf5fc
7
+ data.tar.gz: 4d75ceaba7bef826c9e86ecd68d51230325f7353960ac91a251b1152a84e2673e0c01fc7d458fd4b5e801847652ff85fe97d5fa3ab56731140b12286535ac126
@@ -344,6 +344,18 @@ module Hotdog
344
344
  backup.step(-1)
345
345
  backup.finish
346
346
  end
347
+
348
+ def with_retry(options={}, &block)
349
+ (options[:retry] || 1).times do |i|
350
+ begin
351
+ return yield
352
+ rescue => error
353
+ logger.warn(error.to_s)
354
+ sleep(options[:retry_delay] || (1<<i))
355
+ end
356
+ end
357
+ raise("retry count exceeded")
358
+ end
347
359
  end
348
360
  end
349
361
  end
@@ -7,8 +7,8 @@ module Hotdog
7
7
  class Down < BaseCommand
8
8
  def define_options(optparse, options={})
9
9
  default_option(options, :downtime, 86400)
10
- default_option(options, :start, Time.new)
11
10
  default_option(options, :retry, 5)
11
+ default_option(options, :start, Time.new)
12
12
  optparse.on("--downtime DURATION") do |v|
13
13
  options[:downtime] = v.to_i
14
14
  end
@@ -30,17 +30,7 @@ module Hotdog
30
30
  else
31
31
  scope = arg
32
32
  end
33
- if 0 < options[:retry]
34
- options[:retry].times do |i|
35
- begin
36
- schedule_downtime(scope, options)
37
- break
38
- rescue => error
39
- logger.warn(error.to_s)
40
- sleep(options[:retry_delay] || (1<<i))
41
- end
42
- end
43
- else
33
+ with_retry(options) do
44
34
  schedule_downtime(scope, options)
45
35
  end
46
36
  end
@@ -19,6 +19,9 @@ module Hotdog
19
19
  if options[:forward_agent]
20
20
  # nop
21
21
  end
22
+ if options[:ssh_config]
23
+ cmdline << "-F" << options[:ssh_config]
24
+ end
22
25
  if options[:identity_file]
23
26
  arguments << "-i" << options[:identity_file]
24
27
  end
@@ -21,6 +21,9 @@ module Hotdog
21
21
  if options[:forward_agent]
22
22
  # nop
23
23
  end
24
+ if options[:ssh_config]
25
+ cmdline << "-F" << options[:ssh_config]
26
+ end
24
27
  if options[:identity_file]
25
28
  arguments << "-i" << options[:identity_file]
26
29
  end
@@ -17,6 +17,10 @@ module Hotdog
17
17
  default_option(options, :color, :auto)
18
18
  default_option(options, :max_parallelism, Parallel.processor_count)
19
19
  default_option(options, :shuffle, false)
20
+ default_option(options, :ssh_config, nil)
21
+ optparse.on("-F SSH_CONFIG", "Specifies an alternative per-user SSH configuration file.") do |configfile|
22
+ options[:ssh_config] = configfile
23
+ end
20
24
  optparse.on("-o SSH_OPTION", "Passes this string to ssh command through shell. This option may be given multiple times") do |option|
21
25
  options[:options] += [option]
22
26
  end
@@ -115,6 +119,9 @@ module Hotdog
115
119
  if options[:forward_agent]
116
120
  cmdline << "-A"
117
121
  end
122
+ if options[:ssh_config]
123
+ cmdline << "-F" << options[:ssh_config]
124
+ end
118
125
  if options[:identity_file]
119
126
  cmdline << "-i" << options[:identity_file]
120
127
  end
@@ -6,12 +6,19 @@ module Hotdog
6
6
  module Commands
7
7
  class Tag < BaseCommand
8
8
  def define_options(optparse, options={})
9
+ default_option(options, :retry, 5)
9
10
  default_option(options, :tag_source, "user")
10
11
  default_option(options, :tags, [])
12
+ optparse.on("--retry NUM") do |v|
13
+ options[:retry] = v.to_i
14
+ end
15
+ optparse.on("--retry-delay SECONDS") do |v|
16
+ options[:retry_delay] = v.to_i
17
+ end
11
18
  optparse.on("--source SOURCE") do |v|
12
19
  options[:tag_source] = v
13
20
  end
14
- optparse.on("--tag TAG") do |v|
21
+ optparse.on("-a TAG", "-t TAG", "--tag TAG", "Use specified tag name/value") do |v|
15
22
  options[:tags] << v
16
23
  end
17
24
  end
@@ -24,9 +31,8 @@ module Hotdog
24
31
  # nop
25
32
  else
26
33
  # add all as user tags
27
- code, add_tags = dog.add_tags(host_name, options[:tags], source=options[:tag_source])
28
- if code.to_i / 100 != 2
29
- raise("dog.add_tags(#{host_name.inspect}, #{options[:tags].inspect}, source=#{options[:tag_source].inspect}) returns [#{code.inspect}, #{add_tags.inspect}]")
34
+ with_retry(options) do
35
+ add_tags(host_name, options[:tags], source=options[:tag_source])
30
36
  end
31
37
  end
32
38
  end
@@ -37,6 +43,15 @@ module Hotdog
37
43
  end
38
44
  FileUtils.rm_f(File.join(options[:confdir], PERSISTENT_DB))
39
45
  end
46
+
47
+ private
48
+ def add_tags(host_name, tags, options={})
49
+ code, resp = dog.add_tags(host_name, tags, options)
50
+ if code.to_i / 100 != 2
51
+ raise("dog.add_tags(#{host_name.inspect}, #{tags.inspect}, #{options.inspect}) returns [#{code.inspect}, #{resp.inspect}]")
52
+ end
53
+ resp
54
+ end
40
55
  end
41
56
  end
42
57
  end
@@ -6,12 +6,19 @@ module Hotdog
6
6
  module Commands
7
7
  class Untag < BaseCommand
8
8
  def define_options(optparse, options={})
9
+ default_option(options, :retry, 5)
9
10
  default_option(options, :tag_source, "user")
10
11
  default_option(options, :tags, [])
12
+ optparse.on("--retry NUM") do |v|
13
+ options[:retry] = v.to_i
14
+ end
15
+ optparse.on("--retry-delay SECONDS") do |v|
16
+ options[:retry_delay] = v.to_i
17
+ end
11
18
  optparse.on("--source SOURCE") do |v|
12
19
  options[:tag_source] = v
13
20
  end
14
- optparse.on("--tag TAG") do |v|
21
+ optparse.on("-a TAG", "-t TAG", "--tag TAG", "Use specified tag name/value") do |v|
15
22
  options[:tags] << v
16
23
  end
17
24
  end
@@ -22,23 +29,18 @@ module Hotdog
22
29
 
23
30
  if options[:tags].empty?
24
31
  # delete all user tags
25
- code, detach_tags = dog.detach_tags(host_name, source=options[:tag_source])
26
- if code.to_i / 100 != 2
27
- raise("dog.detach_tags(#{host_name.inspect}, source=#{options[:tag_source].inspect}) returns [#{code.inspect}, #{detach_tags.inspect}]")
32
+ with_retry do
33
+ detach_tags(host_name, source=options[:tag_source])
28
34
  end
29
35
  else
30
- code, host_tags = dog.host_tags(host_name, source=options[:tag_source])
31
- if code.to_i / 100 != 2
32
- raise("dog.host_tags(#{host_name.inspect}, source=#{options[:tag_source].inspect}) returns [#{code.inspect}, #{host_tags.inspect}]")
33
- end
36
+ host_tags = with_retry { host_tags(host_name, source=options[:tag_source]) }
34
37
  old_tags = host_tags["tags"]
35
38
  new_tags = old_tags - options[:tags]
36
39
  if old_tags == new_tags
37
40
  # nop
38
41
  else
39
- code, update_tags = dog.update_tags(host_name, new_tags, source=options[:tag_source])
40
- if code.to_i / 100 != 2
41
- raise("dog.update_tags(#{host_name.inspect}, #{new_tags.inspect}, source=#{options[:tag_source].inspect}) returns [#{code.inspect}, #{update_tags.inspect}]")
42
+ with_retry do
43
+ update_tags(host_name, new_tags, source=options[:tag_source])
42
44
  end
43
45
  end
44
46
  end
@@ -50,6 +52,31 @@ module Hotdog
50
52
  end
51
53
  FileUtils.rm_f(File.join(options[:confdir], PERSISTENT_DB))
52
54
  end
55
+
56
+ private
57
+ def detach_tags(host_name, options={})
58
+ code, detach_tags = dog.detach_tags(host_name, options)
59
+ if code.to_i / 100 != 2
60
+ raise("dog.detach_tags(#{host_name.inspect}, #{options.inspect}) returns [#{code.inspect}, #{detach_tags.inspect}]")
61
+ end
62
+ detach_tags
63
+ end
64
+
65
+ def host_tags(host_name, options={})
66
+ code, host_tags = dog.host_tags(host_name, options)
67
+ if code.to_i / 100 != 2
68
+ raise("dog.host_tags(#{host_name.inspect}, #{options.inspect}) returns [#{code.inspect}, #{host_tags.inspect}]")
69
+ end
70
+ host_tags
71
+ end
72
+
73
+ def update_tags(host_name, tags, options={})
74
+ code, update_tags = dog.update_tags(host_name, tags, options)
75
+ if code.to_i / 100 != 2
76
+ raise("dog.update_tags(#{host_name.inspect}, #{tags.inspect}, #{options.inspect}) returns [#{code.inspect}, #{update_tags.inspect}]")
77
+ end
78
+ update_tags
79
+ end
53
80
  end
54
81
  end
55
82
  end
@@ -24,17 +24,7 @@ module Hotdog
24
24
  end
25
25
  }
26
26
  all_downtimes = nil
27
- if 0 < options[:retry]
28
- options[:retry].times do |i|
29
- begin
30
- all_downtimes = get_all_downtimes(options)
31
- break
32
- rescue => error
33
- logger.warn(error.to_s)
34
- sleep(options[:retry_delay] || (1<<i))
35
- end
36
- end
37
- else
27
+ with_retry(options) do
38
28
  all_downtimes = get_all_downtimes(options)
39
29
  end
40
30
 
@@ -43,17 +33,7 @@ module Hotdog
43
33
  }
44
34
 
45
35
  cancel_downtimes.each do |downtime|
46
- if 0 < options[:retry]
47
- options[:retry].times do |i|
48
- begin
49
- cancel_downtime(downtime["id"], options)
50
- break
51
- rescue => error
52
- logger.warn(error.to_s)
53
- sleep(options[:retry_delay] || (1<<i))
54
- end
55
- end
56
- else
36
+ with_retry(options) do
57
37
  cancel_downtime(downtime["id"], options)
58
38
  end
59
39
  end
@@ -1,3 +1,3 @@
1
1
  module Hotdog
2
- VERSION = "0.15.1"
2
+ VERSION = "0.16.0"
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.15.1
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yamashita Yuu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-14 00:00:00.000000000 Z
11
+ date: 2016-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -263,3 +263,4 @@ test_files:
263
263
  - spec/parser/regexp_expression_spec.rb
264
264
  - spec/parser/string_expression_spec.rb
265
265
  - spec/spec_helper.rb
266
+ has_rdoc: