rubyipmi 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,7 +1,5 @@
1
1
  module Rubyipmi::Ipmitool
2
-
3
2
  class Fru < Rubyipmi::Ipmitool::BaseCommand
4
-
5
3
  attr_accessor :list
6
4
 
7
5
  DEFAULT_FRU = 'builtin_fru_device'
@@ -29,22 +27,20 @@ module Rubyipmi::Ipmitool
29
27
 
30
28
  # return the list of fru information in a hash
31
29
  def list
32
- if @list.count < 1
33
- parse(getfrus)
34
- end
30
+ parse(getfrus) if @list.count < 1
35
31
  @list
36
32
  end
37
33
 
38
- # method to retrieve the raw fru data
34
+ # method to retrieve the raw fru data
39
35
  def getfrus
40
36
  command
41
37
  end
42
38
 
43
- private
39
+ private
44
40
 
45
41
  # I use method missing to allow the user to say Fru.<name> which returns a frudata object unless the user
46
42
  # passes a keyname from the default fru device
47
- def method_missing(method, *args, &block)
43
+ def method_missing(method, *_args, &_block)
48
44
  name = method.to_s
49
45
  fru = list.fetch(name, nil)
50
46
  # if the user wanted some data from the default fru, lets show the data for the fru. Otherwise
@@ -63,29 +59,27 @@ module Rubyipmi::Ipmitool
63
59
 
64
60
  # parse the fru information
65
61
  def parse(data)
66
- if ! data.nil?
67
- parsed_data = []
68
- data.lines.each do |line|
69
- if line =~ /^FRU.*/
70
- # this is the either the first line of of the fru or another fru
71
- if parsed_data.count != 0
72
- # we have reached a new fru device so lets record the previous fru
73
- new_fru = FruData.new(parsed_data)
74
- parsed_data = []
75
- @list[new_fru[:name]] = new_fru
76
- end
77
-
62
+ return unless data
63
+ parsed_data = []
64
+ data.lines.each do |line|
65
+ if line =~ /^FRU.*/
66
+ # this is the either the first line of of the fru or another fru
67
+ if parsed_data.count != 0
68
+ # we have reached a new fru device so lets record the previous fru
69
+ new_fru = FruData.new(parsed_data)
70
+ parsed_data = []
71
+ @list[new_fru[:name]] = new_fru
78
72
  end
79
- parsed_data << line
80
- end
81
- # process the last fru
82
- if parsed_data.count != 0
83
- # we have reached a new fru device so lets record the previous fru
84
- new_fru = FruData.new(parsed_data)
85
- parsed_data = []
86
- @list[new_fru[:name]] = new_fru
73
+
87
74
  end
75
+ parsed_data << line
88
76
  end
77
+ # process the last fru
78
+ return if parsed_data.count == 0
79
+ # we have reached a new fru device so lets record the previous fru
80
+ new_fru = FruData.new(parsed_data)
81
+ parsed_data = []
82
+ @list[new_fru[:name]] = new_fru
89
83
  end
90
84
 
91
85
  # run the command and return result
@@ -93,15 +87,11 @@ module Rubyipmi::Ipmitool
93
87
  @options["cmdargs"] = "fru"
94
88
  value = runcmd
95
89
  @options.delete_notify("cmdargs")
96
- if value
97
- return @result
98
- end
90
+ return @result if value
99
91
  end
100
-
101
92
  end
102
93
 
103
94
  class FruData < Hash
104
-
105
95
  def name
106
96
  self[:name]
107
97
  end
@@ -112,27 +102,24 @@ module Rubyipmi::Ipmitool
112
102
 
113
103
  # parse the fru information that should be an array of lines
114
104
  def parse(data)
115
- if ! data.nil?
116
- data.each do |line|
117
- key, value = line.split(':', 2)
118
- if key =~ /^FRU\s+Device.*/
119
- if value =~ /([\w\s]*)\(.*\)/
120
- self[:name] = $~[1].strip.gsub(/\ /, '_').downcase
121
- end
122
- else
123
- key = key.strip.gsub(/\ /, '_').downcase
124
- if ! value.nil?
125
- self[key] = value.strip
126
- end
105
+ return unless data
106
+ data.each do |line|
107
+ key, value = line.split(':', 2)
108
+ if key =~ /^FRU\s+Device.*/
109
+ if value =~ /([\w\s]*)\(.*\)/
110
+ self[:name] = $~[1].strip.gsub(/\ /, '_').downcase
127
111
  end
