chef-sugar 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|