Skip to content

Commit e915c98

Browse files
committed
fix: exclude disks with empty transport for disk selector
Fixes #10055 Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
1 parent b7a7fdc commit e915c98

2 files changed

Lines changed: 20 additions & 15 deletions

File tree

pkg/machinery/config/types/v1alpha1/v1alpha1_provider.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1327,6 +1327,20 @@ func (i *InstallConfig) DiskMatchExpression() (*cel.Expression, error) {
13271327
exprs = append(exprs, patternMatcherExpr(selector.Modalias, "modalias"))
13281328
}
13291329

1330+
// disk.transport != "" (otherwise it might select e.g. DM devices)
1331+
exprs = append(exprs,
1332+
builder.NewCall(
1333+
builder.NextID(),
1334+
operators.NotEquals,
1335+
builder.NewSelect(
1336+
builder.NextID(),
1337+
builder.NewIdent(builder.NextID(), "disk"),
1338+
"transport",
1339+
),
1340+
builder.NewLiteral(builder.NextID(), types.String("")),
1341+
),
1342+
)
1343+
13301344
if selector.Type != "" {
13311345
switch selector.Type {
13321346
case "nvme": // disk.transport == "nvme"
@@ -1339,18 +1353,8 @@ func (i *InstallConfig) DiskMatchExpression() (*cel.Expression, error) {
13391353
builder.NewIdent(builder.NextID(), "disk"),
13401354
"rotational",
13411355
))
1342-
case "ssd": // disk.transport != "" && !disk.rotational
1356+
case "ssd": // !disk.rotational
13431357
exprs = append(exprs,
1344-
builder.NewCall(
1345-
builder.NextID(),
1346-
operators.NotEquals,
1347-
builder.NewSelect(
1348-
builder.NextID(),
1349-
builder.NewIdent(builder.NextID(), "disk"),
1350-
"transport",
1351-
),
1352-
builder.NewLiteral(builder.NextID(), types.String("")),
1353-
),
13541358
builder.NewCall(
13551359
builder.NextID(),
13561360
operators.LogicalNot,

pkg/machinery/config/types/v1alpha1/v1alpha1_provider_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func TestInstallDiskSelector(t *testing.T) {
3535
},
3636
},
3737

38-
expected: `disk.size <= 262144u && !disk.readonly && !disk.cdrom`,
38+
expected: `disk.size <= 262144u && disk.transport != "" && !disk.readonly && !disk.cdrom`,
3939
},
4040
{
4141
name: "size and type",
@@ -49,7 +49,8 @@ func TestInstallDiskSelector(t *testing.T) {
4949
Type: v1alpha1.InstallDiskType("nvme"),
5050
},
5151

52-
expected: `disk.size == 1048576u && disk.transport == "nvme" && !disk.readonly && !disk.cdrom`,
52+
expected: `disk.size == 1048576u && disk.transport != "" && disk.transport == "nvme" && !disk.readonly &&
53+
!disk.cdrom`,
5354
},
5455
{
5556
name: "size and type and modalias",
@@ -64,8 +65,8 @@ func TestInstallDiskSelector(t *testing.T) {
6465
Modalias: "pci:1234:5678*",
6566
},
6667

67-
expected: `disk.size == 1048576u && glob("pci:1234:5678*", disk.modalias) && disk.rotational &&
68-
!disk.readonly && !disk.cdrom`,
68+
expected: `disk.size == 1048576u && glob("pci:1234:5678*", disk.modalias) && disk.transport != "" &&
69+
disk.rotational && !disk.readonly && !disk.cdrom`,
6970
},
7071
{
7172
name: "ssd",

0 commit comments

Comments
 (0)