112
+ else
113
+ key = key.strip.gsub(/\ /, '_').downcase
114
+ self[key] = value.strip unless value.nil?
128
115
  end
129
116
  end
130
117
  end
131
118
 
132
119
  private
133
120
 
134
- def method_missing(method, *args, &block)
135
- self.fetch(method.to_s, nil)
121
+ def method_missing(method, *_args, &_block)
122
+ fetch(method.to_s, nil)
136
123
  end
137
124
  end
138
- end
125
+ end
@@ -1,7 +1,5 @@
1
1
  module Rubyipmi::Ipmitool
2
-
3
2
  class Lan < Rubyipmi::Ipmitool::BaseCommand
4
-
5
3
  attr_accessor :info
6
4
  attr_accessor :channel
7
5
  MAX_RETRY = 1
@@ -10,7 +8,6 @@ module Rubyipmi::Ipmitool
10
8
  super("ipmitool", opts)
11
9
  @info = {}
12
10
  @channel = 2
13
-
14
11
  end
15
12
 
16
13
  # sets the info var to be empty causing the variable to repopulate upon the next call to info
@@ -33,7 +30,11 @@ module Rubyipmi::Ipmitool
33
30
  # wait for error to occur then retry using channel 1
34
31
  if retrycount < MAX_RETRY
35
32
  @channel = 1
33
+ retrycount = retrycount.next
36
34
  retry
35
+ else
36
+ # failed to fetch info, return cached info
37
+ @info
37
38
  end
38
39
  end
39
40
  else
@@ -43,81 +44,79 @@ module Rubyipmi::Ipmitool
43
44
  end
44
45
 
45
46
  def snmp
46
- info.fetch("snmp_community_string",nil)
47
+ info.fetch("snmp_community_string", nil)
47
48
  end
48
49
 
49
50
  def ip
50
- info.fetch("ip_address",nil)
51
+ info.fetch("ip_address", nil)
51
52
  end
52
53
 
53
54
  def mac
54
- info.fetch("mac_address",nil)
55
+ info.fetch("mac_address", nil)
55
56
  end
56
57
 
57
58
  def netmask
58
- info.fetch("subnet_mask",nil)
59
+ info.fetch("subnet_mask", nil)
59
60
  end
60
61
 
61
62
  def gateway
62
- info.fetch("default_gateway_ip",nil)
63
+ info.fetch("default_gateway_ip", nil)
63
64
  end
64
65
 
65
66
  def vlanid
66
- info.fetch("802.1q_vlan_id",nil)
67
+ info.fetch("802.1q_vlan_id", nil)
67
68
  end
68
69
 
69
- # def snmp=(community)
70
- # @options["cmdargs"] = "lan set #{channel} snmp #{community}"
71
- # value = runcmd
72
- # @options.delete_notify("cmdargs")
73
- # return value
74
- # end
70
+ # def snmp=(community)
71
+ # @options["cmdargs"] = "lan set #{channel} snmp #{community}"
72
+ # value = runcmd
73
+ # @options.delete_notify("cmdargs")
74
+ # return value
75
+ # end
75
76
 
76
77
  def ip=(address)
77
78
  @options["cmdargs"] = "lan set #{channel} ipaddr #{address}"
78
79
  value = runcmd
79
80
  @options.delete_notify("cmdargs")
80
- return value
81
+ value
81
82
  end
82
83
 
83
84
  def netmask=(mask)
84
85
  @options["cmdargs"] = "lan set #{channel} netmask #{mask}"
85
86
  value = runcmd
86
87
  @options.delete_notify("cmdargs")
87
- return value
88
+ value
88
89
  end
89
90
 
90
91
  def gateway=(address)
91
92
  @options["cmdargs"] = "lan set #{channel} defgw ipaddr #{address}"
