func newRoleInformer(client internalclientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { sharedIndexInformer := cache.NewSharedIndexInformer( &cache.ListWatch{ ListFunc: func(options v1.ListOptions) (runtime.Object, error) { var internalOptions api.ListOptions if err := api.Scheme.Convert(&options, &internalOptions, nil); err != nil { return nil, err } return client.Rbac().Roles(api.NamespaceAll).List(internalOptions) }, WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { var internalOptions api.ListOptions if err := api.Scheme.Convert(&options, &internalOptions, nil); err != nil { return nil, err } return client.Rbac().Roles(api.NamespaceAll).Watch(internalOptions) }, }, &rbac.Role{}, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, ) return sharedIndexInformer }
// bootstrap uses the provided client to create the bootstrap roles and role bindings. // // client should be authenticated as the RBAC super user. func (b bootstrapRoles) bootstrap(client clientset.Interface) error { for _, r := range b.clusterRoles { _, err := client.Rbac().ClusterRoles().Create(&r) if err != nil { return fmt.Errorf("failed to make request: %v", err) } } for _, r := range b.roles { _, err := client.Rbac().Roles(r.Namespace).Create(&r) if err != nil { return fmt.Errorf("failed to make request: %v", err) } } for _, r := range b.clusterRoleBindings { _, err := client.Rbac().ClusterRoleBindings().Create(&r) if err != nil { return fmt.Errorf("failed to make request: %v", err) } } for _, r := range b.roleBindings { _, err := client.Rbac().RoleBindings(r.Namespace).Create(&r) if err != nil { return fmt.Errorf("failed to make request: %v", err) } } return nil }