@@ -173,7 +173,7 @@ func runCreate(opts *options) error {
173173 if opts .interactive {
174174 opts .Logger .Debug ()
175175
176- payload , err = promptKafkaPayload (opts )
176+ payload , err = promptKafkaPayload (opts , constants )
177177 if err != nil {
178178 return err
179179 }
@@ -188,19 +188,20 @@ func runCreate(opts *options) error {
188188 opts .region = defaultRegion
189189 }
190190
191+ if ! opts .bypassAmsCheck {
192+ err = validateProviderAndRegion (opts , constants , conn )
193+ if err != nil {
194+ return err
195+ }
196+ }
197+
191198 payload = & kafkamgmtclient.KafkaRequestPayload {
192199 Name : opts .name ,
193200 Region : & opts .region ,
194201 CloudProvider : & opts .provider ,
195202 MultiAz : & opts .multiAZ ,
196203 }
197- }
198204
199- if ! opts .bypassAmsCheck {
200- err = validateProviderAndRegion (opts , constants , conn )
201- if err != nil {
202- return err
203- }
204205 }
205206
206207 api := conn .API ()
@@ -387,8 +388,16 @@ func validateProviderRegion(conn connection.Connection, opts *options, selectedP
387388 return nil
388389}
389390
391+ // set type to store the answers from the prompt with defaults
392+ type promptAnswers struct {
393+ Name string
394+ Region string
395+ MultiAZ bool
396+ CloudProvider string
397+ }
398+
390399// Show a prompt to allow the user to interactively insert the data for their Kafka
391- func promptKafkaPayload (opts * options ) (payload * kafkamgmtclient.KafkaRequestPayload , err error ) {
400+ func promptKafkaPayload (opts * options , constants * remote. DynamicServiceConstants ) (payload * kafkamgmtclient.KafkaRequestPayload , err error ) {
392401 conn , err := opts .Connection (connection .DefaultConfigSkipMasAuth )
393402 if err != nil {
394403 return nil , err
@@ -401,21 +410,15 @@ func promptKafkaPayload(opts *options) (payload *kafkamgmtclient.KafkaRequestPay
401410 Connection : opts .Connection ,
402411 }
403412
404- // set type to store the answers from the prompt with defaults
405- answers := struct {
406- Name string
407- Region string
408- MultiAZ bool
409- CloudProvider string
410- }{
411- MultiAZ : defaultMultiAZ ,
412- }
413-
414413 promptName := & survey.Input {
415414 Message : opts .localizer .MustLocalize ("kafka.create.input.name.message" ),
416415 Help : opts .localizer .MustLocalize ("kafka.create.input.name.help" ),
417416 }
418417
418+ answers := & promptAnswers {
419+ MultiAZ : defaultMultiAZ ,
420+ }
421+
419422 err = survey .AskOne (promptName , & answers .Name , survey .WithValidator (validator .ValidateName ), survey .WithValidator (validator .ValidateNameIsAvailable ))
420423 if err != nil {
421424 return nil , err
@@ -453,8 +456,14 @@ func promptKafkaPayload(opts *options) (payload *kafkamgmtclient.KafkaRequestPay
453456 return nil , err
454457 }
455458
459+ userInstanceTypes , err := accountmgmtutil .GetUserSupportedInstanceTypes (opts .Context , constants .Kafka .Ams , conn )
460+ if err != nil {
461+ opts .Logger .Debug ("Cannot retrieve user supported instance types. Skipping validation" , err )
462+ return payload , err
463+ }
464+
456465 regions := cloudRegionResponse .GetItems ()
457- regionIDs := pkgKafka .GetEnabledCloudRegionIDs (regions )
466+ regionIDs := pkgKafka .GetEnabledCloudRegionIDs (regions , & userInstanceTypes )
458467
459468 regionPrompt := & survey.Select {
460469 Message : opts .localizer .MustLocalize ("kafka.create.input.cloudRegion.message" ),
0 commit comments