rubyipmi 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +5 -5
  2. data/.document +5 -0
  3. data/.gitignore +50 -0
  4. data/.rspec +1 -0
  5. data/.rubocop.yml +66 -0
  6. data/.travis.yml +13 -0
  7. data/Gemfile +3 -3
  8. data/README.md +9 -3
  9. data/RELEASE_NOTES.md +33 -0
  10. data/Rakefile +15 -42
  11. data/lib/rubyipmi/commands/basecommand.rb +17 -23
  12. data/lib/rubyipmi/commands/mixins/power_mixin.rb +50 -0
  13. data/lib/rubyipmi/commands/mixins/sensors_mixin.rb +54 -0
  14. data/lib/rubyipmi/freeipmi/commands/basecommand.rb +26 -35
  15. data/lib/rubyipmi/freeipmi/commands/bmc.rb +4 -7
  16. data/lib/rubyipmi/freeipmi/commands/bmcconfig.rb +7 -17
  17. data/lib/rubyipmi/freeipmi/commands/bmcdevice.rb +2 -9
  18. data/lib/rubyipmi/freeipmi/commands/bmcinfo.rb +4 -10
  19. data/lib/rubyipmi/freeipmi/commands/chassis.rb +27 -45
  20. data/lib/rubyipmi/freeipmi/commands/chassisconfig.rb +23 -38
  21. data/lib/rubyipmi/freeipmi/commands/fru.rb +23 -42
  22. data/lib/rubyipmi/freeipmi/commands/lan.rb +4 -6
  23. data/lib/rubyipmi/freeipmi/commands/power.rb +8 -51
  24. data/lib/rubyipmi/freeipmi/commands/sensors.rb +10 -67
  25. data/lib/rubyipmi/freeipmi/connection.rb +14 -17
  26. data/lib/rubyipmi/freeipmi/errorcodes.rb +11 -17
  27. data/lib/rubyipmi/ipmitool/commands/basecommand.rb +12 -16
  28. data/lib/rubyipmi/ipmitool/commands/bmc.rb +13 -22
  29. data/lib/rubyipmi/ipmitool/commands/chassis.rb +26 -44
  30. data/lib/rubyipmi/ipmitool/commands/chassisconfig.rb +11 -21
  31. data/lib/rubyipmi/ipmitool/commands/fru.rb +35 -48
  32. data/lib/rubyipmi/ipmitool/commands/lan.rb +25 -28
  33. data/lib/rubyipmi/ipmitool/commands/power.rb +7 -58
  34. data/lib/rubyipmi/ipmitool/commands/sensors.rb +10 -68
  35. data/lib/rubyipmi/ipmitool/connection.rb +10 -19
  36. data/lib/rubyipmi/ipmitool/errorcodes.rb +11 -45
  37. data/lib/rubyipmi/observablehash.rb +1 -2
  38. data/lib/rubyipmi/version.rb +5 -0
  39. data/lib/rubyipmi.rb +23 -28
  40. data/rubyipmi.gemspec +17 -128
  41. metadata +18 -101
  42. data/spec/Vagrantfile +0 -45
  43. data/spec/fixtures/freeipmi/bmc_config.txt +0 -317
  44. data/spec/fixtures/freeipmi/bmc_config_lan_conf.txt +0 -19
  45. data/spec/fixtures/freeipmi/bmc_info.txt +0 -32
  46. data/spec/fixtures/freeipmi/errors.txt +0 -3
  47. data/spec/fixtures/freeipmi/fru.txt +0 -13
  48. data/spec/fixtures/freeipmi/sensors.txt +0 -29
  49. data/spec/fixtures/ipmitool/bmc_info.txt +0 -20
  50. data/spec/fixtures/ipmitool/errors.txt +0 -10
  51. data/spec/fixtures/ipmitool/fru.txt +0 -96
  52. data/spec/fixtures/ipmitool/lan.txt +0 -17
  53. data/spec/fixtures/ipmitool/sensors.txt +0 -105
  54. data/spec/integration/bmc_spec.rb +0 -48
  55. data/spec/integration/chassis_config_spec.rb +0 -38
  56. data/spec/integration/chassis_spec.rb +0 -26
  57. data/spec/integration/connection_spec.rb +0 -45
  58. data/spec/integration/fru_spec.rb +0 -38
  59. data/spec/integration/lan_spec.rb +0 -50
  60. data/spec/integration/power_spec.rb +0 -40
  61. data/spec/integration/rubyipmi_spec.rb +0 -114
  62. data/spec/integration/sensor_spec.rb +0 -43
  63. data/spec/manifests/default.pp +0 -50
  64. data/spec/puppetmodules/archive/LICENSE-2.0.txt +0 -202
  65. data/spec/puppetmodules/archive/Modulefile +0 -8
  66. data/spec/puppetmodules/archive/README.md +0 -40
  67. data/spec/puppetmodules/archive/manifests/download.pp +0 -157
  68. data/spec/puppetmodules/archive/manifests/extract.pp +0 -81
  69. data/spec/puppetmodules/archive/manifests/init.pp +0 -70
  70. data/spec/puppetmodules/archive/manifests/tar-gz.pp +0 -7
  71. data/spec/puppetmodules/archive/manifests/zip.pp +0 -7
  72. data/spec/puppetmodules/archive/metadata.json +0 -26
  73. data/spec/spec_helper.rb +0 -47
  74. data/spec/unit/freeipmi/bmc-info_spec.rb +0 -38
  75. data/spec/unit/freeipmi/bmc_spec.rb +0 -43
  76. data/spec/unit/freeipmi/connection_spec.rb +0 -121
  77. data/spec/unit/freeipmi/errorcodes_spec.rb +0 -28
  78. data/spec/unit/freeipmi/fru_spec.rb +0 -76
  79. data/spec/unit/freeipmi/lan_spec.rb +0 -0
  80. data/spec/unit/freeipmi/sensors_spec.rb +0 -85
  81. data/spec/unit/ipmitool/bmc_spec.rb +0 -77
  82. data/spec/unit/ipmitool/connection_spec.rb +0 -122
  83. data/spec/unit/ipmitool/errorcodes_spec.rb +0 -35
  84. data/spec/unit/ipmitool/fru_spec.rb +0 -77
  85. data/spec/unit/ipmitool/lan_spec.rb +0 -94
  86. data/spec/unit/ipmitool/sensors_spec.rb +0 -96
  87. data/spec/unit/rubyipmi_spec.rb +0 -50
  88. data/spec/vagrant +0 -27
  89. data/spec/vagrant.pub +0 -1
