@@ -404,18 +404,26 @@ func (suite *VolumeConfigSuite) TestReconcileUserRawVolumes() {
404404}
405405
406406func (suite * VolumeConfigSuite ) TestReconcileUserSwapVolumes () {
407- uv1 := blockcfg .NewUserVolumeConfigV1Alpha1 ()
408- uv1 .MetaName = "data1"
409- suite .Require ().NoError (uv1 .ProvisioningSpec .DiskSelectorSpec .Match .UnmarshalText ([]byte (`system_disk` )))
410- uv1 .ProvisioningSpec .ProvisioningMinSize = blockcfg .MustByteSize ("10GiB" )
411- uv1 .ProvisioningSpec .ProvisioningMaxSize = blockcfg .MustByteSize ("100GiB" )
412- uv1 .FilesystemSpec .FilesystemType = block .FilesystemTypeXFS
413-
414- uv2 := blockcfg .NewUserVolumeConfigV1Alpha1 ()
415- uv2 .MetaName = "data2"
416- suite .Require ().NoError (uv2 .ProvisioningSpec .DiskSelectorSpec .Match .UnmarshalText ([]byte (`!system_disk` )))
417- uv2 .ProvisioningSpec .ProvisioningMaxSize = blockcfg .MustByteSize ("1TiB" )
418- uv2 .EncryptionSpec = blockcfg.EncryptionSpec {
407+ userVolumeNames := []string {
408+ "data-part1" ,
409+ "data-part2" ,
410+ "data-dir1" ,
411+ "data-disk1" ,
412+ }
413+
414+ uvPart1 := blockcfg .NewUserVolumeConfigV1Alpha1 ()
415+ uvPart1 .MetaName = userVolumeNames [0 ]
416+ suite .Require ().NoError (uvPart1 .ProvisioningSpec .DiskSelectorSpec .Match .UnmarshalText ([]byte (`system_disk` )))
417+ uvPart1 .ProvisioningSpec .ProvisioningMinSize = blockcfg .MustByteSize ("10GiB" )
418+ uvPart1 .ProvisioningSpec .ProvisioningMaxSize = blockcfg .MustByteSize ("100GiB" )
419+ uvPart1 .FilesystemSpec .FilesystemType = block .FilesystemTypeXFS
420+
421+ uvPart2 := blockcfg .NewUserVolumeConfigV1Alpha1 ()
422+ uvPart2 .MetaName = userVolumeNames [1 ]
423+ uvPart2 .VolumeType = pointer .To (block .VolumeTypePartition )
424+ suite .Require ().NoError (uvPart2 .ProvisioningSpec .DiskSelectorSpec .Match .UnmarshalText ([]byte (`!system_disk` )))
425+ uvPart2 .ProvisioningSpec .ProvisioningMaxSize = blockcfg .MustByteSize ("1TiB" )
426+ uvPart2 .EncryptionSpec = blockcfg.EncryptionSpec {
419427 EncryptionProvider : block .EncryptionProviderLUKS2 ,
420428 EncryptionKeys : []blockcfg.EncryptionKey {
421429 {
@@ -429,32 +437,45 @@ func (suite *VolumeConfigSuite) TestReconcileUserSwapVolumes() {
429437 },
430438 }
431439
432- uv3 := blockcfg .NewUserVolumeConfigV1Alpha1 ()
433- uv3 .MetaName = "data3"
434- uv3 .VolumeType = pointer .To (block .VolumeTypeDirectory )
440+ uvDir1 := blockcfg .NewUserVolumeConfigV1Alpha1 ()
441+ uvDir1 .MetaName = userVolumeNames [2 ]
442+ uvDir1 .VolumeType = pointer .To (block .VolumeTypeDirectory )
443+
444+ uvDisk1 := blockcfg .NewUserVolumeConfigV1Alpha1 ()
445+ uvDisk1 .MetaName = userVolumeNames [3 ]
446+ suite .Require ().NoError (uvDisk1 .ProvisioningSpec .DiskSelectorSpec .Match .UnmarshalText ([]byte (`!system_disk` )))
447+ uvDisk1 .EncryptionSpec = blockcfg.EncryptionSpec {
448+ EncryptionProvider : block .EncryptionProviderLUKS2 ,
449+ EncryptionKeys : []blockcfg.EncryptionKey {
450+ {
451+ KeySlot : 0 ,
452+ KeyTPM : & blockcfg.EncryptionKeyTPM {},
453+ },
454+ {
455+ KeySlot : 1 ,
456+ KeyStatic : & blockcfg.EncryptionKeyStatic {KeyData : "secret" },
457+ },
458+ },
459+ }
435460
436461 sv1 := blockcfg .NewSwapVolumeConfigV1Alpha1 ()
437462 sv1 .MetaName = "swap"
438463 suite .Require ().NoError (sv1 .ProvisioningSpec .DiskSelectorSpec .Match .UnmarshalText ([]byte (`disk.transport == "nvme"` )))
439464 sv1 .ProvisioningSpec .ProvisioningMaxSize = blockcfg .MustByteSize ("2GiB" )
440465
441- ctr , err := container .New (uv1 , uv2 , uv3 , sv1 )
466+ ctr , err := container .New (uvPart1 , uvPart2 , uvDir1 , uvDisk1 , sv1 )
442467 suite .Require ().NoError (err )
443468
444469 cfg := config .NewMachineConfig (ctr )
445470 suite .Create (cfg )
446471
447- userVolumes := []string {
448- constants .UserVolumePrefix + "data1" ,
449- constants .UserVolumePrefix + "data2" ,
450- constants .UserVolumePrefix + "data3" ,
451- }
472+ userVolumes := xslices .Map (userVolumeNames , func (in string ) string { return constants .UserVolumePrefix + in })
452473
453474 ctest .AssertResources (suite , userVolumes , func (vc * block.VolumeConfig , asrt * assert.Assertions ) {
454475 asrt .Contains (vc .Metadata ().Labels ().Raw (), block .UserVolumeLabel )
455476
456477 switch vc .Metadata ().ID () {
457- case userVolumes [0 ], userVolumes [1 ]:
478+ case userVolumes [0 ], userVolumes [1 ], userVolumes [ 3 ] :
458479 asrt .Equal (block .VolumeTypePartition , vc .TypedSpec ().Type )
459480
460481 asrt .Contains (userVolumes , vc .TypedSpec ().Provisioning .PartitionSpec .Label )
@@ -463,11 +484,12 @@ func (suite *VolumeConfigSuite) TestReconcileUserSwapVolumes() {
463484 asrt .NoError (err )
464485
465486 asrt .Contains (string (locator ), vc .TypedSpec ().Provisioning .PartitionSpec .Label )
487+
466488 case userVolumes [2 ]:
467489 asrt .Equal (block .VolumeTypeDirectory , vc .TypedSpec ().Type )
468490 }
469491
470- asrt .Contains ([] string { "data1" , "data2" , "data3" } , vc .TypedSpec ().Mount .TargetPath )
492+ asrt .Contains (userVolumeNames , vc .TypedSpec ().Mount .TargetPath )
471493 asrt .Equal (constants .UserVolumeMountPoint , vc .TypedSpec ().Mount .ParentID )
472494
473495 switch vc .Metadata ().ID () {
@@ -506,8 +528,8 @@ func (suite *VolumeConfigSuite) TestReconcileUserSwapVolumes() {
506528 suite .AddFinalizer (block .NewVolumeMountRequest (block .NamespaceName , volumeID ).Metadata (), "test" )
507529 }
508530
509- // drop the first volume
510- ctr , err = container .New (uv2 )
531+ // keep only the first volume
532+ ctr , err = container .New (uvPart1 )
511533 suite .Require ().NoError (err )
512534
513535 newCfg := config .NewMachineConfig (ctr )
@@ -516,30 +538,30 @@ func (suite *VolumeConfigSuite) TestReconcileUserSwapVolumes() {
516538
517539 // controller should tear down removed resources
518540 ctest .AssertResources (suite , userVolumes , func (vc * block.VolumeConfig , asrt * assert.Assertions ) {
519- if vc .Metadata ().ID () == userVolumes [1 ] {
541+ if vc .Metadata ().ID () == userVolumes [0 ] {
520542 asrt .Equal (resource .PhaseRunning , vc .Metadata ().Phase ())
521543 } else {
522544 asrt .Equal (resource .PhaseTearingDown , vc .Metadata ().Phase ())
523545 }
524546 })
525547
526548 ctest .AssertResources (suite , userVolumes , func (vmr * block.VolumeMountRequest , asrt * assert.Assertions ) {
527- if vmr .Metadata ().ID () == userVolumes [1 ] {
549+ if vmr .Metadata ().ID () == userVolumes [0 ] {
528550 asrt .Equal (resource .PhaseRunning , vmr .Metadata ().Phase ())
529551 } else {
530552 asrt .Equal (resource .PhaseTearingDown , vmr .Metadata ().Phase ())
531553 }
532554 })
533555
534556 // remove finalizers
535- suite . RemoveFinalizer ( block . NewVolumeConfig ( block . NamespaceName , userVolumes [0 ]). Metadata (), "test" )
536- suite .RemoveFinalizer (block .NewVolumeMountRequest (block .NamespaceName , userVolumes [ 0 ] ).Metadata (), "test" )
537- suite .RemoveFinalizer (block .NewVolumeConfig (block .NamespaceName , userVolumes [ 2 ] ).Metadata (), "test" )
538- suite . RemoveFinalizer ( block . NewVolumeMountRequest ( block . NamespaceName , userVolumes [ 2 ]). Metadata (), "test" )
557+ for _ , userVolume := range userVolumes [1 :] {
558+ suite .RemoveFinalizer (block .NewVolumeConfig (block .NamespaceName , userVolume ).Metadata (), "test" )
559+ suite .RemoveFinalizer (block .NewVolumeMountRequest (block .NamespaceName , userVolume ).Metadata (), "test" )
560+ }
539561
540562 // now the resources should be removed
541- ctest . AssertNoResource [ * block. VolumeConfig ]( suite , userVolumes [0 ])
542- ctest .AssertNoResource [* block.VolumeMountRequest ](suite , userVolumes [ 0 ] )
543- ctest .AssertNoResource [* block.VolumeConfig ](suite , userVolumes [ 2 ] )
544- ctest . AssertNoResource [ * block. VolumeMountRequest ]( suite , userVolumes [ 2 ])
563+ for _ , userVolume := range userVolumes [1 :] {
564+ ctest .AssertNoResource [* block.VolumeConfig ](suite , userVolume )
565+ ctest .AssertNoResource [* block.VolumeMountRequest ](suite , userVolume )
566+ }
545567}
0 commit comments