@@ -2,9 +2,11 @@ package update
22
33import (
44 "encoding/json"
5+
56 "github.com/redhat-developer/app-services-cli/pkg/core/cmdutil/flagutil"
67 "github.com/redhat-developer/app-services-cli/pkg/shared/connectorutil"
78 "github.com/redhat-developer/app-services-cli/pkg/shared/contextutil"
9+ "github.com/redhat-developer/app-services-cli/pkg/shared/kafkautil"
810 "github.com/spf13/cobra"
911
1012 "github.com/redhat-developer/app-services-cli/pkg/core/ioutil/dump"
@@ -20,6 +22,7 @@ type options struct {
2022 namespaceID string
2123 kafkaID string
2224 name string
25+ id string
2326
2427 outputFormat string
2528 f * factory.Factory
@@ -43,13 +46,30 @@ func NewUpdateCommand(f *factory.Factory) *cobra.Command {
4346 return flagutil .InvalidValueError ("output" , opts .outputFormat , validOutputFormats ... )
4447 }
4548
49+ if opts .id != "" {
50+ return runUpdate (opts )
51+ }
52+
53+ conn , err := opts .f .Connection ()
54+ if err != nil {
55+ return err
56+ }
57+
58+ connector , err := contextutil .GetCurrentConnectorInstance (& conn , opts .f )
59+ if err != nil {
60+ return err
61+ }
62+
63+ opts .id = connector .GetId ()
64+
4665 return runUpdate (opts )
4766 },
4867 }
4968 flags := flagutil .NewFlagSet (cmd , f .Localizer )
69+ flags .StringVar (& opts .id , "id" , "" , f .Localizer .MustLocalize ("connector.flag.id.description" ))
5070 flags .StringVar (& opts .name , "name" , "" , f .Localizer .MustLocalize ("connector.flag.name.description" ))
51- flags .StringVar (& opts .namespaceID , "namespace-id" , "" , f .Localizer .MustLocalize ("connector.flag.kafkaID .description" ))
52- flags .StringVar (& opts .kafkaID , "kafka-id" , "" , f .Localizer .MustLocalize ("connector.flag.namespaceID .description" ))
71+ flags .StringVar (& opts .namespaceID , "namespace-id" , "" , f .Localizer .MustLocalize ("connector.flag.namespaceID .description" ))
72+ flags .StringVar (& opts .kafkaID , "kafka-id" , "" , f .Localizer .MustLocalize ("connector.flag.kafkaID .description" ))
5373 flags .AddOutput (& opts .outputFormat )
5474
5575 return cmd
@@ -63,13 +83,10 @@ func runUpdate(opts *options) error {
6383 return err
6484 }
6585
66- api := conn .API ()
67-
68- connector , err := contextutil .GetCurrentConnectorInstance (& conn , opts .f )
69- if err != nil || connector == nil {
70- if connector , err = connectorutil .InteractiveSelect (conn , opts .f ); err != nil {
71- return err
72- }
86+ connectorsApi := conn .API ().ConnectorsMgmt ()
87+ connector , err := connectorutil .GetConnectorByID (& connectorsApi , opts .id , opts .f )
88+ if err != nil {
89+ return err
7390 }
7491
7592 connectorChanged := false
@@ -82,7 +99,12 @@ func runUpdate(opts *options) error {
8299 connectorChanged = true
83100 }
84101 if opts .kafkaID != "" {
85- connector .Kafka .SetId (opts .kafkaID )
102+ kafkaInstance , _ , kafkaErr := kafkautil .GetKafkaByID (opts .f .Context , conn .API ().KafkaMgmt (), opts .kafkaID )
103+ if kafkaErr != nil {
104+ return kafkaErr
105+ }
106+ connector .Kafka .SetId (kafkaInstance .GetId ())
107+ connector .Kafka .SetUrl (kafkaInstance .GetBootstrapServerHost ())
86108 connectorChanged = true
87109 }
88110
@@ -105,7 +127,7 @@ func runUpdate(opts *options) error {
105127 return err
106128 }
107129
108- a := api .ConnectorsMgmt ().ConnectorsApi .PatchConnector (opts .f .Context , connector .GetId ())
130+ a := conn . API () .ConnectorsMgmt ().ConnectorsApi .PatchConnector (opts .f .Context , connector .GetId ())
109131 a = a .Body (patchData )
110132 updated , httpRes , err := a .Execute ()
111133 if httpRes != nil {
0 commit comments