Skip to content

Commit 6e48cc9

Browse files
authored
Merge pull request #3184 from AthenZ/temp-group-member
expose add-temporary-group-member command in zms-cli
2 parents 973d3fd + 51b65c1 commit 6e48cc9

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

libs/go/zmscli/cli.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,14 @@ func (cli Zms) EvalCommand(params []string) (*string, error) {
679679
if argc >= 2 {
680680
return cli.AddGroupMembers(dn, args[0], args[1:])
681681
}
682+
case "add-temporary-group-member":
683+
if argc == 3 {
684+
expiration, err := getTimestamp(args[2])
685+
if err == nil {
686+
return cli.AddDueDateGroupMember(dn, args[0], args[1], &expiration)
687+
}
688+
return nil, err
689+
}
682690
case "delete-group-member", "delete-group-members":
683691
if argc >= 2 {
684692
return cli.DeleteGroupMembers(dn, args[0], args[1:])
@@ -2415,7 +2423,7 @@ func (cli Zms) HelpSpecificCommand(interactive bool, cmd string) string {
24152423
buf.WriteString(" " + domainExample + " add-group readers -audit-enabled\n")
24162424
case "add-group-member":
24172425
buf.WriteString(" syntax:\n")
2418-
buf.WriteString(" " + domainParam + " add-member group user_or_service [user_or_service ...]\n")
2426+
buf.WriteString(" " + domainParam + " add-group-member group user_or_service [user_or_service ...]\n")
24192427
buf.WriteString(" parameters:\n")
24202428
if !interactive {
24212429
buf.WriteString(" domain : name of the domain that group belongs to\n")
@@ -2424,6 +2432,18 @@ func (cli Zms) HelpSpecificCommand(interactive bool, cmd string) string {
24242432
buf.WriteString(" user_or_service : users or services to be added as members\n")
24252433
buf.WriteString(" examples:\n")
24262434
buf.WriteString(" " + domainExample + " add-member readers " + cli.UserDomain + ".john " + cli.UserDomain + ".joe media.sports.storage\n")
2435+
case "add-temporary-group-member":
2436+
buf.WriteString(" syntax:\n")
2437+
buf.WriteString(" " + domainParam + " add-temporary-group-member group user_or_service expiration\n")
2438+
buf.WriteString(" parameters:\n")
2439+
if !interactive {
2440+
buf.WriteString(" domain : name of the domain that group belongs to\n")
2441+
}
2442+
buf.WriteString(" group : name of the group to add member to\n")
2443+
buf.WriteString(" user_or_service : user or service to be added as member\n")
2444+
buf.WriteString(" expiration : expiration date format yyyy-mm-ddThh:mm:ss.msecZ\n")
2445+
buf.WriteString(" examples:\n")
2446+
buf.WriteString(" " + domainExample + " add-temporary-group-member readers-team " + cli.UserDomain + ".john 2017-03-02T15:04:05.999Z\n")
24272447
case "check-group-member":
24282448
buf.WriteString(" syntax:\n")
24292449
buf.WriteString(" " + domainParam + " check-group-member group user_or_service [user_or_service ...]\n")
@@ -3853,6 +3873,7 @@ func (cli Zms) HelpListCommand() string {
38533873
buf.WriteString(" list-groups-for-review [principal]\n")
38543874
buf.WriteString(" add-group group [-audit-enabled] [member ... ]\n")
38553875
buf.WriteString(" add-group-member group user_or_service [user_or_service ...]\n")
3876+
buf.WriteString(" add-temporary-group-member group user_or_service expiration\n")
38563877
buf.WriteString(" check-group-member group user_or_service [user_or_service ...]\n")
38573878
buf.WriteString(" check-active-group-member group user_or_service\n")
38583879
buf.WriteString(" delete-group-member group user_or_service [user_or_service ...]\n")

libs/go/zmscli/group.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,35 @@ func (cli Zms) AddGroupMembers(dn string, group string, members []string) (*stri
256256
return cli.dumpByFormat(message, cli.buildYAMLOutput)
257257
}
258258

259+
func (cli Zms) AddDueDateGroupMember(dn string, group string, member string, expiration *rdl.Timestamp) (*string, error) {
260+
fullResourceName := dn + ":group." + group
261+
validatedUser := cli.validatedUser(member)
262+
263+
var membership zms.GroupMembership
264+
membership.MemberName = zms.GroupMemberName(validatedUser)
265+
membership.GroupName = zms.ResourceName(group)
266+
if expiration != nil {
267+
membership.Expiration = expiration
268+
}
269+
returnObject := false
270+
_, err := cli.Zms.PutGroupMembership(zms.DomainName(dn), zms.EntityName(group), zms.GroupMemberName(validatedUser), cli.AuditRef, &returnObject, cli.ResourceOwner, &membership)
271+
if err != nil {
272+
return nil, err
273+
}
274+
var s string
275+
if cli.Verbose {
276+
s = "[Added to " + fullResourceName + ": " + validatedUser + "]"
277+
} else {
278+
s = "[Added to " + group + ": " + validatedUser + "]"
279+
}
280+
message := SuccessMessage{
281+
Status: 200,
282+
Message: s,
283+
}
284+
285+
return cli.dumpByFormat(message, cli.buildYAMLOutput)
286+
}
287+
259288
func (cli Zms) DeleteGroupMembers(dn string, group string, members []string) (*string, error) {
260289
fullResourceName := dn + ":group." + group
261290
ms := cli.validatedUsers(members, false)

0 commit comments

Comments
 (0)