...
1
16
17 package clusterrolebinding
18
19 import (
20 "context"
21
22 rbacv1 "k8s.io/api/rbac/v1"
23 metainternalversion "k8s.io/apimachinery/pkg/apis/meta/internalversion"
24 genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
25 "k8s.io/apiserver/pkg/registry/rest"
26 "k8s.io/kubernetes/pkg/apis/rbac"
27 rbacv1helpers "k8s.io/kubernetes/pkg/apis/rbac/v1"
28 )
29
30
31 type Registry interface {
32 ListClusterRoleBindings(ctx context.Context, options *metainternalversion.ListOptions) (*rbacv1.ClusterRoleBindingList, error)
33 }
34
35
36 type storage struct {
37 rest.Lister
38 }
39
40
41
42 func NewRegistry(s rest.StandardStorage) Registry {
43 return &storage{s}
44 }
45
46 func (s *storage) ListClusterRoleBindings(ctx context.Context, options *metainternalversion.ListOptions) (*rbacv1.ClusterRoleBindingList, error) {
47 obj, err := s.List(ctx, options)
48 if err != nil {
49 return nil, err
50 }
51
52 ret := &rbacv1.ClusterRoleBindingList{}
53 if err := rbacv1helpers.Convert_rbac_ClusterRoleBindingList_To_v1_ClusterRoleBindingList(obj.(*rbac.ClusterRoleBindingList), ret, nil); err != nil {
54 return nil, err
55 }
56 return ret, nil
57 }
58
59
60 type AuthorizerAdapter struct {
61 Registry Registry
62 }
63
64 func (a AuthorizerAdapter) ListClusterRoleBindings() ([]*rbacv1.ClusterRoleBinding, error) {
65 list, err := a.Registry.ListClusterRoleBindings(genericapirequest.NewContext(), &metainternalversion.ListOptions{})
66 if err != nil {
67 return nil, err
68 }
69
70 ret := []*rbacv1.ClusterRoleBinding{}
71 for i := range list.Items {
72 ret = append(ret, &list.Items[i])
73 }
74 return ret, nil
75 }
76
View as plain text