lib/chef/provisioning/managed_entry.rb in chef-provisioning-2.0.0 vs lib/chef/provisioning/managed_entry.rb in chef-provisioning-2.0.1
- old
+ new
@@ -1,121 +1,121 @@
-class Chef
-module Provisioning
- #
- # Specification for a managed thing. Remembers where it was stored, and lets
- # you stuff reference data in it.
- #
- class ManagedEntry
- def initialize(managed_entry_store, resource_type, name, data=nil)
- @managed_entry_store = managed_entry_store
- @resource_type = resource_type
- @name = name
- @data = data || {}
- end
-
- attr_reader :managed_entry_store
- attr_reader :resource_type
- attr_reader :name
- attr_reader :data
-
- def attrs
- data
- end
-
- #
- # Globally unique identifier for this machine. Does not depend on the machine's
- # reference or existence.
- #
- def id
- managed_entry_store.identifier(resource_type, name)
- end
-
- #
- # Reference to this managed thing. This should be a freeform hash, with enough
- # information for the driver to look it up and create a Machine object to
- # access it.
- #
- # This MUST include a 'driver_url' attribute with the driver's URL in it.
- #
- # chef-provisioning will do its darnedest to not lose this information.
- #
- def reference
- # Backcompat: old data bags didn't have the "reference" field. If we have
- # no reference field in the data, and the data bag is non-empty, return
- # the root of the data bag.
- attrs['reference'] || attrs['location'] || (attrs == {} ? nil : attrs)
- end
-
- #
- # Set the reference for this machine.
- #
- def reference=(value)
- self.attrs['reference'] = value
- end
-
- # URL to the driver.
- def driver_url
- attrs['driver_url'] || (reference ? reference['driver_url'] : nil)
- end
- def driver_url=(value)
- attrs['driver_url'] = value
- end
-
- #
- # Save this node to the server. If you have significant information that
- # could be lost, you should do this as quickly as possible. Data will be
- # saved automatically for you after allocate_machine and ready_machine.
- #
- def save(action_handler)
- managed_entry_store.save_data(resource_type, name, data, action_handler)
- end
-
- def delete(action_handler)
- managed_entry_store.delete_data(resource_type, name, action_handler)
- end
-
-
- #
- # Subclass interface
- #
-
- #
- # Get the given data
- #
- # @param resource_type [Symbol] The type of thing to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
- # @param name [String] The unique identifier of the thing to retrieve
- #
- # @return [Hash,Array] The data, or `nil` if the data does not exist. Will be JSON- and YAML-compatible (Hash, Array, String, Integer, Boolean, Nil)
- #
- def get_data(resource_type, name)
- raise NotImplementedError, :delete_data
- end
-
- #
- # Save the given data
- #
- # @param resource_type [Symbol] The type of thing to save (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet ...)
- # @param name [String] The unique identifier of the thing to save
- # @param data [Hash,Array] The data to save. Must be JSON- and YAML-compatible (Hash, Array, String, Integer, Boolean, Nil)
- #
- def save_data(resource_type, name, data, action_handler)
- raise NotImplementedError, :delete_data
- end
-
- #
- # Delete the given data
- #
- # @param resource_type [Symbol] The type of thing to delete (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
- # @param name [String] The unique identifier of the thing to delete
- #
- # @return [Boolean] Whether anything was deleted or not.
- #
- def delete_data(resource_type, name, action_handler)
- raise NotImplementedError, :delete_data
- end
-
- def identifier(resource_type, name)
- raise NotImplementedError, :identifier
- end
- end
-end
-end
+class Chef
+module Provisioning
+ #
+ # Specification for a managed thing. Remembers where it was stored, and lets
+ # you stuff reference data in it.
+ #
+ class ManagedEntry
+ def initialize(managed_entry_store, resource_type, name, data=nil)
+ @managed_entry_store = managed_entry_store
+ @resource_type = resource_type
+ @name = name
+ @data = data || {}
+ end
+
+ attr_reader :managed_entry_store
+ attr_reader :resource_type
+ attr_reader :name
+ attr_reader :data
+
+ def attrs
+ data
+ end
+
+ #
+ # Globally unique identifier for this machine. Does not depend on the machine's
+ # reference or existence.
+ #
+ def id
+ managed_entry_store.identifier(resource_type, name)
+ end
+
+ #
+ # Reference to this managed thing. This should be a freeform hash, with enough
+ # information for the driver to look it up and create a Machine object to
+ # access it.
+ #
+ # This MUST include a 'driver_url' attribute with the driver's URL in it.
+ #
+ # chef-provisioning will do its darnedest to not lose this information.
+ #
+ def reference
+ # Backcompat: old data bags didn't have the "reference" field. If we have
+ # no reference field in the data, and the data bag is non-empty, return
+ # the root of the data bag.
+ attrs['reference'] || attrs['location'] || (attrs == {} ? nil : attrs)
+ end
+
+ #
+ # Set the reference for this machine.
+ #
+ def reference=(value)
+ self.attrs['reference'] = value
+ end
+
+ # URL to the driver.
+ def driver_url
+ attrs['driver_url'] || (reference ? reference['driver_url'] : nil)
+ end
+ def driver_url=(value)
+ attrs['driver_url'] = value
+ end
+
+ #
+ # Save this node to the server. If you have significant information that
+ # could be lost, you should do this as quickly as possible. Data will be
+ # saved automatically for you after allocate_machine and ready_machine.
+ #
+ def save(action_handler)
+ managed_entry_store.save_data(resource_type, name, data, action_handler)
+ end
+
+ def delete(action_handler)
+ managed_entry_store.delete_data(resource_type, name, action_handler)
+ end
+
+
+ #
+ # Subclass interface
+ #
+
+ #
+ # Get the given data
+ #
+ # @param resource_type [Symbol] The type of thing to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
+ # @param name [String] The unique identifier of the thing to retrieve
+ #
+ # @return [Hash,Array] The data, or `nil` if the data does not exist. Will be JSON- and YAML-compatible (Hash, Array, String, Integer, Boolean, Nil)
+ #
+ def get_data(resource_type, name)
+ raise NotImplementedError, :delete_data
+ end
+
+ #
+ # Save the given data
+ #
+ # @param resource_type [Symbol] The type of thing to save (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet ...)
+ # @param name [String] The unique identifier of the thing to save
+ # @param data [Hash,Array] The data to save. Must be JSON- and YAML-compatible (Hash, Array, String, Integer, Boolean, Nil)
+ #
+ def save_data(resource_type, name, data, action_handler)
+ raise NotImplementedError, :delete_data
+ end
+
+ #
+ # Delete the given data
+ #
+ # @param resource_type [Symbol] The type of thing to delete (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...)
+ # @param name [String] The unique identifier of the thing to delete
+ #
+ # @return [Boolean] Whether anything was deleted or not.
+ #
+ def delete_data(resource_type, name, action_handler)
+ raise NotImplementedError, :delete_data
+ end
+
+ def identifier(resource_type, name)
+ raise NotImplementedError, :identifier
+ end
+ end
+end
+end