inprovise 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MjA2NmY3ZWEzYjMzZWZhN2NiZTQ1MTkzODNlMjFhZmMyZDA5MzYzMQ==
4
+ NTQ5MmNkZGZjZmJlZjZhNmYxOWE0ZTM3Y2U1MWVjYWQ0ZGM2N2U5Mw==
5
5
  data.tar.gz: !binary |-
6
- YzMxY2Q2NzNiMmYyZjg4YjRlOTFhNDBlNmM0YTZiNzM5OTg5ZDNhNg==
6
+ MjUyY2E2M2M3MWY2OTQwZDY2ZTFhODRhMTM0OWU5ZWFhNTk0Y2MxYQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZDk2Nzc2ZDZlYjhjNjFiMmM0NzdiMDFiOWNmNjIyYWNlOTdjMDViOTQxOGRi
10
- ZjQwMGUwYWZmYzU0YjBmZTI0MjZmZjE2NjAyZjQwMGEzNmMyODk5ZjRjOWQ4
11
- MDgwNjBiNzZlYTBiNTQxYjUyNDUzMWViODQwNGI0Y2QzMTZjZTE=
9
+ YTA0MjcyMGE0YWI3OWYxNzQ2MDEwYzBhZjEwMWFhYTY4ZGZjYTNlNzdiZmUy
10
+ ZGM0ZGFhNmUyMjAwMjdiMzYyZjY0YjA4YTYzOTNiMDY1OGE4ODdlYWE2YWU5
11
+ NTdjOGZlMDRjYmNmOWJjMGRiZjJiN2IwMmQ4YzBjZGExYzZjNDM=
12
12
  data.tar.gz: !binary |-
13
- YjA0ZWY1YmJmODJjMjhlZTIzYmJhYzE0OTMzNTMyMmE4NjkwN2E2OGUyMjcy
14
- MzdkZDQxODMwZDNiOTNhOTlkYTcyMGQ2NGQ3ZGIzNDc5MmFiNWI5ZDFhNGZm
15
- Y2ZhYWYwYzEwZDRhZWE0NzAwODUzNDYzMDYyMTk3Y2I5ZjI0ZTI=
13
+ MGExZGNlNzFmZGRmMDM4MjU4OTE0NWY2OGEyZDg3Y2M1OGZlZmVhZDYyZjg4
14
+ NjVjMGUyZWUzMjBiNGEyOWQ5OTRiMTFiMmQ5YTI0ZGY4NTk5ZjA3NjUzNzEx
15
+ MjE1N2RjMTQzM2I0ZWM0MDM2N2VkOGNhNzhiMGRkOTlkZTNlOTk=
data/.codeclimate.yml ADDED
@@ -0,0 +1,24 @@
1
+ engines:
2
+ duplication:
3
+ enabled: true
4
+ config:
5
+ languages:
6
+ - ruby
7
+ exclude_paths:
8
+ - "lib/inprovise/node.rb"
9
+ - "lib/inprovise/control.rb"
10
+ - "lib/inprovise/cli/provision.rb"
11
+ - "lib/inprovise/cli/node.rb"
12
+ - "lib/inprovise/cli/group.rb"
13
+ - "lib/inprovise/helper/linux.rb"
14
+ - "lib/inprovise/channel/ssh.rb"
15
+ rubocop:
16
+ enabled: true
17
+ checks:
18
+ Rubocop/Lint/RescueException:
19
+ enabled: false
20
+ Rubocop/Metrics/ClassLength:
21
+ enabled: false
22
+ ratings:
23
+ paths:
24
+ - "lib/**/*"
@@ -7,6 +7,8 @@ require 'net/ssh'
7
7
  require 'net/sftp'
8
8
  require 'digest/sha1'
9
9
 
10
+ # :nocov:
11
+
10
12
  Inprovise::CmdChannel.define('ssh') do
11
13
 
12
14
  def initialize(node)
@@ -45,34 +47,30 @@ Inprovise::CmdChannel.define('ssh') do
45
47
  sftp.mkdir!(path)
46
48
  end
47
49
 
48
- def exists?(path)
49
- @node.log.remote("SFTP.EXISTS?: #{path}") if Inprovise.verbosity > 1
50
+ def path_check(path, type=nil)
50
51
  begin
