flare-tools 0.4.5.1 → 0.5.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 (78) hide show
  1. data/.gitignore +24 -0
  2. data/.travis.yml +15 -0
  3. data/Gemfile +9 -0
  4. data/Gemfile.lock +28 -0
  5. data/History.txt +5 -0
  6. data/Makefile +25 -0
  7. data/README.txt +2 -2
  8. data/Rakefile +36 -34
  9. data/flare-tools.gemspec +26 -0
  10. data/lib/flare/entity/server.rb +4 -0
  11. data/lib/flare/tools.rb +3 -3
  12. data/lib/flare/tools/cli.rb +1 -0
  13. data/lib/flare/tools/cli/activate.rb +19 -13
  14. data/lib/flare/tools/cli/balance.rb +15 -8
  15. data/lib/flare/tools/cli/deploy.rb +53 -49
  16. data/lib/flare/tools/cli/dispatch.rb +101 -0
  17. data/lib/flare/tools/cli/down.rb +19 -14
  18. data/lib/flare/tools/cli/dump.rb +19 -14
  19. data/lib/flare/tools/cli/dumpkey.rb +21 -16
  20. data/lib/flare/tools/cli/flare_admin.rb +16 -72
  21. data/lib/flare/tools/cli/flare_argv0.rb +7 -51
  22. data/lib/flare/tools/cli/index.rb +10 -7
  23. data/lib/flare/tools/cli/index_server_config.rb +94 -0
  24. data/lib/flare/tools/cli/list.rb +14 -12
  25. data/lib/flare/tools/cli/master.rb +18 -12
  26. data/lib/flare/tools/cli/option.rb +55 -0
  27. data/lib/flare/tools/cli/part.rb +13 -12
  28. data/lib/flare/tools/cli/ping.rb +11 -13
  29. data/lib/flare/tools/cli/reconstruct.rb +22 -15
  30. data/lib/flare/tools/cli/remove.rb +20 -17
  31. data/lib/flare/tools/cli/restore.rb +20 -20
  32. data/lib/flare/tools/cli/slave.rb +20 -14
  33. data/lib/flare/tools/cli/stats.rb +171 -118
  34. data/lib/flare/tools/cli/sub_command.rb +16 -5
  35. data/lib/flare/tools/cli/summary.rb +12 -10
  36. data/lib/flare/tools/cli/threads.rb +15 -9
  37. data/lib/flare/tools/cli/verify.rb +20 -18
  38. data/lib/flare/tools/cluster.rb +3 -2
  39. data/lib/flare/util/constant.rb +3 -0
  40. data/lib/flare/util/pretty_table.rb +8 -0
  41. data/lib/flare/util/pretty_table/column.rb +41 -0
  42. data/lib/flare/util/pretty_table/row.rb +29 -0
  43. data/lib/flare/util/pretty_table/table.rb +37 -0
  44. data/package/Rakefile +44 -0
  45. data/package/flare-tools/Makefile +23 -0
  46. data/package/flare-tools/debian/changelog +135 -0
  47. data/package/flare-tools/debian/compat +1 -0
  48. data/package/flare-tools/debian/control +20 -0
  49. data/package/flare-tools/debian/copyright +35 -0
  50. data/package/flare-tools/debian/dirs +2 -0
  51. data/{.gemtest → package/flare-tools/debian/docs} +0 -0
  52. data/package/flare-tools/debian/rules +125 -0
  53. data/test/{test/experimental → experimental}/cache_test.rb +0 -0
  54. data/test/{test/experimental → experimental}/key_distribution_test.rb +0 -0
  55. data/test/{test/experimental → experimental}/keychecker_test.rb +0 -0
  56. data/test/{test/experimental → experimental}/list_test.rb +0 -0
  57. data/test/{test/extra → extra}/replication_test.rb +0 -0
  58. data/test/{test/integration → integration}/cli_test.rb +9 -7
  59. data/test/{test/integration → integration}/dump_expired_test.rb +4 -3
  60. data/test/{test/integration → integration}/dump_test.rb +5 -5
  61. data/test/{test/integration → integration}/index_server_test.rb +1 -1
  62. data/test/{test/integration → integration}/node_test.rb +1 -1
  63. data/test/{test/integration → integration}/partition_test.rb +6 -5
  64. data/test/{test/integration → integration}/proxy_test.rb +4 -3
  65. data/test/{test/integration → integration}/stats_test.rb +1 -1
  66. data/test/integration/subcommands.rb +128 -0
  67. data/test/{test/system → system}/flare_admin_test.rb +7 -5
  68. data/test/{test/unit → unit}/bwlimit_test.rb +0 -0
  69. data/test/{test/unit → unit}/cluster_test.rb +1 -1
  70. data/test/{test/unit → unit}/daemon_test.rb +0 -0
  71. data/test/{test/unit → unit}/logger_test.rb +0 -0
  72. data/test/{test/unit → unit}/tools_test.rb +0 -0
  73. data/test/unit/util/pretty_table_test.rb +46 -0
  74. data/test/{test/unit → unit}/util_test.rb +7 -2
  75. metadata +88 -100
  76. data/PostInstall.txt +0 -7
  77. data/lib/flare/tools/cli/cli_util.rb +0 -77
  78. data/lib/flare/util/command_line.rb +0 -79
