class RBCM::Core

Attributes

actions[R]
group_additions[RW]
groups[R]
nodes[R]
project[R]

Public Class Methods

new(project_path) click to toggle source
# File app/rbcm.rb, line 28
def initialize project_path
  # initialize project
  @project = RBCM::Project.new project_path
  # create nodes
  @group_additions = RBCM::ArrayHash.new
  @nodes = {}
  @project.definitions(:node).each do |node_definition|
    @nodes[node_definition.name] ||= RBCM::Node.new(
      self,
      node_definition.name,
      node_definition.project_file.path
    )
    @nodes[node_definition.name] << node_definition
    # apply pattern definitions to node
    @nodes[node_definition.name] << @project.definitions(:pattern).collect do |pattern_definition|
       pattern_definition if node_definition.name =~ /#{pattern_definition.name}/
    end
  end
  # create groups
  @groups = RBCM::ArrayHash.new
  @project.definitions(:group).each do |group_definition|
    @groups[group_definition.name] << group_definition
  end
end

Public Instance Methods

check!(&block) click to toggle source
# File app/rbcm.rb, line 77
def check! &block
  Net::SSH::Multi.start do |session|
    session.via 'gateway', 'gateway-user'
    @nodes.each do |name, node|
      session.group name.to_sym do
        session.use "#{name}"
      end
    end
    actions.checkable.each do |action|
      actions.check.each do |check|
        session.with(action.job.node.name.to_sym).exec check &block
      end
    end
    session.loop
  end
end
jobs() click to toggle source
# File app/rbcm.rb, line 60
def jobs
  nodes.values.each.jobs.flatten(1)
end
parse() click to toggle source
# File app/rbcm.rb, line 64
def parse
  # parsing nodes
  nodes.values.each.parse
  # parsing additions
  nodes.values.each do |node|
    node.sandbox.evaluate node.additions
  end
  # parsing 'cap!'
  nodes.values.each do |node|
    node.capabilities.each{|capability| node.sandbox.send "#{capability.name}!"}
  end
end