92
93
  value = runcmd
93
94
  @options.delete_notify("cmdargs")
94
- return value
95
+ value
95
96
  end
96
97
 
97
98
  def dhcp?
98
- info.fetch("ip_address_source",nil).match(/dhcp/i) != nil
99
+ info.fetch("ip_address_source", nil).match(/dhcp/i) != nil
99
100
  end
100
101
 
101
102
  def static?
102
- info.fetch("ip_address_source",nil).match(/static/i) != nil
103
+ info.fetch("ip_address_source", nil).match(/static/i) != nil
103
104
  end
104
105
 
105
106
  def vlanid=(vlan)
106
107
  @options["cmdargs"] = "lan set #{channel} vlan id #{vlan}"
107
108
  value = runcmd
108
109
  @options.delete_notify("cmdargs")
109
- return value
110
+ value
110
111
  end
111
112
 
112
- private
113
+ private
113
114
 
114
115
  def print
115
116
  @options["cmdargs"] = "lan print"
116
117
  value = runcmd
117
118
  @options.delete_notify("cmdargs")
118
- if value
119
- @result
120
- end
119
+ @result if value
121
120
  end
122
121
 
123
122
  def parse(landata)
@@ -127,14 +126,12 @@ module Rubyipmi::Ipmitool
127
126
  key = normalize(item.first.strip)
128
127
  value = item.last.strip
129
128
  @info[key] = value
130
-
131
129
  end
132
- return @info
130
+ @info
133
131
  end
134
132
 
135
133
  def normalize(text)
136
134
  text.gsub(/\ /, '_').gsub(/\./, '').downcase
137
135
  end
138
-
139
136
  end
140
137
  end
@@ -1,6 +1,8 @@
1
- module Rubyipmi::Ipmitool
1
+ require 'rubyipmi/commands/mixins/power_mixin'
2
2
 
3
+ module Rubyipmi::Ipmitool
3
4
  class Power < Rubyipmi::Ipmitool::BaseCommand
5
+ include Rubyipmi::PowerMixin
4
6
 
5
7
  def initialize(opts = ObservableHash.new)
6
8
  super("ipmitool", opts)
@@ -11,70 +13,17 @@ module Rubyipmi::Ipmitool
11
13
  @options["cmdargs"] = "power #{opt}"
12
14
  value = runcmd
13
15
  @options.delete_notify("cmdargs")
14
- return value
15
- end
16
-
17
- # Turn on the system
18
- def on
19
- if on?
20
- return true
21
- else
22
- command("on")
23
- end
24
- end
25
-
26
- # Turn off the system
27
- def off
28
- if off?
29
- return true
30
- else
31
- command("off")
32
- end
16
+ value
33
17
  end
34
18
 
35
- # Power cycle the system
36
- def cycle
37
- # if the system is off turn it on
38
- if off?
39
- on
40
- else
41
- command("cycle")
42
- end
43
-
44
- end
45
-
46
- # Perform a power reset on the system
47
- def reset
48
- command("reset")
49
- end
50
-
51
- # Perform a soft shutdown, like briefly pushing the power button
52
- def softShutdown
53
- command("soft")
54
- end
55
-
56
- def powerInterrupt
19
+ def power_interrupt
57
20
  command("diag")
58
21
  end
59
22
 
60
23
  # Get the power status of the system, will show either on or off
61
24
  def status
62
25
  value = command("status")
63
- if value
64
- @result.match(/(off|on)/).to_s
65
- end
26
+ @result.match(/(off|on)/).to_s if value
66
27
  end
67
-
68
- # Test to see if the power is on
69
- def on?
70
- status == "on"
71
-
72
- end
73
-
74
- # Test to see if the power is off
75
- def off?
76
- status == "off"
77
- end
78
-
79
28
  end
80
- end
29
+ end
@@ -1,83 +1,25 @@
1
- module Rubyipmi::Ipmitool
1
+ require 'rubyipmi/commands/mixins/sensors_mixin'
2
2
 
3
+ module Rubyipmi::Ipmitool
3
4
  class Sensors < Rubyipmi::Ipmitool::BaseCommand
