Skip to content

Commit cde3adb

Browse files
authored
Merge pull request #182 from nix-community/feat/make-drivers-ephemeral
feat: make more items ephemeral
2 parents 8d0d16e + 66c8d4a commit cde3adb

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

pkg/facter/facter.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func (s *Scanner) Scan() (*Report, error) {
7373

7474
slog.Info("scanning hardware", "features", s.Features)
7575

76-
smbios, devices, err = hwinfo.Scan(s.Features)
76+
smbios, devices, err = hwinfo.Scan(s.Features, s.Ephemeral)
7777
if err != nil {
7878
return nil, fmt.Errorf("failed to scan hardware: %w", err)
7979
}

pkg/hwinfo/hardware.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"errors"
1212
"fmt"
1313
"slices"
14+
"strings"
1415
)
1516

1617
// ProbeFeature is a type that specifies various hardware probing features.
@@ -546,7 +547,7 @@ type HardwareDevice struct {
546547
Label string `json:"label,omitempty"`
547548
}
548549

549-
func NewHardwareDevice(hd *C.hd_t) (*HardwareDevice, error) {
550+
func NewHardwareDevice(hd *C.hd_t, ephemeral bool) (*HardwareDevice, error) {
550551
if hd == nil {
551552
return nil, errors.New("hd is nil")
552553
}
@@ -632,6 +633,13 @@ func NewHardwareDevice(hd *C.hd_t) (*HardwareDevice, error) {
632633
Label: C.GoString(hd.label),
633634
}
634635

636+
if !ephemeral {
637+
// /dev/disk/by-diskseq is not stable, so we remove them
638+
result.UnixDeviceNames = slices.DeleteFunc(result.UnixDeviceNames, func(name string) bool {
639+
return strings.HasPrefix(name, "/dev/disk/by-diskseq/")
640+
})
641+
}
642+
635643
// only set the slot information if the bus type has been set
636644
if result.BusType != nil {
637645
slot := Slot(hd.slot)

pkg/hwinfo/hwinfo.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func excludeDevice(item *HardwareDevice) bool {
3131
}
3232

3333
// Scan returns a list of SMBIOS entries and detected hardware devices based on the provided probe features.
34-
func Scan(probes []ProbeFeature) ([]Smbios, []HardwareDevice, error) {
34+
func Scan(probes []ProbeFeature, ephemeral bool) ([]Smbios, []HardwareDevice, error) {
3535
// initialise the struct to hold scan data
3636
data := (*C.hd_data_t)(C.calloc(1, C.size_t(unsafe.Sizeof(C.hd_data_t{}))))
3737

@@ -62,7 +62,7 @@ func Scan(probes []ProbeFeature) ([]Smbios, []HardwareDevice, error) {
6262
var hardwareItems []HardwareDevice
6363
var deviceIdx uint
6464
for hd := data.hd; hd != nil; hd = hd.next {
65-
item, err := NewHardwareDevice(hd)
65+
item, err := NewHardwareDevice(hd, ephemeral)
6666
if err != nil {
6767
return nil, nil, err
6868
}

0 commit comments

Comments
 (0)