chef-provisioning 0.16 → 0.17

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: 23afd85ce662e97baf1a66a52c65791cac55177b
4
- data.tar.gz: 49f246eccc49f87c330171b9bb4e0205ae64f23b
3
+ metadata.gz: e0c37376aede638b149fb1aa359b47260e7dd532
4
+ data.tar.gz: c75da4c89e3b9cd12a5a97906f1cc708b4f42989
5
5
  SHA512:
6
- metadata.gz: 9ece1ec96f1ed60e46ec0e51f2d10127d2fd72ff9b0d5c97b1ca6d847c16512cbc30d935e9931c94303f6ac213d64a3f9c2f9c70f52e558d3d0a4cf2fba16bcb
7
- data.tar.gz: 70becfd68e69d7e2f95d77ba60232efe89720ebb4c612ced09f446a906912dd98b8d082fa7d716cf051601261da20fd9c8cecf29cdd08bb9d2d5cf81602317f1
6
+ metadata.gz: 27e6d46bbeb25ba1185014913f7c20c5a0adeb73ffe9c1bae191ec914fb3ccfc2ca795a657ab52333720643a80231ea2bead2b65bd899654dfcf7a3c08d313e9
7
+ data.tar.gz: 9a043f593fa6db7f7a8275fa2a21286bad930bb1be47249dfaa1b0331570d6defefcb51c57dc67b3158168d6ec24f454700245c590220c73f14b19b315eb1172
data/CHANGELOG.md CHANGED
@@ -1,4 +1,16 @@
1
1
  # Chef Provisioning Changelog
2
+
3
+ ## 0.17 (12/17/2014)
4
+
5
+ - Make machine batch convergent
6
+ - Consolidate load balancer create and update
7
+ - Update some URLs
8
+ - SSL verification fix
9
+ - Test suites
10
+ - Auto-create image data bags
11
+ - Remove some un-needed dependencies
12
+ - Wipe out SSH keys in debug messages
13
+
2
14
  ## 0.16 (11/4/2014)
3
15
 
4
16
  - Make it work with Chef 12
data/README.md CHANGED
@@ -16,6 +16,7 @@ Date | Blog
16
16
 
17
17
  Documentation
18
18
  -------------
