chef-sugar-ng 4.2.2
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 +7 -0
- data/.github/lock.yml +3 -0
- data/.github/reaction.yml +1 -0
- data/.gitignore +26 -0
- data/.kitchen.yml +16 -0
- data/.travis.yml +17 -0
- data/CHANGELOG.md +261 -0
- data/CONTRIBUTING.md +20 -0
- data/Gemfile +2 -0
- data/LICENSE +201 -0
- data/README.md +540 -0
- data/Rakefile +11 -0
- data/chef-sugar-ng.gemspec +33 -0
- data/lib/chef/sugar.rb +51 -0
- data/lib/chef/sugar/architecture.rb +171 -0
- data/lib/chef/sugar/cloud.rb +192 -0
- data/lib/chef/sugar/constraints.rb +108 -0
- data/lib/chef/sugar/constraints_dsl.rb +83 -0
- data/lib/chef/sugar/core_extensions.rb +19 -0
- data/lib/chef/sugar/core_extensions/array.rb +34 -0
- data/lib/chef/sugar/core_extensions/object.rb +27 -0
- data/lib/chef/sugar/core_extensions/string.rb +66 -0
- data/lib/chef/sugar/data_bag.rb +146 -0
- data/lib/chef/sugar/docker.rb +40 -0
- data/lib/chef/sugar/filters.rb +227 -0
- data/lib/chef/sugar/init.rb +62 -0
- data/lib/chef/sugar/ip.rb +48 -0
- data/lib/chef/sugar/kernel.rb +49 -0
- data/lib/chef/sugar/kitchen.rb +40 -0
- data/lib/chef/sugar/node.rb +213 -0
- data/lib/chef/sugar/platform.rb +327 -0
- data/lib/chef/sugar/platform_family.rb +179 -0
- data/lib/chef/sugar/ruby.rb +51 -0
- data/lib/chef/sugar/run_context.rb +41 -0
- data/lib/chef/sugar/shell.rb +147 -0
- data/lib/chef/sugar/vagrant.rb +77 -0
- data/lib/chef/sugar/version.rb +21 -0
- data/lib/chef/sugar/virtualization.rb +151 -0
- data/libraries/chef-sugar.rb +1 -0
- data/metadata.rb +24 -0
- data/recipes/default.rb +20 -0
- data/spec/spec_helper.rb +25 -0
- data/spec/support/shared_examples.rb +20 -0
- data/spec/unit/chef/sugar/architecture_spec.rb +129 -0
- data/spec/unit/chef/sugar/cloud_spec.rb +149 -0
- data/spec/unit/chef/sugar/constraints_spec.rb +45 -0
- data/spec/unit/chef/sugar/core_extensions/array_spec.rb +10 -0
- data/spec/unit/chef/sugar/core_extensions/object_spec.rb +62 -0
- data/spec/unit/chef/sugar/core_extensions/string_spec.rb +48 -0
- data/spec/unit/chef/sugar/data_bag_spec.rb +118 -0
- data/spec/unit/chef/sugar/docker_spec.rb +39 -0
- data/spec/unit/chef/sugar/init_spec.rb +74 -0
- data/spec/unit/chef/sugar/ip_spec.rb +53 -0
- data/spec/unit/chef/sugar/kernel_spec.rb +16 -0
- data/spec/unit/chef/sugar/kitchen_spec.rb +18 -0
- data/spec/unit/chef/sugar/node_spec.rb +172 -0
- data/spec/unit/chef/sugar/platform_family_spec.rb +166 -0
- data/spec/unit/chef/sugar/platform_spec.rb +342 -0
- data/spec/unit/chef/sugar/ruby_spec.rb +39 -0
- data/spec/unit/chef/sugar/run_context_spec.rb +19 -0
- data/spec/unit/chef/sugar/shell_spec.rb +104 -0
- data/spec/unit/chef/sugar/vagrant_spec.rb +37 -0
- data/spec/unit/chef/sugar/virtualization_spec.rb +135 -0
- data/spec/unit/recipes/default_spec.rb +9 -0
- metadata +202 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2013-2015, Seth Vargo <sethvargo@gmail.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
|
+
VERSION = '4.2.2'
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,151 @@
|
|
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 under KVM.
|
24
|
+
#
|
25
|
+
# @param [Chef::Node] node
|
26
|
+
#
|
27
|
+
# @return [Boolean]
|
28
|
+
# true if the machine is currently running under KVM, false
|
29
|
+
# otherwise
|
30
|
+
#
|
31
|
+
def kvm?(node)
|
32
|
+
node.key?('virtualization') && node['virtualization']['system'] == 'kvm'
|
33
|
+
end
|
34
|
+
|
35
|
+
#
|
36
|
+
# Determine if the current node is running in a linux container.
|
37
|
+
#
|
38
|
+
# @param [Chef::Node] node
|
39
|
+
#
|
40
|
+
# @return [Boolean]
|
41
|
+
# true if the machine is currently running in a container, false
|
42
|
+
# otherwise
|
43
|
+
#
|
44
|
+
def lxc?(node)
|
45
|
+
node.key?('virtualization') && node['virtualization']['system'] == 'lxc'
|
46
|
+
end
|
47
|
+
|
48
|
+
#
|
49
|
+
# Determine if the current node is running under Parallels Desktop.
|
50
|
+
#
|
51
|
+
# @param [Chef::Node] node
|
52
|
+
#
|
53
|
+
# @return [Boolean]
|
54
|
+
# true if the machine is currently running under Parallels Desktop, false
|
55
|
+
# otherwise
|
56
|
+
#
|
57
|
+
def parallels?(node)
|
58
|
+
node.key?('virtualization') && node['virtualization']['system'] == 'Parallels'
|
59
|
+
end
|
60
|
+
|
61
|
+
#
|
62
|
+
# Determine if the current node is running under VirtualBox.
|
63
|
+
#
|
64
|
+
# @param [Chef::Node] node
|
65
|
+
#
|
66
|
+
# @return [Boolean]
|
67
|
+
# true if the machine is currently running under VirtualBox, false
|
68
|
+
# otherwise
|
69
|
+
#
|
70
|
+
def virtualbox?(node)
|
71
|
+
node.key?('virtualization') && node['virtualization']['system'] == 'vbox'
|
72
|
+
end
|
73
|
+
|
74
|
+
#
|
75
|
+
# Determine if the current node is running under VMware.
|
76
|
+
#
|
77
|
+
# @param [Chef::Node] node
|
78
|
+
#
|
79
|
+
# @return [Boolean]
|
80
|
+
# true if the machine is currently running under VMware, false
|
81
|
+
# otherwise
|
82
|
+
#
|
83
|
+
def vmware?(node)
|
84
|
+
node.key?('virtualization') && node['virtualization']['system'] == 'vmware'
|
85
|
+
end
|
86
|
+
|
87
|
+
#
|
88
|
+
# Determine if the current node is running under openvz.
|
89
|
+
#
|
90
|
+
# @param [Chef::Node] node
|
91
|
+
#
|
92
|
+
# @return [Boolean]
|
93
|
+
# true if the machine is currently running under openvz, false
|
94
|
+
# otherwise
|
95
|
+
#
|
96
|
+
def openvz?(node)
|
97
|
+
node.key?('virtualization') && node['virtualization']['system'] == 'openvz'
|
98
|
+
end
|
99
|
+
|
100
|
+
def virtual?(node)
|
101
|
+
openvz?(node) || vmware?(node) || virtualbox?(node) || parallels?(node) || lxc?(node) || kvm?(node)
|
102
|
+
end
|
103
|
+
|
104
|
+
def physical?(node)
|
105
|
+
!virtual?(node)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
module DSL
|
110
|
+
# @see Chef::Sugar::Virtualization#kvm?
|
111
|
+
def kvm?
|
112
|
+
Chef::Sugar::Virtualization.kvm?(node)
|
113
|
+
end
|
114
|
+
|
115
|
+
# @see Chef::Sugar::Virtualization#lxc?
|
116
|
+
def lxc?
|
117
|
+
Chef::Sugar::Virtualization.lxc?(node)
|
118
|
+
end
|
119
|
+
|
120
|
+
# @see Chef::Sugar::Virtualization#parallels?
|
121
|
+
def parallels?
|
122
|
+
Chef::Sugar::Virtualization.parallels?(node)
|
123
|
+
end
|
124
|
+
|
125
|
+
# @see Chef::Sugar::Virtualization#virtualbox?
|
126
|
+
def virtualbox?
|
127
|
+
Chef::Sugar::Virtualization.virtualbox?(node)
|
128
|
+
end
|
129
|
+
|
130
|
+
# @see Chef::Sugar::Virtualization#vmware?
|
131
|
+
def vmware?
|
132
|
+
Chef::Sugar::Virtualization.vmware?(node)
|
133
|
+
end
|
134
|
+
|
135
|
+
# @see Chef::Sugar::Virtualization#openvz?
|
136
|
+
def openvz?
|
137
|
+
Chef::Sugar::Virtualization.openvz?(node)
|
138
|
+
end
|
139
|
+
|
140
|
+
# @see Chef::Sugar::Virtualization#virtual?
|
141
|
+
def virtual?
|
142
|
+
Chef::Sugar::Virtualization.virtual?(node)
|
143
|
+
end
|
144
|
+
|
145
|
+
# @see Chef::Sugar::Virtualization#physical?
|
146
|
+
def physical?
|
147
|
+
Chef::Sugar::Virtualization.physical?(node)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require "chef/sugar"
|
data/metadata.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
name 'chef-sugar'
|
2
|
+
maintainer 'Seth Vargo'
|
3
|
+
maintainer_email 'sethvargo@gmail.com'
|
4
|
+
license 'Apache-2.0'
|
5
|
+
description 'Installs chef-sugar. Please see the chef-sugar ' \
|
6
|
+
'Ruby gem for more information.'
|
7
|
+
long_description <<-EOH
|
8
|
+
Chef Sugar is a Gem & Chef Recipe that includes series of helpful syntactic
|
9
|
+
sugars on top of the Chef core and other resources to make a cleaner, more lean
|
10
|
+
recipe DSL, enforce DRY principles, and make writing Chef recipes an awesome and
|
11
|
+
fun experience!
|
12
|
+
|
13
|
+
For the most up-to-date information and documentation, please visit the [Chef
|
14
|
+
Sugar project page on GitHub](https://github.com/sethvargo/chef-sugar).
|
15
|
+
EOH
|
16
|
+
|
17
|
+
require File.expand_path('../lib/chef/sugar/version', __FILE__)
|
18
|
+
version Chef::Sugar::VERSION
|
19
|
+
|
20
|
+
supports 'any'
|
21
|
+
issues_url 'https://github.com/sethvargo/chef-sugar/issues'
|
22
|
+
source_url 'https://github.com/sethvargo/chef-sugar'
|
23
|
+
chef_version '>= 12.10.48' if respond_to?(:chef_version)
|
24
|
+
gem 'chef-sugar-ng'
|
data/recipes/default.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: chef-sugar
|
3
|
+
# Recipe:: default
|
4
|
+
#
|
5
|
+
# Copyright 2013-2015, Seth Vargo <sethvargo@gmail.com>
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
Chef::Log.warn('chef-sugar::default no longer needs to be included in your runlist. Instead simply depend on the chef-sugar cookbook and the gem will be intalled and loaded automatically.')
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'rspec'
|
2
|
+
require 'chefspec'
|
3
|
+
require 'chef/sugar'
|
4
|
+
|
5
|
+
require_relative 'support/shared_examples'
|
6
|
+
|
7
|
+
RSpec.configure do |config|
|
8
|
+
# Prohibit using the should syntax
|
9
|
+
config.expect_with :rspec do |spec|
|
10
|
+
spec.syntax = :expect
|
11
|
+
end
|
12
|
+
|
13
|
+
# Focus groups
|
14
|
+
config.filter_run(focus: true)
|
15
|
+
config.run_all_when_everything_filtered = true
|
16
|
+
|
17
|
+
# Run specs in random order to surface order dependencies. If you find an
|
18
|
+
# order dependency and want to debug it, you can fix the order by providing
|
19
|
+
# the seed, which is printed after each run.
|
20
|
+
# --seed 1234
|
21
|
+
config.order = 'random'
|
22
|
+
|
23
|
+
# ChefSpec configuration
|
24
|
+
config.log_level = :fatal
|
25
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module RSpec
|
2
|
+
shared_examples 'a chef sugar' do
|
3
|
+
it 'acts as a singleton' do
|
4
|
+
described_class.module_eval("def foo; 'result'; end")
|
5
|
+
klass = Class.new.tap { |k| k.send(:include, described_class) }
|
6
|
+
expect(described_class.foo).to eq(klass.new.foo)
|
7
|
+
end
|
8
|
+
|
9
|
+
described_class.instance_methods.each do |name|
|
10
|
+
it "defines a `#{name}` DSL method" do
|
11
|
+
expect(Chef::Sugar::DSL).to be_method_defined(name)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'has n-1 arity from the parent method' do
|
15
|
+
method = Chef::Sugar::DSL.instance_method(name)
|
16
|
+
expect(method.arity).to eq(described_class.method(name).arity - 1)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chef::Sugar::Architecture do
|
4
|
+
it_behaves_like 'a chef sugar'
|
5
|
+
|
6
|
+
_64_bit_machines = %w(amd64 x86_64 ppc64 ppc64le s390x ia64 sparc64 aarch64 arch64 arm64 sun4u sun4v)
|
7
|
+
_intel_machines = %w(i86pc i386 x86_64 amd64 i686)
|
8
|
+
|
9
|
+
describe '#_64_bit?' do
|
10
|
+
_64_bit_machines.each do |arch|
|
11
|
+
it "returns true when the system is #{arch}" do
|
12
|
+
node = { 'kernel' => { 'machine' => arch } }
|
13
|
+
expect(described_class._64_bit?(node)).to be true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'returns true when ohai provides the bittiness' do
|
18
|
+
node = { 'kernel' => { 'bits' => '64' } }
|
19
|
+
expect(described_class._64_bit?(node)).to be true
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'returns false when ohai provides the bittiness' do
|
23
|
+
node = { 'kernel' => { 'bits' => '32' } }
|
24
|
+
expect(described_class._64_bit?(node)).to be false
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'returns false when the system is not 64 bit' do
|
28
|
+
node = { 'kernel' => { 'machine' => 'i386' } }
|
29
|
+
expect(described_class._64_bit?(node)).to be false
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '#_32_bit?' do
|
34
|
+
it 'returns true when the system is 32 bit' do
|
35
|
+
node = { 'kernel' => { 'machine' => 'i386' } }
|
36
|
+
expect(described_class._32_bit?(node)).to be true
|
37
|
+
end
|
38
|
+
|
39
|
+
_64_bit_machines.each do |arch|
|
40
|
+
it "returns false when the system is #{arch}" do
|
41
|
+
node = { 'kernel' => { 'machine' => arch } }
|
42
|
+
expect(described_class._32_bit?(node)).to be false
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#i386?' do
|
48
|
+
it 'returns true when the system is 32 bit' do
|
49
|
+
node = { 'kernel' => { 'machine' => 'i386' } }
|
50
|
+
expect(described_class.i386?(node)).to be true
|
51
|
+
end
|
52
|
+
|
53
|
+
_64_bit_machines.each do |arch|
|
54
|
+
it "returns false when the system is #{arch}" do
|
55
|
+
node = { 'kernel' => { 'machine' => arch } }
|
56
|
+
expect(described_class.i386?(node)).to be false
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe '#intel?' do
|
62
|
+
_intel_machines.each do |arch|
|
63
|
+
it "returns true when the system is #{arch}" do
|
64
|
+
node = { 'kernel' => { 'machine' => arch } }
|
65
|
+
expect(described_class.intel?(node)).to be true
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'returns false when the system is non Intel' do
|
69
|
+
node = { 'kernel' => { 'machine' => 'sun4u' } }
|
70
|
+
expect(described_class.intel?(node)).to be false
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
describe '#powerpc?' do
|
76
|
+
it 'returns true when the system is IBM POWER or powerpc' do
|
77
|
+
node = { 'kernel' => { 'machine' => 'powerpc' } }
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe '#armhf?' do
|
82
|
+
it 'returns true when the system is ARM' do
|
83
|
+
node = { 'kernel' => { 'machine' => 'armv7l' } }
|
84
|
+
expect(described_class.intel?(node)).to be false
|
85
|
+
expect(described_class.armhf?(node)).to be true
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '#aarch64?' do
|
90
|
+
it 'returns true when the system is AArch64' do
|
91
|
+
node = { 'kernel' => { 'machine' => 'aarch64' } }
|
92
|
+
expect(described_class.intel?(node)).to be false
|
93
|
+
expect(described_class.aarch64?(node)).to be true
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe '#sparc?' do
|
98
|
+
it 'returns true when the system is SPARC sun4u' do
|
99
|
+
node = { 'kernel' => { 'machine' => 'sun4u' } }
|
100
|
+
expect(described_class.sparc?(node)).to be true
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'returns true when the system is SPARC sun4v' do
|
104
|
+
node = { 'kernel' => { 'machine' => 'sun4v' } }
|
105
|
+
expect(described_class.sparc?(node)).to be true
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe '#ppc64?' do
|
110
|
+
it 'returns true when the system is PowerPC64 Big Endian' do
|
111
|
+
node = { 'kernel' => { 'machine' => 'ppc64' } }
|
112
|
+
expect(described_class.ppc64?(node)).to be true
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
describe '#ppc64le?' do
|
117
|
+
it 'returns true when the system is PowerPC64 Little Endian' do
|
118
|
+
node = { 'kernel' => { 'machine' => 'ppc64le' } }
|
119
|
+
expect(described_class.ppc64le?(node)).to be true
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
describe '#s390x?' do
|
124
|
+
it 'returns true when the system is s390x' do
|
125
|
+
node = { 'kernel' => { 'machine' => 's390x' } }
|
126
|
+
expect(described_class.s390x?(node)).to be true
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,149 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Chef::Sugar::Cloud do
|
4
|
+
it_behaves_like 'a chef sugar'
|
5
|
+
|
6
|
+
describe '#cloud?' do
|
7
|
+
it 'is true when the node is on cloud' do
|
8
|
+
node = { 'cloud' => nil }
|
9
|
+
expect(described_class.cloud?(node)).to be true
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'is false when the node is not on cloud' do
|
13
|
+
node = {}
|
14
|
+
expect(described_class.cloud?(node)).to be false
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#ec2?' do
|
19
|
+
it 'is true when the node is on ec2' do
|
20
|
+
node = { 'ec2' => nil }
|
21
|
+
expect(described_class.ec2?(node)).to be true
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'is false when the node is not on ec2' do
|
25
|
+
node = {}
|
26
|
+
expect(described_class.ec2?(node)).to be false
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#gce?' do
|
31
|
+
it 'is true when the node is on gce' do
|
32
|
+
node = { 'gce' => nil }
|
33
|
+
expect(described_class.gce?(node)).to be true
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'is false when the node is not on gce' do
|
37
|
+
node = {}
|
38
|
+
expect(described_class.gce?(node)).to be false
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '#rackspace?' do
|
43
|
+
it 'is true when the node is on rackspace' do
|
44
|
+
node = { 'rackspace' => nil }
|
45
|
+
expect(described_class.rackspace?(node)).to be true
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'is false when the node is not on rackspace' do
|
49
|
+
node = {}
|
50
|
+
expect(described_class.rackspace?(node)).to be false
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe '#eucalyptus?' do
|
55
|
+
it 'is true when the node is on eucalyptus' do
|
56
|
+
node = { 'eucalyptus' => nil }
|
57
|
+
expect(described_class.eucalyptus?(node)).to be true
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'is false when the node is not on eucalyptus' do
|
61
|
+
node = {}
|
62
|
+
expect(described_class.eucalyptus?(node)).to be false
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#euca?' do
|
67
|
+
it 'is true when the node is on eucalyptus' do
|
68
|
+
node = { 'eucalyptus' => nil }
|
69
|
+
expect(described_class.euca?(node)).to be true
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'is false when the node is not on eucalyptus' do
|
73
|
+
node = {}
|
74
|
+
expect(described_class.euca?(node)).to be false
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe '#linode?' do
|
79
|
+
it 'is true when the node is on linode' do
|
80
|
+
node = { 'linode' => nil }
|
81
|
+
expect(described_class.linode?(node)).to be true
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'is false when the node is not on linode' do
|
85
|
+
node = {}
|
86
|
+
expect(described_class.linode?(node)).to be false
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe '#openstack?' do
|
91
|
+
it 'is true when the node is on openstack' do
|
92
|
+
node = { 'openstack' => nil }
|
93
|
+
expect(described_class.openstack?(node)).to be true
|
94
|
+
end
|
95
|
+
|
96
|
+
it 'is false when the node is not on openstack' do
|
97
|
+
node = {}
|
98
|
+
expect(described_class.openstack?(node)).to be false
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe '#cloudstack?' do
|
103
|
+
it 'is true when the node is on cloudstack' do
|
104
|
+
node = { 'cloudstack' => nil }
|
105
|
+
expect(described_class.cloudstack?(node)).to be true
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'is false when the node is not on cloudstack' do
|
109
|
+
node = {}
|
110
|
+
expect(described_class.cloudstack?(node)).to be false
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe '#azure?' do
|
115
|
+
it 'is true when the node is on azure' do
|
116
|
+
node = { 'azure' => nil }
|
117
|
+
expect(described_class.azure?(node)).to be true
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'is false when the node is not on azure' do
|
121
|
+
node = {}
|
122
|
+
expect(described_class.azure?(node)).to be false
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe '#digitalocean?' do
|
127
|
+
it 'is true when the node is on digitalocean' do
|
128
|
+
node = { 'digital_ocean' => nil }
|
129
|
+
expect(described_class.digitalocean?(node)).to be true
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'is false when the node is not on digitalocean' do
|
133
|
+
node = {}
|
134
|
+
expect(described_class.digitalocean?(node)).to be false
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
describe '#softlayer?' do
|
139
|
+
it 'is true when the node is on softlayer' do
|
140
|
+
node = { 'softlayer' => nil }
|
141
|
+
expect(described_class.softlayer?(node)).to be true
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'is false when the node is not on softlayer' do
|
145
|
+
node = {}
|
146
|
+
expect(described_class.softlayer?(node)).to be false
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|