@@ -1,14 +1,11 @@
1
1
  module Rubyipmi::Freeipmi
2
-
3
2
  class BmcConfig < Rubyipmi::Freeipmi::BaseCommand
4
-
5
3
  def initialize(opts = ObservableHash.new)
6
4
  super("bmc-config", opts)
7
5
  @sections = []
8
-
9
6
  end
10
7
 
11
- def verbose(on=false)
8
+ def verbose(on = false)
12
9
  if on
13
10
  @options['verbose'] = false
14
11
  else
@@ -19,32 +16,29 @@ module Rubyipmi::Freeipmi
19
16
  def section(section)
20
17
  @options["checkout"] = false
21
18
  @options["section"] = section
22
- value = runcmd
19
+ runcmd
23
20
  @options.delete_notify("checkout")
24
21
  @options.delete_notify("section")
25
- return @result
22
+ @result
26
23
  end
27
24
 
28
25
  def setsection(section, key, value)
29
26
  keypair = "#{section}:#{key}=#{value}"
30
27
  @options["commit"] = false
31
- if not keypair.empty?
28
+ unless keypair.empty?
32
29
  @options["key-pair"] = keypair
33
30
  value = runcmd
34
31
  @options.delete_notify("commit")
35
32
  @options.delete_notify("key-pair")
36
33
  return value
37
34
  end
38
- return false
35
+ false
39
36
  end
40
37
 
41
-
42
38
  # returns the entire bmc-config configuration, can take a while to execute
43
39
  def configuration
44
- require 'pry'
45
- binding.pry
46
40
  @options["checkout"] = false
47
- value = runcmd
41
+ runcmd
48
42
  @options.delete_notify("checkout")
49
43
  @result
50
44
  end
@@ -55,13 +49,9 @@ module Rubyipmi::Freeipmi
55
49
  @options["listsections"] = false
