class MotherBrain::Provisioner::ProvisionData
Handles persisting provision data to a Chef
server, for use later by other provisioner actions on that environment.
Constants
- DATA_BAG
Attributes
environment_name[R]
Public Class Methods
new(environment_name)
click to toggle source
@param [Symbol] environment_name
# File lib/mb/provisioner/provision_data.rb, line 13 def initialize(environment_name) @environment_name = environment_name end
Public Instance Methods
add_instances_to_provisioner(provisioner_name, instance_array)
click to toggle source
Adds instances to the provision data idempotently
@param [Symbol] provisioner_name @param [Array(Hash)] instance_array
# File lib/mb/provisioner/provision_data.rb, line 48 def add_instances_to_provisioner(provisioner_name, instance_array) instance_array.each do |instance| unless instances_for_provisioner(provisioner_name).include?(instance) instances_for_provisioner(provisioner_name).push instance end end end
destroy()
click to toggle source
Removes the data from the Chef
server
# File lib/mb/provisioner/provision_data.rb, line 73 def destroy data_bag.item.delete environment_name end
instances()
click to toggle source
Returns a hash of stored instance data
@return [Hash]
# File lib/mb/provisioner/provision_data.rb, line 20 def instances attributes[:instances] ||= {} attributes[:instances] end
instances_for_provisioner(provisioner_name)
click to toggle source
Returns an array of instance hashes for a provisioner
@param [Symbol] provisioner_name
@return [Array(Hash)]
# File lib/mb/provisioner/provision_data.rb, line 38 def instances_for_provisioner(provisioner_name) instances[provisioner_name] ||= [] instances[provisioner_name] end
provisioners()
click to toggle source
Returns an array of provisioner names for this environment
@return [Array(Symbol)]
# File lib/mb/provisioner/provision_data.rb, line 29 def provisioners instances.keys end
remove_instance_from_provisioner(provisioner_name, key, value)
click to toggle source
Removes an instance from the provisioner by matching a key/value pair
@param [Symbol] provisioner_name @param [Symbol] key @param [Object] value
# File lib/mb/provisioner/provision_data.rb, line 61 def remove_instance_from_provisioner(provisioner_name, key, value) instances_for_provisioner(provisioner_name).delete_if do |instance| instance[key] == value end end
save()
click to toggle source
Persists the data to the Chef
server
# File lib/mb/provisioner/provision_data.rb, line 68 def save data_bag_item.save end
Private Instance Methods
attributes()
click to toggle source
# File lib/mb/provisioner/provision_data.rb, line 79 def attributes data_bag_item.attributes end
data_bag()
click to toggle source
# File lib/mb/provisioner/provision_data.rb, line 83 def data_bag @data_bag ||= ridley.data_bag.find(DATA_BAG) || ridley.data_bag.create(name: DATA_BAG) end
data_bag_item()
click to toggle source
# File lib/mb/provisioner/provision_data.rb, line 89 def data_bag_item @data_bag_item ||= data_bag.item.find(environment_name) || data_bag.item.create(id: environment_name) end