Class/Module Index [+]

Quicksearch

Rudy::Routines::Reboot

Public Instance Methods

execute() click to toggle source

Startup routines run in the following order:

  • before_local (if present)

  • before_remote (if present)

  • Reboot instances

  • Set hostname

  • before dependencies

  • all other actions

  • after dependencies

# File lib/rudy/routines/reboot.rb, line 28
def execute
  
  if run?
    Rudy::Routines::Handlers::Depends.execute_all @before, @argv
    
    li " Executing routine: #{@name} ".att(:reverse), ""
    ld "[this is a generic routine]" if @routine.empty?
    
    # Re-retreive the machine set to reflect dependency changes
    Rudy::Routines.rescue {
      @machines = Rudy::Machines.list || []
      @@rset = Rudy::Routines::Handlers::RyeTools.create_set @machines
    }
    
    Rudy::Routines.rescue {
      Rudy::Routines::Handlers::Group.authorize rescue nil
    }
    
    if @routine.has_key? :before_local
      handler = Rudy::Routines.get_handler :local
      Rudy::Routines.rescue {
        handler.execute(:local, @routine.delete(:before_local), nil, @@lbox, @argv)
      }
    end
  
    if @routine.has_key? :before_remote
      handler = Rudy::Routines.get_handler :remote
      Rudy::Routines.rescue {
        handler.execute(:remote, @routine.delete(:before_remote), @@rset, @@lbox, @argv)
      }
    end
  end
  
  Rudy::Routines.rescue {
    if Rudy::Routines::Handlers::Disks.mount? @routine
      fake = Hash[:umount => @routine.disks[:mount]]
      Rudy::Routines::Handlers::Disks.execute :umount, fake, @@rset, @@lbox, @argv
    end
  }
  
  li "Rebooting #{current_group_name}..."
  @machines.each { |m| m.restart } if run?
  
  15.times { print '.'; Kernel.sleep 2 }; li $/  # Wait for 30 seconds
  
  Rudy::Routines.rescue {
    if !Rudy::Routines::Handlers::Host.is_running? @@rset
      a = @@rset.boxes.select { |box| !box.stash.instance_running? }
      raise GroupNotRunning, a
    end
  }
  
  # This is important b/c the machines will not 
  # have DNS info until after they are running. 
  Rudy::Routines.rescue { Rudy::Routines::Handlers::Host.update_dns @@rset }
  
  Rudy::Routines.rescue {
    if !Rudy::Routines::Handlers::Host.is_available? @@rset
      a = @@rset.boxes.select { |box| !box.stash.instance_available? }
      raise GroupNotAvailable, a
    end
  }
  Rudy::Routines.rescue {
    Rudy::Routines::Handlers::Host.set_hostname @@rset      
  }
  
  if run?
    # This is the meat of the sandwich
    Rudy::Routines.runner @routine, @@rset, @@lbox, @argv
    
    Rudy::Routines.rescue {
      Rudy::Routines::Handlers::Depends.execute_all @after, @argv
    }
  end
  
  @machines
end
init(*args) click to toggle source
# File lib/rudy/routines/reboot.rb, line 12
def init(*args)
  @routine ||= {}
  Rudy::Routines.rescue {
    @machines = Rudy::Machines.list || []
    @@rset = Rudy::Routines::Handlers::RyeTools.create_set @machines
  }
end
raise_early_exceptions() click to toggle source

Called by generic_machine_runner

# File lib/rudy/routines/reboot.rb, line 107
def raise_early_exceptions
  raise NoMachinesConfig unless @@config.machines
  # There's no keypair check here because Rudy::Machines will attempt 
  # to create one.
  raise MachineGroupNotDefined, current_machine_group unless known_machine_group?
  
  # If this is a test run we don't care if the group is running
  if run?
    raise MachineGroupNotRunning, current_machine_group unless Rudy::Machines.running?
  end
  
  if @routine
    bad = @routine.keys - @@allowed_actions
    raise UnsupportedActions.new(@name, bad) unless bad.empty?
  end
  
  if @machines
    down = @@rset.boxes.select { |box| !box.stash.instance_running? }
    raise GroupNotAvailable, down unless down.empty?
  end
  
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.