@@ -0,0 +1,55 @@
1
+ require 'flare/entity/server'
2
+ require 'flare/util/constant'
3
+
4
+ module Flare; end
5
+ module Flare::Tools; end
6
+ module Flare::Tools::Cli; end
7
+ module Flare::Tools::Cli::Option
8
+ include Flare::Util::Constant
9
+
10
+ attr_reader :optp
11
+
12
+ def option_init
13
+ @optp = OptionParser.new
14
+ end
15
+
16
+ def set_option_global
17
+ @optp.on('-h', '--help', "show this message") { puts @optp.help; exit 1 }
18
+ @optp.on( '--debug', "enable debug mode") { $DEBUG = true }
19
+ @optp.on( '--warn', "turn on warnings") { $-w = true }
20
+ @optp.on( '--log-file=LOGFILE', "output log to LOGFILE") {|v| Flare::Util::Logging.set_logger(v)}
21
+
22
+ @timeout ||= DefaultTimeout
23
+ @optp.on( '--timeout=SECOND', "specify timeout") {|v| @timeout = v.to_i}
24
+ end
25
+
26
+ def set_option_index_server
27
+ @index_server_entity ||= Flare::Entity::Server.new(nil, nil)
28
+ @cluster ||= nil
29
+
30
+ @optp.on('-i HOSTNAME', '--index-server=HOSTNAME', "index server hostname(default:#{DefaultIndexServerName})") {|v| @index_server_host = v}
31
+ @optp.on('-p PORT', '--index-server-port=PORT', "index server port(default:#{DefaultIndexServerPort})") {|v| @index_server_port = v.to_i}
32
+ @optp.on( '--cluster=NAME', "specify a cluster name") {|v| @cluster = v}
33
+ end
34
+
35
+ def set_option_dry_run
36
+ @dry_run ||= false
37
+ @optp.on('-n', '--dry-run', "dry run") { @dry_run = true }
38
+ end
39
+
40
+ def set_option_force
41
+ @force ||= false
42
+ @optp.on('--force', "commit changes without confirmation") { @force = true }
43
+ end
44
+
45
+ def parse_options(config, argv)
46
+ begin
47
+ rest = @optp.parse(argv)
48
+ rescue OptionParser::ParseError => err
49
+ puts err.message
50
+ puts @optp.to_s
51
+ exit STATUS_NG
52
+ end
53
+ rest
54
+ end
55
+ end
@@ -11,6 +11,7 @@ require 'flare/util/constant'
11
11
  require 'flare/tools/cli/sub_command'
12
12
  require 'flare/tools/cli/slave'
13
13
  require 'flare/tools/cli/master'
14
+ require 'flare/tools/cli/index_server_config'
14
15
 
15
16
  module Flare
16
17
  module Tools
@@ -19,14 +20,17 @@ module Flare
19
20
  include Flare::Util::Conversion
20
21
  include Flare::Util::Constant
21
22
  include Flare::Tools::Common
23
+ include Flare::Tools::Cli::IndexServerConfig
22
24
 
23
25
  myname :part
24
26
  desc "set the master of a partition."
25
27
  usage "master [hostname:port:balance:partition] ..."
26
28
 
27
- def setup(opt)
28
- opt.on('--force', "commits changes without confirmation") {@force = true}
29
- opt.on('--retry=COUNT', "retry count" ) {|v| @retry = v.to_i}
29
+ def setup
30
+ super
31
+ set_option_index_server
32
+ set_option_force
33
+ @optp.on('--retry=COUNT', "retry count" ) {|v| @retry = v.to_i}
30
34
  end
