poise-application 5.0.0 → 5.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c93e07d070d363f881e7672ab97cf22c68b978c7
4
- data.tar.gz: 1c69c0bbd8a5a8ec56898d6fcef659e4fd30b15f
3
+ metadata.gz: d527860b3c2548bf627778c5d8dda62ab5c31ddb
4
+ data.tar.gz: 0e0a8574d33f5a2ab1c0715677b267ed4afc890d
5
5
  SHA512:
6
- metadata.gz: 5da9fc90970d626ea3b33b32416bd91f0b123c4d81e495fca950a408afa921e2a5ea7947ae7a3485be59a140694a4d71a9664c513cba2ae492e2f38fcf4ca585
7
- data.tar.gz: 5ba5b931737ee9fde0447f8980f3ba772f05e9c58b94ee6033ae0e26d2fe96b19527c4e7b566b923b0bc39c2918d3d3af84a3ece1e34b2b5a070f6983bf0a460
6
+ metadata.gz: bef8b15b02bac3a823f7cc9fa99ec00fb079080610f6c0d25634fe48b46aa40564bb4ae48569e70304104980fc59b8abe1da21ddb7cb3312db1779a9e6762e08
7
+ data.tar.gz: ee61530aec8fcb862c87a9165362ad06627e0d21d5ab884c6f25bbaecec28e7a8ca1146617c683916258d9f11aaec24387eb8aae60de720eac0f10d4c5ca7b6b
@@ -18,6 +18,11 @@ script:
18
18
  - "./bin/rake travis"
19
19
  gemfile:
20
20
  - test/gemfiles/chef-12.gemfile
21
+ - test/gemfiles/chef-12.0.gemfile
22
+ - test/gemfiles/chef-12.1.gemfile
21
23
  - test/gemfiles/chef-12.2.gemfile
22
24
  - test/gemfiles/chef-12.3.gemfile
25
+ - test/gemfiles/chef-12.4.gemfile
26
+ - test/gemfiles/chef-12.5.gemfile
27
+ - test/gemfiles/chef-12.6.gemfile
23
28
  - test/gemfiles/master.gemfile