51
- sftp.stat!(path) != nil
52
+ stat = sftp.stat!(path)
53
+ stat != nil && (type.nil? || stat.symbolic_type == type)
52
54
  rescue Net::SFTP::StatusException => ex
53
55
  raise ex unless ex.code == Net::SFTP::Response::FX_NO_SUCH_FILE
54
56
  false
55
57
  end
56
58
  end
59
+ private :path_check
60
+
61
+ def exists?(path)
62
+ @node.log.remote("SFTP.EXISTS?: #{path}") if Inprovise.verbosity > 1
63
+ path_check(path)
64
+ end
57
65
 
58
66
  def file?(path)
59
67
  @node.log.remote("SFTP.FILE?: #{path}") if Inprovise.verbosity > 1
60
- begin
61
- sftp.stat!(path).symbolic_type == :regular
62
- rescue Net::SFTP::StatusException => ex
63
- raise ex unless ex.code == Net::SFTP::Response::FX_NO_SUCH_FILE
64
- false
65
- end
68
+ path_check(path, :regular)
66
69
  end
67
70
 
68
71
  def directory?(path)
69
72
  @node.log.remote("SFTP.DIRECTORY?: #{path}") if Inprovise.verbosity > 1
70
- begin
71
- sftp.stat!(path).symbolic_type == :directory
72
- rescue Net::SFTP::StatusException => ex
73
- raise ex unless ex.code == Net::SFTP::Response::FX_NO_SUCH_FILE
74
- false
75
- end
73
+ path_check(path, :directory)
76
74
  end
77
75
 
78
76
  def content(path)
@@ -142,42 +140,58 @@ Inprovise::CmdChannel.define('ssh') do
142
140
  log_bak = @node.log
143
141
  begin
144
142
  @node.log_to(Inprovise::Logger.new(@node, 'ssh[init]'))
145
- unless exists?('./.ssh')
146
- mkdir('./.ssh') rescue run('mkdir .ssh')
147
- set_permissions('./.ssh', 755) rescue run('chmod 0755 ./.ssh')
148
- end
143
+
144
+ # load public key
149
145
  pubkey = File.read(pubkey_path)
150
- # check if public key already configured
151
- if exists?('./.ssh/authorized_keys')
152
- auth_keys = begin
153
- content('./.ssh/authorized_keys')
154
- rescue
155
- run('cat ./.ssh/authorized_keys')
156
- end.split("\n")
157
- return if auth_keys.any? { |key| key == pubkey }
158
- end
146
+ # quit if already installed
147
+ return if check_pubkey(pubkey)
148
+
159
149
  begin
160
- @node.log.remote("APPEND: #{pubkey_path} -> ./.ssh/authorized_keys") if Inprovise.verbosity > 0
161
- sftp.file.open('./.ssh/authorized_keys', 'a') do |f|
162
- f.puts pubkey
150
+ # create .ssh dir if necessary
151
+ unless exists?('./.ssh')
152
+ mkdir('./.ssh')
153
+ set_permissions('./.ssh', 755)
163
154
  end
155
+ @node.log.remote("SFTP.APPEND: #{pubkey_path} -> ./.ssh/authorized_keys") if Inprovise.verbosity > 0
156
+ sftp.file.open('./.ssh/authorized_keys', 'a') { |f| f.puts pubkey }
157
+ # make sure the key file has the right permissions
158
+ set_permissions('./.ssh/authorized_keys', 644)
164
159
  rescue
165
160
  # using the SFTP option failed, let's try a more basic approach
161
+ run('mkdir -p .ssh') # make sure the directory exists
162
+ run('chmod 0755 ./.ssh') # and has the right permissions
163
+ # upload pubkey file to remote temp file
166
164
  upload_path = "inprovise-upload-#{Digest::SHA1.file(pubkey_path).hexdigest}"
167
165
  upload(pubkey_path, upload_path)
166
+ # concatenate temp file to ssh file
168
167
  run("cat #{upload_path} >> ./.ssh/authorized_keys")
168
+ # remove temp file
169
169
  run("rm #{upload_path}")
170
+ # make sure the key file has the right permissions
171
+ run('chmod 0644 ./.ssh/authorized_keys')
170
172
  end
171
- set_permissions('./.ssh/authorized_keys', 644) rescue run('chmod 0644 ./.ssh/authorized_keys')
172
173
  ensure
173
174
  @node.log_to(log_bak)
