radfish-ami 0.1.14 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 177c683aa6971d7a736b42af44ad87a5d65bcfe9cf4bf5690cb7050c8971bae9
4
- data.tar.gz: d1c29be71c6561e814eb4e245c03a702500f1393991b9fc02716428c0d2f2267
3
+ metadata.gz: 76cf67c7fb9c9e39fe6a8ce31abdd5aebdbe4a163b0ef2fe54f58dec66660df8
4
+ data.tar.gz: c43fe978df0f508e98ae8ce67825716cc82bb72e78b57072e092e9ee2dc201d4
5
5
  SHA512:
6
- metadata.gz: 153851c16bd783f43f08d132d50926460bba42d7304862173b69cdce06861edd5bb042b2d4278582eca6ba1e8ca9fbbedb10cd3e65caeb8ad5bb47f1b59f1eb5
7
- data.tar.gz: 4602cb3e89e9095f4b620977ebef501eb554ff3dedac73253c3330731f1cabfaad4a3a73a96101b4aae922471c447345336134cdb3a5f173abbc6ea2444cd69c
6
+ metadata.gz: b4d46e7bb0c116831756108ac58833fa4c314f8a963830b9a48fe45c0c25853dc330b915e372963062b532d738176b7d23a57b7453c4de05034fb8a70967e231
7
+ data.tar.gz: f484110570b0ee14ff6ae8b9fbc64a5dffbf7fa8dade0e359402cd41422d6d2df056bac88298cfd5709ef614fb44f167c1b04ae8cb6979ec81316b40d055fe6e
data/README.md CHANGED
@@ -46,7 +46,7 @@ client.power_restart(force: true)
46
46
 
47
47
  # Virtual media
48
48
  client.insert_virtual_media('http://example.com/boot.iso')
49
- client.set_boot_override('Cd', persistent: false)
49
+ client.set_boot_override('Cd', persistence: 'Once')
50
50
  client.power_restart
51
51
 
52
52
  # Thermal data
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Radfish
4
4
  module Ami
5
- VERSION = "0.1.14"
5
+ VERSION = "0.2.0"
6
6
  end
7
7
  end
@@ -266,8 +266,9 @@ module Radfish
266
266
  end
267
267
 
268
268
  def psus
269
- # AMI BMC reports power sensors in the Power endpoint, not traditional PSU info
270
- # Filter to show only PSU-related power sensors (containing "PSU" in name)
269
+ # AMI BMC reports power sensors in the Power endpoint
270
+ # Format: { name: "PSU1", model: "...", serial: "...",
271
+ # voltage: 208, voltage_human: "AC240V", watts: 320, status: "OK" }
271
272
  power_data = get_power_data
272
273
  all_sensors = power_data["PowerSupplies"] || []
273
274
 
@@ -286,36 +287,34 @@ module Radfish
286
287
  next unless match
287
288
 
288
289
  psu_num = match[1]
289
- psu_groups[psu_num] ||= { input_watts: nil, output_watts: nil, status: nil, state: nil }
290
+ psu_groups[psu_num] ||= { watts: nil, status: nil }
290
291
 
291
- if name.include?("PIN")
292
- psu_groups[psu_num][:input_watts] = sensor["PowerInputWatts"]
293
- elsif name.include?("POUT")
294
- psu_groups[psu_num][:output_watts] = sensor["PowerInputWatts"] # POUT reported as PowerInputWatts
292
+ # Use PIN (input) watts as the primary wattage reading
293
+ if name.include?("PIN") && sensor["PowerInputWatts"]
294
+ psu_groups[psu_num][:watts] = sensor["PowerInputWatts"]
295
295
  end
296
296
 
297
- # Track status - prefer non-Absent, but record Absent if that's all we have
297
+ # Track status - prefer non-Absent
298
298
  sensor_state = sensor.dig("Status", "State")
299
299
  sensor_health = sensor.dig("Status", "Health")
300
300
 
301
- if sensor_state == "Absent"
302
- psu_groups[psu_num][:state] ||= "Absent"
303
- psu_groups[psu_num][:status] ||= "N/A"
304
- else
305
- # Override Absent with actual status
301
+ if sensor_state != "Absent"
306
302
  psu_groups[psu_num][:status] = sensor_health || "OK"
307
- psu_groups[psu_num][:state] = sensor_state || "Enabled"
303
+ elsif psu_groups[psu_num][:status].nil?
304
+ psu_groups[psu_num][:status] = "Absent"
308
305
  end
309
306
  end
310
307
 