5
+ include Rubyipmi::SensorsMixin
4
6
 
5
7
  def initialize(opts = ObservableHash.new)
6
8
  super("ipmitool", opts)
7
9
  end
8
10
 
9
- def refresh
10
- @sensors = nil
11
- list
12
- end
13
-
14
- def list
15
- @sensors ||= parse(getsensors)
16
- end
17
-
18
- def count
19
- list.count
20
- end
21
-
22
- def names
23
- list.keys
24
- end
25
-
26
- # returns a hash of fan sensors where the key is fan name and value is the sensor
27
- def fanlist(refreshdata=false)
28
- refresh if refreshdata
29
- flist = {}
30
- list.each do | name,sensor |
31
- if name =~ /.*fan.*/
32
- flist[name] = sensor
33
- end
34
- end
35
- return flist
36
- end
37
-
38
- # returns a hash of sensors where each key is the name of the sensor and the value is the sensor
39
- def templist(refreshdata=false)
40
- refresh if refreshdata
41
- tlist = {}
42
- list.each do | name , sensor |
43
- if sensor[:unit] =~ /.*degree.*/ || name =~ /.*temp.*/
44
- tlist[name] = sensor
45
- end
46
- end
47
- return tlist
48
- end
49
-
50
11
  def getsensors
51
12
  options["cmdargs"] = "sensor"
52
- value = runcmd
13
+ runcmd
53
14
  options.delete_notify("cmdargs")
54
15
  @result
55
16
  end
56
17
 
57
- private
58
-
59
- def method_missing(method, *args, &block)
60
- if not list.has_key?(method.to_s)
61
- raise NoMethodError
62
- else
63
- list[method.to_s]
64
- end
65
- end
66
-
67
- def parse(data)
68
- sensorlist = {}
69
- if ! data.nil?
70
- data.lines.each do | line|
71
- # skip the header
72
- sensor = Sensor.new(line)
73
- sensorlist[sensor[:name]] = sensor
74
- end
75
- end
76
- return sensorlist
18
+ def sensor_class
19
+ Sensor
77
20
  end
78
21
  end
79
22
 
80
-
81
23
  class Sensor < Hash
82
24
  def initialize(line)
83
25
  parse(line)
@@ -85,6 +27,7 @@ module Rubyipmi::Ipmitool
85
27
  end
86
28
 
87
29
  private
30
+
88
31
  def normalize(text)
89
32
  text.gsub(/\ /, '_').gsub(/\./, '').downcase
90
33
  end
@@ -93,17 +36,16 @@ module Rubyipmi::Ipmitool
93
36
  # Note: not all fields will exist on every server
94
37
  def parse(line)
95
38
  fields = [:name, :value, :unit, :status, :type, :state, :lower_nonrec,
96
- :lower_crit,:lower_noncrit, :upper_crit, :upper_nonrec, :asserts_enabled, :deasserts_enabled ]
39
+ :lower_crit, :lower_noncrit, :upper_crit, :upper_nonrec, :asserts_enabled, :deasserts_enabled]
97
40
  # skip the header
98
41
  data = line.split(/\|/)
99
42
  # should we ever encounter a field not in the fields list, just use a counter based fieldname
100
43
  i = 0
101
- data.each do | value |
44
+ data.each do |value|
102
45
  field ||= fields.shift || "field#{i}"
103
46
  self[field] = value.strip
104
47
  i = i.next
105
48
  end
106
49
  end
107
50
  end
108
-
109
- end
51
+ end
@@ -9,11 +9,14 @@ end
9
9
 
10
10
  module Rubyipmi
11
11
  module Ipmitool
12
-
13
12
  class Connection
14
-
15
13
  attr_accessor :options
16
14
 
15
+ DRIVERS_MAP = {
16
+ 'lan15' => 'lan',
17
+ 'lan20' => 'lanplus',
18
+ 'open' => 'open'
19
+ }
17
20
 
18
21
  def initialize(user, pass, host, opts)
19
22
  @options = Rubyipmi::ObservableHash.new
@@ -23,29 +26,17 @@ module Rubyipmi
23
26
  # So they are not required
