From b38d97a69bf4c0a923c10d51f38bd9accd3baac6 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Mon, 18 Dec 2017 13:53:36 -0700 Subject: [PATCH] Generate Role --- .../v1/zz_generated_deepcopy.go | 38 ++++ .../v1/zz_generated_k8s_client.go | 16 ++ .../v1/zz_generated_role_controller.go | 205 ++++++++++++++++++ .../v1/zz_generated_role_lifecycle_adapter.go | 52 +++++ .../v1/zz_generated_scheme.go | 1 + main.go | 3 +- 6 files changed, 314 insertions(+), 1 deletion(-) create mode 100644 apis/rbac.authorization.k8s.io/v1/zz_generated_role_controller.go create mode 100644 apis/rbac.authorization.k8s.io/v1/zz_generated_role_lifecycle_adapter.go diff --git a/apis/rbac.authorization.k8s.io/v1/zz_generated_deepcopy.go b/apis/rbac.authorization.k8s.io/v1/zz_generated_deepcopy.go index e7dbb9fd..d4536d1b 100644 --- a/apis/rbac.authorization.k8s.io/v1/zz_generated_deepcopy.go +++ b/apis/rbac.authorization.k8s.io/v1/zz_generated_deepcopy.go @@ -30,6 +30,10 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error { in.(*RoleBindingList).DeepCopyInto(out.(*RoleBindingList)) return nil }, InType: reflect.TypeOf(&RoleBindingList{})}, + conversion.GeneratedDeepCopyFunc{Fn: func(in interface{}, out interface{}, c *conversion.Cloner) error { + in.(*RoleList).DeepCopyInto(out.(*RoleList)) + return nil + }, InType: reflect.TypeOf(&RoleList{})}, ) } @@ -134,3 +138,37 @@ func (in *RoleBindingList) DeepCopyObject() runtime.Object { return nil } } + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RoleList) DeepCopyInto(out *RoleList) { + *out = *in + out.TypeMeta = in.TypeMeta + out.ListMeta = in.ListMeta + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]rbac_v1.Role, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RoleList. +func (in *RoleList) DeepCopy() *RoleList { + if in == nil { + return nil + } + out := new(RoleList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RoleList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } else { + return nil + } +} diff --git a/apis/rbac.authorization.k8s.io/v1/zz_generated_k8s_client.go b/apis/rbac.authorization.k8s.io/v1/zz_generated_k8s_client.go index e77e508b..ba4c0917 100644 --- a/apis/rbac.authorization.k8s.io/v1/zz_generated_k8s_client.go +++ b/apis/rbac.authorization.k8s.io/v1/zz_generated_k8s_client.go @@ -17,6 +17,7 @@ type Interface interface { RoleBindingsGetter ClusterRoleBindingsGetter ClusterRolesGetter + RolesGetter } type Client struct { @@ -27,6 +28,7 @@ type Client struct { roleBindingControllers map[string]RoleBindingController clusterRoleBindingControllers map[string]ClusterRoleBindingController clusterRoleControllers map[string]ClusterRoleController + roleControllers map[string]RoleController } func NewForConfig(config rest.Config) (Interface, error) { @@ -46,6 +48,7 @@ func NewForConfig(config rest.Config) (Interface, error) { roleBindingControllers: map[string]RoleBindingController{}, clusterRoleBindingControllers: map[string]ClusterRoleBindingController{}, clusterRoleControllers: map[string]ClusterRoleController{}, + roleControllers: map[string]RoleController{}, }, nil } @@ -99,3 +102,16 @@ func (c *Client) ClusterRoles(namespace string) ClusterRoleInterface { objectClient: objectClient, } } + +type RolesGetter interface { + Roles(namespace string) RoleInterface +} + +func (c *Client) Roles(namespace string) RoleInterface { + objectClient := clientbase.NewObjectClient(namespace, c.restClient, &RoleResource, RoleGroupVersionKind, roleFactory{}) + return &roleClient{ + ns: namespace, + client: c, + objectClient: objectClient, + } +} diff --git a/apis/rbac.authorization.k8s.io/v1/zz_generated_role_controller.go b/apis/rbac.authorization.k8s.io/v1/zz_generated_role_controller.go new file mode 100644 index 00000000..80b183e0 --- /dev/null +++ b/apis/rbac.authorization.k8s.io/v1/zz_generated_role_controller.go @@ -0,0 +1,205 @@ +package v1 + +import ( + "context" + + "github.com/rancher/norman/clientbase" + "github.com/rancher/norman/controller" + "k8s.io/api/rbac/v1" + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/client-go/tools/cache" +) + +var ( + RoleGroupVersionKind = schema.GroupVersionKind{ + Version: Version, + Group: GroupName, + Kind: "Role", + } + RoleResource = metav1.APIResource{ + Name: "roles", + SingularName: "role", + Namespaced: false, + Kind: RoleGroupVersionKind.Kind, + } +) + +type RoleList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []v1.Role +} + +type RoleHandlerFunc func(key string, obj *v1.Role) error + +type RoleLister interface { + List(namespace string, selector labels.Selector) (ret []*v1.Role, err error) + Get(namespace, name string) (*v1.Role, error) +} + +type RoleController interface { + Informer() cache.SharedIndexInformer + Lister() RoleLister + AddHandler(handler RoleHandlerFunc) + Enqueue(namespace, name string) + Sync(ctx context.Context) error + Start(ctx context.Context, threadiness int) error +} + +type RoleInterface interface { + ObjectClient() *clientbase.ObjectClient + Create(*v1.Role) (*v1.Role, error) + Get(name string, opts metav1.GetOptions) (*v1.Role, error) + Update(*v1.Role) (*v1.Role, error) + Delete(name string, options *metav1.DeleteOptions) error + List(opts metav1.ListOptions) (*RoleList, error) + Watch(opts metav1.ListOptions) (watch.Interface, error) + DeleteCollection(deleteOpts *metav1.DeleteOptions, listOpts metav1.ListOptions) error + Controller() RoleController + AddSyncHandler(sync RoleHandlerFunc) + AddLifecycle(name string, lifecycle RoleLifecycle) +} + +type roleLister struct { + controller *roleController +} + +func (l *roleLister) List(namespace string, selector labels.Selector) (ret []*v1.Role, err error) { + err = cache.ListAllByNamespace(l.controller.Informer().GetIndexer(), namespace, selector, func(obj interface{}) { + ret = append(ret, obj.(*v1.Role)) + }) + return +} + +func (l *roleLister) Get(namespace, name string) (*v1.Role, error) { + var key string + if namespace != "" { + key = namespace + "/" + name + } else { + key = name + } + obj, exists, err := l.controller.Informer().GetIndexer().GetByKey(key) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(schema.GroupResource{ + Group: RoleGroupVersionKind.Group, + Resource: "role", + }, name) + } + return obj.(*v1.Role), nil +} + +type roleController struct { + controller.GenericController +} + +func (c *roleController) Lister() RoleLister { + return &roleLister{ + controller: c, + } +} + +func (c *roleController) AddHandler(handler RoleHandlerFunc) { + c.GenericController.AddHandler(func(key string) error { + obj, exists, err := c.Informer().GetStore().GetByKey(key) + if err != nil { + return err + } + if !exists { + return handler(key, nil) + } + return handler(key, obj.(*v1.Role)) + }) +} + +type roleFactory struct { +} + +func (c roleFactory) Object() runtime.Object { + return &v1.Role{} +} + +func (c roleFactory) List() runtime.Object { + return &RoleList{} +} + +func (s *roleClient) Controller() RoleController { + s.client.Lock() + defer s.client.Unlock() + + c, ok := s.client.roleControllers[s.ns] + if ok { + return c + } + + genericController := controller.NewGenericController(RoleGroupVersionKind.Kind+"Controller", + s.objectClient) + + c = &roleController{ + GenericController: genericController, + } + + s.client.roleControllers[s.ns] = c + s.client.starters = append(s.client.starters, c) + + return c +} + +type roleClient struct { + client *Client + ns string + objectClient *clientbase.ObjectClient + controller RoleController +} + +func (s *roleClient) ObjectClient() *clientbase.ObjectClient { + return s.objectClient +} + +func (s *roleClient) Create(o *v1.Role) (*v1.Role, error) { + obj, err := s.objectClient.Create(o) + return obj.(*v1.Role), err +} + +func (s *roleClient) Get(name string, opts metav1.GetOptions) (*v1.Role, error) { + obj, err := s.objectClient.Get(name, opts) + return obj.(*v1.Role), err +} + +func (s *roleClient) Update(o *v1.Role) (*v1.Role, error) { + obj, err := s.objectClient.Update(o.Name, o) + return obj.(*v1.Role), err +} + +func (s *roleClient) Delete(name string, options *metav1.DeleteOptions) error { + return s.objectClient.Delete(name, options) +} + +func (s *roleClient) List(opts metav1.ListOptions) (*RoleList, error) { + obj, err := s.objectClient.List(opts) + return obj.(*RoleList), err +} + +func (s *roleClient) Watch(opts metav1.ListOptions) (watch.Interface, error) { + return s.objectClient.Watch(opts) +} + +func (s *roleClient) DeleteCollection(deleteOpts *metav1.DeleteOptions, listOpts metav1.ListOptions) error { + return s.objectClient.DeleteCollection(deleteOpts, listOpts) +} + +func (s *roleClient) AddSyncHandler(sync RoleHandlerFunc) { + s.Controller().AddHandler(sync) +} + +func (s *roleClient) AddLifecycle(name string, lifecycle RoleLifecycle) { + sync := NewRoleLifecycleAdapter(name, s, lifecycle) + s.AddSyncHandler(sync) +} diff --git a/apis/rbac.authorization.k8s.io/v1/zz_generated_role_lifecycle_adapter.go b/apis/rbac.authorization.k8s.io/v1/zz_generated_role_lifecycle_adapter.go new file mode 100644 index 00000000..5cea32b9 --- /dev/null +++ b/apis/rbac.authorization.k8s.io/v1/zz_generated_role_lifecycle_adapter.go @@ -0,0 +1,52 @@ +package v1 + +import ( + "github.com/rancher/norman/lifecycle" + "k8s.io/api/rbac/v1" + "k8s.io/apimachinery/pkg/runtime" +) + +type RoleLifecycle interface { + Create(obj *v1.Role) (*v1.Role, error) + Remove(obj *v1.Role) (*v1.Role, error) + Updated(obj *v1.Role) (*v1.Role, error) +} + +type roleLifecycleAdapter struct { + lifecycle RoleLifecycle +} + +func (w *roleLifecycleAdapter) Create(obj runtime.Object) (runtime.Object, error) { + o, err := w.lifecycle.Create(obj.(*v1.Role)) + if o == nil { + return nil, err + } + return o, err +} + +func (w *roleLifecycleAdapter) Finalize(obj runtime.Object) (runtime.Object, error) { + o, err := w.lifecycle.Remove(obj.(*v1.Role)) + if o == nil { + return nil, err + } + return o, err +} + +func (w *roleLifecycleAdapter) Updated(obj runtime.Object) (runtime.Object, error) { + o, err := w.lifecycle.Updated(obj.(*v1.Role)) + if o == nil { + return nil, err + } + return o, err +} + +func NewRoleLifecycleAdapter(name string, client RoleInterface, l RoleLifecycle) RoleHandlerFunc { + adapter := &roleLifecycleAdapter{lifecycle: l} + syncFn := lifecycle.NewObjectLifecycleAdapter(name, adapter, client.ObjectClient()) + return func(key string, obj *v1.Role) error { + if obj == nil { + return syncFn(key, nil) + } + return syncFn(key, obj) + } +} diff --git a/apis/rbac.authorization.k8s.io/v1/zz_generated_scheme.go b/apis/rbac.authorization.k8s.io/v1/zz_generated_scheme.go index 075c36ac..dd59f8ac 100644 --- a/apis/rbac.authorization.k8s.io/v1/zz_generated_scheme.go +++ b/apis/rbac.authorization.k8s.io/v1/zz_generated_scheme.go @@ -36,6 +36,7 @@ func addKnownTypes(scheme *runtime.Scheme) error { &RoleBindingList{}, &ClusterRoleBindingList{}, &ClusterRoleList{}, + &RoleList{}, ) return nil } diff --git a/main.go b/main.go index 7a58bca2..a1466653 100644 --- a/main.go +++ b/main.go @@ -21,6 +21,7 @@ func main() { // Group by API group generator.GenerateNativeTypes(v1.SchemeGroupVersion, v1.Pod{}, v1.Node{}, v1.ComponentStatus{}, v1.Namespace{}, v1.Event{}) generator.GenerateNativeTypes(v1beta2.SchemeGroupVersion, v1beta2.Deployment{}) - generator.GenerateNativeTypes(rbacv1.SchemeGroupVersion, rbacv1.RoleBinding{}, rbacv1.ClusterRoleBinding{}, rbacv1.ClusterRole{}) + generator.GenerateNativeTypes(rbacv1.SchemeGroupVersion, rbacv1.RoleBinding{}, rbacv1.ClusterRoleBinding{}, rbacv1.ClusterRole{}, + rbacv1.Role{}) generator.GenerateNativeTypes(extv1beta1.SchemeGroupVersion, extv1beta1.PodSecurityPolicy{}) }