31
35
 
32
36
  def initialize
@@ -34,8 +38,9 @@ module Flare
34
38
  @force = false
35
39
  @retry = nil
36
40
  end
37
-
38
- def execute(config, *args)
41
+
42
+ def execute(config, args)
43
+ parse_index_server(config, args)
39
44
  return S_NG if args.size < 1
40
45
 
41
46
  hosts = args.map {|x| x.to_s.split(':')}
@@ -49,7 +54,7 @@ module Flare
49
54
  masters = []
50
55
  slaves = []
51
56
 
52
- Flare::Tools::IndexServer.open(config[:index_server_hostname], config[:index_server_port], config[:timeout]) do |s|
57
+ Flare::Tools::IndexServer.open(config[:index_server_hostname], config[:index_server_port], @timeout) do |s|
53
58
  cluster = Flare::Tools::Cluster.new(s.host, s.port, s.stats_nodes)
54
59
 
55
60
  partitions = {}
@@ -71,24 +76,20 @@ module Flare
71
76
  begin
72
77
  opt = OptionParser.new
73
78
  subc = Flare::Tools::Cli::Master.new
74
- subc.setup(opt)
75
79
  args = masters
76
80
  args << "--force" if @force
77
81
  args << "--activate"
78
- opt.parse!(args)
79
- subc.execute(config, *args)
82
+ subc.execute_subcommand(config, args)
80
83
  end
81
84
 
82
85
  puts "slaves:"
83
86
  begin
84
87
  opt = OptionParser.new
85
88
  subc = Flare::Tools::Cli::Slave.new
86
- subc.setup(opt)
87
89
  args = slaves
88
90
  args << "--force" if @force
89
91
  args << "--retry=#{@retry}" unless @retry.nil?
90
- opt.parse!(args)
91
- subc.execute(config, *args)
92
+ subc.execute_subcommand(config, args)
92
93
  end
93
94
 
94
95
  S_OK
@@ -8,31 +8,29 @@ require 'flare/util/conversion'
8
8
  require 'flare/util/logging'
9
9
  require 'flare/tools/cli/sub_command'
10
10
 
11
- #
12
11
  module Flare
13
12
  module Tools
14
13
 
15
- # == Description
16
- #
17
14
  module Cli
18
15
  class Ping < SubCommand
19
16
  include Flare::Util::Conversion
20
17
  include Flare::Util::Logging
21
-
18
+
22
19
  myname :ping
23
20
  desc "ping"
24
21
  usage "ping [hostname:port] ..."
25
-
26
- def setup(opt)
27
- opt.on('--wait', "wait for OK responses from nodes") {@wait = true}
22
+
23
+ def setup
24
+ super
25
+ @optp.on('--wait', "wait for OK responses from nodes") {@wait = true}
28
26
  end
29
-
27
+
30
28
  def initialize
31
29
  super
32
30
  @wait = false
33
31
  end
34
-
35
- def execute(config, *args)
32
+
33
+ def execute(config, args)
36
34
 
37
35
  hosts = args.map do |arg|
38
36
  hostname, port, rest = arg.split(':', 3)
@@ -55,7 +53,7 @@ module Flare
55
53
  begin
56
54
  debug "trying..."
57
55
  interruptible do
58
- Flare::Tools::Stats.open(hostname, port, config[:timeout]) do |s|
56
+ Flare::Tools::Stats.open(hostname, port, @timeout) do |s|
59
57
  resp = s.ping
60
58
  end
61
59
  end
@@ -70,11 +68,11 @@ module Flare
70
68
  end
71
69
  end
72
70
  end
73
-
71
+
74
72
  puts "alive"
75
73
  S_OK
76
74
  end
77
-
75
+
78
76
  end
79
77
  end
80
78
  end
@@ -11,6 +11,7 @@ require 'flare/tools/common'
11
11
  require 'flare/util/conversion'
12
12
  require 'flare/util/constant'
13
13
  require 'flare/tools/cli/sub_command'
14
+ require 'flare/tools/cli/index_server_config'
14
15
 
15
16
  module Flare
16
17
  module Tools
@@ -19,16 +20,20 @@ module Flare
19
20
  include Flare::Util::Conversion