311
- # Convert to OpenStruct array
308
+ # Convert to OpenStruct array matching expected format
312
309
  psu_groups.map do |psu_num, data|
313
310
  OpenStruct.new(
314
311
  name: "PSU#{psu_num}",
315
- input_watts: data[:input_watts],
316
- output_watts: data[:output_watts],
317
- status: data[:status] || "Unknown",
318
- state: data[:state] || "Unknown"
312
+ model: nil, # AMI doesn't provide model info
313
+ serial: nil, # AMI doesn't provide serial info
314
+ voltage: nil, # AMI doesn't provide voltage info
315
+ voltage_human: nil, # AMI doesn't provide voltage type
316
+ watts: data[:watts],
317
+ status: data[:status] || "Unknown"
319
318
  )
320
319
  end.sort_by { |psu| psu.name }
321
320
  end
@@ -649,7 +648,7 @@ module Radfish
649
648
 
650
649
  def mount_iso_and_boot(iso_url, device: nil)
651
650
  insert_virtual_media(iso_url, device: device)
652
- set_boot_override("Cd", persistent: false)
651
+ set_boot_override("Cd", persistence: 'Once')
653
652
  power_restart(force: true)
654
653
  end
655
654
 
@@ -670,19 +669,19 @@ module Radfish
670
669
  }
671
670
  end
672
671
 
673
- def set_boot_override(target, persistent: false)
674
- enabled = persistent ? "Continuous" : "Once"
672
+ def set_boot_override(target, persistence: nil, mode: nil)
673
+ persistence = "Once" unless persistence
675
674
  payload = {
676
675
  "Boot" => {
677
676
  "BootSourceOverrideTarget" => target,
678
- "BootSourceOverrideEnabled" => enabled
677
+ "BootSourceOverrideEnabled" => persistence
679
678
  }
680
679
  }
681
680
 
682
681
  response = authenticated_request(:patch, "/redfish/v1/Systems/#{SYSTEM_ID}", body: payload.to_json)
683
682
 
684
683
  if response.status.between?(200, 204)
685
- debug "Boot override set to #{target} (#{enabled})", 1, :green
684
+ debug "Boot override set to #{target} (#{persistence})", 1, :green
686
685
  true
687
686
  else
688
687
  error_msg = begin
@@ -721,24 +720,24 @@ module Radfish
721
720
  boot_config["BootOrder"] || []
722
721
  end
723
722
 
724
- def boot_to_pxe(persistent: false)
725
- set_boot_override("Pxe", persistent: persistent)
723
+ def boot_to_pxe(persistence: nil, mode: nil)
724
+ set_boot_override("Pxe", persistence: persistence, mode: mode)
726
725
  end
727
726
 
728
- def boot_to_disk(persistent: false)
729
- set_boot_override("Hdd", persistent: persistent)
727
+ def boot_to_disk(persistence: nil, mode: nil)
728
+ set_boot_override("Hdd", persistence: persistence, mode: mode)
730
729
  end
731
730
 
732
- def boot_to_cd(persistent: false)
733
- set_boot_override("Cd", persistent: persistent)
731
+ def boot_to_cd(persistence: nil, mode: nil)
732
+ set_boot_override("Cd", persistence: persistence, mode: mode)
734
733
  end
735
734
 
736
- def boot_to_usb(persistent: false)
737
- set_boot_override("Usb", persistent: persistent)
735
+ def boot_to_usb(persistence: nil, mode: nil)
736
+ set_boot_override("Usb", persistence: persistence, mode: mode)
738
737
  end
739
738
 
740
- def boot_to_bios_setup(persistent: false)
741
- set_boot_override("BiosSetup", persistent: persistent)
739
+ def boot_to_bios_setup(persistence: nil, mode: nil)
740
+ set_boot_override("BiosSetup", persistence: persistence, mode: mode)
742
741
  end
743
742
 
744
743
  # Jobs/Tasks
data/radfish-ami.gemspec CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  end
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_dependency "radfish", "~> 0.2"
24
+ spec.add_dependency "radfish", "~> 0.3", ">= 0.3.0"
25
25
  spec.add_dependency "ostruct", "~> 0.6"
26
26
 
27
27
  spec.add_development_dependency "bundler", "~> 2.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: radfish-ami
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Siegel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-12-21 00:00:00.000000000 Z
11
+ date: 2026-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: radfish
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.2'
19
+ version: '0.3'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.3.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: '0.2'
29
+ version: '0.3'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.3.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: ostruct
29
35
  requirement: !ruby/object:Gem::Requirement