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