19
+ * [Chef Docs](https://docs.getchef.com/provisioning.html)
19
20
  * [Frequently Asked Questions](https://github.com/opscode/chef-provisioning/blob/master/docs/faq.md)
20
21
  * [Configuration](https://github.com/opscode/chef-provisioning/blob/master/docs/configuration.md#configuring-and-using-provisioning-drivers)
21
22
  * [Writing Drivers](https://github.com/opscode/chef-provisioning/blob/master/docs/building_drivers.md#writing-drivers)
@@ -118,18 +119,22 @@ Drivers save their data in the Chef node itself, so that they will be accessible
118
119
  Drivers each have their own repository. Current drivers:
119
120
 
120
121
  **Cloud:**
122
+ - [AWS](https://github.com/opscode/chef-provisioning-aws)
123
+ - [Azure](https://github.com/opscode/chef-provisioning-azure)
121
124
  - [FOG: EC2, DigitalOcean, OpenStack, etc.](https://github.com/opscode/chef-provisioning-fog)
122
125
 
123
126
  **Virtualization:**
124
127
  - [Vagrant: VirtualBox, VMWare Fusion, etc.](https://github.com/opscode/chef-provisioning-vagrant)
125
- - [VSphere](https://github.com/RallySoftware-cookbooks/chef-provisioning-vsphere) (not yet up to date with 0.11)
128
+ - [VSphere](https://github.com/RallySoftware-cookbooks/chef-metal-vsphere) (not yet up to date with 0.11)
126
129
 
127
130
  **Containers:**
128
- - [LXC](https://github.com/opscode/chef-provisioning-lxc) (not yet up to date with 0.11)
129
131
  - [Docker](https://github.com/opscode/chef-provisioning-docker)
132
+ - [LXC](https://github.com/opscode/chef-provisioning-lxc)
130
133
 
131
134
  **Bare Metal:**
132
- - [SSH (no PXE)](https://github.com/double-z/chef-provisioning-ssh) (not yet up to date with 0.11)
135
+ - [Hanlon](https://github.com/opscode/chef-provisioning-hanlon)
136
+ - [OpenCrowbar](https://github.com/newgoliath/chef-provisioning-crowbar) OpenCrowbar controls your real metal. It discovers, inventories, configs RAID & BIOS and networks, and installs your OS. [OpenCrowbar website](http://www.opencrowbar.org) [OpenCrowbar github](https://github.com/opencrowbar/core)
137
+ - [SSH (no PXE)](https://github.com/double-z/chef-metal-ssh) (not yet up to date with 0.11)
133
138
 
134
139
  ### Anatomy of a Recipe
135
140
 
@@ -147,7 +152,7 @@ The driver is specified on the command line. Drivers are URLs. You could use `
147
152
  The `vagrant_linux.rb` recipe handles the physical specification of the machines and Vagrant box:
148
153
 
149
154
  ```ruby
150
- require 'chef/provisioning_vagrant'
155
+ require 'chef/provisioning/vagrant_driver'
151
156
 
152
157
  vagrant_box 'precise64' do
153
158
  url 'http://files.vagrantup.com/precise64.box'
@@ -158,7 +163,7 @@ with_machine_options :vagrant_options => {
158
163
  }
159
164
  ```
160
165
 
161
- `require 'chef/provisioning_vagrant'` is how we bring in the `vagrant_box` resource.
166
+ `require 'chef/provisioning/vagrant_driver'` is how we bring in the `vagrant_box` resource.
162
167
 
163
168
  `vagrant_box` makes sure a particular vagrant box exists, and lets you specify `machine_options` for things like port forwarding, OS definitions, and any other vagrant-isms.
164
169
 
@@ -190,7 +195,7 @@ Most Chef Provisioning drivers try hard to provide reasonable defaults so you ca
190
195
  You will usually want to create or input a custom key pair for bootstrap. To customize, specify keys and AMI and other options, you can make recipes like this:
191
196
 
192
197
  ```ruby
193
- require 'chef/provisioning_fog'
198
+ require 'chef/provisioning/fog_driver'
194
199
 
195
200
  fog_key_pair 'my_bootstrap_key'
196
201
 
data/lib/.DS_Store ADDED
Binary file
Binary file
@@ -25,44 +25,16 @@ class Chef
25
25
  Chef::Provisioning::ChefLoadBalancerSpec.empty(new_resource.name)
26
26
 
27
27
  Chef::Log.debug "Creating load balancer: #{new_resource.name}; loaded #{lb_spec.inspect}"
28
- if lb_spec.load_balancer_options
29
- # Updating
30
- update_loadbalancer(lb_spec)
31
- else
32
- lb_spec.load_balancer_options = new_resource.load_balancer_options
33
- lb_spec.machines = new_resource.machines
34
- create_loadbalancer(lb_spec)
35
- end
36
- end
37
-
38
- action :destroy do
39
- lb_spec = Chef::Provisioning::ChefLoadBalancerSpec.get(new_resource.name)
40
- new_driver.destroy_load_balancer(@action_handler, lb_spec, lb_options)
41
- end
28
+ machine_specs = new_resource.machines ? new_resource.machines.map { |machine| get_machine_spec(machine) } : nil
42
29
 
43
- attr_reader :lb_spec
44
-
45
-
46
- def update_loadbalancer(lb_spec)
47
- Chef::Log.debug "Updating load balancer: #{lb_spec.id}"
48
- machines = Hash[
49
- *(new_resource.machines).collect {
50
- |machine_name| [machine_name, get_machine_spec(machine_name)]
51
- }.flatten
52
- ]
53
- new_driver.update_load_balancer(action_handler, lb_spec, lb_options, {
54
- :machines => machines
55
- }
56
- )
57
- lb_spec.load_balancer_options = new_resource.load_balancer_options
58
- lb_spec.machines = new_resource.machines
30
+ new_driver.allocate_load_balancer(action_handler, lb_spec, lb_options, machine_specs)
59
31
  lb_spec.save(action_handler)
32
+ new_driver.ready_load_balancer(action_handler, lb_spec, lb_options, machine_specs)
60
33
  end
61
34
 
62
- def create_loadbalancer(lb_spec)
63
- new_driver.allocate_load_balancer(action_handler, lb_spec, lb_options)
64
- lb_spec.save(action_handler)
65
- new_driver.ready_load_balancer(action_handler, lb_spec, lb_options)
35
+ action :destroy do
36
+ lb_spec = Chef::Provisioning::ChefLoadBalancerSpec.get(new_resource.name)
37
+ new_driver.destroy_load_balancer(action_handler, lb_spec, lb_options)
66
38
  end
67
39
 
68
40
  private
@@ -54,9 +54,17 @@ class Machine < Chef::Provider::LWRPBase
54
54
  machine_spec.save(action_handler)
55
55
  upload_files(machine)
56
56
  # If we were asked to converge, or anything changed, or if a converge has never succeeded, converge.
57
- if new_resource.converge || (new_resource.converge.nil? && resource_updated?) ||
58
- !machine_spec.node['automatic'] || machine_spec.node['automatic'].size == 0
57
+ if new_resource.converge
58
+ Chef::Log.info("Converging #{machine_spec.name} because 'converge true' is set ...")
59
59
  machine.converge(action_handler)
60
+ elsif new_resource.converge.nil? && resource_updated?
61
+ Chef::Log.info("Converging #{machine_spec.name} because the resource was updated ...")
62
+ machine.converge(action_handler)
63
+ elsif !machine_spec.node['automatic'] || machine_spec.node['automatic'].size == 0
64
+ Chef::Log.info("Converging #{machine_spec.name} because it has never been converged (automatic attributes are empty) ...")
65
+ machine.converge(action_handler)
66
+ elsif new_resource.converge == false
67
+ Chef::Log.debug("Not converging #{machine_spec.name} because 'converge false' is set.")
60
68
  end
61
69
  ensure
62
70
  machine.disconnect
@@ -11,7 +11,7 @@ class Provider
11
11
  class MachineBatch < Chef::Provider::LWRPBase
12
12
 
13
13
  def action_handler
14
- @action_handler ||= Chef::Provisioning::ChefProviderActionHandler.new(self)
14
+ @action_handler ||= Provisioning::ChefProviderActionHandler.new(self)
15
15
  end
16
16
 
17
17
  use_inline_resources
@@ -27,8 +27,8 @@ class MachineBatch < Chef::Provider::LWRPBase
27
27
  action :allocate do
28
28
  by_new_driver.each do |driver, specs_and_options|
29
29
  driver.allocate_machines(action_handler, specs_and_options, parallelizer) do |machine_spec|
30
- prefixed_handler = Chef::Provisioning::AddPrefixActionHandler.new(action_handler, "[#{machine_spec.name}] ")
31
- machine_spec.save(prefixed_handler)
30
+ m = by_id[machine_spec.id]
31
+ machine_spec.save(m[:action_handler])
32
32
  end
33
33
  end
34
34
  end
@@ -39,30 +39,40 @@ class MachineBatch < Chef::Provider::LWRPBase
39
39
 
40
40
  action :setup do
41
41
  with_ready_machines do |m|
42
- prefixed_handler = Chef::Provisioning::AddPrefixActionHandler.new(action_handler, "[#{m[:spec].name}] ")
43
- m[:machine].setup_convergence(prefixed_handler)
44
- m[:spec].save(prefixed_handler)
45
- Chef::Provider::Machine.upload_files(prefixed_handler, m[:machine], m[:files])
42
+ m[:machine].setup_convergence(m[:action_handler])
43
+ m[:spec].save(m[:action_handler])
44
+ Chef::Provider::Machine.upload_files(m[:action_handler], m[:machine], m[:files])
46
45
  end
47
46
  end
48
47
 
49
48
  action :converge do
50
49
  with_ready_machines do |m|
51
- prefixed_handler = Chef::Provisioning::AddPrefixActionHandler.new(action_handler, "[#{m[:spec].name}] ")
52
- m[:machine].setup_convergence(prefixed_handler)
53
- m[:spec].save(action_handler)
54
- Chef::Provider::Machine.upload_files(prefixed_handler, m[:machine], m[:files])
55
- # TODO only converge if machine was modified
56
- m[:machine].converge(prefixed_handler)
57
- m[:spec].save(prefixed_handler)
50
+ m[:machine].setup_convergence(m[:action_handler])
51
+ m[:spec].save(m[:action_handler])
52
+ Chef::Provider::Machine.upload_files(m[:action_handler], m[:machine], m[:files])
53
+
54
+ if m[:resource] && m[:resource].converge
55
+ Chef::Log.info("Converging #{m[:spec].name} because 'converge true' is set ...")
56
+ m[:machine].converge(m[:action_handler])
57
+ m[:spec].save(m[:action_handler])
58
+ elsif (!m[:resource] || m[:resource].converge.nil?) && m[:action_handler].locally_updated
59
+ Chef::Log.info("Converging #{m[:spec].name} because the resource was updated ...")
60
+ m[:machine].converge(m[:action_handler])
61
+ m[:spec].save(m[:action_handler])
62
+ elsif !m[:spec].node['automatic'] || m[:spec].node['automatic'].size == 0
63
+ Chef::Log.info("Converging #{m[:spec].name} because it has never been converged (automatic attributes are empty) ...")
64
+ m[:machine].converge(m[:action_handler])
65
+ m[:spec].save(m[:action_handler])
66
+ elsif m[:resource] && m[:resource].converge == false
67
+ Chef::Log.debug("Not converging #{m[:spec].name} because 'converge false' is set.")
68
+ end
58
69
  end
59
70
  end
60
71
 
61
72
  action :converge_only do
62
73
  parallel_do(@machines) do |m|
63
- prefixed_handler = Chef::Provisioning::AddPrefixActionHandler.new(action_handler, "[#{m[:spec].name}] ")
64
74
  machine = run_context.chef_provisioning.connect_to_machine(m[:spec])
65
- machine.converge(prefixed_handler)
75
+ machine.converge(m[:action_handler])
66
76
  end
67
77
  end
68
78
 
@@ -80,7 +90,6 @@ class MachineBatch < Chef::Provider::LWRPBase
80
90
 
81
91
  def with_ready_machines
82
92
  action_allocate
83
- by_id = @machines.inject({}) { |hash,m| hash[m[:spec].id] = m; hash }
84
93
  parallel_do(by_new_driver) do |driver, specs_and_options|
85
94
  driver.ready_machines(action_handler, specs_and_options, parallelizer) do |machine|
86
95
  machine.machine_spec.save(action_handler)
@@ -97,6 +106,10 @@ class MachineBatch < Chef::Provider::LWRPBase
97
106
  end
98
107
  end
99
108
 
109
+ def by_id
110
+ @by_id ||= @machines.inject({}) { |hash,m| hash[m[:spec].id] = m; hash }
111
+ end
112
+
100
113
  # TODO in many of these cases, the order of the results only matters because you
101
114
  # want to match it up with the input. Make a parallelize method that doesn't
102
115
  # care about order and spits back results as quickly as possible.
@@ -151,28 +164,32 @@ class MachineBatch < Chef::Provider::LWRPBase
151
164
  provider = Chef::Provider::Machine.new(machine_resource, machine_resource.run_context)
152
165
  provider.load_current_resource
153
166
  {
167
+ :resource => machine_resource,
154
168
  :spec => provider.machine_spec,
155
169
  :desired_driver => machine_resource.driver,
156
170
  :files => machine_resource.files,
157
- :machine_options => proc { |driver| provider.machine_options(driver) }
171
+ :machine_options => proc { |driver| provider.machine_options(driver) },
172
+ :action_handler => Provisioning::AddPrefixActionHandler.new(action_handler, "[#{machine_resource.name}] ")
158
173
  }
159
- elsif machine.is_a?(Chef::Provisioning::MachineSpec)
174
+ elsif machine.is_a?(Provisioning::MachineSpec)
160
175
  machine_spec = machine
161
176
  {
162
177
  :spec => machine_spec,
163
178
  :desired_driver => new_resource.driver,
164
179
  :files => new_resource.files,
165
- :machine_options => proc { |driver| machine_options(driver) }
180
+ :machine_options => proc { |driver| machine_options(driver) },
181
+ :action_handler => Provisioning::AddPrefixActionHandler.new(action_handler, "[#{machine_spec.name}] ")
166
182
  }
167
183
  else
168
184
  name = machine
169
- machine_spec = Chef::Provisioning::ChefMachineSpec.get(name, new_resource.chef_server) ||
170
- Chef::Provisioning::ChefMachineSpec.empty(name, new_resource.chef_server)
185
+ machine_spec = Provisioning::ChefMachineSpec.get(name, new_resource.chef_server) ||
186
+ Provisioning::ChefMachineSpec.empty(name, new_resource.chef_server)
171
187
  {
172
188
  :spec => machine_spec,
173
189
  :desired_driver => new_resource.driver,
174
190
  :files => new_resource.files,
175
- :machine_options => proc { |driver| machine_options(driver) }
191
+ :machine_options => proc { |driver| machine_options(driver) },
192
+ :action_handler => Provisioning::AddPrefixActionHandler.new(action_handler, "[#{name}] ")
176
193
  }
177
194
  end
178
195
  end.to_a
Binary file
@@ -12,18 +12,22 @@ module Provisioning
12
12
 
13
13
  attr_reader :action_handler
14
14
  attr_reader :prefix
15
+ attr_reader :locally_updated
15
16
 
16
17
  def_delegators :@action_handler, :should_perform_actions, :updated!, :open_stream, :host_node
17
18
 
18
19
  def report_progress(description)
20
+ @locally_updated = true
19
21
  action_handler.report_progress(Array(description).flatten.map { |d| "#{prefix}#{d}" })
20
22
  end
21
23
 
22
24
  def performed_action(description)
25
+ @locally_updated = true
23
26
  action_handler.performed_action(Array(description).flatten.map { |d| "#{prefix}#{d}" })
24
27
  end
25
28
 
26
29
  def perform_action(description, &block)
30
+ @locally_updated = true
27
31
  action_handler.perform_action(Array(description).flatten.map { |d| "#{prefix}#{d}" }, &block)
28
32
  end
29
33
  end
@@ -60,6 +60,9 @@ module Provisioning
60
60
  _self = self
61
61
  _chef_server = _self.chef_server
62
62
  Chef::Provisioning.inline_resource(action_handler) do
63
+ # Create the data bag if needed
64
+ chef_data_bag 'images'
65
+ # Save the image
63
66
  chef_data_bag_item _self.name do
64
67
  data_bag 'images'
65
68
  chef_server _chef_server
@@ -22,7 +22,6 @@ module Provisioning
22
22
  chef_api = Cheffish.chef_server_api(chef_server)
23
23
  begin
24
24
  data = chef_api.get("/data/loadbalancers/#{name}")
25
- data['load_balancer_options'] = strings_to_symbols(data['load_balancer_options'])
26
25
  ChefLoadBalancerSpec.new(data, chef_server)
27
26
  rescue Net::HTTPServerException => e
28
27
  if e.response.code == '404'
@@ -60,6 +59,7 @@ module Provisioning
60
59
  _self = self
61
60
  _chef_server = _self.chef_server
62
61
  Chef::Provisioning.inline_resource(action_handler) do
62
+ chef_data_bag 'loadbalancers'
63
63
  chef_data_bag_item _self.name do
64
64
  data_bag 'loadbalancers'
65
65
  chef_server _chef_server
@@ -1,4 +1,3 @@
1
- require 'pry'
2
1
  require 'chef/provisioning'
3
2
  require 'cheffish'
4
3
  require 'chef/provisioning/machine_spec'
@@ -124,7 +124,7 @@ module Provisioning
124
124
  metadata = {}
125
125
  metadata_str.each_line do |line|
126
126
  key, value = line.split("\t", 2)
127
- metadata[key] = value
127
+ metadata[key] = value.chomp
128
128
  end
129
129
  metadata
130
130
  end
@@ -170,11 +170,17 @@ module Provisioning
170
170
  end
171
171
 
172
172
  def client_rb_content(chef_server_url, node_name)
173
+ if chef_server_url.downcase.start_with?("https")
174
+ ssl_verify_mode = ':verify_peer'
175
+ else
176
+ ssl_verify_mode = ':verify_none'
177
+ end
178
+
173
179
  <<EOM
174
180
  chef_server_url #{chef_server_url.inspect}
175
181
  node_name #{node_name.inspect}
176
182
  client_key #{convergence_options[:client_pem_path].inspect}
177
- ssl_verify_mode :verify_peer
183
+ ssl_verify_mode #{ssl_verify_mode}
178
184
  EOM
179
185
  end
180
186
  end
@@ -270,14 +270,16 @@ module Provisioning
270
270
  # @param [ChefMetal::ActionHandler] action_handler The action handler
271
271
  # @param [ChefMetal::LoadBalancerSpec] lb_spec Frozen LB specification
272
272
  # @param [Hash] lb_options A hash of options to pass the LB
273
- def allocate_load_balancer(action_handler, lb_spec, lb_options)
273
+ # @param [Array[ChefMetal::MachineSpec]] machine_specs An array of machine specs
274
+ # the load balancer should have
275
+ def allocate_load_balancer(action_handler, lb_spec, lb_options, machine_specs)
274
276
  end
275
277
 
276
278
  # Make the load balancer ready
277
279
  # @param [ChefMetal::ActionHandler] action_handler The action handler
278
280
  # @param [ChefMetal::LoadBalancerSpec] lb_spec Frozen LB specification
279
281
  # @param [Hash] lb_options A hash of options to pass the LB
280
- def ready_load_balancer(action_handler, lb_spec, lb_options)
282
+ def ready_load_balancer(action_handler, lb_spec, lb_options, machine_specs)
281
283
  end
282
284
 
283
285
  # Destroy the load balancer
@@ -287,9 +289,6 @@ module Provisioning
287
289
  def destroy_load_balancer(action_handler, lb_spec, lb_options)
288
290
  end
289
291
 
290
- def update_load_balancer(action_handler, lb_spec, lb_options, opts = {})
291
- end
292
-
293
292
  protected
294
293
 
295
294
  def add_prefix(machine_spec, action_handler)
@@ -52,14 +52,6 @@ module Provisioning
52
52
  load_balancer_data['location'] = value
53
53
  end
54
54
 
55
- def load_balancer_options
56
- load_balancer_data['load_balancer_options']
57
- end
58
-
59
- def load_balancer_options=(value)
60
- load_balancer_data['load_balancer_options'] = value
61
- end
62
-
63
55
  # URL to the driver. Convenience for location['driver_url']
64
56
  def driver_url
65
57
  location ? location['driver_url'] : nil
@@ -182,7 +182,8 @@ module Provisioning
182
182
  def session
183
183
  @session ||= begin
184
184
  ssh_start_opts = { timeout:10 }.merge(ssh_options)
185
- Chef::Log.debug("Opening SSH connection to #{username}@#{host} with options #{ssh_start_opts.inspect}")
185
+ Chef::Log.debug("Opening SSH connection to #{username}@#{host} with options #{ssh_start_opts.dup.tap {
186
+ |ssh| ssh.delete(:key_data) }.inspect}")
186
187
  # Small initial connection timeout (10s) to help us fail faster when server is just dead
187
188
  begin
188
189
  if gateway? then gateway.ssh(host, username, ssh_start_opts)
@@ -285,7 +286,8 @@ module Provisioning
285
286
  ssh_start_opts = { timeout:10 }.merge(ssh_options)
286
287
  ssh_start_opts[:port] = gw_port || 22
287
288
 
288
- Chef::Log.debug("Opening SSH gateway to #{gw_user}@#{gw_host} with options #{ssh_start_opts.inspect}")
289
+ Chef::Log.debug("Opening SSH gateway to #{gw_user}@#{gw_host} with options #{ssh_start_opts.dup.tap {
290
+ |ssh| ssh.delete(:key_data) }.inspect}")
289
291
  begin
290
292
  Net::SSH::Gateway.new(gw_host, gw_user, ssh_start_opts)
291
293
  rescue Errno::ETIMEDOUT
@@ -1,5 +1,5 @@
1
1
  class Chef
2
2
  module Provisioning
3
- VERSION = '0.16'
3
+ VERSION = '0.17'
4
4
  end
5
5
  end
@@ -36,10 +36,10 @@ class Chef::Resource::ChefDataBagResource < Chef::Resource::LWRPBase
36
36
  # and then delegating to {Chef::Resource::LWRPBase#attribute}
37
37
  # @param attr_name [Symbol] Name of the attribute as a symbol
38
38
  # @return [Void]
39
- def self.stored_attribute(attr_name)
39
+ def self.stored_attribute(attr_name, *args)
40
40
  @stored_attributes ||= []
41
41
  @stored_attributes << attr_name
42
- self.attribute attr_name
42
+ self.attribute attr_name, *args
43
43
  end
44
44
 
45
45
  # Load persisted data from the server's databag. If the databag does not exist on the
@@ -145,4 +145,3 @@ class Chef::Resource::ChefDataBagResource < Chef::Resource::LWRPBase
145
145
  end
146
146
  end
147
147
  end
148
-
metadata CHANGED
@@ -1,125 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-provisioning
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.16'
4
+ version: '0.17'
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Keiser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-05 00:00:00.000000000 Z
11
+ date: 2014-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: net-scp
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: net-ssh-gateway
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.2.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.2.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: inifile
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '2.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: cheffish
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0.8'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0.8'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: winrm
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: 1.2.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.2.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  description: A library for creating machines and infrastructures idempotently in Chef.
@@ -135,6 +135,8 @@ files:
135
135
  - LICENSE
136
136
  - README.md
137
137
  - Rakefile
138
+ - lib/.DS_Store
139
+ - lib/chef/.DS_Store
138
140
  - lib/chef/provider/load_balancer.rb
139
141
  - lib/chef/provider/machine.rb
140
142
  - lib/chef/provider/machine_batch.rb
@@ -142,6 +144,7 @@ files:
142
144
  - lib/chef/provider/machine_file.rb
143
145
  - lib/chef/provider/machine_image.rb
144
146
  - lib/chef/provisioning.rb
147
+ - lib/chef/provisioning/.DS_Store
145
148
  - lib/chef/provisioning/action_handler.rb
146
149
  - lib/chef/provisioning/add_prefix_action_handler.rb
147
150
  - lib/chef/provisioning/chef_image_spec.rb
@@ -185,12 +188,12 @@ require_paths:
185
188
  - lib
186
189
  required_ruby_version: !ruby/object:Gem::Requirement
187
190
  requirements:
188
- - - ">="
191
+ - - '>='
189
192
  - !ruby/object:Gem::Version
190
193
  version: '0'
191
194
  required_rubygems_version: !ruby/object:Gem::Requirement
192
195
  requirements:
193
- - - ">="
196
+ - - '>='
194
197
  - !ruby/object:Gem::Version
195
198
  version: '0'
196
199
  requirements: []