20
21
  include Flare::Util::Constant
21
22
  include Flare::Tools::Common
22
-
23
+ include Flare::Tools::Cli::IndexServerConfig
24
+
23
25
  myname :reconstruct
24
26
  desc "reconstruct the database of nodes by copying."
25
27
  usage "reconstruct [hostname:port] ..."
26
28
 
27
- def setup(opt)
28
- opt.on('--force', "commit changes without confirmation" ) {@force = true}
29
- opt.on('--safe', "reconstruct a node safely" ) {@safe = true}
30
- opt.on('--retry=COUNT', "specify retry count (default:#{@retry})") {|v| @retry = v.to_i}
31
- opt.on('--all', "reconstruct all nodes" ) {@all = true}
29
+ def setup
30
+ super
31
+ set_option_index_server
32
+ set_option_dry_run
33
+ set_option_force
34
+ @optp.on('--safe', "reconstruct a node safely" ) {@safe = true}
35
+ @optp.on('--retry=COUNT', "specify retry count (default:#{@retry})") {|v| @retry = v.to_i}
36
+ @optp.on('--all', "reconstruct all nodes" ) {@all = true}
32
37
  end
33
38
 
34
39
  def initialize
@@ -39,13 +44,15 @@ module Flare
39
44
  @all = false
40
45
  end
41
46
 
42
- def execute(config, *args)
47
+ def execute(config, args)
48
+ parse_index_server(config, args)
49
+
43
50
  if @all
44
51
  unless args.empty?
45
52
  puts "don't specify any nodes with --all option."
46
53
  return S_NG
47
54
  else
48
- Flare::Tools::IndexServer.open(config[:index_server_hostname], config[:index_server_port], config[:timeout]) do |s|
55
+ Flare::Tools::IndexServer.open(config[:index_server_hostname], config[:index_server_port], @timeout) do |s|
49
56
  cluster = Flare::Tools::Cluster.new(s.host, s.port, s.stats_nodes)
50
57
  args = cluster.master_and_slave_nodekeys
51
58
  end
@@ -61,16 +68,16 @@ module Flare
61
68
  return S_NG
62
69
  end
63
70
  end
64
-
71
+
65
72
  status = S_OK
66
73
 
67
- Flare::Tools::IndexServer.open(config[:index_server_hostname], config[:index_server_port], config[:timeout]) do |s|
74
+ Flare::Tools::IndexServer.open(config[:index_server_hostname], config[:index_server_port], @timeout) do |s|
68
75
  puts string_of_nodelist(s.stats_nodes, hosts.map {|x| nodekey_of(x[0], x[1])})
69
76
 
70
77
  hosts.each do |hostname,port|
71
78
  nodekey = nodekey_of hostname, port
72
79
  cluster = Flare::Tools::Cluster.new(s.host, s.port, s.stats_nodes)
73
-
80
+
74
81
  unless node = cluster.node_stat(nodekey)
75
82
  puts "#{nodekey} is not found in this cluster."
76
83
  return S_NG
@@ -111,14 +118,14 @@ module Flare
111
118
  end
112
119
  end
113
120
  end
114
- if exec && !config[:dry_run]
121
+ if exec && !@dry_run
115
122
  puts "turning down..."
116
123
  s.set_state(hostname, port, 'down')
117
124
 
118
125
  puts "waiting for node to be active again..."
119
126
  sleep 3
120
127
 
121
- Flare::Tools::Node.open(hostname, port, config[:timeout]) do |n|
128
+ Flare::Tools::Node.open(hostname, port, @timeout) do |n|
122
129
  n.flush_all
123
130
  end
124
131
 
@@ -137,7 +144,7 @@ module Flare
137
144
  end
138
145
  balance = node['balance']
139
146
  if resp
140
- wait_for_slave_construction(s, nodekey, config[:timeout])
147
+ wait_for_slave_construction(s, nodekey, @timeout)
141
148
  unless @force
142
149
  print "changing node's balance (node=#{nodekey}, balance=0 -> #{balance}) (y/n): "
143
150
  exec = interruptible {(gets.chomp.upcase == "Y")}
@@ -154,7 +161,7 @@ module Flare
154
161
 
155
162
  puts string_of_nodelist(s.stats_nodes, hosts.map {|x| "#{x[0]}:#{x[1]}"})
156
163
  end # open
