@@ -57,7 +57,6 @@ import (
57
57
crclient "sigs.k8s.io/controller-runtime/pkg/client"
58
58
59
59
infrav1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha8"
60
- capoerrors "sigs.k8s.io/cluster-api-provider-openstack/pkg/utils/errors"
61
60
"sigs.k8s.io/cluster-api-provider-openstack/test/e2e/shared"
62
61
)
63
62
@@ -891,23 +890,43 @@ func isCloudProviderInitialized(taints []corev1.Taint) bool {
891
890
return true
892
891
}
893
892
894
- func createTestVolumeType (e2eCtx * shared.E2EContext ) {
893
+ func findVolumeTypeID (volumeClient * gophercloud.ServiceClient , volumeTypeName string ) (string , error ) {
894
+ allPages , err := volumetypes .List (volumeClient , volumetypes.ListOpts {}).AllPages ()
895
+ if err != nil {
896
+ return "" , err
897
+ }
898
+
899
+ allVolumeTypes , err := volumetypes .ExtractVolumeTypes (allPages )
900
+ if err != nil {
901
+ return "" , err
902
+ }
903
+
904
+ for _ , volumeType := range allVolumeTypes {
905
+ if volumeType .Name == volumeTypeName {
906
+ return volumeType .ID , nil
907
+ }
908
+ }
909
+
910
+ return "" , fmt .Errorf ("volume type '%s' not found" , volumeTypeName )
911
+ }
912
+
913
+ func getVolumeType (e2eCtx * shared.E2EContext ) {
895
914
providerClient , clientOpts , _ , err := shared .GetAdminProviderClient (e2eCtx )
896
- Expect (err ).NotTo (HaveOccurred ())
915
+ Expect (err ).NotTo (HaveOccurred (), fmt . Sprintf ( "Failed to get admin provider client: %v" , err ) )
897
916
898
917
volumeClient , err := openstack .NewBlockStorageV3 (providerClient , gophercloud.EndpointOpts {Region : clientOpts .RegionName })
899
- Expect (err ).NotTo (HaveOccurred ())
900
-
901
- shared . Logf ( "Creating test volume type " )
902
- _ , err = volumetypes . Create ( volumeClient , & volumetypes. CreateOpts {
903
- Name : e2eCtx . E2EConfig . GetVariable ( shared . OpenStackVolumeTypeAlt ),
904
- Description : "Test volume type" ,
905
- IsPublic : pointer . Bool ( true ),
906
- ExtraSpecs : map [ string ] string {},
907
- }). Extract ( )
908
- if capoerrors . IsConflict ( err ) {
909
- shared . Logf ( "Volume type already exists. This may happen in development environments, but it is not expected in CI." )
910
- return
911
- }
912
- Expect ( err ). NotTo ( HaveOccurred () )
918
+ Expect (err ).NotTo (HaveOccurred (), fmt . Sprintf ( "Failed to create volume client: %v" , err ) )
919
+
920
+ volumeTypeName := e2eCtx . E2EConfig . GetVariable ( "OPENSTACK_VOLUME_TYPE_ALT " )
921
+ Expect ( volumeTypeName ). NotTo ( BeEmpty (), "Volume type name must not be empty" )
922
+
923
+ volumeTypeID , err := findVolumeTypeID ( volumeClient , volumeTypeName )
924
+ Expect ( err ). NotTo ( HaveOccurred (), fmt . Sprintf ( "Error finding volume type '%s': %v" , volumeTypeName , err ))
925
+
926
+ shared . Logf ( "Found volume type ID '%s' for volume type '%s'" , volumeTypeID , volumeTypeName )
927
+
928
+ _ , err = volumetypes . Get ( volumeClient , volumeTypeID ). Extract ( )
929
+ Expect ( err ). NotTo ( HaveOccurred (), fmt . Sprintf ( "Error retrieving volume type with ID '%s': %v" , volumeTypeID , err ))
930
+
931
+ shared . Logf ( "Proceeding with volume type ID '%s'." , volumeTypeID )
913
932
}
0 commit comments