56
50
  value = runcmd
57
51
  @options.delete_notify("listsections")
58
- if value
59
- @sections = @result.split(/\n/)
60
- end
52
+ @sections = @result.split(/\n/) if value
61
53
  end
62
54
  @sections
63
55
  end
64
-
65
-
66
56
  end
67
57
  end
@@ -1,7 +1,5 @@
1
1
  module Rubyipmi::Freeipmi
2
-
3
2
  class BmcDevice < Rubyipmi::Freeipmi::BaseCommand
4
-
5
3
  def initialize(opts = ObservableHash.new)
6
4
  super("bmc-device", opts)
7
5
  end
@@ -11,11 +9,11 @@ module Rubyipmi::Freeipmi
11
9
  @options[opt] = false
12
10
  value = runcmd
13
11
  @options.delete_notify(opt)
14
- return value
12
+ value
15
13
  end
16
14
 
17
15
  # reset the bmc device, useful for debugging and troubleshooting
18
- def reset(type='cold')
16
+ def reset(type = 'cold')
19
17
  if ['cold', 'warm'].include?(type)
20
18
  key = "#{type}-reset"
21
19
  command(key)
@@ -24,10 +22,5 @@ module Rubyipmi::Freeipmi
24
22
  raise "reset type: #{type} is not a valid choice, use warm or cold"
25
23
  end
26
24
  end
27
-
28
-
29
-
30
25
  end
31
-
32
-
33
26
  end
@@ -1,29 +1,25 @@
1
1
  module Rubyipmi::Freeipmi
2
-
3
2
  class BmcInfo < Rubyipmi::Freeipmi::BaseCommand
4
-
5
3
  def initialize(opts = ObservableHash.new)
6
4
  super("bmc-info", opts)
7
-
8
5
  end
9
6
 
10
7
  def guid
11
8
  options["get-device-guid"] = false
12
9
  status = runcmd
13
10
  options.delete_notify("get-device-guid")
14
- if not status
11
+ if !status
15
12
  raise @result
16
13
  else
17
14
  @result.chomp.strip
18
15
  end
19
-
20
16
  end
21
17
 
22
18
  def retrieve
23
19
  bmcinfo = {}
24
20
  status = runcmd
25
21
  subkey = nil
26
- if not status
22
+ if !status
27
23
  raise @result
28
24
  else
29
25
  @result.lines.each do |line|
@@ -32,10 +28,10 @@ module Rubyipmi::Freeipmi
32
28
  key = item.first.strip
33
29
  value = item.last.strip
34
30
  # if the following condition is met we have subvalues
35
- if key == value and not subkey
31
+ if key == value && !subkey
36
32
  subkey = key
37
33
  bmcinfo[subkey] = []
38
- elsif key == value and subkey
34
+ elsif key == value && subkey
39
35
  # subvalue found
40
36
  bmcinfo[subkey] << value.gsub(/\[|\]/, "")
41
37
  else
@@ -49,5 +45,3 @@ module Rubyipmi::Freeipmi
49
45
  end
50
46
  end
51
47
  end
52
-
53
-
@@ -1,14 +1,11 @@
1
1
  module Rubyipmi::Freeipmi
2
-
3
2
  class Chassis < Rubyipmi::Freeipmi::BaseCommand
4
-
5
3
  def initialize(opts = ObservableHash.new)
6
4
  super("ipmi-chassis", opts)
7
-
8
5
  end
9
6
 
10
7
  # Turn the led light on / off or with a delay
11
- def identify(status=false, delay=0)
8
+ def identify(status = false, delay = 0)
12
9
  if status
13
10
  if delay <= 0
14
11
  options["chassis-identify"] = "FORCE"
@@ -21,7 +18,7 @@ module Rubyipmi::Freeipmi
21
18
  # Run the command
22
19
  value = runcmd
23
20
  options.delete_notify("chassis-identify")
24
- return value
21
+ value
25
22
  end
26
23
 
27
24
  # Access to the power command created on the fly
@@ -35,80 +32,67 @@ module Rubyipmi::Freeipmi
35
32
  end
36
33
 
37
34
  # set boot device from given boot device
38
- def bootdevice(device, reboot=false, persistent=false)
35
+ def bootdevice(device, reboot = false, persistent = false)
39
36
  if config.bootdevices.include?(device)