157
-
164
+
158
165
  status
159
166
  end # execute()
160
167
 
@@ -7,27 +7,29 @@ require 'flare/tools/index_server'
7
7
  require 'flare/util/conversion'
8
8
  require 'flare/tools/common'
9
9
  require 'flare/tools/cli/sub_command'
10
+ require 'flare/tools/cli/index_server_config'
10
11
 
11
- #
12
12
  module Flare
13
13
  module Tools
14
14
  module Cli
15
15
 
16
- # == Description
17
- #
18
16
  class Remove < SubCommand
19
17
  include Flare::Util::Conversion
20
18
  include Flare::Tools::Common
19
+ include Flare::Tools::Cli::IndexServerConfig
21
20
 
22
21
  myname :remove
23
22
  desc "remove a node. (experimental)"
24
23
  usage "remove"
25
-
26
- def setup(opt)
27
- opt.on('--force', "commit changes without confirmation") {@force = true}
28
- opt.on('--wait=SECOND', "specify the time to wait node for getting ready (default:#{@wait})") {|v| @wait = v.to_i}
29
- opt.on('--retry=COUNT', "retry count(default:#{@retry})") {|v| @retry = v.to_i}
30
- opt.on('--connection-threshold=[COUNT]', "specify connection threashold (default:#{@connection_threshold})") {|v| @connection_threshold = v.to_i}
24
+
25
+ def setup
26
+ super
27
+ set_option_index_server
28
+ set_option_dry_run
29
+ set_option_force
30
+ @optp.on('--wait=SECOND', "specify the time to wait node for getting ready (default:#{@wait})") {|v| @wait = v.to_i}
31
+ @optp.on('--retry=COUNT', "retry count(default:#{@retry})") {|v| @retry = v.to_i}
32
+ @optp.on('--connection-threshold=[COUNT]', "specify connection threashold (default:#{@connection_threshold})") {|v| @connection_threshold = v.to_i}
31
33
  end
32
34
 
33
35
  def initialize
@@ -38,7 +40,9 @@ module Flare
38
40
  @connection_threshold = 2
39
41
  end
40
42
 
41
- def execute(config, *args)
43
+ def execute(config, args)
44
+ parse_index_server(config, args)
45
+
42
46
  hosts = args.map {|x| x.split(':')}
43
47
  hosts.each do |x|
44
48
  if x.size != 2
@@ -46,8 +50,8 @@ module Flare
46
50
  return S_NG
47
51
  end
48
52
  end
49
-
50
- Flare::Tools::IndexServer.open(config[:index_server_hostname], config[:index_server_port], config[:timeout]) do |s|
53
+
54
+ Flare::Tools::IndexServer.open(config[:index_server_hostname], config[:index_server_port], @timeout) do |s|
51
55
  cluster = fetch_cluster(s)
52
56
 
53
57
  hosts.each do |hostname,port|
@@ -60,7 +64,7 @@ module Flare
60
64
 
61
65
  hosts.each do |hostname,port|
62
66
  exec = false
63
- Flare::Tools::Node.open(hostname, port, config[:timeout]) do |n|
67
+ Flare::Tools::Node.open(hostname, port, @timeout) do |n|
64
68
  nwait = @wait
65
69
  node = n.stats
66
70
  cluster = Flare::Tools::Cluster.new(s.host, s.port, s.stats_nodes)
@@ -87,14 +91,14 @@ module Flare
87
91
  }
88
92
  end
89
93
  end
90
-
94
+
91
95
  if exec
92
96
  suc = false
93
97
  nretry = @retry
94
98
  while nretry > 0
95
99
  resp = false
96
100
  info "removing #{hostname}:#{port}."
97
- resp = s.node_remove(hostname, port) unless config[:dry_run]
101
+ resp = s.node_remove(hostname, port) unless @dry_run
98
102
  if resp
99
103
  suc = true
100
104
  break
@@ -109,10 +113,9 @@ module Flare
109
113
  end
110
114
  puts string_of_nodelist(s.stats_nodes)
111
115
  end
112
-
116
+
113
117
  S_OK
114
118
  end
115
-
116
119
  end
117
120
  end
118
121
  end
@@ -20,7 +20,7 @@ end
20
20
  module Flare
21
21
  module Tools
22
22
  module Cli
23
-
23
+
24
24
  class Restore < SubCommand
25
25
 
