Skip to content

Commit 9fbd11b

Browse files
committed
Handle SCSI NAA addresses for SCSI disks
1 parent bb4ee2e commit 9fbd11b

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

TODO.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,5 @@
99
mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/nvme0n1 /dev/nvme1n1
1010
mdadm --detail /dev/md0 # uuid:1a462672:bd83888c:df8fa57e:6b38f998
1111

12-
- Handle SCSI(?) SSD devices which report their wwid as 0x<hex-code>, Talos needs this to become naa.<hex-code> instead (see end of https://chatgpt.com/share/e/68ac4c53-3eec-800e-93de-fc4e97d2bf33 for feedback)
1312
- Remove deprecated setting#schematic_id
1413
- In case talos-manager SSH key isn't available we should error out when trying to enter rescue mode

app/models/server.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,16 @@ def bootstrappable?
5252
bootstrap_metadata.fetch(:bootstrappable)
5353
end
5454

55+
# Convert SCSI NAA addresses to Talos readable WWIDs, more at:
56+
# https://chatgpt.com/share/e/68ac4c53-3eec-800e-93de-fc4e97d2bf33
57+
def bootstrap_disk_wwid=(value)
58+
if value.start_with?("0x")
59+
super "naa.#{value.delete_prefix('0x').downcase}"
60+
else
61+
super
62+
end
63+
end
64+
5565
def talos_type
5666
name.include?("control-plane") ? "controlplane" : "worker"
5767
end

spec/models/server_spec.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,15 @@
8989
expect(server.reload).not_to be_accessible
9090
end
9191
end
92+
93+
describe "#bootstrap_disk_wwid=" do
94+
it "converts SCSI WWIDs to the correct format" do
95+
server = Server.new(bootstrap_disk_wwid: "0x5002538c6003052d")
96+
expect(server.bootstrap_disk_wwid).to eq "naa.5002538c6003052d"
97+
98+
# sanity check regular WWIDs are not changed
99+
server = Server.new(bootstrap_disk_wwid: "eui.00000000000000178ce38e02001d0b64")
100+
expect(server.bootstrap_disk_wwid).to eq "eui.00000000000000178ce38e02001d0b64"
101+
end
102+
end
92103
end

0 commit comments

Comments
 (0)