24
27
  @options["U"] = user if user
25
28
  @options["P"] = pass if pass
26
- if opts.has_key?(:privilege)
27
- @options["L"] = opts[:privilege]
28
- end
29
+ @options["L"] = opts[:privilege] if opts.key?(:privilege)
29
30
  # Note: rubyipmi should auto detect which driver to use so its unnecessary to specify the driver unless
30
31
  # the user really wants to.
31
- @options['I'] = drivers_map[opts[:driver]] unless drivers_map[opts[:driver]].nil?
32
+ @options['I'] = DRIVERS_MAP[opts[:driver]] unless DRIVERS_MAP[opts[:driver]].nil?
32
33
  end
33
34
 
34
35
  # test the connection to ensure we can at least make a single call
35
36
  def connection_works?
36
- begin
37
- ! (bmc.info.nil? || bmc.info.empty? )
38
- rescue
39
- false
40
- end
41
- end
42
-
43
- def drivers_map
44
- {
45
- 'lan15' => 'lan',
46
- 'lan20' => 'lanplus',
47
- 'open' => 'open'
48
- }
37
+ ! (bmc.info.nil? || bmc.info.empty?)
38
+ rescue
39
+ false
49
40
  end
50
41
 
51
42
  def fru
@@ -1,67 +1,33 @@
1
1
  module Rubyipmi
2
2
  module Ipmitool
3
3
  class ErrorCodes
4
-
5
- @@codes = {
6
- "Authentication type NONE not supported\nAuthentication type NONE not supported\n" +
7
- "Error: Unable to establish LAN session\nGet Device ID command failed\n" => {"I" => "lanplus"},
8
- "Authentication type NONE not supported" => {"I" => "lanplus"},
9
- "Error: Unable to establish LAN session\nGet Device ID command failed\n" => {"I" => "lanplus"}
10
-
11
-
4
+ CODES = {
5
+ "Authentication type NONE not supported\nAuthentication type NONE not supported\n" \
6
+ "Error: Unable to establish LAN session\nGet Device ID command failed\n" => {"I" => "lanplus"},
7
+ "Authentication type NONE not supported" => {"I" => "lanplus"},
8
+ "Error: Unable to establish LAN session\nGet Device ID command failed\n" => {"I" => "lanplus"}
12
9
  }
10
+
13
11
  def self.length
14
- @@codes.length
12
+ CODES.length
15
13
  end
16
14
 
17
15
  def self.code
18
- @@codes
16
+ CODES
19
17
  end
20
18
 
21
19
  def self.search(code)
22
- fix = @@codes.fetch(code,nil)
20
+ fix = CODES.fetch(code, nil)
23
21
  if fix.nil?
24
- @@codes.each do | error, result |
22
+ CODES.each do |error, result|
25
23
  # the error should be a subset of the actual erorr
26
- if code =~ /.*#{error}.*/i
27
- return result
28
- end
24
+ return result if code =~ /.*#{error}.*/i
29
25
  end
30
26
  else
31
27
  return fix
32
28
  end
33
29
  raise "No Fix found" if fix.nil?
34
30
  end
35
-
36
-
37
- def throwError
38
- # Find out what kind of error is happening, parse results
39
- # Check for authentication or connection issue
40
-
41
- if @result =~ /timeout|timed\ out/
42
- code = "ipmi call: #{@lastcall} timed out"
43
- raise code
44
- else
45
- code = @result.split(":").last.chomp.strip if not @result.empty?
46
- end
47
- case code
48
- when "invalid hostname"
49
- raise code
50
- when "password invalid"
51
- raise code
52
- when "username invalid"
53
- raise code
54
- else
55
- raise :ipmierror, code
56
- end
57
- end
58
-
59
-
60
31
  end
61
-
62
-
63
-
64
-
65
32
  end
66
33
  end
67
-
@@ -15,6 +15,5 @@ module Rubyipmi
15
15
  delete(del)
16
16
  notify_observers(self)
17
17
  end
18
-
19
18
  end
20
- end
19
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rubyipmi
4
+ VERSION = '0.11.0'.freeze
5
+ end