class Souffle::Provisioner::Node

The node provisioning statemachine.

Attributes

time_used[RW]

Public Class Methods

new(node, max_failures=3) click to toggle source

Creates a new node provisioner state machine.

@param [ Souffle::Node ] node The node to manage. @param [ Fixnum ] max_failures The maximum number of failures.

Calls superclass method
# File lib/souffle/provisioner/node.rb, line 83
def initialize(node, max_failures=3)
  @time_used = 0
  @node = node
  @max_failures = max_failures
  super() # NOTE: This is here to initialize state_machine.
end

Public Instance Methods

boot() click to toggle source

Boots up the node and waits for ssh.

# File lib/souffle/provisioner/node.rb, line 97
def boot
  Souffle::Log.info "#{@node.log_prefix} Booting node..."
  provider.boot(@node)
end
create() click to toggle source

Creates the node from an api or command.

# File lib/souffle/provisioner/node.rb, line 91
def create
  Souffle::Log.info "#{@node.log_prefix} Creating a new node..."
  provider.create_node(@node)
end
error_handler() click to toggle source

Handles any

# File lib/souffle/provisioner/node.rb, line 156
def error_handler
  Souffle::Log.info "#{@node.log_prefix} Handling node error..."
end
format_device() click to toggle source

Formats a device to the configured filesystem.

# File lib/souffle/provisioner/node.rb, line 115
def format_device
  Souffle::Log.info "#{@node.log_prefix} Formatting the device..."
  provider.format_device(@node)
end
kill() click to toggle source

Kills the node entirely.

# File lib/souffle/provisioner/node.rb, line 144
def kill
  Souffle::Log.info "#{@node.log_prefix} Killing node..."
  provider.kill(@node)
end
kill_and_recreate() click to toggle source

Kills the node and restarts the creation loop.

# File lib/souffle/provisioner/node.rb, line 150
def kill_and_recreate
  Souffle::Log.info "#{@node.log_prefix} Recreating node..."
  provider.kill_and_recreate(@node)
end
node_provisioned() click to toggle source

Notifies the system that the current node has completed provisioning.

# File lib/souffle/provisioner/node.rb, line 138
def node_provisioned
  Souffle::Log.info "#{@node.log_prefix} Node provisioned."
  system_provisioner.node_provisioned
end
partition_device() click to toggle source

Partitions the soon to be raid device.

# File lib/souffle/provisioner/node.rb, line 109
def partition_device
  Souffle::Log.info "#{@node.log_prefix} Partitioning the device..."
  provider.partition(@node)
end
provider() click to toggle source

Helper function for the node's system provider.

# File lib/souffle/provisioner/node.rb, line 161
def provider
  @node.provider
end
provision() click to toggle source

Provisions the given node with a chef/chef-solo run.

# File lib/souffle/provisioner/node.rb, line 132
def provision
  Souffle::Log.info "#{@node.log_prefix} Provisioning node..."
  provider.provision(@node)
end
ready() click to toggle source

Notify the logger when the node is ready for provisioning.

# File lib/souffle/provisioner/node.rb, line 127
def ready
  Souffle::Log.info "#{@node.log_prefix} Is ready for provisioning..."
end
setup_mdadm() click to toggle source

Installs and sets up mdadm.

# File lib/souffle/provisioner/node.rb, line 103
def setup_mdadm
  Souffle::Log.info "#{@node.log_prefix} Setting up mdadm..."
  provider.setup_mdadm(@node)
end
setup_raid() click to toggle source

Sets up raid to the configured raid-level.

# File lib/souffle/provisioner/node.rb, line 121
def setup_raid
  Souffle::Log.info "#{@node.log_prefix} Setting up raid..."
  provider.setup_raid(@node)
end
system_provisioner() click to toggle source

Helper function for the system provisioner.

# File lib/souffle/provisioner/node.rb, line 166
def system_provisioner
  @node.system.provisioner
end