40
37
  bootstatus = config.bootdevice(device, persistent)
41
- if reboot and bootstatus
42
- power.cycle
43
- end
44
-
38
+ power.cycle if reboot && bootstatus
45
39
  else
46
- logger.error("Device with name: #{device} is not a valid boot device for host #{options["hostname"]}") if logger
47
- raise "Device with name: #{device} is not a valid boot device for host #{options["hostname"]}"
40
+ logger.error("Device with name: #{device} is not a valid boot device for host #{options['hostname']}") if logger
41
+ raise "Device with name: #{device} is not a valid boot device for host #{options['hostname']}"
48
42
  end
49
43
  end
50
44
 
51
45
  # set boot device to pxe with option to reboot
52
- def bootpxe(reboot=false,persistent=false)
46
+ def bootpxe(reboot = false, persistent = false)
53
47
  bootstatus = config.bootpxe(persistent)
54
48
  # Only reboot if setting the boot flag was successful
55
- if reboot and bootstatus
56
- power.cycle
57
- end
49
+ power.cycle if reboot && bootstatus
58
50
  end
59
51
 
60
52
  # set boot device to disk with option to reboot
61
- def bootdisk(reboot=false,persistent=false)
53
+ def bootdisk(reboot = false, persistent = false)
62
54
  bootstatus = config.bootdisk(persistent)
63
55
  # Only reboot if setting the boot flag was successful
64
- if reboot and bootstatus
65
- power.cycle
66
- end
67
-
56
+ power.cycle if reboot && bootstatus
68
57
  end
69
58
 
70
59
  # set boot device to cdrom with option to reboot
71
- def bootcdrom(reboot=false,persistent=false)
60
+ def bootcdrom(reboot = false, persistent = false)
72
61
  bootstatus = config.bootcdrom(persistent)
73
62
  # Only reboot if setting the boot flag was successful
74
- if reboot and bootstatus
75
- power.cycle
76
- end
63
+ power.cycle if reboot && bootstatus
77
64
  end
78
65
 
79
66
  # boot into bios setup with option to reboot
80
- def bootbios(reboot=false,persistent=false)
67
+ def bootbios(reboot = false, persistent = false)
81
68
  bootstatus = config.bootbios(persistent)
82
69
  # Only reboot if setting the boot flag was successful
83
- if reboot and bootstatus
84
- power.cycle
85
- end
70
+ power.cycle if reboot && bootstatus
86
71
  end
87
72
 
88
73
  def status
89
- options["get-status"] = false
90
- value = runcmd
91
- options.delete_notify("get-status")
92
- if value
93
- return parsestatus
94
- else
95
- return value
96
- end
97
-
74
+ options["get-status"] = false
75
+ value = runcmd
76
+ options.delete_notify("get-status")
77
+ if value
78
+ return parsestatus
79
+ else
80
+ return value
81
+ end
98
82
  end
99
83
 
100
84
  # A currently unsupported method to retrieve the led status
101
85
  def identifystatus
102
- # TODO implement this function
86
+ # TODO: implement this function
103
87
  # parse out the identify status
104
- # status.result
88
+ # status.result
105
89
  end
106
90
 
107
91
  private
92
+
108
93
  def parsestatus
109
94
  statusresult = @result
110
95
  statusvalues = {}
111
- subkey = nil
112
96
  statusresult.lines.each do |line|
113
97
  # clean up the data from spaces
114
98
  item = line.split(':')
@@ -116,9 +100,7 @@ module Rubyipmi::Freeipmi
116
100
  value = item.last.strip
117
101
  statusvalues[key] = value
118
102
  end
119
- return statusvalues
103
+ statusvalues
120
104
  end
121
-
122
-
123
105
  end
124
- end
106
+ end
@@ -1,10 +1,7 @@
1
1
  module Rubyipmi::Freeipmi
2
-
3
2
  class ChassisConfig < Rubyipmi::Freeipmi::BaseCommand
4
-
5
3
  def initialize(opts = ObservableHash.new)
6
4
  super("ipmi-chassis-config", opts)
7
-
8
5
  end
9
6
 
10
7
  # This is the raw command to send a new configuration to the ipmi device
