ridley 1.1.1 → 1.2.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.
- data/Gemfile +1 -1
- data/Thorfile +3 -1
- data/bootstrappers/windows_omnibus.erb +2 -1
- data/lib/ridley.rb +0 -2
- data/lib/ridley/bootstrap_context/windows.rb +2 -2
- data/lib/ridley/chef/cookbook.rb +2 -2
- data/lib/ridley/chef/cookbook/metadata.rb +2 -2
- data/lib/ridley/chef_object.rb +5 -3
- data/lib/ridley/chef_objects/cookbook_object.rb +1 -1
- data/lib/ridley/chef_objects/environment_object.rb +4 -4
- data/lib/ridley/chef_objects/role_object.rb +4 -4
- data/lib/ridley/host_connector/winrm.rb +0 -1
- data/lib/ridley/mixin/from_file.rb +53 -0
- data/lib/ridley/mixin/params_validate.rb +218 -0
- data/lib/ridley/resource.rb +1 -1
- data/lib/ridley/resources/cookbook_resource.rb +1 -1
- data/lib/ridley/version.rb +1 -1
- data/ridley.gemspec +18 -14
- data/spec/spec_helper.rb +2 -2
- data/spec/unit/ridley/bootstrap_context/windows_spec.rb +6 -0
- data/spec/unit/ridley/chef/cookbook_spec.rb +2 -2
- data/spec/unit/ridley/chef_objects/node_object_spec.rb +4 -4
- data/spec/unit/ridley/resource_spec.rb +2 -2
- data/spec/unit/ridley/resources/node_resource_spec.rb +1 -1
- metadata +59 -9
data/Gemfile
CHANGED
data/Thorfile
CHANGED
data/lib/ridley.rb
CHANGED
@@ -98,8 +98,8 @@ module Ridley
|
|
98
98
|
end
|
99
99
|
|
100
100
|
# @return [String]
|
101
|
-
def
|
102
|
-
"
|
101
|
+
def env_path
|
102
|
+
"C:\\opscode\\chef\\bin;C:\\opscode\\chef\\embedded\\bin"
|
103
103
|
end
|
104
104
|
|
105
105
|
# @return [String]
|
data/lib/ridley/chef/cookbook.rb
CHANGED
@@ -187,9 +187,9 @@ module Ridley::Chef
|
|
187
187
|
result[:name] = name
|
188
188
|
result[:cookbook_name] = cookbook_name
|
189
189
|
result[:version] = version
|
190
|
-
result[:metadata] = metadata
|
190
|
+
result[:metadata] = metadata.to_hash
|
191
191
|
result[:frozen?] = frozen
|
192
|
-
result
|
192
|
+
result
|
193
193
|
end
|
194
194
|
|
195
195
|
def to_json(*args)
|
@@ -55,8 +55,8 @@ module Ridley::Chef
|
|
55
55
|
:replacing, :attributes, :groupings, :recipes, :version
|
56
56
|
]
|
57
57
|
|
58
|
-
include
|
59
|
-
include
|
58
|
+
include Ridley::Mixin::ParamsValidate
|
59
|
+
include Ridley::Mixin::FromFile
|
60
60
|
|
61
61
|
attr_reader :cookbook
|
62
62
|
attr_reader :platforms
|
data/lib/ridley/chef_object.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'varia_model'
|
2
|
+
|
1
3
|
module Ridley
|
2
4
|
class ChefObject
|
3
5
|
class << self
|
@@ -6,7 +8,7 @@ module Ridley
|
|
6
8
|
@chef_id
|
7
9
|
end
|
8
10
|
|
9
|
-
# @param [
|
11
|
+
# @param [#to_sym] identifier
|
10
12
|
#
|
11
13
|
# @return [String]
|
12
14
|
def set_chef_id(identifier)
|
@@ -18,7 +20,7 @@ module Ridley
|
|
18
20
|
@chef_type ||= self.class.name.underscore
|
19
21
|
end
|
20
22
|
|
21
|
-
# @param [
|
23
|
+
# @param [#to_s] type
|
22
24
|
#
|
23
25
|
# @return [String]
|
24
26
|
def set_chef_type(type)
|
@@ -40,7 +42,7 @@ module Ridley
|
|
40
42
|
end
|
41
43
|
end
|
42
44
|
|
43
|
-
include
|
45
|
+
include VariaModel
|
44
46
|
include Comparable
|
45
47
|
|
46
48
|
# @param [Ridley::Resource] resource
|
@@ -98,7 +98,7 @@ module Ridley
|
|
98
98
|
#
|
99
99
|
# @param [#to_sym] filetype
|
100
100
|
# the type of file to download. These are broken up into the following types in Chef:
|
101
|
-
# - attribute
|
101
|
+
# - attribute
|
102
102
|
# - definition
|
103
103
|
# - file
|
104
104
|
# - library
|
@@ -31,9 +31,9 @@ module Ridley
|
|
31
31
|
# @param [String] key
|
32
32
|
# @param [Object] value
|
33
33
|
#
|
34
|
-
# @return [
|
34
|
+
# @return [Hashie::Mash]
|
35
35
|
def set_default_attribute(key, value)
|
36
|
-
attr_hash =
|
36
|
+
attr_hash = Hashie::Mash.from_dotted_path(key, value)
|
37
37
|
self.default_attributes = self.default_attributes.deep_merge(attr_hash)
|
38
38
|
end
|
39
39
|
|
@@ -49,9 +49,9 @@ module Ridley
|
|
49
49
|
# @param [String] key
|
50
50
|
# @param [Object] value
|
51
51
|
#
|
52
|
-
# @return [
|
52
|
+
# @return [Hashie::Mash]
|
53
53
|
def set_override_attribute(key, value)
|
54
|
-
attr_hash =
|
54
|
+
attr_hash = Hashie::Mash.from_dotted_path(key, value)
|
55
55
|
self.override_attributes = self.override_attributes.deep_merge(attr_hash)
|
56
56
|
end
|
57
57
|
end
|
@@ -34,9 +34,9 @@ module Ridley
|
|
34
34
|
# @param [String] key
|
35
35
|
# @param [Object] value
|
36
36
|
#
|
37
|
-
# @return [
|
37
|
+
# @return [Hashie::Mash]
|
38
38
|
def set_override_attribute(key, value)
|
39
|
-
attr_hash =
|
39
|
+
attr_hash = Hashie::Mash.from_dotted_path(key, value)
|
40
40
|
self.override_attributes = self.override_attributes.deep_merge(attr_hash)
|
41
41
|
end
|
42
42
|
|
@@ -52,9 +52,9 @@ module Ridley
|
|
52
52
|
# @param [String] key
|
53
53
|
# @param [Object] value
|
54
54
|
#
|
55
|
-
# @return [
|
55
|
+
# @return [Hashie::Mash]
|
56
56
|
def set_default_attribute(key, value)
|
57
|
-
attr_hash =
|
57
|
+
attr_hash = Hashie::Mash.from_dotted_path(key, value)
|
58
58
|
self.default_attributes = self.default_attributes.deep_merge(attr_hash)
|
59
59
|
end
|
60
60
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Ridley::Mixin
|
2
|
+
module FromFile
|
3
|
+
module ClassMethods
|
4
|
+
def from_file(filename, *args)
|
5
|
+
new(*args).from_file(filename)
|
6
|
+
end
|
7
|
+
|
8
|
+
def class_from_file(filename, *args)
|
9
|
+
new(*args).class_from_file(filename)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def included(base)
|
15
|
+
base.extend(ClassMethods)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Loads the contents of a file within the context of the current object
|
20
|
+
#
|
21
|
+
# @param [#to_s] filename
|
22
|
+
# path to the file to load
|
23
|
+
#
|
24
|
+
# @raise [IOError] if the file does not exist or cannot be read
|
25
|
+
def from_file(filename)
|
26
|
+
filename = filename.to_s
|
27
|
+
|
28
|
+
if File.exists?(filename) && File.readable?(filename)
|
29
|
+
self.instance_eval(IO.read(filename), filename, 1)
|
30
|
+
self
|
31
|
+
else
|
32
|
+
raise IOError, "Could not open or read: '#{filename}'"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Loads the contents of a file within the context of the current object's class
|
37
|
+
#
|
38
|
+
# @param [#to_s] filename
|
39
|
+
# path to the file to load
|
40
|
+
#
|
41
|
+
# @raise [IOError] if the file does not exist or cannot be read
|
42
|
+
def class_from_file(filename)
|
43
|
+
filename = filename.to_s
|
44
|
+
|
45
|
+
if File.exists?(filename) && File.readable?(filename)
|
46
|
+
self.class_eval(IO.read(filename), filename, 1)
|
47
|
+
self
|
48
|
+
else
|
49
|
+
raise IOError, "Could not open or read: '#{filename}'"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,218 @@
|
|
1
|
+
module Ridley::Mixin
|
2
|
+
# Borrowed and modified from: {https://raw.github.com/opscode/chef/11.4.0/lib/chef/mixin/params_validate.rb}
|
3
|
+
#
|
4
|
+
# Copyright:: Copyright (c) 2008 Opscode, Inc.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
module ParamsValidate
|
18
|
+
# Takes a hash of options, along with a map to validate them. Returns the original
|
19
|
+
# options hash, plus any changes that might have been made (through things like setting
|
20
|
+
# default values in the validation map)
|
21
|
+
#
|
22
|
+
# For example:
|
23
|
+
#
|
24
|
+
# validate({ :one => "neat" }, { :one => { :kind_of => String }})
|
25
|
+
#
|
26
|
+
# Would raise an exception if the value of :one above is not a kind_of? string. Valid
|
27
|
+
# map options are:
|
28
|
+
#
|
29
|
+
# :default:: Sets the default value for this parameter.
|
30
|
+
# :callbacks:: Takes a hash of Procs, which should return true if the argument is valid.
|
31
|
+
# The key will be inserted into the error message if the Proc does not return true:
|
32
|
+
# "Option #{key}'s value #{value} #{message}!"
|
33
|
+
# :kind_of:: Ensure that the value is a kind_of?(Whatever). If passed an array, it will ensure
|
34
|
+
# that the value is one of those types.
|
35
|
+
# :respond_to:: Ensure that the value has a given method. Takes one method name or an array of
|
36
|
+
# method names.
|
37
|
+
# :required:: Raise an exception if this parameter is missing. Valid values are true or false,
|
38
|
+
# by default, options are not required.
|
39
|
+
# :regex:: Match the value of the paramater against a regular expression.
|
40
|
+
# :equal_to:: Match the value of the paramater with ==. An array means it can be equal to any
|
41
|
+
# of the values.
|
42
|
+
def validate(opts, map)
|
43
|
+
#--
|
44
|
+
# validate works by taking the keys in the validation map, assuming it's a hash, and
|
45
|
+
# looking for _pv_:symbol as methods. Assuming it find them, it calls the right
|
46
|
+
# one.
|
47
|
+
#++
|
48
|
+
raise ArgumentError, "Options must be a hash" unless opts.kind_of?(Hash)
|
49
|
+
raise ArgumentError, "Validation Map must be a hash" unless map.kind_of?(Hash)
|
50
|
+
|
51
|
+
map.each do |key, validation|
|
52
|
+
unless key.kind_of?(Symbol) || key.kind_of?(String)
|
53
|
+
raise ArgumentError, "Validation map keys must be symbols or strings!"
|
54
|
+
end
|
55
|
+
case validation
|
56
|
+
when true
|
57
|
+
_pv_required(opts, key)
|
58
|
+
when false
|
59
|
+
true
|
60
|
+
when Hash
|
61
|
+
validation.each do |check, carg|
|
62
|
+
check_method = "_pv_#{check.to_s}"
|
63
|
+
if self.respond_to?(check_method, true)
|
64
|
+
self.send(check_method, opts, key, carg)
|
65
|
+
else
|
66
|
+
raise ArgumentError, "Validation map has unknown check: #{check}"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
opts
|
72
|
+
end
|
73
|
+
|
74
|
+
def set_or_return(symbol, arg, validation)
|
75
|
+
iv_symbol = "@#{symbol.to_s}".to_sym
|
76
|
+
map = {
|
77
|
+
symbol => validation
|
78
|
+
}
|
79
|
+
|
80
|
+
if arg == nil && self.instance_variable_defined?(iv_symbol) == true
|
81
|
+
self.instance_variable_get(iv_symbol)
|
82
|
+
else
|
83
|
+
opts = validate({ symbol => arg }, { symbol => validation })
|
84
|
+
self.instance_variable_set(iv_symbol, opts[symbol])
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
|
90
|
+
# Return the value of a parameter, or nil if it doesn't exist.
|
91
|
+
def _pv_opts_lookup(opts, key)
|
92
|
+
if opts.has_key?(key.to_s)
|
93
|
+
opts[key.to_s]
|
94
|
+
elsif opts.has_key?(key.to_sym)
|
95
|
+
opts[key.to_sym]
|
96
|
+
else
|
97
|
+
nil
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
# Raise an exception if the parameter is not found.
|
102
|
+
def _pv_required(opts, key, is_required=true)
|
103
|
+
if is_required
|
104
|
+
if (opts.has_key?(key.to_s) && !opts[key.to_s].nil?) ||
|
105
|
+
(opts.has_key?(key.to_sym) && !opts[key.to_sym].nil?)
|
106
|
+
true
|
107
|
+
else
|
108
|
+
raise ValidationFailed, "Required argument #{key} is missing!"
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def _pv_equal_to(opts, key, to_be)
|
114
|
+
value = _pv_opts_lookup(opts, key)
|
115
|
+
unless value.nil?
|
116
|
+
passes = false
|
117
|
+
Array(to_be).each do |tb|
|
118
|
+
passes = true if value == tb
|
119
|
+
end
|
120
|
+
unless passes
|
121
|
+
raise ValidationFailed, "Option #{key} must be equal to one of: #{to_be.join(", ")}! You passed #{value.inspect}."
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
# Raise an exception if the parameter is not a kind_of?(to_be)
|
127
|
+
def _pv_kind_of(opts, key, to_be)
|
128
|
+
value = _pv_opts_lookup(opts, key)
|
129
|
+
unless value.nil?
|
130
|
+
passes = false
|
131
|
+
Array(to_be).each do |tb|
|
132
|
+
passes = true if value.kind_of?(tb)
|
133
|
+
end
|
134
|
+
unless passes
|
135
|
+
raise ValidationFailed, "Option #{key} must be a kind of #{to_be}! You passed #{value.inspect}."
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
# Raise an exception if the parameter does not respond to a given set of methods.
|
141
|
+
def _pv_respond_to(opts, key, method_name_list)
|
142
|
+
value = _pv_opts_lookup(opts, key)
|
143
|
+
unless value.nil?
|
144
|
+
Array(method_name_list).each do |method_name|
|
145
|
+
unless value.respond_to?(method_name)
|
146
|
+
raise ValidationFailed, "Option #{key} must have a #{method_name} method!"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
# Assert that parameter returns false when passed a predicate method.
|
153
|
+
# For example, :cannot_be => :blank will raise a ValidationFailed
|
154
|
+
# error value.blank? returns a 'truthy' (not nil or false) value.
|
155
|
+
#
|
156
|
+
# Note, this will *PASS* if the object doesn't respond to the method.
|
157
|
+
# So, to make sure a value is not nil and not blank, you need to do
|
158
|
+
# both :cannot_be => :blank *and* :cannot_be => :nil (or :required => true)
|
159
|
+
def _pv_cannot_be(opts, key, predicate_method_base_name)
|
160
|
+
value = _pv_opts_lookup(opts, key)
|
161
|
+
predicate_method = (predicate_method_base_name.to_s + "?").to_sym
|
162
|
+
|
163
|
+
if value.respond_to?(predicate_method)
|
164
|
+
if value.send(predicate_method)
|
165
|
+
raise ValidationFailed, "Option #{key} cannot be #{predicate_method_base_name}"
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
# Assign a default value to a parameter.
|
171
|
+
def _pv_default(opts, key, default_value)
|
172
|
+
value = _pv_opts_lookup(opts, key)
|
173
|
+
if value == nil
|
174
|
+
opts[key] = default_value
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
# Check a parameter against a regular expression.
|
179
|
+
def _pv_regex(opts, key, regex)
|
180
|
+
value = _pv_opts_lookup(opts, key)
|
181
|
+
if value != nil
|
182
|
+
passes = false
|
183
|
+
[ regex ].flatten.each do |r|
|
184
|
+
if value != nil
|
185
|
+
if r.match(value.to_s)
|
186
|
+
passes = true
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
unless passes
|
191
|
+
raise ValidationFailed, "Option #{key}'s value #{value} does not match regular expression #{regex.inspect}"
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
# Check a parameter against a hash of proc's.
|
197
|
+
def _pv_callbacks(opts, key, callbacks)
|
198
|
+
raise ArgumentError, "Callback list must be a hash!" unless callbacks.kind_of?(Hash)
|
199
|
+
value = _pv_opts_lookup(opts, key)
|
200
|
+
if value != nil
|
201
|
+
callbacks.each do |message, zeproc|
|
202
|
+
if zeproc.call(value) != true
|
203
|
+
raise ValidationFailed, "Option #{key}'s value #{value} #{message}!"
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
# Allow a parameter to default to @name
|
210
|
+
def _pv_name_attribute(opts, key, is_name_attribute=true)
|
211
|
+
if is_name_attribute
|
212
|
+
if opts[key] == nil
|
213
|
+
opts[key] = self.instance_variable_get("@name")
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
end
|
218
|
+
end
|
data/lib/ridley/resource.rb
CHANGED
data/lib/ridley/version.rb
CHANGED
data/ridley.gemspec
CHANGED
@@ -17,18 +17,22 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.version = Ridley::VERSION
|
18
18
|
s.required_ruby_version = ">= 1.9.1"
|
19
19
|
|
20
|
-
s.
|
21
|
-
s.
|
22
|
-
s.
|
23
|
-
s.
|
24
|
-
s.
|
25
|
-
s.
|
26
|
-
s.
|
27
|
-
s.
|
28
|
-
s.
|
29
|
-
s.
|
30
|
-
s.
|
31
|
-
s.
|
32
|
-
s.
|
33
|
-
s.
|
20
|
+
s.add_dependency 'addressable'
|
21
|
+
s.add_dependency 'varia_model', '~> 0.1'
|
22
|
+
s.add_dependency 'buff-extensions', '~> 0.3'
|
23
|
+
s.add_dependency 'buff-shell_out', '~> 0.1'
|
24
|
+
s.add_dependency 'celluloid', '~> 0.14.0'
|
25
|
+
s.add_dependency 'celluloid-io', '~> 0.14.0'
|
26
|
+
s.add_dependency 'erubis'
|
27
|
+
s.add_dependency 'faraday', '>= 0.8.4'
|
28
|
+
s.add_dependency 'hashie', '>= 2.0.2'
|
29
|
+
s.add_dependency 'json', '>= 1.7.7'
|
30
|
+
s.add_dependency 'mixlib-authentication', '>= 1.3.0'
|
31
|
+
s.add_dependency 'net-http-persistent', '>= 2.8'
|
32
|
+
s.add_dependency 'net-ssh'
|
33
|
+
s.add_dependency 'retryable'
|
34
|
+
s.add_dependency 'solve', '>= 0.4.4'
|
35
|
+
s.add_dependency 'winrm', '~> 1.1.0'
|
36
|
+
|
37
|
+
s.add_development_dependency "buff-ruby_engine", "~> 0.1"
|
34
38
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler'
|
3
|
-
require '
|
3
|
+
require 'buff/ruby_engine'
|
4
4
|
|
5
5
|
def setup_rspec
|
6
6
|
require 'rspec'
|
@@ -35,7 +35,7 @@ def setup_rspec
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
if mri? && ENV['CI'] != 'true'
|
38
|
+
if Buff::RubyEngine.mri? && ENV['CI'] != 'true'
|
39
39
|
require 'spork'
|
40
40
|
|
41
41
|
Spork.prefork do
|
@@ -82,6 +82,12 @@ describe Ridley::BootstrapContext::Windows do
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
describe "#env_path" do
|
86
|
+
it "returns a string" do
|
87
|
+
expect(subject.env_path).to be_a(String)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
85
91
|
describe "#default_template" do
|
86
92
|
it "returns a string" do
|
87
93
|
subject.default_template.should be_a(String)
|
@@ -403,9 +403,9 @@ describe Ridley::Chef::Cookbook do
|
|
403
403
|
subject[:cookbook_name].should be_a(String)
|
404
404
|
end
|
405
405
|
|
406
|
-
it "has a :metadata key with a
|
406
|
+
it "has a :metadata key with a Hashie::Mash value" do
|
407
407
|
subject.should have_key(:metadata)
|
408
|
-
subject[:metadata].should be_a(
|
408
|
+
subject[:metadata].should be_a(Hashie::Mash)
|
409
409
|
end
|
410
410
|
|
411
411
|
it "has a :version key with a String value" do
|
@@ -13,22 +13,22 @@ describe Ridley::NodeObject do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "includes default attributes" do
|
16
|
-
instance.default = default = { default
|
16
|
+
instance.default = default = { "default" => { "one" => "val", "two" => "val" } }
|
17
17
|
expect(subject.to_hash).to include(default)
|
18
18
|
end
|
19
19
|
|
20
20
|
it "includes normal attributes" do
|
21
|
-
instance.normal = normal = { normal
|
21
|
+
instance.normal = normal = { "normal" => { "one" => "val", "two" => "val" } }
|
22
22
|
expect(subject.to_hash).to include(normal)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "includes override attributes" do
|
26
|
-
instance.override = override = { override
|
26
|
+
instance.override = override = { "override" => { "one" => "val", "two" => "val" } }
|
27
27
|
expect(subject.to_hash).to include(override)
|
28
28
|
end
|
29
29
|
|
30
30
|
it "includes automatic attributes" do
|
31
|
-
instance.automatic = automatic = { automatic
|
31
|
+
instance.automatic = automatic = { "automatic" => { "one" => "val", "two" => "val" } }
|
32
32
|
expect(subject.to_hash).to include(automatic)
|
33
33
|
end
|
34
34
|
|
@@ -30,8 +30,8 @@ describe Ridley::Resource do
|
|
30
30
|
context "when not explicitly set" do
|
31
31
|
before { subject.set_resource_path(nil) }
|
32
32
|
|
33
|
-
it "returns the representation's chef type
|
34
|
-
subject.resource_path.should eql(representation.chef_type
|
33
|
+
it "returns the representation's chef type" do
|
34
|
+
subject.resource_path.should eql(representation.chef_type)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
@@ -91,7 +91,7 @@ describe Ridley::NodeResource do
|
|
91
91
|
end
|
92
92
|
|
93
93
|
it "has a deep merge between the attributes of the original node and the new attributes" do
|
94
|
-
expect(result.normal.to_hash).to eql(deep
|
94
|
+
expect(result.normal.to_hash).to eql("deep" => { "one" => "val", "two" => "val" })
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ridley
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-06-
|
13
|
+
date: 2013-06-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: addressable
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: '0'
|
31
31
|
- !ruby/object:Gem::Dependency
|
32
|
-
name:
|
32
|
+
name: varia_model
|
33
33
|
requirement: !ruby/object:Gem::Requirement
|
34
34
|
none: false
|
35
35
|
requirements:
|
@@ -45,21 +45,37 @@ dependencies:
|
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0.1'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
48
|
+
name: buff-extensions
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: '0.3'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
none: false
|
59
59
|
requirements:
|
60
|
-
- -
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.3'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: buff-shell_out
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ~>
|
61
69
|
- !ruby/object:Gem::Version
|
62
|
-
version: 0.
|
70
|
+
version: '0.1'
|
71
|
+
type: :runtime
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ~>
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0.1'
|
63
79
|
- !ruby/object:Gem::Dependency
|
64
80
|
name: celluloid
|
65
81
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,6 +156,22 @@ dependencies:
|
|
140
156
|
- - ! '>='
|
141
157
|
- !ruby/object:Gem::Version
|
142
158
|
version: 2.0.2
|
159
|
+
- !ruby/object:Gem::Dependency
|
160
|
+
name: json
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 1.7.7
|
167
|
+
type: :runtime
|
168
|
+
prerelease: false
|
169
|
+
version_requirements: !ruby/object:Gem::Requirement
|
170
|
+
none: false
|
171
|
+
requirements:
|
172
|
+
- - ! '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: 1.7.7
|
143
175
|
- !ruby/object:Gem::Dependency
|
144
176
|
name: mixlib-authentication
|
145
177
|
requirement: !ruby/object:Gem::Requirement
|
@@ -236,6 +268,22 @@ dependencies:
|
|
236
268
|
- - ~>
|
237
269
|
- !ruby/object:Gem::Version
|
238
270
|
version: 1.1.0
|
271
|
+
- !ruby/object:Gem::Dependency
|
272
|
+
name: buff-ruby_engine
|
273
|
+
requirement: !ruby/object:Gem::Requirement
|
274
|
+
none: false
|
275
|
+
requirements:
|
276
|
+
- - ~>
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '0.1'
|
279
|
+
type: :development
|
280
|
+
prerelease: false
|
281
|
+
version_requirements: !ruby/object:Gem::Requirement
|
282
|
+
none: false
|
283
|
+
requirements:
|
284
|
+
- - ~>
|
285
|
+
- !ruby/object:Gem::Version
|
286
|
+
version: '0.1'
|
239
287
|
description: A reliable Chef API client with a clean syntax
|
240
288
|
email:
|
241
289
|
- reset@riotgames.com
|
@@ -296,6 +344,8 @@ files:
|
|
296
344
|
- lib/ridley/middleware/retry.rb
|
297
345
|
- lib/ridley/mixin.rb
|
298
346
|
- lib/ridley/mixin/checksum.rb
|
347
|
+
- lib/ridley/mixin/from_file.rb
|
348
|
+
- lib/ridley/mixin/params_validate.rb
|
299
349
|
- lib/ridley/resource.rb
|
300
350
|
- lib/ridley/resources.rb
|
301
351
|
- lib/ridley/resources/client_resource.rb
|
@@ -404,7 +454,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
404
454
|
version: '0'
|
405
455
|
segments:
|
406
456
|
- 0
|
407
|
-
hash:
|
457
|
+
hash: 1580107722882727150
|
408
458
|
requirements: []
|
409
459
|
rubyforge_project:
|
410
460
|
rubygems_version: 1.8.23
|