@@ -1,4 +1,8 @@
1
- # Poise-Application Changelog
1
+ # Application Changelog
2
+
3
+ ## v5.1.0
4
+
5
+ * Add `application_cookbook_file`, `application_file`, and `application_template resources.
2
6
 
3
7
  ## v5.0.0
4
8
 
data/README.md CHANGED
@@ -137,6 +137,26 @@ end
137
137
  * `action_on_update_immediately` – Run the `action_on_update` notification with
138
138
  `:immediately`. *(default: false)*
139
139
 
140
+ ### `application_cookbook_file`, `application_file`, `application_template`
141
+
142
+ The `application_cookbook_file`, `application_file`, and `application_template`
143
+ resources extend the core Chef resources to take some application-level
144
+ configuration in to account:
145
+
146
+ ```ruby
147
+ application '/opt/myapp' do
148
+ template 'myapp.conf' do
149
+ source 'myapp.conf.erb'
150
+ end
151
+ end
152
+ ```
153
+
154
+ If the resource name is a relative path, it will be expanded relative to the
155
+ application path. If an owner or group is declared for the application, those
156
+ will be the default user and group for the resource.
157
+
158
+ All other actions and properties are the same as the similar resource in core Chef.
159
+
140
160
  ## Examples
141
161
 
142
162
  Some test recipes are available as examples for common application frameworks:
@@ -0,0 +1,61 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'poise/utils'
18
+
19
+ require 'poise_application/app_mixin'
20
+
21
+
22
+ module PoiseApplication
23
+ # A helper mixin for `file`-like resources to make them take application
24
+ # resource data. Relative paths are expanded against the application path and
25
+ # the app owner/group are the default user/group for the resource.
26
+ #
27
+ # @api private
28
+ # @since 5.1.0
29
+ module AppFileMixin
30
+ include Poise::Utils::ResourceProviderMixin
31
+
32
+ module Resource
33
+ include PoiseApplication::AppMixin
34
+
35
+ def initialize(*)
36
+ super
37
+ # So our lazy default below can work. Not needed on 12.7+.
38
+ remove_instance_variable(:@path) if instance_variable_defined?(:@path)
39
+ end
40
+
41
+ # @!attribute path
42
+ # Override the default path to be relative to the app path.
43
+ # @return [String]
44
+ attribute(:path, kind_of: String, default: lazy { parent ? ::File.expand_path(name, parent.path) : name })
45
+
46
+ # @!attribute group
47
+ # Override the default group to be the app group if unspecified.
48
+ # @return [String, Integer]
49
+ attribute(:group, kind_of: [String, Integer, NilClass], default: lazy { parent && parent.group })
50
+
51
+ # @!attribute user
52
+ # Override the default user to be the app owner if unspecified.
53
+ # @return [String, Integer]
54
+ attribute(:user, kind_of: [String, Integer, NilClass], default: lazy { parent && parent.owner })
55
+ end
56
+
57
+ module Provider
58
+ include PoiseApplication::AppMixin
59
+ end
60
+ end
61
+ end
@@ -14,4 +14,4 @@
14
14
  # limitations under the License.
15
15
  #
16
16
 
17
- require 'poise_application/resources/application'
17
+ require 'poise_application/resources'
@@ -14,9 +14,16 @@
14
14
  # limitations under the License.
15
15
  #
16
16
 
17
+ require 'poise_application/resources/application'
18
+ require 'poise_application/resources/application_cookbook_file'
19
+ require 'poise_application/resources/application_file'
20
+ require 'poise_application/resources/application_template'
21
+
17
22
 
18
23
  module PoiseApplication
24
+ # Chef resources and providers for poise-application.
25
+ #
26
+ # @since 5.0.0
19
27
  module Resources
20
- autoload :Application, 'poise_application/resources/application'
21
28
  end
22
29
  end
@@ -0,0 +1,54 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'poise_application/app_file_mixin'
18
+
19
+
20
+ module PoiseApplication
21
+ module Resources
22
+ # (see ApplicationCookbookFile::Resource)
23
+ # @since 5.1.0
24
+ module ApplicationCookbookFile
25
+ # An `application_cookbook_file` resource to manage Chef cookbook_files inside and
26
+ # Application cookbook deployment.
27
+ #
28
+ # @provides application_cookbook_file
29
+ # @action create
30
+ # @action create_if_missing
31
+ # @action delete
32
+ # @action touch
33
+ # @example
34
+ # application '/srv/myapp' do
35
+ # cookbook_file 'myapp.conf' do
36
+ # source 'myapp.conf'
37
+ # end
38
+ # end
39
+ class Resource < Chef::Resource::CookbookFile
40
+ include PoiseApplication::AppFileMixin
41
+ provides(:application_cookbook_file)
42
+ actions(:create, :create_if_missing, :delete, :touch)
43
+ subclass_providers!
44
+
45
+ def initialize(*args)
46
+ super
47
+ # For older Chef.
48
+ @resource_name = :application_cookbook_file
49
+ end
50
+ end
51
+
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,54 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'poise_application/app_file_mixin'
18
+
19
+
20
+ module PoiseApplication
21
+ module Resources
22
+ # (see ApplicationFile::Resource)
23
+ # @since 5.1.0
24
+ module ApplicationFile
25
+ # An `application_file` resource to manage Chef files inside and
26
+ # Application cookbook deployment.
27
+ #
28
+ # @provides application_file
29
+ # @action create
30
+ # @action create_if_missing
31
+ # @action delete
32
+ # @action touch
33
+ # @example
34
+ # application '/srv/myapp' do
35
+ # file 'myapp.conf' do
36
+ # source 'myapp.conf.erb'
37
+ # end
38
+ # end
39
+ class Resource < Chef::Resource::File
40
+ include PoiseApplication::AppFileMixin
41
+ provides(:application_file)
42
+ actions(:create, :create_if_missing, :delete, :touch)
43
+ subclass_providers!
44
+
45
+ def initialize(*args)
46
+ super
47
+ # For older Chef.
48
+ @resource_name = :application_file
49
+ end
50
+ end
51
+
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,54 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'poise_application/app_file_mixin'
18
+
19
+
20
+ module PoiseApplication
21
+ module Resources
22
+ # (see ApplicationTemplate::Resource)
23
+ # @since 5.1.0
24
+ module ApplicationTemplate
25
+ # An `application_template` resource to manage Chef templates inside and
26
+ # Application cookbook deployment.
27
+ #
28
+ # @provides application_template
29
+ # @action create
30
+ # @action create_if_missing
31
+ # @action delete
32
+ # @action touch
33
+ # @example
34
+ # application '/srv/myapp' do
35
+ # template 'myapp.conf' do
36
+ # source 'myapp.conf.erb'
37
+ # end
38
+ # end
39
+ class Resource < Chef::Resource::Template
40
+ include PoiseApplication::AppFileMixin
41
+ provides(:application_template)
42
+ actions(:create, :create_if_missing, :delete, :touch)
43
+ subclass_providers!
44
+
45
+ def initialize(*args)
46
+ super
47
+ # For older Chef.
48
+ @resource_name = :application_template
49
+ end
50
+ end
51
+
52
+ end
53
+ end
54
+ end
@@ -16,5 +16,5 @@
16
16
 
17
17
 
18
18
  module PoiseApplication
19
- VERSION = '5.0.0'
19
+ VERSION = '5.1.0'
20
20
  end
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.0.3'
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.1.2'
@@ -16,4 +16,4 @@
16
16
 
17
17
  eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
18
 
19
- gem 'chef', '~> 12.2.0'
19
+ gem 'chef', '~> 12.2.1'
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.4.3'
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.5.1'
@@ -0,0 +1,19 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ eval_gemfile File.expand_path('../../../Gemfile', __FILE__)
18
+
19
+ gem 'chef', '~> 12.6.0'
@@ -0,0 +1,100 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'spec_helper'
18
+
19
+ describe PoiseApplication::Resources::ApplicationCookbookFile do
20
+ context 'with a relative path' do
21
+ recipe do
22
+ application '/home/app' do
23
+ cookbook_file 'app.conf'
24
+ end
25
+ end
26
+
27
+ it { is_expected.to create_application_cookbook_file('app.conf').with(path: '/home/app/app.conf') }
28
+ end # /context with a relative path
29
+
30
+ context 'with an absolute path' do
31
+ recipe do
32
+ application '/home/app' do
33
+ cookbook_file '/app.conf'
34
+ end
35
+ end
36
+
37
+ it { is_expected.to create_application_cookbook_file('/app.conf').with(path: '/app.conf') }
38
+ end # /context with an absolute path
39
+
40
+ context 'with an application user' do
41
+ recipe do
42
+ application '/home/app' do
43
+ owner 'myuser'
44
+ cookbook_file 'app.conf'
45
+ end
46
+ end
47
+
48
+ it { is_expected.to create_application_cookbook_file('app.conf').with(user: 'myuser') }
49
+ end # /context 'with an application user
50
+
51
+ context 'with an application user and a local user' do
52
+ recipe do
53
+ application '/home/app' do
54
+ owner 'myuser'
55
+ cookbook_file 'app.conf' do
56
+ user 'otheruser'
57
+ end
58
+ end
59
+ end
60
+
61
+ it { is_expected.to create_application_cookbook_file('app.conf').with(user: 'otheruser') }
62
+ end # /context 'with an application user and a local user
63
+
64
+ context 'with an application group' do
65
+ recipe do
66
+ application '/home/app' do
67
+ group 'mygroup'
68
+ cookbook_file 'app.conf'
69
+ end
70
+ end
71
+
72
+ it { is_expected.to create_application_cookbook_file('app.conf').with(group: 'mygroup') }
73
+ end # /context 'with an application group
74
+
75
+ context 'with an application user and a local group' do
76
+ recipe do
77
+ application '/home/app' do
78
+ group 'mygroup'
79
+ cookbook_file 'app.conf' do
80
+ group 'othergroup'
81
+ end
82
+ end
83
+ end
84
+
85
+ it { is_expected.to create_application_cookbook_file('app.conf').with(group: 'othergroup') }
86
+ end # /context 'with an application group and a local group
87
+
88
+ context 'with more properties' do
89
+ recipe do
90
+ application '/home/app' do
91
+ cookbook_file 'app.conf' do
92
+ action :create_if_missing
93
+ source 'app.conf'
94
+ end
95
+ end
96
+ end
97
+
98
+ it { is_expected.to create_if_missing_application_cookbook_file('app.conf').with(source: 'app.conf')}
99
+ end # /context with more properties
100
+ end
@@ -0,0 +1,100 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'spec_helper'
18
+
19
+ describe PoiseApplication::Resources::ApplicationFile do
20
+ context 'with a relative path' do
21
+ recipe do
22
+ application '/home/app' do
23
+ file 'app.conf'
24
+ end
25
+ end
26
+
27
+ it { is_expected.to create_application_file('app.conf').with(path: '/home/app/app.conf') }
28
+ end # /context with a relative path
29
+
30
+ context 'with an absolute path' do
31
+ recipe do
32
+ application '/home/app' do
33
+ file '/app.conf'
34
+ end
35
+ end
36
+
37
+ it { is_expected.to create_application_file('/app.conf').with(path: '/app.conf') }
38
+ end # /context with an absolute path
39
+
40
+ context 'with an application user' do
41
+ recipe do
42
+ application '/home/app' do
43
+ owner 'myuser'
44
+ file 'app.conf'
45
+ end
46
+ end
47
+
48
+ it { is_expected.to create_application_file('app.conf').with(user: 'myuser') }
49
+ end # /context 'with an application user
50
+
51
+ context 'with an application user and a local user' do
52
+ recipe do
53
+ application '/home/app' do
54
+ owner 'myuser'
55
+ file 'app.conf' do
56
+ user 'otheruser'
57
+ end
58
+ end
59
+ end
60
+
61
+ it { is_expected.to create_application_file('app.conf').with(user: 'otheruser') }
62
+ end # /context 'with an application user and a local user
63
+
64
+ context 'with an application group' do
65
+ recipe do
66
+ application '/home/app' do
67
+ group 'mygroup'
68
+ file 'app.conf'
69
+ end
70
+ end
71
+
72
+ it { is_expected.to create_application_file('app.conf').with(group: 'mygroup') }
73
+ end # /context 'with an application group
74
+
75
+ context 'with an application user and a local group' do
76
+ recipe do
77
+ application '/home/app' do
78
+ group 'mygroup'
79
+ file 'app.conf' do
80
+ group 'othergroup'
81
+ end
82
+ end
83
+ end
84
+
85
+ it { is_expected.to create_application_file('app.conf').with(group: 'othergroup') }
86
+ end # /context 'with an application group and a local group
87
+
88
+ context 'with more properties' do
89
+ recipe do
90
+ application '/home/app' do
91
+ file 'app.conf' do
92
+ action :create_if_missing
93
+ content 'teapot'
94
+ end
95
+ end
96
+ end
97
+
98
+ it { is_expected.to create_if_missing_application_file('app.conf').with(content: 'teapot')}
99
+ end # /context with more properties
100
+ end
@@ -0,0 +1,100 @@
1
+ #
2
+ # Copyright 2015, Noah Kantrowitz
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'spec_helper'
18
+
19
+ describe PoiseApplication::Resources::ApplicationTemplate do
20
+ context 'with a relative path' do
21
+ recipe do
22
+ application '/home/app' do
23
+ template 'app.conf'
24
+ end
25
+ end
26
+
27
+ it { is_expected.to create_application_template('app.conf').with(path: '/home/app/app.conf') }
28
+ end # /context with a relative path
29
+
30
+ context 'with an absolute path' do
31
+ recipe do
32
+ application '/home/app' do
33
+ template '/app.conf'
34
+ end
35
+ end
36
+
37
+ it { is_expected.to create_application_template('/app.conf').with(path: '/app.conf') }
38
+ end # /context with an absolute path
39
+
40
+ context 'with an application user' do
41
+ recipe do
42
+ application '/home/app' do
43
+ owner 'myuser'
44
+ template 'app.conf'
45
+ end
46
+ end
47
+
48
+ it { is_expected.to create_application_template('app.conf').with(user: 'myuser') }
49
+ end # /context 'with an application user
50
+
51
+ context 'with an application user and a local user' do
52
+ recipe do
53
+ application '/home/app' do
54
+ owner 'myuser'
55
+ template 'app.conf' do
56
+ user 'otheruser'
57
+ end
58
+ end
59
+ end
60
+
61
+ it { is_expected.to create_application_template('app.conf').with(user: 'otheruser') }
62
+ end # /context 'with an application user and a local user
63
+
64
+ context 'with an application group' do
65
+ recipe do
66
+ application '/home/app' do
67
+ group 'mygroup'
68
+ template 'app.conf'
69
+ end
70
+ end
71
+
72
+ it { is_expected.to create_application_template('app.conf').with(group: 'mygroup') }
73
+ end # /context 'with an application group
74
+
75
+ context 'with an application user and a local group' do
76
+ recipe do
77
+ application '/home/app' do
78
+ group 'mygroup'
79
+ template 'app.conf' do
80
+ group 'othergroup'
81
+ end
82
+ end
83
+ end
84
+
85
+ it { is_expected.to create_application_template('app.conf').with(group: 'othergroup') }
86
+ end # /context 'with an application group and a local group
87
+
88
+ context 'with more properties' do
89
+ recipe do
90
+ application '/home/app' do
91
+ template 'app.conf' do
92
+ action :create_if_missing
93
+ source 'app.conf.erb'
94
+ end
95
+ end
96
+ end
97
+
98
+ it { is_expected.to create_if_missing_application_template('app.conf').with(source: 'app.conf.erb')}
99
+ end # /context with more properties
100
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: poise-application
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noah Kantrowitz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-03 00:00:00.000000000 Z
11
+ date: 2016-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: halite
@@ -74,7 +74,6 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - ".gitignore"
77
- - ".kitchen.travis.yml"
78
77
  - ".kitchen.yml"
79
78
  - ".travis.yml"
80
79
  - Berksfile
@@ -85,11 +84,15 @@ files:
85
84
  - Rakefile
86
85
  - SUPPORTERS.md
87
86
  - lib/poise_application.rb
87
+ - lib/poise_application/app_file_mixin.rb
88
88
  - lib/poise_application/app_mixin.rb
89
89
  - lib/poise_application/cheftie.rb
90
90
  - lib/poise_application/error.rb
91
91
  - lib/poise_application/resources.rb
92
92
  - lib/poise_application/resources/application.rb
93
+ - lib/poise_application/resources/application_cookbook_file.rb
94
+ - lib/poise_application/resources/application_file.rb
95
+ - lib/poise_application/resources/application_template.rb
93
96
  - lib/poise_application/service_mixin.rb
94
97
  - lib/poise_application/utils.rb
95
98
  - lib/poise_application/version.rb
@@ -100,13 +103,21 @@ files:
100
103
  - test/cookbooks/application_test/resources/test_plugin.rb
101
104
  - test/docker/docker.ca
102
105
  - test/docker/docker.pem
106
+ - test/gemfiles/chef-12.0.gemfile
107
+ - test/gemfiles/chef-12.1.gemfile
103
108
  - test/gemfiles/chef-12.2.gemfile
104
109
  - test/gemfiles/chef-12.3.gemfile
110
+ - test/gemfiles/chef-12.4.gemfile
111
+ - test/gemfiles/chef-12.5.gemfile
112
+ - test/gemfiles/chef-12.6.gemfile
105
113
  - test/gemfiles/chef-12.gemfile
106
114
  - test/gemfiles/master.gemfile
107
115
  - test/integration/default/serverspec/default_spec.rb
108
116
  - test/spec/app_mixin_spec.rb
117
+ - test/spec/resources/application_cookbook_file_spec.rb
118
+ - test/spec/resources/application_file_spec.rb
109
119
  - test/spec/resources/application_spec.rb
120
+ - test/spec/resources/application_template_spec.rb
110
121
  - test/spec/service_mixin_spec.rb
111
122
  - test/spec/spec_helper.rb
112
123
  - test/spec/utils_spec.rb
@@ -142,13 +153,21 @@ test_files:
142
153
  - test/cookbooks/application_test/resources/test_plugin.rb
143
154
  - test/docker/docker.ca
144
155
  - test/docker/docker.pem
156
+ - test/gemfiles/chef-12.0.gemfile
157
+ - test/gemfiles/chef-12.1.gemfile
145
158
  - test/gemfiles/chef-12.2.gemfile
146
159
  - test/gemfiles/chef-12.3.gemfile
160
+ - test/gemfiles/chef-12.4.gemfile
161
+ - test/gemfiles/chef-12.5.gemfile
162
+ - test/gemfiles/chef-12.6.gemfile
147
163
  - test/gemfiles/chef-12.gemfile
148
164
  - test/gemfiles/master.gemfile
149
165
  - test/integration/default/serverspec/default_spec.rb
150
166
  - test/spec/app_mixin_spec.rb
167
+ - test/spec/resources/application_cookbook_file_spec.rb
168
+ - test/spec/resources/application_file_spec.rb
151
169
  - test/spec/resources/application_spec.rb
170
+ - test/spec/resources/application_template_spec.rb
152
171
  - test/spec/service_mixin_spec.rb
153
172
  - test/spec/spec_helper.rb
154
173
  - test/spec/utils_spec.rb
@@ -1,9 +0,0 @@
1
- ---
2
- driver:
3
- name: docker
4
- binary: "./docker"
5
- socket: tcp://docker.poise.io:443
6
- tls_verify: true
7
- tls_cacert: test/docker/docker.ca
8
- tls_cert: test/docker/docker.pem
9
- tls_key: test/docker/docker.key