174
175
  end
175
176
  end
176
177
 
178
+ def check_pubkey(pubkey)
179
+ # check if public key already configured
180
+ if exists?('./.ssh/authorized_keys')
181
+ auth_keys = begin
182
+ content('./.ssh/authorized_keys')
183
+ rescue
184
+ run('cat ./.ssh/authorized_keys')
185
+ end.split("\n")
186
+ return auth_keys.any? { |key| key == pubkey }
187
+ end
188
+ false
189
+ end
190
+
177
191
  def execute(cmd, forcelog=false)
178
192
  @node.log.remote("SSH: #{cmd}") if Inprovise.verbosity > 1 || forcelog
179
193
  output = ''
180
- connection.exec! cmd do |channel, stream, data|
194
+ connection.exec! cmd do |_channel, stream, data|
181
195
  output << data if stream == :stdout
182
196
  data.split("\n").each do |line|
183
197
  @node.log.send(stream, line, forcelog)
@@ -200,3 +214,6 @@ Inprovise::CmdChannel.define('ssh') do
200
214
  end
201
215
 
202
216
  end
217
+
218
+ # :nocov:
219
+
@@ -15,7 +15,7 @@ class Inprovise::Cli
15
15
  cgrp_add.flag [:t, :target], :arg_name => 'NAME', :multiple => true, :desc => 'Add a known target (node or group) to this new group.'
16
16
  cgrp_add.flag [:c, :config], :arg_name => 'CFGKEY=CFGVAL', :multiple => true, :desc => 'Specify a configuration setting for the group.'
17
17
 
18
- cgrp_add.action do |global,options,args|
18
+ cgrp_add.action do |_global,options,args|
19
19
  raise ArgumentError, 'Missing or too many arguments!' unless args.size == 1
20
20
  Inprovise::Controller.run(:add, options, :group, *args)
21
21
  Inprovise::Controller.wait!
@@ -27,7 +27,7 @@ class Inprovise::Cli
27
27
  cgrp.arg_name 'GROUP[ GROUP [...]]'
28
28
  cgrp.command :remove do |cgrp_del|
29
29
 
30
- cgrp_del.action do |global,options,args|
30
+ cgrp_del.action do |_global,options,args|
31
31
  raise ArgumentError, 'Missing argument!' if args.empty?
32
32
  Inprovise::Controller.run(:remove, options, :group, *args)
33
33
  Inprovise::Controller.wait!
@@ -43,7 +43,7 @@ class Inprovise::Cli
43
43
  cgrp_update.switch [:r, :reset], negatable: false, :desc => 'Reset configuration before update (default is to merge updates)'
44
44
  cgrp_update.flag [:t, :target], :arg_name => 'NAME', :multiple => true, :desc => 'Add a known target (node or group) to the group(s)'
45
45
 
46
- cgrp_update.action do |global,options,args|
46
+ cgrp_update.action do |_global,options,args|
47
47
  raise ArgumentError, 'Missing argument!' if args.empty?
48
48
  Inprovise::Controller.run(:update, options, :group, *args)
49
49
  Inprovise::Controller.wait!
@@ -55,9 +55,9 @@ class Inprovise::Cli
55
55
  cgrp.command :list do |cgrp_list|
56
56
  cgrp_list.switch [:d, :details], negatable: false, :desc => 'Show group details'
57
57
 
58
- cgrp_list.action do |global_options,options,args|
59
- $stdout.puts " INFRASTRUCTURE GROUPS"
60
- $stdout.puts " ====================="
58
+ cgrp_list.action do |_global,options,args|
59
+ $stdout.puts ' INFRASTRUCTURE GROUPS'
60
+ $stdout.puts ' ====================='
61
61
  if args.empty?
62
62
  Inprovise::Infrastructure.list(Inprovise::Infrastructure::Group).each do |g|
63
63
  Inprovise::Cli.show_target(g, options[:details])
@@ -18,7 +18,7 @@ class Inprovise::Cli
18
18
  cnod_add.switch [:sniff], :default_value => true, :desc => 'Enable or disable running sniffers'
19
19
  cnod_add.flag [:g, :group], :arg_name => 'GROUP', :multiple => true, :desc => 'Existing infrastructure group to add new node to.'
20
20
 
