-
Notifications
You must be signed in to change notification settings - Fork 48
/
rbac_group.go
112 lines (92 loc) · 2.8 KB
/
rbac_group.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package goaviatrix
import (
log "github.com/sirupsen/logrus"
)
type RbacGroup struct {
CID string `form:"CID,omitempty"`
Action string `form:"action,omitempty"`
GroupName string `form:"group_name,omitempty" json:"group_name,omitempty"`
}
type RbacGroupListResp struct {
Return bool `json:"return"`
RbacGroupList []string `json:"results"`
Reason string `json:"reason"`
}
type RbacGroupResponse struct {
LocalLogin bool `json:"local_login"`
GroupName string `json:"name"`
}
type RbacGroupListDetailsResp struct {
Return bool `json:"return"`
RbacGroupList []RbacGroupResponse `json:"results"`
Reason string `json:"reason"`
}
func (c *Client) CreatePermissionGroup(rbacGroup *RbacGroup) error {
rbacGroup.CID = c.CID
rbacGroup.Action = "add_permission_group"
return c.PostAPI(rbacGroup.Action, rbacGroup, BasicCheck)
}
func (c *Client) GetPermissionGroup(rbacGroup *RbacGroup) (*RbacGroup, error) {
form := map[string]string{
"CID": c.CID,
"action": "list_permission_groups",
}
var data RbacGroupListResp
err := c.GetAPI(&data, form["action"], form, BasicCheck)
if err != nil {
return nil, err
}
groups := data.RbacGroupList
for i := range groups {
if groups[i] == rbacGroup.GroupName {
log.Infof("Found Aviatrix RBAC group: %s", rbacGroup.GroupName)
return rbacGroup, nil
}
}
log.Errorf("Couldn't find Aviatrix RBAC group: %s", rbacGroup.GroupName)
return nil, ErrNotFound
}
func (c *Client) DeletePermissionGroup(rbacGroup *RbacGroup) error {
form := map[string]string{
"CID": c.CID,
"action": "delete_permission_group",
"group_name": rbacGroup.GroupName,
}
return c.PostAPI(form["action"], form, BasicCheck)
}
func (c *Client) EnableLocalLoginForRBACGroup(GroupName string) error {
data := map[string]string{
"action": "enable_local_login",
"CID": c.CID,
"group_name": GroupName,
}
return c.PostAPI("disable_local_login", data, BasicCheck)
}
func (c *Client) DisableLocalLoginForRBACGroup(GroupName string) error {
data := map[string]string{
"action": "disable_local_login",
"CID": c.CID,
"group_name": GroupName,
}
return c.PostAPI("disable_local_login", data, BasicCheck)
}
func (c *Client) GetPermissionGroupDetails(GroupName string) (*RbacGroupResponse, error) {
form := map[string]string{
"CID": c.CID,
"action": "list_permission_group_details",
}
var data RbacGroupListDetailsResp
err := c.GetAPI(&data, form["action"], form, BasicCheck)
if err != nil {
return nil, err
}
groups := data.RbacGroupList
for i := range groups {
if groups[i].GroupName == GroupName {
log.Infof("Found Aviatrix RBAC group: %s", GroupName)
return &groups[i], nil
}
}
log.Errorf("Couldn't find Aviatrix RBAC group: %s", GroupName)
return nil, ErrNotFound
}