serverkit 0.5.1 → 0.6.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: 24b5913dfd17ab82dcc688aba30f392c4fb36f02
4
- data.tar.gz: b80f8bd60e1a500e5ca7b497d90c0d26144207e6
3
+ metadata.gz: d638957343d75f83244b7d7589662ee2364c7bd6
4
+ data.tar.gz: a16ef58fad113e7e9e58305a8ec4146d604bf7ff
5
5
  SHA512:
6
- metadata.gz: 750ad9c4d49922d310ac45455566c78f98871c10318f751a8dfcbc41b5a7b597759b889df73de3167d0c0ddc94dc851e4ca62f70d24b350d5eb1c0df833dd4c4
7
- data.tar.gz: 5054ae0860bfe29c22e489cc5f3efd55273bedc304d172595c7cb8a9c5c1bd0cd5eb5906d61ef3404b3c48fb8fa32babc29e9527cc6afaf2e7123d2dc5c2b2dc
6
+ metadata.gz: 498492872c31a830b67dc9cbcd2fbef34b8149aa2391428540168a93e0268fbcfa37f2655b93d14fff502cf4144f128357f2be26b6e1349677f7dc317f8cfb14
7
+ data.tar.gz: c671b47059e43d9560d5ecc50580e0b9a0a3e7aa24b81c3f1951ea084fdbbbe85e92990682d8802e338f09129b1aab65a3082634383d23cae51762d29973bc75
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ ## 0.6.0
2
+ - Add `cwd` and `user` attributes on all resources
3
+
1
4
  ## 0.5.1
2
5
  - Fix user resource behavior on nil password case
3
6
 
data/doc/resource.md CHANGED
@@ -7,9 +7,11 @@ By default, all types of resource can or must have the following attributes:
7
7
 
8
8
  - type - what type this resource represents (required)
9
9
  - check_script - pass shell script to override the `#check` phase
10
- - recheck_script - pass shell script to override the `#recheck` phase (runned after `#apply`)
10
+ - cwd - pass current working directory path
11
11
  - id - change resource identifier used in log, and also used for `notify`
12
12
  - notify - specify an Array of handler ids that should be applied after changed
13
+ - recheck_script - pass shell script to override the `#recheck` phase (runned after `#apply`)
14
+ - user - specify user for `sudo -u`
13
15
 
14
16
  ## Example
15
17
  Here is a tiny example recipe that has only one resource with `type` and `name` attributes.
@@ -5,6 +5,7 @@ module Serverkit
5
5
  module Backends
6
6
  class BaseBackend
7
7
  delegate(
8
+ :command,
8
9
  :send_file,
9
10
  to: :specinfra_backend,
10
11
  )
@@ -13,21 +14,6 @@ module Serverkit
13
14
  @log_level = log_level
14
15
  end
15
16
 
16
- # @return [true, false]
17
- def check_command(*args)
18
- run_command(*args).success?
19
- end
20
-
21
- # @return [true, false]
22
- def check_command_from_identifier(*args)
23
- run_command_from_identifier(*args).success?
24
- end
25
-
26
- # @return [String]
27
- def get_command_from_identifier(*args)
28
- specinfra_backend.command.get(*args)
29
- end
30
-
31
17
  # @note Override me
32
18
  # @return [String]
33
19
  # @example "localhost"
@@ -42,21 +28,17 @@ module Serverkit
42
28
  end
43
29
  end
44
30
 
31
+ # @param [String] command one-line shell script to be executed on remote machine
45
32
  # @return [Specinfra::CommandResult]
46
- def run_command(*args)
47
- logger.debug("Running #{args.first.inspect} on #{host}")
48
- specinfra_backend.run_command(*args).tap do |result|
33
+ def run_command(command)
34
+ logger.debug("Running #{command} on #{host}")
35
+ specinfra_backend.run_command(command).tap do |result|
49
36
  logger.debug(result.stdout) unless result.stdout.empty?
50
37
  logger.debug(result.stderr) unless result.stderr.empty?
51
38
  logger.debug("Finished with #{result.exit_status} on #{host}")
52
39
  end
53
40
  end
54
41
 
55
- # @return [Specinfra::CommandResult]
56
- def run_command_from_identifier(*args)
57
- run_command(get_command_from_identifier(*args))
58
- end
59
-
60
42
  def send_file(from, to)
61
43
  logger.debug("Sending file #{from} to #{to}")
62
44
  specinfra_backend.send_file(from, to)
@@ -34,17 +34,14 @@ module Serverkit
34
34
  attr_reader :attributes, :check_result, :recheck_result, :recipe
35
35
 
36
36
  attribute :check_script, type: String
37
+ attribute :cwd, type: String
37
38
  attribute :id, type: String
38
39
  attribute :notify, type: Array
39
40
  attribute :recheck_script, type: String
40
41
  attribute :type, type: String
42
+ attribute :user, type: String
41
43
 
42
44
  delegate(
43
- :check_command,
44
- :check_command_from_identifier,
45
- :get_command_from_identifier,
46
- :run_command,
47
- :run_command_from_identifier,
48
45
  :send_file,
49
46
  to: :backend,
50
47
  )
@@ -64,6 +61,21 @@ module Serverkit
64
61
  attribute_validation_errors
65
62
  end
66
63
 
64
+ # @return [true, false]
65
+ def check_command(*args)
66
+ run_command(*args).success?
67
+ end
68
+
69
+ # @return [true, false]
70
+ def check_command_from_identifier(*args)
71
+ run_command_from_identifier(*args).success?
72
+ end
73
+
74
+ # @return [String]
75
+ def get_command_from_identifier(*args)
76
+ backend.command.get(*args)
77
+ end
78
+
67
79
  # @return [Array<Serverkit::Resource>]
68
80
  def handlers
69
81
  @handlers ||= Array(notify).map do |id|
@@ -209,6 +221,20 @@ module Serverkit
209
221
  end
210
222
  end
211
223
 
224
+ # @note Wraps backend.run_command for `cwd` and `user` attributes
225
+ # @param [String] command one-line shell script to be executed on remote machine
226
+ # @return [Specinfra::CommandResult]
227
+ def run_command(command)
228
+ command = "cd #{Shellwords.escape(cwd)} && #{command}" unless cwd.nil?
229
+ command = "sudo -u #{user} -- /bin/sh -c #{Shellwords.escape(command)}" unless user.nil?
230
+ backend.run_command(command)
231
+ end
232
+
233
+ # @return [Specinfra::CommandResult]
234
+ def run_command_from_identifier(*args)
235
+ run_command(get_command_from_identifier(*args))
236
+ end
237
+
212
238
  # Update remote file content on given path with given content
213
239
  # @param [String] content
214
240
  # @param [String] path
@@ -1,3 +1,3 @@
1
1
  module Serverkit
2
- VERSION = "0.5.1"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serverkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-08 00:00:00.000000000 Z
11
+ date: 2015-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel