Skip to content

Commit 3502319

Browse files
rkpattnaik780Enda
authored andcommitted
fix(kafka admin): validations and show proper error messages (#729)
1 parent 113972e commit 3502319

2 files changed

Lines changed: 33 additions & 3 deletions

File tree

pkg/cmd/kafka/topic/update/update.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,11 +292,31 @@ func runCmd(opts *Options) error {
292292

293293
func runInteractivePrompt(opts *Options) (err error) {
294294

295-
_, err = opts.Connection(connection.DefaultConfigRequireMasAuth)
295+
conn, err := opts.Connection(connection.DefaultConfigRequireMasAuth)
296296
if err != nil {
297297
return err
298298
}
299299

300+
api, kafkaInstance, err := conn.API().KafkaAdmin(opts.kafkaID)
301+
if err != nil {
302+
return err
303+
}
304+
305+
// check if topic exists
306+
_, httpRes, err := api.GetTopic(context.Background(), opts.topicName).
307+
Execute()
308+
309+
topicNameTmplPair := localize.NewEntry("TopicName", opts.topicName)
310+
kafkaNameTmplPair := localize.NewEntry("InstanceName", kafkaInstance.GetName())
311+
if err != nil {
312+
if httpRes == nil {
313+
return err
314+
}
315+
if httpRes.StatusCode == 404 {
316+
return errors.New(opts.localizer.MustLocalize("kafka.topic.common.error.topicNotFoundError", topicNameTmplPair, kafkaNameTmplPair))
317+
}
318+
}
319+
300320
logger, err := opts.Logger()
301321
if err != nil {
302322
return err

pkg/connection/keycloak_connection.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,19 @@ func (c *KeycloakConnection) API() *api.API {
187187
}
188188

189189
kafkaStatus := kafkaInstance.GetStatus()
190-
if kafkaStatus != "ready" {
191-
err = fmt.Errorf(`Kafka instance "%v" is not ready yet`, kafkaInstance.GetName())
192190

191+
switch kafkaStatus {
192+
case "provisioning", "accepted":
193+
err = fmt.Errorf(`Kafka instance "%v" is not ready yet`, kafkaInstance.GetName())
194+
return nil, nil, err
195+
case "failed":
196+
err = fmt.Errorf(`Kafka instance "%v" has failed`, kafkaInstance.GetName())
197+
return nil, nil, err
198+
case "deprovision":
199+
err = fmt.Errorf(`Kafka instance "%v" is being deprovisioned`, kafkaInstance.GetName())
200+
return nil, nil, err
201+
case "deleting":
202+
err = fmt.Errorf(`Kafka instance "%v" is being deleted`, kafkaInstance.GetName())
193203
return nil, nil, err
194204
}
195205

0 commit comments

Comments
 (0)