Class: Rubyipmi::Freeipmi::Chassis

Inherits:
BaseCommand show all
Defined in:
lib/rubyipmi/freeipmi/commands/chassis.rb

Instance Attribute Summary

Attributes inherited from BaseCommand

#cmd, #lastcall, #max_retry_count, #options, #passfile, #result

Instance Method Summary collapse

Methods inherited from BaseCommand

#find_fix, #makecommand, #max_retry_count, #setpass, #validate_status

Methods inherited from BaseCommand

#dump_command, #find_fix, #locate_command, #logger, #makecommand, #removepass, #run, #runcmd, #setpass, #update, #validate_status

Constructor Details

#initialize(opts = ObservableHash.new) ⇒ Chassis

Returns a new instance of Chassis.



3
4
5
# File 'lib/rubyipmi/freeipmi/commands/chassis.rb', line 3

def initialize(opts = ObservableHash.new)
  super("ipmi-chassis", opts)
end

Instance Method Details

#bootbios(reboot = false, persistent = false) ⇒ Object

boot into bios setup with option to reboot



67
68
69
70
71
# File 'lib/rubyipmi/freeipmi/commands/chassis.rb', line 67

def bootbios(reboot = false, persistent = false)
  bootstatus = config.bootbios(persistent)
  # Only reboot if setting the boot flag was successful
  power.cycle if reboot && bootstatus
end

#bootcdrom(reboot = false, persistent = false) ⇒ Object

set boot device to cdrom with option to reboot



60
61
62
63
64
# File 'lib/rubyipmi/freeipmi/commands/chassis.rb', line 60

def bootcdrom(reboot = false, persistent = false)
  bootstatus = config.bootcdrom(persistent)
  # Only reboot if setting the boot flag was successful
  power.cycle if reboot && bootstatus
end

#bootdevice(device, reboot = false, persistent = false) ⇒ Object

set boot device from given boot device



35
36
37
38
39
40
41
42
43
# File 'lib/rubyipmi/freeipmi/commands/chassis.rb', line 35

def bootdevice(device, reboot = false, persistent = false)
  if config.bootdevices.include?(device)
    bootstatus = config.bootdevice(device, persistent)
    power.cycle if reboot && bootstatus
  else
    logger.error("Device with name: #{device} is not a valid boot device for host #{options['hostname']}") if logger
    raise "Device with name: #{device} is not a valid boot device for host #{options['hostname']}"
  end
end

#bootdisk(reboot = false, persistent = false) ⇒ Object

set boot device to disk with option to reboot



53
54
55
56
57
# File 'lib/rubyipmi/freeipmi/commands/chassis.rb', line 53

def bootdisk(reboot = false, persistent = false)
  bootstatus = config.bootdisk(persistent)
  # Only reboot if setting the boot flag was successful
  power.cycle if reboot && bootstatus
end

#bootpxe(reboot = false, persistent = false) ⇒ Object

set boot device to pxe with option to reboot



46
47
48
49
50
# File 'lib/rubyipmi/freeipmi/commands/chassis.rb', line 46

def bootpxe(reboot = false, persistent = false)
  bootstatus = config.bootpxe(persistent)
  # Only reboot if setting the boot flag was successful
  power.cycle if reboot && bootstatus
end

#configObject

Access to the config command created on the fly



30
31
32
# File 'lib/rubyipmi/freeipmi/commands/chassis.rb', line 30

def config
  @config ||= Rubyipmi::Freeipmi::ChassisConfig.new(@options)
end

#identify(status = false, delay = 0) ⇒ Object

Turn the led light on / off or with a delay



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/rubyipmi/freeipmi/commands/chassis.rb', line 8

def identify(status = false, delay = 0)
  if status
    if delay <= 0
      options["chassis-identify"] = "FORCE"
    else
      options["chassis-identify"] = delay
    end
  else
    options["chassis-identify"] = "TURN-OFF"
  end
  # Run the command
  value = runcmd
  options.delete_notify("chassis-identify")
  value
end

#identifystatusObject

A currently unsupported method to retrieve the led status



85
86
87
88
89
# File 'lib/rubyipmi/freeipmi/commands/chassis.rb', line 85

def identifystatus
  # TODO: implement this function
  # parse out the identify status
  # status.result
end

#powerObject

Access to the power command created on the fly



25
26
27
# File 'lib/rubyipmi/freeipmi/commands/chassis.rb', line 25

def power
  @power ||= Rubyipmi::Freeipmi::Power.new(@options)
end

#statusObject



73
74
75
76
77
78
79
80
81
82
# File 'lib/rubyipmi/freeipmi/commands/chassis.rb', line 73

def status
  options["get-status"] = false
  value = runcmd
  options.delete_notify("get-status")
  if value
    return parsestatus
  else
    return value
  end
end