21
- cnod_add.action do |global,options,args|
21
+ cnod_add.action do |_global,options,args|
22
22
  raise ArgumentError, 'Missing or too many arguments!' unless args.size == 1
23
23
  Inprovise::Controller.run(:add, options, :node, *args)
24
24
  Inprovise::Controller.wait!
@@ -30,7 +30,7 @@ class Inprovise::Cli
30
30
  cnod.arg_name 'NODE[ NODE [...]]'
31
31
  cnod.command :remove do |cnod_del|
32
32
 
33
- cnod_del.action do |global,options,args|
33
+ cnod_del.action do |_global,options,args|
34
34
  raise ArgumentError, 'Missing argument!' if args.empty?
35
35
  Inprovise::Controller.run(:remove, options, :node, *args)
36
36
  Inprovise::Controller.wait!
@@ -48,7 +48,7 @@ class Inprovise::Cli
48
48
  cnod_update.switch [:sniff], :default_value => true, :desc => 'Enable or disable running sniffers'
49
49
  cnod_update.flag [:g, :group], :arg_name => 'GROUP', :multiple => true, :desc => 'Existing infrastructure group to add node(s) to.'
50
50
 
51
- cnod_update.action do |global,options,args|
51
+ cnod_update.action do |_global,options,args|
52
52
  raise ArgumentError, 'Missing argument!' if args.empty?
53
53
  Inprovise::Controller.run(:update, options, :node, *args)
54
54
  Inprovise::Controller.wait!
@@ -60,10 +60,10 @@ class Inprovise::Cli
60
60
  cnod.command :list do |cnod_list|
61
61
  cnod_list.switch [:d, :details], negatable: false, :desc => 'Show node details'
62
62
 
63
- cnod_list.action do |global_options,options,args|
63
+ cnod_list.action do |_global,options,args|
64
64
  $stdout.puts
65
- $stdout.puts " INFRASTRUCTURE NODES"
66
- $stdout.puts " ===================="
65
+ $stdout.puts ' INFRASTRUCTURE NODES'
66
+ $stdout.puts ' ===================='
67
67
  if args.empty?
68
68
  Inprovise::Infrastructure.list(Inprovise::Infrastructure::Node).each do |n|
69
69
  Inprovise::Cli.show_target(n, options[:details])
@@ -75,7 +75,7 @@ class Inprovise::Cli
75
75
  when Inprovise::Infrastructure::Node
76
76
  Inprovise::Cli.show_target(tgt, options[:details])
77
77
  when Inprovise::Infrastructure::Group
78
- $stdout.puts " #{tgt.to_s}"
78
+ $stdout.puts " #{tgt}"
79
79
  $stdout.puts " #{'-' * tgt.to_s.size}"
80
80
  tgt.targets.each {|n| Inprovise::Cli.show_target(n, options[:details]) }
81
81
  $stdout.puts " #{'-' * tgt.to_s.size}"
@@ -5,15 +5,18 @@
5
5
 
6
6
  class Inprovise::Cli
7
7
 
8
+ def self.setup_provisioning_cmd(cmd, &block)
9
+ cmd.desc 'Path to a provisioning scheme to load'
10
+ cmd.flag [:s,:scheme], :arg_name => 'FILE', :multiple => true, :default_value => Inprovise.default_scheme
11
+ cmd.flag [:c, :config], :arg_name => 'CFGKEY=CFGVAL', :multiple => true, :desc => 'Specify a configuration setting for the script execution'
12
+ cmd.action(&block)
13
+ end
14
+
8
15
  desc 'Apply the given script/package to the specified infrastructure nodes and/or groups.'
9
16
  arg_name 'SCRIPT TARGET[ TARGET[...]]'
10
17
  command :apply do |capply|
11
18
 
12
- capply.desc 'Path to a provisioning scheme to load'
13
- capply.flag [:s,:scheme], :arg_name => 'FILE', :multiple => true, :default_value => Inprovise.default_scheme
14
- capply.flag [:c, :config], :arg_name => 'CFGKEY=CFGVAL', :multiple => true, :desc => 'Specify a configuration setting for the script execution'
15
-
16
- capply.action do |global, options, args|
19
+ Inprovise::Cli.setup_provisioning_cmd(capply) do |_global, options, args|
17
20
  raise ArgumentError, 'Missing arguments!' if args.empty?
18
21
  raise ArgumentError, 'Missing targets!' if args.size < 2
