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 +4 -4
- data/README.md +1 -1
- data/lib/radfish/ami/version.rb +1 -1
- data/lib/radfish/ami_adapter.rb +33 -34
- data/radfish-ami.gemspec +1 -1
- metadata +10 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 76cf67c7fb9c9e39fe6a8ce31abdd5aebdbe4a163b0ef2fe54f58dec66660df8
|
|
4
|
+
data.tar.gz: c43fe978df0f508e98ae8ce67825716cc82bb72e78b57072e092e9ee2dc201d4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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',
|
|
49
|
+
client.set_boot_override('Cd', persistence: 'Once')
|
|
50
50
|
client.power_restart
|
|
51
51
|
|
|
52
52
|
# Thermal data
|
data/lib/radfish/ami/version.rb
CHANGED
data/lib/radfish/ami_adapter.rb
CHANGED
|
@@ -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
|
|
270
|
-
#
|
|
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] ||= {
|
|
290
|
+
psu_groups[psu_num] ||= { watts: nil, status: nil }
|
|
290
291
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
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",
|
|
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,
|
|
674
|
-
|
|
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" =>
|
|
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} (#{
|
|
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(
|
|
725
|
-
set_boot_override("Pxe",
|
|
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(
|
|
729
|
-
set_boot_override("Hdd",
|
|
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(
|
|
733
|
-
set_boot_override("Cd",
|
|
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(
|
|
737
|
-
set_boot_override("Usb",
|
|
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(
|
|
741
|
-
set_boot_override("BiosSetup",
|
|
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.
|
|
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.
|
|
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:
|
|
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.
|
|
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.
|
|
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
|