@@ -19,6 +19,12 @@ import (
1919 kafkainstanceclient "github.com/redhat-developer/app-services-sdk-go/kafkainstance/apiv1internal/client"
2020)
2121
22+ var (
23+ serviceAccount string
24+ userID string
25+ allAccounts bool
26+ )
27+
2228// When the value of the `--topic`, `--group`, `user` or `service-account` option is one of
2329// the keys of this map, it will be replaced by the corresponding value.
2430var commonArgAliases = map [string ]string {
@@ -35,15 +41,13 @@ type options struct {
3541
3642 kafkaID string
3743 topic string
38- user string
39- svcAccount string
44+ principal string
4045 group string
4146 producer bool
4247 consumer bool
4348 topicPrefix string
4449 groupPrefix string
4550 force bool
46- allAccounts bool
4751}
4852
4953// NewGrantPermissionsACLCommand creates a series of ACL rules
@@ -89,16 +93,16 @@ func NewGrantPermissionsACLCommand(f *factory.Factory) *cobra.Command {
8993 },
9094 }
9195
92- cmd .Flags ().StringVar (& opts . user , "user" , "" , opts .localizer .MustLocalize ("kafka.acl.common.flag.user.description" ))
93- cmd .Flags ().StringVar (& opts . svcAccount , "service-account" , "" , opts .localizer .MustLocalize ("kafka.acl.common.flag.serviceAccount.description" ))
96+ cmd .Flags ().StringVar (& userID , "user" , "" , opts .localizer .MustLocalize ("kafka.acl.common.flag.user.description" ))
97+ cmd .Flags ().StringVar (& serviceAccount , "service-account" , "" , opts .localizer .MustLocalize ("kafka.acl.common.flag.serviceAccount.description" ))
9498 cmd .Flags ().StringVar (& opts .topic , "topic" , "" , opts .localizer .MustLocalize ("kafka.acl.common.flag.topic.description" ))
9599 cmd .Flags ().StringVar (& opts .group , "group" , "" , opts .localizer .MustLocalize ("kafka.acl.common.flag.group.description" ))
96100 cmd .Flags ().BoolVar (& opts .consumer , "consumer" , false , opts .localizer .MustLocalize ("kafka.acl.grantPermissions.flag.consumer.description" ))
97101 cmd .Flags ().BoolVar (& opts .producer , "producer" , false , opts .localizer .MustLocalize ("kafka.acl.grantPermissions.flag.producer.description" ))
98102 cmd .Flags ().StringVar (& opts .topicPrefix , "topic-prefix" , "" , opts .localizer .MustLocalize ("kafka.acl.common.flag.topicPrefix.description" ))
99103 cmd .Flags ().StringVar (& opts .groupPrefix , "group-prefix" , "" , opts .localizer .MustLocalize ("kafka.acl.common.flag.groupPrefix.description" ))
100104 cmd .Flags ().StringVar (& opts .kafkaID , "instance-id" , "" , opts .localizer .MustLocalize ("kafka.acl.common.flag.instance.id.description" ))
101- cmd .Flags ().BoolVar (& opts . allAccounts , "all-accounts" , false , opts .localizer .MustLocalize ("kafka.acl.common.flag.allAccounts.description" ))
105+ cmd .Flags ().BoolVar (& allAccounts , "all-accounts" , false , opts .localizer .MustLocalize ("kafka.acl.common.flag.allAccounts.description" ))
102106 cmd .Flags ().BoolVarP (& opts .force , "yes" , "y" , false , opts .localizer .MustLocalize ("kafka.acl.grantPermissions.flag.yes.description" ))
103107
104108 return cmd
@@ -124,8 +128,6 @@ func runGrantPermissions(opts *options) (err error) {
124128 var topicPatternArg = kafkainstanceclient .ACLPATTERNTYPE_LITERAL
125129 var groupPatternArg = kafkainstanceclient .ACLPATTERNTYPE_LITERAL
126130
127- var userArg string
128-
129131 if opts .topic != "" {
130132 topicNameArg = getArgumentFromAlias (opts .topic )
131133 }
@@ -144,27 +146,23 @@ func runGrantPermissions(opts *options) (err error) {
144146 groupPatternArg = kafkainstanceclient .ACLPATTERNTYPE_PREFIXED
145147 }
146148
147- if opts .user != "" {
148- if opts .user == acl .All {
149- return opts .localizer .MustLocalizeError ("kafka.acl.common.error.allNotAllowed" , localize .NewEntry ("Flag" , "user" ))
150- }
151- userArg = buildPrincipal (opts .user )
149+ if userID != "" {
150+ opts .principal = userID
152151 }
153152
154- if opts . allAccounts {
155- userArg = buildPrincipal ( acl . Wildcard )
153+ if serviceAccount != "" {
154+ opts . principal = serviceAccount
156155 }
157156
158- if opts .svcAccount != "" {
159- if opts .svcAccount == acl .All {
160- return opts .localizer .MustLocalizeError ("kafka.acl.common.error.allNotAllowed" , localize .NewEntry ("Flag" , "service-account" ))
161- }
162- userArg = buildPrincipal (opts .svcAccount )
157+ if allAccounts {
158+ opts .principal = acl .Wildcard
163159 }
164160
165161 var aclBindRequests []kafkainstanceclient.ApiCreateAclRequest
166162 var aclBindingList []kafkainstanceclient.AclBinding
167163
164+ userArg := buildPrincipal (opts .principal )
165+
168166 req := api .AclsApi .CreateAcl (opts .Context )
169167
170168 aclBindTopicDescribe := kafkainstanceclient .NewAclBinding (
@@ -316,17 +314,17 @@ func validateFlagInputCombination(opts *options) error {
316314 }
317315
318316 // check if priincipal is provided
319- if opts . user == "" && opts . svcAccount == "" && ! opts . allAccounts {
317+ if userID == "" && serviceAccount == "" && ! allAccounts {
320318 return opts .localizer .MustLocalizeError ("kafka.acl.grantPermissions.error.noPrincipalsSelected" )
321319 }
322320
323321 // user and service account should not be provided together
324- if opts . user != "" && opts . svcAccount != "" {
322+ if userID != "" && serviceAccount != "" {
325323 return opts .localizer .MustLocalizeError ("kafka.acl.grantPermissions.error.bothPrincipalsSelected" )
326324 }
327325
328326 // user and service account can't be along with "--all-accounts" flag
329- if opts . allAccounts && (opts . svcAccount != "" || opts . user != "" ) {
327+ if allAccounts && (serviceAccount != "" || userID != "" ) {
330328 return opts .localizer .MustLocalizeError ("kafka.acl.grantPermissions.allPrinciapls.error.notAllowed" )
331329 }
332330
0 commit comments