@@ -12,45 +9,33 @@ module Rubyipmi::Freeipmi
12
9
  @options["commit"] = false
13
10
  value = runcmd
14
11
  @options.delete_notify("commit")
15
- return value
12
+ value
16
13
  end
17
14
 
18
15
  # This is the raw command to get the entire ipmi chassis configuration
19
16
  # If you pass in a section you will get just the section
20
- def checkout(section=nil)
17
+ def checkout(section = nil)
21
18
  @options["checkout"] = false
22
- if section
23
- @options["section"] = section
24
- end
19
+ @options["section"] = section if section
25
20
  value = runcmd
26
21
  @options.delete_notify("checkout")
27
- if section
28
- @options.delete_notify("section")
29
- end
30
- return value
31
- end
32
-
33
- def bootdevice
34
- value = checkout("Chassis_Boot_Flags")
35
- if value
36
- # TODO parse result to return current boot device
37
- #@result
38
- end
22
+ @options.delete_notify("section") if section
23
+ value
39
24
  end
40
25
 
41
26
  def bootdevice(device, persistent)
42
- setBootFlag("Boot_Device", device,persistent)
27
+ set_boot_flag("Boot_Device", device, persistent)
43
28
  end
44
29
 
45
30
  def bootdevices
46
31
  # freeipmi returns a list of supported devices
47
32
  # However, for now we will just assume the following
48
33
  ["PXE", "HARD-DRIVE", "CD-DVD", "BIOS-SETUP"]
49
- # TODO return array of possible boot devices
34
+ # TODO: return array of possible boot devices
50
35
  end
51
36
 
52
37
  def bootpersistent(value)
53
- # TODO find out if we can specify multiple key-pair values
38
+ # TODO: find out if we can specify multiple key-pair values
54
39
  if value == true
55
40
  flag = "Chassis_Boot_Flags:Boot_Flags_Persistent=Yes"
56
41
  else
@@ -59,40 +44,40 @@ module Rubyipmi::Freeipmi
59
44
  @options["key-pair"] = "\"#{flag}\""
60
45
  value = commit
61
46
  @options.delete_notify("key-pair")
62
- return value
47
+ value
63
48
  end
64
49
 
65
50
  # shortcut to set boot device to pxe
66
- def bootpxe(persistent=true)
67
- bootdevice("PXE",persistent)
51
+ def bootpxe(persistent = true)
52
+ bootdevice("PXE", persistent)
68
53
  end
69
54
 
70
55
  # shortcut to set boot device to disk
71
- def bootdisk(persistent=true)
72
- bootdevice("HARD-DRIVE",persistent)
56
+ def bootdisk(persistent = true)
57
+ bootdevice("HARD-DRIVE", persistent)
73
58
  end
74
59
 
75
60
  # shortcut to set boot device to cdrom
76
- def bootcdrom(persistent=true)
77
- bootdevice("CD-DVD",persistent)
61
+ def bootcdrom(persistent = true)
62
+ bootdevice("CD-DVD", persistent)
78
63
  end
79
64
 
80
65
  # shortcut to boot into bios setup
81
- def bootbios(persistent=true)
82
- bootdevice("BIOS-SETUP",persistent)
66
+ def bootbios(persistent = true)
67
+ bootdevice("BIOS-SETUP", persistent)
83
68
  end
84
69
 
85
70
  private
86
71
 
87
- def setBootFlag(key,flag, persistent)
72
+ def set_boot_flag(key, flag, _persistent)
88
73
  @options["key-pair"] = "\"Chassis_Boot_Flags:#{key}=#{flag}\""
89
74
  value = commit
90
75
  @options.delete_notify("key-pair")
91
- return value
76
+ value
92
77
  end
93
78
  end
94
79
 
95
- ## Possible values: NO-OVERRIDE/PXE/HARD-DRIVE/HARD-DRIVE-SAFE-MODE/
96
- ## DIAGNOSTIC_PARTITION/CD-DVD/BIOS-SETUP/REMOTE-FLOPPY
97
- ## PRIMARY-REMOTE-MEDIA/REMOTE-CD-DVD/REMOTE-HARD-DRIVE/FLOPPY
98
- end
80
+ ## Possible values: NO-OVERRIDE/PXE/HARD-DRIVE/HARD-DRIVE-SAFE-MODE/
81
+ ## DIAGNOSTIC_PARTITION/CD-DVD/BIOS-SETUP/REMOTE-FLOPPY
82
+ ## PRIMARY-REMOTE-MEDIA/REMOTE-CD-DVD/REMOTE-HARD-DRIVE/FLOPPY
83
+ end
@@ -1,24 +1,17 @@
1
1
  module Rubyipmi::Freeipmi
