-
Notifications
You must be signed in to change notification settings - Fork 0
/
clusterrole_store.go
65 lines (54 loc) · 2.06 KB
/
clusterrole_store.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
package etcd
import (
"context"
"path"
"github.com/sensu/sensu-go/backend/store"
"github.com/sensu/sensu-go/types"
)
var (
clusterRolesPathPrefix = "rbac/clusterroles"
)
func getClusterRolePath(clusterRole *types.ClusterRole) string {
return path.Join(store.Root, clusterRolesPathPrefix, clusterRole.Name)
}
// GetClusterRolesPath gets the path of the cluster role store.
func GetClusterRolesPath(ctx context.Context, name string) string {
return path.Join(store.Root, clusterRolesPathPrefix, name)
}
// CreateClusterRole ...
func (s *Store) CreateClusterRole(ctx context.Context, clusterRole *types.ClusterRole) error {
if err := clusterRole.Validate(); err != nil {
return &store.ErrNotValid{Err: err}
}
return Create(ctx, s.client, getClusterRolePath(clusterRole), "", clusterRole)
}
// CreateOrUpdateClusterRole ...
func (s *Store) CreateOrUpdateClusterRole(ctx context.Context, clusterRole *types.ClusterRole) error {
if err := clusterRole.Validate(); err != nil {
return &store.ErrNotValid{Err: err}
}
return CreateOrUpdate(ctx, s.client, getClusterRolePath(clusterRole), "", clusterRole)
}
// DeleteClusterRole ...
func (s *Store) DeleteClusterRole(ctx context.Context, name string) error {
return Delete(ctx, s.client, GetClusterRolesPath(ctx, name))
}
// GetClusterRole ...
func (s *Store) GetClusterRole(ctx context.Context, name string) (*types.ClusterRole, error) {
clusterRole := &types.ClusterRole{}
err := Get(ctx, s.client, GetClusterRolesPath(ctx, name), clusterRole)
return clusterRole, err
}
// ListClusterRoles ...
func (s *Store) ListClusterRoles(ctx context.Context, pred *store.SelectionPredicate) ([]*types.ClusterRole, error) {
clusterRoles := []*types.ClusterRole{}
err := List(ctx, s.client, GetClusterRolesPath, &clusterRoles, pred)
return clusterRoles, err
}
// UpdateClusterRole ...
func (s *Store) UpdateClusterRole(ctx context.Context, clusterRole *types.ClusterRole) error {
if err := clusterRole.Validate(); err != nil {
return &store.ErrNotValid{Err: err}
}
return Update(ctx, s.client, getClusterRolePath(clusterRole), "", clusterRole)
}