chef-sugar 2.0.0 → 2.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 +4 -4
- data/.travis.yml +1 -1
- data/CHANGELOG.md +10 -0
- data/README.md +13 -0
- data/Rakefile +10 -0
- data/lib/chef/sugar.rb +1 -0
- data/lib/chef/sugar/node.rb +13 -4
- data/lib/chef/sugar/platform.rb +24 -0
- data/lib/chef/sugar/version.rb +1 -1
- data/lib/chef/sugar/virtualization.rb +41 -0
- data/spec/unit/chef/sugar/platform_spec.rb +24 -0
- data/spec/unit/chef/sugar/virtualization_spec.rb +22 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a756ffa35fc9de2af5b25d862c38ec8fcd6c67f
|
4
|
+
data.tar.gz: f1bcb6ed7a4e85249f2701d7b4f5b31eb088ac2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad76496fedb799ce020db9d54fde348478144e24321a58bacdb3853a18d437e893627f9ca416526d6b99f824954b3fef79318c926eb05b37c90d84cbdb1b639d
|
7
|
+
data.tar.gz: 4c1c70570f5f5774f9541112f9be14d5ff65282c49d74d3e431c2b28ec8943a5c4d1000b1650ed9f47ad72f153874cbd8c3eafa300d394ba5aa69d4f3e802344
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,16 @@ Chef Sugar Changelog
|
|
2
2
|
=========================
|
3
3
|
This file is used to list changes made in each version of the chef-sugar cookbook and gem.
|
4
4
|
|
5
|
+
v2.1.0 (2014-06-26)
|
6
|
+
-------------------
|
7
|
+
### Improvements
|
8
|
+
- Add `solaris2?` matcher
|
9
|
+
- Add `aix?` matcher
|
10
|
+
- Add 'lxc?' matcher
|
11
|
+
|
12
|
+
### Bug Fixes
|
13
|
+
- Fix a bug in namespace memoization during attribute initialization
|
14
|
+
|
5
15
|
v2.0.0 (2014-06-16)
|
6
16
|
-------------------
|
7
17
|
### Breaking
|
data/README.md
CHANGED
@@ -273,6 +273,8 @@ node.deep_fetch('apache2', 'config', 'root') => node['apache2']['config']['root'
|
|
273
273
|
- `redhat_enterprise_linux?`
|
274
274
|
- `scientific_linux?`
|
275
275
|
- `ubuntu?`
|
276
|
+
- `solaris2?`
|
277
|
+
- `aix?`
|
276
278
|
|
277
279
|
There are also a series of dynamically defined matchers that map named operating system release versions and comparison operators in the form "#{platform}\_#{operator}\_#{name}?". For example:
|
278
280
|
|
@@ -374,6 +376,17 @@ http_request 'http://...' do
|
|
374
376
|
end
|
375
377
|
```
|
376
378
|
|
379
|
+
### Virtualization
|
380
|
+
- `lxc?`
|
381
|
+
|
382
|
+
#### Examples
|
383
|
+
```ruby
|
384
|
+
service 'ntpd' do
|
385
|
+
action [:enable, :start]
|
386
|
+
not_if { lxc? }
|
387
|
+
end
|
388
|
+
```
|
389
|
+
|
377
390
|
### Filters
|
378
391
|
- `compile_time` - accepts a block of resources to run at compile time
|
379
392
|
- `before` - insert resource in the collection before the given resource
|
data/Rakefile
CHANGED
data/lib/chef/sugar.rb
CHANGED
data/lib/chef/sugar/node.rb
CHANGED
@@ -130,9 +130,7 @@ EOH
|
|
130
130
|
# to prevent accidential method chaining if the block isn't closed
|
131
131
|
#
|
132
132
|
def namespace(*args, &block)
|
133
|
-
@namespace_options = {
|
134
|
-
precedence: default
|
135
|
-
}.merge(args.last.is_a?(Hash) ? args.pop : {})
|
133
|
+
@namespace_options = namespace_options.merge(args.last.is_a?(Hash) ? args.pop : {})
|
136
134
|
|
137
135
|
keys = args.map(&:to_s)
|
138
136
|
|
@@ -161,6 +159,17 @@ EOH
|
|
161
159
|
|
162
160
|
private
|
163
161
|
|
162
|
+
#
|
163
|
+
# The namespace options.
|
164
|
+
#
|
165
|
+
# @return [Hash]
|
166
|
+
#
|
167
|
+
def namespace_options
|
168
|
+
@namespace_options ||= {
|
169
|
+
precedence: default
|
170
|
+
}
|
171
|
+
end
|
172
|
+
|
164
173
|
#
|
165
174
|
# The current namespace. This is actually a reverse-ordered array that
|
166
175
|
# vivifies the correct hash.#
|
@@ -178,7 +187,7 @@ EOH
|
|
178
187
|
# @return [Hash<String, Hash>]
|
179
188
|
#
|
180
189
|
def vivified
|
181
|
-
current_namespace.inject(
|
190
|
+
current_namespace.inject(namespace_options[:precedence]) do |hash, item|
|
182
191
|
hash[item] ||= {}
|
183
192
|
hash[item]
|
184
193
|
end
|
data/lib/chef/sugar/platform.rb
CHANGED
@@ -161,6 +161,30 @@ class Chef
|
|
161
161
|
node['platform'] == 'enterprise'
|
162
162
|
end
|
163
163
|
alias_method :redhat_enterprise?, :redhat_enterprise_linux?
|
164
|
+
|
165
|
+
#
|
166
|
+
# Determine if the current node is solaris2
|
167
|
+
#
|
168
|
+
# @param [Chef::Node] node
|
169
|
+
#
|
170
|
+
# @return [Boolean]
|
171
|
+
#
|
172
|
+
def solaris2?(node)
|
173
|
+
node['platform'] == 'solaris2'
|
174
|
+
end
|
175
|
+
alias_method :solaris?, :solaris2?
|
176
|
+
|
177
|
+
#
|
178
|
+
# Determine if the current node is aix
|
179
|
+
#
|
180
|
+
# @param [Chef::Node] node
|
181
|
+
#
|
182
|
+
# @return [Boolean]
|
183
|
+
#
|
184
|
+
def aix?(node)
|
185
|
+
node['platform'] == 'aix'
|
186
|
+
end
|
187
|
+
|
164
188
|
end
|
165
189
|
|
166
190
|
module DSL
|
data/lib/chef/sugar/version.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2014, Joseph J. Nuspl Jr. <nuspl@nvwls.com>
|
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
|
+
class Chef
|
18
|
+
module Sugar
|
19
|
+
module Virtualization
|
20
|
+
extend self
|
21
|
+
|
22
|
+
#
|
23
|
+
# Determine if the current node is running in a linux container.
|
24
|
+
#
|
25
|
+
# @param [Chef::Node] node
|
26
|
+
#
|
27
|
+
# @return [Boolean]
|
28
|
+
# true if the machine is currently running in a container, false
|
29
|
+
# otherwise
|
30
|
+
#
|
31
|
+
def lxc?(node)
|
32
|
+
node['virtualization'] && node['virtualization']['system'] == 'lxc'
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
module DSL
|
37
|
+
# @see Chef::Sugar::Virtualization#lxc?
|
38
|
+
def lxc?; Chef::Sugar::Virtualization.lxc?(node); end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -87,6 +87,30 @@ describe Chef::Sugar::Platform do
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
+
describe '#solaris2?' do
|
91
|
+
it 'returns true when the platform is solaris2' do
|
92
|
+
node = { 'platform' => 'solaris2' }
|
93
|
+
expect(described_class.solaris2?(node)).to be_truthy
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'returns false when the platform is not solaris2' do
|
97
|
+
node = { 'platform' => 'windows' }
|
98
|
+
expect(described_class.solaris2?(node)).to be_falsey
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe '#aix?' do
|
103
|
+
it 'returns true when the platform is aix' do
|
104
|
+
node = { 'platform' => 'aix' }
|
105
|
+
expect(described_class.aix?(node)).to be_truthy
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'returns false when the platform is not aix' do
|
109
|
+
node = { 'platform' => 'windows' }
|
110
|
+
expect(described_class.aix?(node)).to be_falsey
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
90
114
|
context 'dynamic matchers' do
|
91
115
|
describe '#ubuntu_after_lucid?' do
|
92
116
|
it 'returns true when the version is later than 10.04' do
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chef::Sugar::Virtualization do
|
4
|
+
it_behaves_like 'a chef sugar'
|
5
|
+
|
6
|
+
describe '#lxc?' do
|
7
|
+
it 'returns true when the machine is a linux contianer' do
|
8
|
+
node = { 'virtualization' => { 'system' => 'lxc' } }
|
9
|
+
expect(described_class.lxc?(node)).to be_truthy
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'returns false when the virtual machine is not lxc' do
|
13
|
+
node = { 'virtualization' => { 'system' => 'vbox' } }
|
14
|
+
expect(described_class.lxc?(node)).to be_falsey
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'returns false when the machine is not virtual' do
|
18
|
+
node = {}
|
19
|
+
expect(described_class.lxc?(node)).to be_falsey
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chef-sugar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seth Vargo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -120,6 +120,7 @@ files:
|
|
120
120
|
- lib/chef/sugar/shell.rb
|
121
121
|
- lib/chef/sugar/vagrant.rb
|
122
122
|
- lib/chef/sugar/version.rb
|
123
|
+
- lib/chef/sugar/virtualization.rb
|
123
124
|
- metadata.rb
|
124
125
|
- recipes/default.rb
|
125
126
|
- spec/spec_helper.rb
|
@@ -140,6 +141,7 @@ files:
|
|
140
141
|
- spec/unit/chef/sugar/run_context_spec.rb
|
141
142
|
- spec/unit/chef/sugar/shell_spec.rb
|
142
143
|
- spec/unit/chef/sugar/vagrant_spec.rb
|
144
|
+
- spec/unit/chef/sugar/virtualization_spec.rb
|
143
145
|
- spec/unit/recipes/default_spec.rb
|
144
146
|
homepage: https://github.com/sethvargo/chef-sugar
|
145
147
|
licenses:
|
@@ -161,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
163
|
version: '0'
|
162
164
|
requirements: []
|
163
165
|
rubyforge_project:
|
164
|
-
rubygems_version: 2.
|
166
|
+
rubygems_version: 2.3.0
|
165
167
|
signing_key:
|
166
168
|
specification_version: 4
|
167
169
|
summary: A collection of helper methods and modules that make working with Chef recipes
|
@@ -185,5 +187,6 @@ test_files:
|
|
185
187
|
- spec/unit/chef/sugar/run_context_spec.rb
|
186
188
|
- spec/unit/chef/sugar/shell_spec.rb
|
187
189
|
- spec/unit/chef/sugar/vagrant_spec.rb
|
190
|
+
- spec/unit/chef/sugar/virtualization_spec.rb
|
188
191
|
- spec/unit/recipes/default_spec.rb
|
189
192
|
has_rdoc:
|