2
-
3
2
  class Fru < Rubyipmi::Freeipmi::BaseCommand
4
-
5
3
  attr_accessor :list
6
4
 
7
5
  DEFAULT_FRU = 'default_fru_device'
8
6
 
9
7
  def initialize(opts = ObservableHash.new)
10
- super("ipmi-fru", opts)
11
- @list = {}
8
+ super("ipmi-fru", opts)
9
+ @list = {}
12
10
  end
13
11
 
14
12
  def get_from_list(key)
15
- if list.has_key?(DEFAULT_FRU)
16
- if list[DEFAULT_FRU].has_key?(key)
17
- list[DEFAULT_FRU][key]
18
- else
19
- nil
20
- end
21
- end
13
+ return unless list.key?(DEFAULT_FRU)
14
+ list[DEFAULT_FRU][key] if list[DEFAULT_FRU].key?(key)
22
15
  end
23
16
 
24
17
  def manufacturer
@@ -40,7 +33,7 @@ module Rubyipmi::Freeipmi
40
33
  # method to retrieve the raw fru data
41
34
  def getfrus
42
35
  command
43
- return @result
36
+ @result
44
37
  end
45
38
 
46
39
  def names
@@ -49,15 +42,13 @@ module Rubyipmi::Freeipmi
49
42
 
50
43
  # return the list of fru information in a hash
51
44
  def list
52
- if @list.count < 1
53
- parse(getfrus)
54
- end
45
+ parse(getfrus) if @list.count < 1
55
46
  @list
56
47
  end
57
48
 
58
49
  private
59
50
 
60
- def method_missing(method, *args, &block)
51
+ def method_missing(method, *_args, &_block)
61
52
  name = method.to_s
62
53
  fru = list.fetch(name, nil)
63
54
  # if the user wanted some data from the default fru, lets show the data for the fru. Otherwise
@@ -76,7 +67,7 @@ module Rubyipmi::Freeipmi
76
67
 
77
68
  # parse the fru information
78
69
  def parse(data)
79
- if ! data.nil? and ! data.empty?
70
+ if !data.nil? && !data.empty?
80
71
  parsed_data = []
81
72
  data.lines.each do |line|
82
73
  if line =~ /^FRU.*/
@@ -87,7 +78,6 @@ module Rubyipmi::Freeipmi
87
78
  parsed_data = []
88
79
  @list[new_fru[:name]] = new_fru
89
80
  end
90
-
91
81
  end
92
82
  parsed_data << line
93
83
  end
@@ -99,21 +89,17 @@ module Rubyipmi::Freeipmi
99
89
  @list[new_fru[:name]] = new_fru
100
90
  end
101
91
  end
102
- return @list
92
+ @list
103
93
  end
104
94
 
105
95
  # run the command and return result
106
96
  def command
107
- value = runcmd
108
- if value
109
- return @result
110
- end
97
+ value = runcmd
98
+ return @result if value
111
99
  end
112
-
113
100
  end
114
101
 
115
102
  class FruData < Hash
116
-
117
103
  def name
118
104
  self[:name]
119
105
  end
@@ -124,29 +110,24 @@ module Rubyipmi::Freeipmi
124
110
 
125
111
  # parse the fru information that should be an array of lines
126
112
  def parse(data)
127
- if ! data.nil?
128
- data.each do |line|
129
- key, value = line.split(':', 2)
130
- if key =~ /^FRU.*/
131
- if value =~ /([\w\s]*)\(.*\)/
132
- self[:name] = $~[1].strip.gsub(/\ /, '_').downcase
133
- end
134
- else
135
- key = key.strip.gsub(/\ /, '_').downcase.gsub(/fru_/, '')
136
- if ! value.nil?
137
- self[key] = value.strip
138
-
139
- end
113
+ return unless data
114
+ data.each do |line|
115
+ key, value = line.split(':', 2)
116
+ if key =~ /^FRU.*/
117
+ if value =~ /([\w\s]*)\(.*\)/
118
+ self[:name] = $~[1].strip.gsub(/\ /, '_').downcase
140
119
  end
