class Object

Constants

DEFAULT_DUMP_FILE
DEFAULT_LOG_FILE
DEFAULT_LOG_GLOB
LAB_ACTIONS
LAB_ACTION_ORDER

Public Instance Methods

build_header(message) click to toggle source
# File lib/commands/testlab.rb, line 226
def build_header(message)
  char    = '#'
  header  = "#{char * 30}   #{message}   #{char * 30}"
  content = Array.new

  content << (char * header.uncolor.length)
  content << header
  content << (char * header.uncolor.length)

  content
end
build_lab_commands(component, klass, &block) click to toggle source
# File lib/commands/support.rb, line 42
def build_lab_commands(component, klass, &block)
  desc %(Manage lab #{component}s)
  command component do |c|
    c.desc %(Optional #{component} ID or comma separated list of #{component} IDs)
    c.arg_name %(#{component}[,#{component},...])
    c.flag [:n, :name]

    c.desc %(Force the actions verbatium, do not attempt to infer shortcuts; this has no effect for most operations)
    c.switch [:f, :force]

    LAB_ACTION_ORDER.each do |lab_action|
      action_desc = LAB_ACTIONS[lab_action]
      c.desc(action_desc.first % "#{component}s")
      c.long_desc(ZTK::Template.string(action_desc.last, {:component => "#{component}s"}))

      c.command lab_action do |la|

        la.action do |global_options, options, args|
          objects  = iterate_objects_by_name(options[:name], klass)

          @testlab.do_parallel_actions(klass, objects, lab_action) do |object, action, klass|
            send_lab_action(object, options, action)
          end
        end

      end
    end

    !block.nil? and block.call(c)
  end
end
iterate_objects_by_name(name, klass, &block) click to toggle source
# File lib/commands/support.rb, line 82
def iterate_objects_by_name(name, klass, &block)
  objects = Array.new
  klass_name = klass.to_s.split('::').last.downcase

  objects = klass.all.select{ |o| (!o.template rescue true) }
  if !name.nil?
    names = name.split(',')

    not_names = names.collect { |n| ((n[0] == '!') and n[1..-1]) }.delete_if {|n| n == false }.compact
    names.delete_if { |n| n[0] == '!' }

    if names.size > 0
      objects = klass.find(names).select{ |o| (!o.template rescue true) }
    end
    objects.delete_if{ |o| not_names.include?(o.id.to_s.downcase) }
  end

  (objects.nil? || (objects.count == 0)) and raise TestLab::TestLabError, "We could not find any of the #{klass_name}s you supplied!"

  objects.each do |object|
    !block.nil? and block.call(object)
  end

  objects
end
osx_network(net) click to toggle source

Route show helper method because OSX sucks

# File lib/commands/network.rb, line 76
def osx_network(net)
  net.network.split('.').delete_if{ |o| o == '0' }.join('.')
end
send_lab_action(object, options, lab_action) click to toggle source
# File lib/commands/support.rb, line 74
def send_lab_action(object, options, lab_action)
  if %w( build recycle ).map(&:to_sym).include?(lab_action)
    object.send(lab_action, options[:force])
  else
    object.send(lab_action)
  end
end