Skip to content

Commit 1a97d26

Browse files
committed
Added setviewer command
1 parent 02a4bfb commit 1a97d26

File tree

6 files changed

+65
-3
lines changed

6 files changed

+65
-3
lines changed

internal/apiclient/iam.go

+2
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,8 @@ func SetIAMSpacePermission(space string, memberName string, iamRole string, memb
435435
switch iamRole {
436436
case "editor":
437437
role = "roles/apigee.spaceContentEditor"
438+
case "viewer":
439+
role = "roles/apigee.spaceContentViewer"
438440
default: // assume this is a custom role definition
439441
re := regexp.MustCompile(`projects\/([a-zA-Z0-9_-]+)\/roles\/([a-zA-Z0-9_-]+)`)
440442
result := re.FindString(iamRole)

internal/cmd/spaces/iam.go

+1
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,6 @@ func init() {
3636
IamCmd.AddCommand(GetIamCmd)
3737
IamCmd.AddCommand(RemoveRoleCmd)
3838
IamCmd.AddCommand(SetEditorCmd)
39+
IamCmd.AddCommand(SetViewerCmd)
3940
IamCmd.AddCommand(TestIamCmd)
4041
}

internal/cmd/spaces/removerole.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ var RemoveRoleCmd = &cobra.Command{
4141
clilog.Info.Printf("Member \"%s\" removed access to role \"%s\" in space \"%s\"\n", memberName, role, space)
4242
return nil
4343
},
44-
Example: `Remove Space Editor role for user in a space: ` + GetExample(4),
44+
Example: `Remove Space Editor role for user in a space: ` + GetExample(6),
4545
}
4646

4747
func init() {

internal/cmd/spaces/setviewer.go

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// Copyright 2020 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package spaces
16+
17+
import (
18+
"internal/apiclient"
19+
"internal/client/spaces"
20+
"internal/clilog"
21+
22+
"github.com/spf13/cobra"
23+
)
24+
25+
// SetViewerCmd to set role on env
26+
var SetViewerCmd = &cobra.Command{
27+
Use: "setviewer",
28+
Short: "Set Space Content Viewer role for a member on a Space",
29+
Long: "Set Space Content Viewer role for a member on a Space",
30+
Args: func(cmd *cobra.Command, args []string) (err error) {
31+
apiclient.SetRegion(region)
32+
return apiclient.SetApigeeOrg(org)
33+
},
34+
RunE: func(cmd *cobra.Command, args []string) (err error) {
35+
cmd.SilenceUsage = true
36+
37+
err = spaces.SetIAM(space, memberName, "viewer", memberType)
38+
if err != nil {
39+
return err
40+
}
41+
clilog.Info.Printf("Member \"%s\" granted access to \"roles/apigee.spaceContentViewer\" role in space \"%s\"\n", memberName, space)
42+
return nil
43+
},
44+
Example: `Set Space Viewer role for user in a space: ` + GetExample(3),
45+
}
46+
47+
func init() {
48+
SetViewerCmd.Flags().StringVarP(&space, "space", "",
49+
"", "Space name.")
50+
SetViewerCmd.Flags().StringVarP(&memberName, "name", "n",
51+
"", "Member Name, example Service Account Name")
52+
SetViewerCmd.Flags().StringVarP(&memberType, "member-type", "m",
53+
"serviceAccount", "memberType must be serviceAccount, user or group")
54+
55+
_ = SetViewerCmd.MarkFlagRequired("space")
56+
_ = SetViewerCmd.MarkFlagRequired("name")
57+
}
58+

internal/cmd/spaces/spaces.go

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ var examples = []string{
3232
"apigeecli spaces create --name=space1 --display-name=\"Space 1\"",
3333
"apigeecli spaces iam get --space=space1",
3434
"apigeecli spaces iam seteditor --space=space1 --member-type=user [email protected]",
35+
"apigeecli spaces iam setviewer --space=space1 --member-type=user [email protected]",
3536
"apigeecli spaces iam test --space=space1 --res=proxies",
3637
"apigeecli spaces iam test --space=space1 --verb=create --res=sharedflows",
3738
"apigeecli spaces iam removerole --space=space1 --name=user:[email protected] --role=roles/apigee.spaceContentEditor",

internal/cmd/spaces/testiam.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ var TestIamCmd = &cobra.Command{
3737
return
3838
},
3939
Example: `Test IAM for a space:
40-
` + GetExample(3) + `
41-
` + GetExample(4),
40+
` + GetExample(4) + `
41+
` + GetExample(5),
4242
}
4343

4444
var verb, resource string

0 commit comments

Comments
 (0)