26
26
  class Restorer
@@ -70,35 +70,37 @@ module Flare
70
70
  include Flare::Util::Conversion
71
71
  include Flare::Util::Constant
72
72
  include Flare::Tools::Common
73
-
73
+
74
74
  myname :restore
75
75
  desc "restore data to nodes. (experimental)"
76
76
  usage "restore [hostname:port]"
77
-
78
- def setup(opt)
79
- opt.on('-i', '--input=FILE', "input from file") {|v| @input = v}
80
- opt.on('-f', '--format=FORMAT', "input format [#{Formats.join(',')}]") {|v|
77
+
78
+ def setup
79
+ super
80
+ set_option_dry_run
81
+ @optp.on('-i', '--input=FILE', "input from file") {|v| @input = v}
82
+ @optp.on('-f', '--format=FORMAT', "input format [#{Formats.join(',')}]") {|v|
81
83
  @format = v
82
84
  }
83
- opt.on('--bwlimit=BANDWIDTH', "bandwidth limit (bps)") {|v| @bwlimit = v}
84
- opt.on('--include=PATTERN', "include pattern") {|v|
85
+ @optp.on('--bwlimit=BANDWIDTH', "bandwidth limit (bps)") {|v| @bwlimit = v}
86
+ @optp.on('--include=PATTERN', "include pattern") {|v|
85
87
  begin
86
88
  @include = Regexp.new(v)
87
89
  rescue RegexpError => e
88
90
  raise "#{v} isn't a valid regular expression."
89
91
  end
90
92
  }
91
- opt.on('--prefix-include=STRING', "prefix string") {|v|
93
+ @optp.on('--prefix-include=STRING', "prefix string") {|v|
92
94
  @prefix_include = Regexp.new("^"+Regexp.escape(v))
93
- }
94
- opt.on('--exclude=PATTERN', "exclude pattern") {|v|
95
+ }
96
+ @optp.on('--exclude=PATTERN', "exclude pattern") {|v|
95
97
  begin
96
98
  @exclude = Regexp.new(v)
97
99
  rescue RegexpError => e
98
100
  raise "#{v} isn't a valid regular expression."
99
101
  end
100
102
  }
101
- opt.on('--print-keys', "enables key dump to console") {@print_key = true}
103
+ @optp.on('--print-keys', "enables key dump to console") {@print_key = true}
102
104
  end
103
105
 
104
106
  def initialize
@@ -115,16 +117,14 @@ module Flare
115
117
  @print_key = false
116
118
  end
117
119
 
118
- def execute(config, *args)
120
+ def execute(config, args)
119
121
  STDERR.puts "please install tokyocabinet via gem command." unless defined? TokyoCabinet
120
122
 
121
- dry_run = config[:dry_run]
122
-
123
123
  unless @format.nil? || Formats.include?(@format)
124
124
  STDERR.puts "unknown format: #{@format}"
125
125
  return S_NG
126
126
  end
127
-
127
+
128
128
  if @prefix_include
129
129
  if @include
130
130
  STDERR.puts "--include option is specified."
@@ -140,7 +140,7 @@ module Flare
140
140
  return S_NG
141
141
  end
142
142
  end
143
-
143
+
144
144
  restorer = case @format
145
145
  when TchRestorer.myname
146
146
  TchRestorer.new(@input)
@@ -149,7 +149,7 @@ module Flare
149
149
  end
150
150
 
151
151
  nodes = hosts.map do |hostname,port|
152
- Flare::Tools::Node.open(hostname, port.to_i, config[:timeout], @bwlimit, @bwlimit)
152
+ Flare::Tools::Node.open(hostname, port.to_i, @timeout, @bwlimit, @bwlimit)
153
153
  end
154
154
 
155
155
  count = 0
@@ -157,7 +157,7 @@ module Flare
157
157
  if @include.nil? || @include =~ key
158
158
  next if @exclude && @exclude =~ key
159
159
  STDOUT.puts key if @print_key
160
- nodes[0].set(key, data, flag, expire) unless dry_run
160
+ nodes[0].set(key, data, flag, expire) unless @dry_run
161
161
  count += 1
162
162
  end
163
163
  end
@@ -168,7 +168,7 @@ module Flare
168
168
  end
169
169
 
170
170
  restorer.close
171
-
171
+
172
172
  S_OK
173
173
  end # execute()
174
174