@@ -250,7 +250,7 @@ func instanceServerCreateRun(ctx context.Context, argsI interface{}) (i interfac
250250 logger .Warningf ("cannot get image %s: %s" , serverReq .Image , err )
251251 }
252252
253- serverType := getServeType (apiInstance , serverReq .Zone , serverReq .CommercialType )
253+ serverType := getServerType (apiInstance , serverReq .Zone , serverReq .CommercialType )
254254
255255 if serverType != nil && getImageResponse != nil {
256256 if err := validateImageServerTypeCompatibility (getImageResponse .Image , serverType , serverReq .CommercialType ); err != nil {
@@ -316,8 +316,8 @@ func instanceServerCreateRun(ctx context.Context, argsI interface{}) (i interfac
316316 }
317317
318318 // 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 {
321321 return nil , err
322322 }
323323 } else {
@@ -575,7 +575,7 @@ func validateImageServerTypeCompatibility(image *instance.Image, serverType *ins
575575}
576576
577577// 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 {
579579 // Calculate local volume total size.
580580 var localVolumeTotalSize scw.Size
581581 for _ , volume := range volumes {
@@ -588,7 +588,7 @@ func validateLocalVolumeSizes(volumes map[string]*instance.VolumeServerTemplate,
588588
589589 // If no root volume provided, count the default root volume size added by the API.
590590 if rootVolume := volumes ["0" ]; rootVolume == nil {
591- localVolumeTotalSize += volumeConstraint . MinSize
591+ localVolumeTotalSize += defaultRootVolumeSize
592592 }
593593
594594 if localVolumeTotalSize < volumeConstraint .MinSize || localVolumeTotalSize > volumeConstraint .MaxSize {
@@ -677,13 +677,13 @@ func instanceServerCreateImageAutoCompleteFunc(ctx context.Context, prefix strin
677677 return suggestions
678678}
679679
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 {
682682 serverType := (* instance .ServerType )(nil )
683683
684684 serverTypesRes , err := apiInstance .ListServersTypes (& instance.ListServersTypesRequest {
685685 Zone : zone ,
686- })
686+ }, scw . WithAllPages () )
687687 if err != nil {
688688 logger .Warningf ("cannot get server types: %s" , err )
689689 } else {
0 commit comments