itamae 1.0.0.beta5 → 1.0.0.beta6

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: 16430941743e871422f34e8a84999bfdd676261c
4
- data.tar.gz: 8b937db3cfbd6baa310f0086576f46bffee03b6b
3
+ metadata.gz: 32cd433377eae0ebf109bcb64076577f38e72d7c
4
+ data.tar.gz: a83208334949e56c3597828e681d91a4050fb4ff
5
5
  SHA512:
6
- metadata.gz: e74644471245614750aff1fc8c11a9f7a5b8afff95bac06f053a2ddecbe269fb0b1b57c2d105956f62358df4530b5b0e6f0cc9a08db737ce4366b92572d3af80
7
- data.tar.gz: 821c7cbcad69cfbb44f1d0d9d8d0c17d8241cf2332fc79693f76e48beb66e9ef2f95c0514bf5e49c1e5ab9e1f84423280e0c08447015263af673b5d5c7bd8faa
6
+ metadata.gz: 6aaabb06cdcc15ac3fa157f9a3aa7196218fa689e481d8ffe1aa095e865cee4b96328e30024168db08adf1888f9562f69f8439ac4036433584e81b7442d5044d
7
+ data.tar.gz: 095bcc26d0f2dd25320241f4ff651980a2beb212e0e4188da3b91cfa2e32052fb3a66671d651b5d3fe2c240f30fadf7fe50ceb90431869bd43f3bf4c9bfff680
data/itamae.gemspec CHANGED
@@ -18,13 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ["lib"]
19
19
 
20
20
  spec.add_runtime_dependency "thor"
21
- spec.add_runtime_dependency "specinfra", "2.0.0.beta35"
21
+ spec.add_runtime_dependency "specinfra", "2.0.0.beta36"
22
22
  spec.add_runtime_dependency "hashie"
23
23
  spec.add_runtime_dependency "ansi"
24
24
 
25
- # TODO: move to specinfra
26
- spec.add_runtime_dependency "net-scp"
27
-
28
25
  spec.add_development_dependency "bundler", "~> 1.3"
29
26
  spec.add_development_dependency "rake"
30
27
  spec.add_development_dependency "rspec", "~> 3.0"
@@ -23,7 +23,7 @@ module Itamae
23
23
  end
24
24
  end
25
25
 
26
- define_attribute :action, type: Symbol, required: true
26
+ define_attribute :action, type: [Symbol, Array], required: true
27
27
 
28
28
  attr_reader :resource_name
29
29
  attr_reader :attributes
@@ -60,7 +60,9 @@ module Itamae
60
60
  show_differences
61
61
 
62
62
  unless options[:dry_run]
63
- public_send("#{specific_action || action}_action".to_sym)
63
+ [action].flatten.each do |action|
64
+ public_send("#{specific_action || action}_action".to_sym)
65
+ end
64
66
  end
65
67
 
66
68
  updated! if different?
@@ -149,8 +151,13 @@ module Itamae
149
151
  raise Resource::AttributeMissingError, "'#{key}' attribute is required but it is not set."
150
152
  end
151
153
 
152
- if @attributes[key] && details[:type] && !@attributes[key].is_a?(details[:type])
153
- raise Resource::InvalidTypeError, "#{key} attribute should be #{details[:type]}."
154
+ if @attributes[key] && details[:type]
155
+ valid_type = [details[:type]].flatten.any? do |type|
156
+ @attributes[key].is_a?(type)
157
+ end
158
+ unless valid_type
159
+ raise Resource::InvalidTypeError, "#{key} attribute should be #{details[:type]}."
160
+ end
154
161
  end
155
162
  end
156
163
  end
@@ -7,29 +7,27 @@ module Itamae
7
7
  define_attribute :name, type: String, default_name: true
8
8
 
9
9
  def start_action
10
- run_init_script("start")
10
+ run_specinfra(:start_service, name)
11
11
  end
12
12
 
13
13
  def stop_action
14
- run_init_script("stop")
14
+ run_specinfra(:stop_service, name)
15
15
  end
16
16
 
17
17
  def restart_action
18
- run_init_script("restart")
18
+ run_specinfra(:restart_service, name)
19
19
  end
20
20
 
21
21
  def reload_action
22
- run_init_script("reload")
22
+ run_specinfra(:reload_service, name)
23
23
  end
24
24
 
25
- private
26
- def run_init_script(command)
27
- # TODO: Delegate to Specinfra
28
- run_command([init_script_path, command])
25
+ def enable_action
26
+ run_specinfra(:enable_service, name)
29
27
  end
30
28
 
31
- def init_script_path
32
- "/etc/init.d/#{name}"
29
+ def disable_action
30
+ run_specinfra(:disable_service, name)
33
31
  end
34
32
  end
35
33
  end
@@ -1,3 +1,3 @@
1
1
  module Itamae
2
- VERSION = "1.0.0.beta5"
2
+ VERSION = "1.0.0.beta6"
3
3
  end
@@ -89,6 +89,24 @@ execute "ps -C cron > /tmp/cron_running; true"
89
89
 
90
90
  ######
91
91
 
92
+ package "nginx"
93
+
94
+ service "nginx" do
95
+ action [:enable, :start]
96
+ end
97
+
98
+ execute "test -f /etc/rc3.d/S20nginx" # test
99
+ execute "test $(ps h -C nginx | wc -l) -gt 0" # test
100
+
101
+ service "nginx" do
102
+ action [:disable, :stop]
103
+ end
104
+
105
+ execute "test ! -f /etc/rc3.d/S20nginx" # test
106
+ execute "test $(ps h -C nginx | wc -l) -eq 0" # test
107
+
108
+ ######
109
+
92
110
  link "/tmp-link" do
93
111
  to "/tmp"
94
112
  end
@@ -27,6 +27,7 @@ module Itamae
27
27
  expect(subject).to receive(:run_specinfra).with(:check_file_is_file, "/path/to/dst").and_return(true)
28
28
  expect(subject).to receive(:run_command).with(["cp", "/path/to/dst", "/path/to/dst.bak"])
29
29
  expect(subject).to receive(:run_command).with(["mv", %r{/tmp/itamae/[\d\.]+}, "/path/to/dst"])
30
+ subject.pre_action
30
31
  subject.create_action
31
32
  end
32
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itamae
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta5
4
+ version: 1.0.0.beta6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Arai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-19 00:00:00.000000000 Z
11
+ date: 2014-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 2.0.0.beta35
33
+ version: 2.0.0.beta36
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 2.0.0.beta35
40
+ version: 2.0.0.beta36
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: hashie
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: net-scp
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: bundler
85
71
  requirement: !ruby/object:Gem::Requirement