19
22
  Inprovise::Controller.run(:apply, options, *args)
@@ -25,11 +28,7 @@ class Inprovise::Cli
25
28
  arg_name 'SCRIPT NAME[ NAME[...]]'
26
29
  command :revert do |crevert|
27
30
 
28
- crevert.desc 'Path to a provisioning scheme to load'
29
- crevert.flag [:s,:scheme], :arg_name => 'FILE', :multiple => true, :default_value => Inprovise.default_scheme
30
- crevert.flag [:c, :config], :arg_name => 'CFGKEY=CFGVAL', :multiple => true, :desc => 'Specify a configuration setting for the script execution'
31
-
32
- crevert.action do |global, options, args|
31
+ Inprovise::Cli.setup_provisioning_cmd(crevert) do |_global, options, args|
33
32
  raise ArgumentError, 'Missing arguments!' if args.empty?
34
33
  raise ArgumentError, 'Missing targets!' if args.size < 2
35
34
  Inprovise::Controller.run(:revert, options, *args)
@@ -41,11 +40,7 @@ class Inprovise::Cli
41
40
  arg_name 'SCRIPT NAME[ NAME[...]]'
42
41
  command :validate do |cvalid|
43
42
 
44
- cvalid.desc 'Path to a provisioning scheme to load'
45
- cvalid.flag [:s,:scheme], :arg_name => 'FILE', :multiple => true, :default_value => Inprovise.default_scheme
46
- cvalid.flag [:c, :config], :arg_name => 'CFGKEY=CFGVAL', :multiple => true, :desc => 'Specify a configuration setting for the script execution'
47
-
48
- cvalid.action do |global, options, args|
43
+ Inprovise::Cli.setup_provisioning_cmd(cvalid) do |_global, options, args|
49
44
  raise ArgumentError, 'Missing arguments!' if args.empty?
50
45
  raise ArgumentError, 'Missing targets!' if args.size < 2
51
46
  Inprovise::Controller.run(:validate, options, *args)
@@ -57,11 +52,7 @@ class Inprovise::Cli
57
52
  arg_name 'ACTION NAME[ NAME[...]]'
58
53
  command :trigger do |ctrigger|
59
54
 
60
- ctrigger.desc 'Path to a provisioning scheme to load'
61
- ctrigger.flag [:s,:scheme], :arg_name => 'FILE', :multiple => true, :default_value => Inprovise.default_scheme
62
- ctrigger.flag [:c, :config], :arg_name => 'CFGKEY=CFGVAL', :multiple => true, :desc => 'Specify a configuration setting for the script execution'
63
-
64
- ctrigger.action do |global, options, args|
55
+ Inprovise::Cli.setup_provisioning_cmd(ctrigger) do |_global, options, args|
65
56
  raise ArgumentError, 'Missing arguments!' if args.empty?
66
57
  raise ArgumentError, 'Missing targets!' if args.size < 2
67
58
  Inprovise::Controller.run(:trigger, options, *args)
@@ -76,7 +67,7 @@ class Inprovise::Cli
76
67
  clist.flag [:s,:scheme], :arg_name => 'FILE', :multiple => true, :default_value => Inprovise.default_scheme
77
68
  clist.switch [:a, :all], negatable: false, :desc => 'List all scripts (with or without description)'
78
69
 
79
- clist.action do |global, options, args|
70
+ clist.action do |_global, options, _args|
80
71
  Inprovise::Controller.list_scripts(options)
81
72
  end
82
73
  end
data/lib/inprovise/cli.rb CHANGED
@@ -42,7 +42,7 @@ class Inprovise::Cli
42
42
 
43
43
  desc 'Initialize Inprovise project.'
44
44
  command :init do |cinit|
45
- cinit.action do |global,options,args|
45
+ cinit.action do |_global,_options,_args|
46
46
  raise RuntimeError, 'Cannot initialize existing project directory.' if File.exists?(Inprovise::INFRA_FILE)
47
47
  raise RuntimeError, "Default scheme #{Inprovise.default_scheme} already exists." if File.exists?(Inprovise.default_scheme)
48
48
  begin
@@ -57,7 +57,7 @@ class Inprovise::Cli
57
57
  end
58
58
  end
59
59
 
60
- pre do |global,command,options,args|
60
+ pre do |global,command,_options,_args|
61
61
  # Pre logic here
