Fix the devopsProjectLister is nil

Signed-off-by: rick <1450685+LinuxSuRen@users.noreply.github.com>
This commit is contained in:
rick
2021-09-23 14:52:40 +08:00
parent a56368e125
commit 182c4acbbb
3 changed files with 10 additions and 9 deletions

View File

@@ -322,7 +322,7 @@ func (s *APIServer) buildHandlerChain(stopCh <-chan struct{}) {
case authorization.RBAC: case authorization.RBAC:
excludedPaths := []string{"/oauth/*", "/kapis/config.kubesphere.io/*", "/kapis/version", "/kapis/metrics"} excludedPaths := []string{"/oauth/*", "/kapis/config.kubesphere.io/*", "/kapis/version", "/kapis/metrics"}
pathAuthorizer, _ := path.NewAuthorizer(excludedPaths) pathAuthorizer, _ := path.NewAuthorizer(excludedPaths)
amOperator := am.NewReadOnlyOperator(s.InformerFactory) amOperator := am.NewReadOnlyOperator(s.InformerFactory, s.DevopsClient)
authorizers = unionauthorizer.New(pathAuthorizer, rbac.NewRBACAuthorizer(amOperator)) authorizers = unionauthorizer.New(pathAuthorizer, rbac.NewRBACAuthorizer(amOperator))
} }

View File

@@ -920,7 +920,7 @@ func newMockRBACAuthorizer(staticRoles *StaticRoles) (*RBACAuthorizer, error) {
return nil, err return nil, err
} }
} }
return NewRBACAuthorizer(am.NewReadOnlyOperator(fakeInformerFactory)), nil return NewRBACAuthorizer(am.NewReadOnlyOperator(fakeInformerFactory, nil)), nil
} }
func TestAppliesTo(t *testing.T) { func TestAppliesTo(t *testing.T) {

View File

@@ -114,8 +114,8 @@ type amOperator struct {
k8sclient kubernetes.Interface k8sclient kubernetes.Interface
} }
func NewReadOnlyOperator(factory informers.InformerFactory) AccessManagementInterface { func NewReadOnlyOperator(factory informers.InformerFactory, devopsClient devops.Interface) AccessManagementInterface {
return &amOperator{ operator := &amOperator{
globalRoleBindingGetter: globalrolebinding.New(factory.KubeSphereSharedInformerFactory()), globalRoleBindingGetter: globalrolebinding.New(factory.KubeSphereSharedInformerFactory()),
workspaceRoleBindingGetter: workspacerolebinding.New(factory.KubeSphereSharedInformerFactory()), workspaceRoleBindingGetter: workspacerolebinding.New(factory.KubeSphereSharedInformerFactory()),
clusterRoleBindingGetter: clusterrolebinding.New(factory.KubernetesSharedInformerFactory()), clusterRoleBindingGetter: clusterrolebinding.New(factory.KubernetesSharedInformerFactory()),
@@ -126,16 +126,17 @@ func NewReadOnlyOperator(factory informers.InformerFactory) AccessManagementInte
roleGetter: role.New(factory.KubernetesSharedInformerFactory()), roleGetter: role.New(factory.KubernetesSharedInformerFactory()),
namespaceLister: factory.KubernetesSharedInformerFactory().Core().V1().Namespaces().Lister(), namespaceLister: factory.KubernetesSharedInformerFactory().Core().V1().Namespaces().Lister(),
} }
// no more CRDs of devopsprojects if the DevOps module was disabled
if devopsClient != nil {
operator.devopsProjectLister = factory.KubeSphereSharedInformerFactory().Devops().V1alpha3().DevOpsProjects().Lister()
}
return operator
} }
func NewOperator(ksClient kubesphere.Interface, k8sClient kubernetes.Interface, factory informers.InformerFactory, devopsClient devops.Interface) AccessManagementInterface { func NewOperator(ksClient kubesphere.Interface, k8sClient kubernetes.Interface, factory informers.InformerFactory, devopsClient devops.Interface) AccessManagementInterface {
amOperator := NewReadOnlyOperator(factory).(*amOperator) amOperator := NewReadOnlyOperator(factory, devopsClient).(*amOperator)
amOperator.ksclient = ksClient amOperator.ksclient = ksClient
amOperator.k8sclient = k8sClient amOperator.k8sclient = k8sClient
// no more CRDs of devopsprojects if the DevOps module was disabled
if devopsClient != nil {
amOperator.devopsProjectLister = factory.KubeSphereSharedInformerFactory().Devops().V1alpha3().DevOpsProjects().Lister()
}
return amOperator return amOperator
} }