lib/chef/provisioning/managed_entry_store.rb in chef-provisioning-2.0.1 vs lib/chef/provisioning/managed_entry_store.rb in chef-provisioning-2.0.2

- old
+ new

@@ -1,136 +1,136 @@ -require 'chef/provisioning/load_balancer_spec' -require 'chef/provisioning/machine_spec' -require 'chef/provisioning/machine_image_spec' -require 'chef/provisioning/managed_entry' - -class Chef - module Provisioning - class ManagedEntryStore - def initialize(chef_run_data) - @chef_run_data = chef_run_data - end - - # - # 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. Will be JSON- and YAML-compatible (Hash, Array, String, Integer, Boolean, Nil) - # - def get_data(resource_type, name) - raise NotImplementedError, :get_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, :save_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 - - # - # Get a globally unique identifier for this resource. - # - # @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...) - # @param name [String] The unique identifier of the spec to retrieve - # - # @return [String] The identifier. - # - # @example ChefManagedEntry does this: - # chef_managed_entry_store.identifier(:machine, 'mario') # => https://my.chef.server/organizations/org/nodes/mario - # - def identifier(resource_type, name) - raise NotImplementedError, :identifier - end - - # - # Get a spec. - # - # @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...) - # @param name [String] The unique identifier of the spec to retrieve - # - # @return [ManagedEntry] The entry, or `nil` if the data does not exist. - # - def get(resource_type, name) - data = get_data(resource_type, name) - if data - new_entry(resource_type, name, data) - end - end - - # - # Get a spec, or create a new one, depending on whether an entry exists. - # - # @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...) - # @param name [String] The unique identifier of the spec to retrieve - # - # @return [ManagedEntry] The entry. - # - def get_or_new(resource_type, name) - data = get_data(resource_type, name) - new_entry(resource_type, name, data) - end - - # - # Get a spec, erroring out if the data does not exist. - # - # @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...) - # @param name [String] The unique identifier of the spec to retrieve - # - # @return [ManagedEntry] The entry. - # - def get!(resource_type, name) - result = get(resource_type, name) - if !result - raise "#{identifier(resource_type, name)} not found!" - end - result - end - - # - # Delete the given spec. - # - # @param resource_type [Symbol] The type of spec to delete (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...) - # @param name [String] The unique identifier of the spec to delete - # - # @return [Boolean] Whether anything was deleted or not. - # - def delete(resource_type, name, action_handler) - delete_data(resource_type, name, action_handler) - end - - # - # Create a new managed entry of the given type. - # - def new_entry(resource_type, name, data=nil) - case resource_type - when :machine - MachineSpec.new(self, resource_type, name, data) - when :machine_image - MachineImageSpec.new(self, resource_type, name, data) - when :load_balancer - LoadBalancerSpec.new(self, resource_type, name, data) - else - ManagedEntry.new(self, resource_type, name, data) - end - end - end - end -end +require 'chef/provisioning/load_balancer_spec' +require 'chef/provisioning/machine_spec' +require 'chef/provisioning/machine_image_spec' +require 'chef/provisioning/managed_entry' + +class Chef + module Provisioning + class ManagedEntryStore + def initialize(chef_run_data) + @chef_run_data = chef_run_data + end + + # + # 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. Will be JSON- and YAML-compatible (Hash, Array, String, Integer, Boolean, Nil) + # + def get_data(resource_type, name) + raise NotImplementedError, :get_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, :save_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 + + # + # Get a globally unique identifier for this resource. + # + # @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...) + # @param name [String] The unique identifier of the spec to retrieve + # + # @return [String] The identifier. + # + # @example ChefManagedEntry does this: + # chef_managed_entry_store.identifier(:machine, 'mario') # => https://my.chef.server/organizations/org/nodes/mario + # + def identifier(resource_type, name) + raise NotImplementedError, :identifier + end + + # + # Get a spec. + # + # @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...) + # @param name [String] The unique identifier of the spec to retrieve + # + # @return [ManagedEntry] The entry, or `nil` if the data does not exist. + # + def get(resource_type, name) + data = get_data(resource_type, name) + if data + new_entry(resource_type, name, data) + end + end + + # + # Get a spec, or create a new one, depending on whether an entry exists. + # + # @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...) + # @param name [String] The unique identifier of the spec to retrieve + # + # @return [ManagedEntry] The entry. + # + def get_or_new(resource_type, name) + data = get_data(resource_type, name) + new_entry(resource_type, name, data) + end + + # + # Get a spec, erroring out if the data does not exist. + # + # @param resource_type [Symbol] The type of spec to retrieve (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...) + # @param name [String] The unique identifier of the spec to retrieve + # + # @return [ManagedEntry] The entry. + # + def get!(resource_type, name) + result = get(resource_type, name) + if !result + raise "#{identifier(resource_type, name)} not found!" + end + result + end + + # + # Delete the given spec. + # + # @param resource_type [Symbol] The type of spec to delete (:machine, :machine_image, :load_balancer, :aws_vpc, :aws_subnet, ...) + # @param name [String] The unique identifier of the spec to delete + # + # @return [Boolean] Whether anything was deleted or not. + # + def delete(resource_type, name, action_handler) + delete_data(resource_type, name, action_handler) + end + + # + # Create a new managed entry of the given type. + # + def new_entry(resource_type, name, data=nil) + case resource_type + when :machine + MachineSpec.new(self, resource_type, name, data) + when :machine_image + MachineImageSpec.new(self, resource_type, name, data) + when :load_balancer + LoadBalancerSpec.new(self, resource_type, name, data) + else + ManagedEntry.new(self, resource_type, name, data) + end + end + end + end +end