62
62
  # Return true to proceed; false to abort and not call the
63
63
  # chosen command
@@ -79,11 +79,11 @@ class Inprovise::Cli
79
79
  true
80
80
  end
81
81
 
82
- post do |global,command,options,args|
83
- # Post logic here
84
- # Use skips_post before a command to skip this
85
- # block on that command only
86
- end
82
+ # post do |global,command,options,args|
83
+ # # Post logic here
84
+ # # Use skips_post before a command to skip this
85
+ # # block on that command only
86
+ # end
87
87
 
88
88
  on_error do |exception|
89
89
  # Error logic here
@@ -96,7 +96,7 @@ class Inprovise::Cli
96
96
  end
97
97
 
98
98
  def self.show_target(tgt, details=false)
99
- $stdout.puts " #{tgt.to_s}"
99
+ $stdout.puts " #{tgt}"
100
100
  if details
101
101
  $stdout.puts " \t"+JSON.pretty_generate(tgt.config).split("\n").join("\n \t")
102
102
  end
@@ -48,17 +48,17 @@ module Inprovise::CmdChannel
48
48
 
49
49
  # command execution (MANDATORY)
50
50
 
51
- def run(command, forcelog=false)
51
+ def run(_command, _forcelog=false)
52
52
  raise RuntimeError, 'UNIMPLEMENTED'
53
53
  end
54
54
 
55
55
  # MANDATORY file management routines
56
56
 
57
- def upload(from, to)
57
+ def upload(_from, _to)
58
58
  raise RuntimeError, 'UNIMPLEMENTED'
59
59
  end
60
60
 
61
- def download(from, to)
61
+ def download(_from, _to)
62
62
  raise RuntimeError, 'UNIMPLEMENTED'
63
63
  end
64
64
 
@@ -47,7 +47,7 @@ module Inprovise::CmdHelper
47
47
  nil
48
48
  end
49
49
 
50
- def env_reference(varname)
50
+ def env_reference(_varname)
51
51
  nil
52
52
  end
53
53
 
@@ -56,7 +56,7 @@ module Inprovise::CmdHelper
56
56
  end
57
57
 
58
58
  # *must* return previous value
59
- def set_cwd(path)
59
+ def set_cwd(_path)
60
60
  nil
61
61
  end
62
62
 
@@ -83,7 +83,7 @@ module Inprovise::CmdHelper
83
83
 
84
84
  # basic commands
85
85
 
86
- def echo(arg)
86
+ def echo(_arg)
87
87
  nil
88
88
  end
89
89
 
@@ -91,59 +91,59 @@ module Inprovise::CmdHelper
91
91
  echo(env_reference(var))
92
92
  end
93
93
 
94
- def cat(path)
94
+ def cat(_path)
95
95
  nil
96
96
  end
97
97
 
98
- def hash_for(path)
98
+ def hash_for(_path)
99
99
  nil
100
100
  end
101
101
 
102
- def mkdir(path)
102
+ def mkdir(_path)
103
103
  nil
104
104
  end
105
105
 
106
- def exists?(path)
106
+ def exists?(_path)
107
107
  false
108
108
  end
109
109
 
110
- def file?(path)
110
+ def file?(_path)
111
111
  false
112
112
  end
113
113
 
114
- def directory?(path)
114
+ def directory?(_path)
115
115
  false
116
116
  end
117
117
 
118
- def copy(from, to)
118
+ def copy(_from, _to)
119
119
  nil
120
120
  end
121
121
 
122
- def move(from, to)
122
+ def move(_from, _to)
123
123
  nil
124
124
  end
125
125
 
126
- def delete(path)
126
+ def delete(_path)
127
127
  nil
128
128
  end
129
129
 
130
- def permissions(path)
130
+ def permissions(_path)
131
131
  0
132
132
  end
133
133
 
134
- def set_permissions(path, perm)
134
+ def set_permissions(_path, _perm)
135
135
  nil
136
136
  end
137
137
 
138
- def owner(path)
138
+ def owner(_path)
139
139
  nil
140
140
  end
141
141
 
142
- def set_owner(path, user, group=nil)
142
+ def set_owner(_path, _user, _group=nil)
143
143
  nil
144
144
  end
145
145
 
146
- def binary_exists?(bin)
146
+ def binary_exists?(_bin)
147
147
  false
148
148
  end
149
149