120
+ else
121
+ key = key.strip.gsub(/\ /, '_').downcase.gsub(/fru_/, '')
122
+ self[key] = value.strip unless value.nil?
141
123
  end
142
124
  end
143
125
  end
144
126
 
145
127
  private
146
128
 
147
- def method_missing(method, *args, &block)
148
- self.fetch(method.to_s, nil)
129
+ def method_missing(method, *_args, &_block)
130
+ fetch(method.to_s, nil)
149
131
  end
150
-
151
132
  end
152
- end
133
+ end
@@ -1,7 +1,5 @@
1
1
  module Rubyipmi::Freeipmi
2
-
3
2
  class Lan
4
-
5
3
  attr_accessor :info
6
4
  attr_accessor :channel
7
5
  attr_accessor :config
@@ -22,11 +20,11 @@ module Rubyipmi::Freeipmi
22
20
  end
23
21
 
24
22
  def dhcp?
25
- info.fetch("ip_address_source",nil).match(/dhcp/i) != nil
23
+ info.fetch("ip_address_source", nil).match(/dhcp/i) != nil
26
24
  end
27
25
 
28
26
  def static?
29
- info.fetch("ip_address_source",nil).match(/static/i) != nil
27
+ info.fetch("ip_address_source", nil).match(/static/i) != nil
30
28
  end
31
29
 
32
30
  def ip
@@ -87,7 +85,7 @@ module Rubyipmi::Freeipmi
87
85
  # end
88
86
 
89
87
  def parse(landata)
90
- if ! landata.nil? and ! landata.empty?
88
+ if !landata.nil? && !landata.empty?
91
89
  landata.lines.each do |line|
92
90
  # clean up the data from spaces
93
91
  next if line.match(/#+/)
@@ -102,4 +100,4 @@ module Rubyipmi::Freeipmi
102
100
  @info
103
101
  end
104
102
  end
105
- end
103
+ end
@@ -1,5 +1,8 @@
1
+ require 'rubyipmi/commands/mixins/power_mixin'
2
+
1
3
  module Rubyipmi::Freeipmi
2
4
  class Power < Rubyipmi::Freeipmi::BaseCommand
5
+ include Rubyipmi::PowerMixin
3
6
 
4
7
  def initialize(opts = ObservableHash.new)
5
8
  super("ipmipower", opts)
@@ -8,65 +11,19 @@ module Rubyipmi::Freeipmi
8
11
  # The command function is a wrapper that actually calls the run method
9
12
  def command(opt)
10
13
  @options[opt] = false
11
- value = runcmd
14
+ runcmd
12
15
  @options.delete_notify(opt)
13
- return @result
14
- end
15
-
16
- # Turn on the system
17
- def on
18
- command("on")
19
- end
20
-
21
- # Turn off the system
22
- def off
23
- command("off")
24
- end
25
-
26
- # Power cycle the system
27
- def cycle
28
- # if the system is off turn it on
29
- if off?
30
- on
31
- else
32
- command("cycle")
33
- end
34
-
35
- end
36
-
37
- # Perform a power reset on the system
38
- def reset
39
- command("reset")
16
+ @result
40
17
  end
41
18
 
42
- # Perform a soft shutdown, like briefly pushing the power button
43
- def softShutdown
44
- command("soft")
45
- end
46
-
47
- def powerInterrupt
19
+ def power_interrupt
48
20
  command("pulse")
49
21
  end
50
22
 
51
23
  # Get the power status of the system, will show either on or off
52
24
  def status
53
25
  value = command("stat")
54
- if value
55
- @result.split(":").last.chomp.strip
56
- end
26
+ @result.split(":").last.chomp.strip if value
57
27
  end
58
-
59
- # Test to see if the power is on
60
- def on?
61
- status == "on"
62
- end
63
-
64
- # Test to see if the power is off
65
- def off?
66
- status == "off"
67
- end
68
-
69
-
70
-
71
28
  end
72
- end
29
+ end