@@ -250,7 +250,7 @@ func instanceServerCreateRun(ctx context.Context, argsI interface{}) (i interfac
250
250
logger .Warningf ("cannot get image %s: %s" , serverReq .Image , err )
251
251
}
252
252
253
- serverType := getServeType (apiInstance , serverReq .Zone , serverReq .CommercialType )
253
+ serverType := getServerType (apiInstance , serverReq .Zone , serverReq .CommercialType )
254
254
255
255
if serverType != nil && getImageResponse != nil {
256
256
if err := validateImageServerTypeCompatibility (getImageResponse .Image , serverType , serverReq .CommercialType ); err != nil {
@@ -316,8 +316,8 @@ func instanceServerCreateRun(ctx context.Context, argsI interface{}) (i interfac
316
316
}
317
317
318
318
// Validate total local volume sizes.
319
- if serverType != nil {
320
- if err := validateLocalVolumeSizes (volumes , serverType , serverReq .CommercialType ); err != nil {
319
+ if serverType != nil && getImageResponse != nil {
320
+ if err := validateLocalVolumeSizes (volumes , serverType , serverReq .CommercialType , getImageResponse . Image . RootVolume . Size ); err != nil {
321
321
return nil , err
322
322
}
323
323
} else {
@@ -575,7 +575,7 @@ func validateImageServerTypeCompatibility(image *instance.Image, serverType *ins
575
575
}
576
576
577
577
// validateLocalVolumeSizes validates the total size of local volumes.
578
- func validateLocalVolumeSizes (volumes map [string ]* instance.VolumeServerTemplate , serverType * instance.ServerType , commercialType string ) error {
578
+ func validateLocalVolumeSizes (volumes map [string ]* instance.VolumeServerTemplate , serverType * instance.ServerType , commercialType string , defaultRootVolumeSize scw. Size ) error {
579
579
// Calculate local volume total size.
580
580
var localVolumeTotalSize scw.Size
581
581
for _ , volume := range volumes {
@@ -588,7 +588,7 @@ func validateLocalVolumeSizes(volumes map[string]*instance.VolumeServerTemplate,
588
588
589
589
// If no root volume provided, count the default root volume size added by the API.
590
590
if rootVolume := volumes ["0" ]; rootVolume == nil {
591
- localVolumeTotalSize += volumeConstraint . MinSize
591
+ localVolumeTotalSize += defaultRootVolumeSize
592
592
}
593
593
594
594
if localVolumeTotalSize < volumeConstraint .MinSize || localVolumeTotalSize > volumeConstraint .MaxSize {
@@ -677,13 +677,13 @@ func instanceServerCreateImageAutoCompleteFunc(ctx context.Context, prefix strin
677
677
return suggestions
678
678
}
679
679
680
- // getServeType is a util to get a instance.ServerType by its commercialType
681
- func getServeType (apiInstance * instance.API , zone scw.Zone , commercialType string ) * instance.ServerType {
680
+ // getServerType is a util to get a instance.ServerType by its commercialType
681
+ func getServerType (apiInstance * instance.API , zone scw.Zone , commercialType string ) * instance.ServerType {
682
682
serverType := (* instance .ServerType )(nil )
683
683
684
684
serverTypesRes , err := apiInstance .ListServersTypes (& instance.ListServersTypesRequest {
685
685
Zone : zone ,
686
- })
686
+ }, scw . WithAllPages () )
687
687
if err != nil {
688
688
logger .Warningf ("cannot get server types: %s" , err )
689
689
} else {
0 commit comments