add query parameter for devops credential
Signed-off-by: shaowenchen <mail@chenshaowen.com>
This commit is contained in:
@@ -26,6 +26,7 @@ import (
|
||||
"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/util/validation/field"
|
||||
"k8s.io/client-go/informers"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
@@ -34,8 +35,10 @@ import (
|
||||
"kubesphere.io/kubesphere/pkg/apis/devops/v1alpha3"
|
||||
devopsv1alpha3 "kubesphere.io/kubesphere/pkg/apis/devops/v1alpha3"
|
||||
tenantv1alpha1 "kubesphere.io/kubesphere/pkg/apis/tenant/v1alpha1"
|
||||
"kubesphere.io/kubesphere/pkg/apiserver/query"
|
||||
kubesphere "kubesphere.io/kubesphere/pkg/client/clientset/versioned"
|
||||
"kubesphere.io/kubesphere/pkg/client/informers/externalversions"
|
||||
resourcesV1alpha3 "kubesphere.io/kubesphere/pkg/models/resources/v1alpha3"
|
||||
"kubesphere.io/kubesphere/pkg/simple/client/devops"
|
||||
"net/http"
|
||||
"sync"
|
||||
@@ -62,7 +65,7 @@ type DevopsOperator interface {
|
||||
GetCredentialObj(projectName string, secretName string) (*v1.Secret, error)
|
||||
DeleteCredentialObj(projectName string, secretName string) error
|
||||
UpdateCredentialObj(projectName string, secret *v1.Secret) (*v1.Secret, error)
|
||||
ListCredentialObj(projectName string, limit, offset int) (api.ListResult, error)
|
||||
ListCredentialObj(projectName string, query *query.Query) (api.ListResult, error)
|
||||
|
||||
GetPipeline(projectName, pipelineName string, req *http.Request) (*devops.Pipeline, error)
|
||||
ListPipelines(req *http.Request) (*devops.PipelineList, error)
|
||||
@@ -301,19 +304,16 @@ func (d devopsOperator) UpdateCredentialObj(projectName string, secret *v1.Secre
|
||||
return d.k8sclient.CoreV1().Secrets(projectObj.Status.AdminNamespace).Update(secret)
|
||||
}
|
||||
|
||||
func (d devopsOperator) ListCredentialObj(projectName string, limit, offset int) (api.ListResult, error) {
|
||||
func (d devopsOperator) ListCredentialObj(projectName string, query *query.Query) (api.ListResult, error) {
|
||||
projectObj, err := d.ksInformers.Devops().V1alpha3().DevOpsProjects().Lister().Get(projectName)
|
||||
if err != nil {
|
||||
return api.ListResult{}, err
|
||||
}
|
||||
|
||||
credentialList, err := d.k8sInformers.Core().V1().Secrets().Lister().Secrets(projectObj.Status.AdminNamespace).List(labels.Everything())
|
||||
credentialObjList, err := d.k8sInformers.Core().V1().Secrets().Lister().Secrets(projectObj.Status.AdminNamespace).List(query.Selector())
|
||||
if err != nil {
|
||||
return api.ListResult{}, err
|
||||
}
|
||||
|
||||
items := make([]interface{}, 0)
|
||||
var result []interface{}
|
||||
var result []runtime.Object
|
||||
|
||||
credentialTypeList := []v1.SecretType{
|
||||
v1alpha3.SecretTypeBasicAuth,
|
||||
@@ -321,22 +321,41 @@ func (d devopsOperator) ListCredentialObj(projectName string, limit, offset int)
|
||||
v1alpha3.SecretTypeSecretText,
|
||||
v1alpha3.SecretTypeKubeConfig,
|
||||
}
|
||||
for _, credential := range credentialList {
|
||||
for _, credential := range credentialObjList {
|
||||
for _, credentialType := range credentialTypeList {
|
||||
if credential.Type == credentialType {
|
||||
result = append(result, *credential)
|
||||
result = append(result, credential)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if limit == -1 || limit+offset > len(result) {
|
||||
limit = len(result) - offset
|
||||
return *resourcesV1alpha3.DefaultList(result, query, d.compareCredentialObj, d.filterCredentialObj), nil
|
||||
}
|
||||
|
||||
func (d devopsOperator) compareCredentialObj(left runtime.Object, right runtime.Object, field query.Field) bool {
|
||||
|
||||
leftObj, ok := left.(*v1.Secret)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
items = result[offset : offset+limit]
|
||||
if items == nil {
|
||||
items = []interface{}{}
|
||||
|
||||
rightObj, ok := right.(*v1.Secret)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
return api.ListResult{TotalItems: len(result), Items: items}, nil
|
||||
|
||||
return resourcesV1alpha3.DefaultObjectMetaCompare(leftObj.ObjectMeta, rightObj.ObjectMeta, field)
|
||||
}
|
||||
|
||||
func (d devopsOperator) filterCredentialObj(object runtime.Object, filter query.Filter) bool {
|
||||
|
||||
secret, ok := object.(*v1.Secret)
|
||||
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
|
||||
return resourcesV1alpha3.DefaultObjectMetaFilter(secret.ObjectMeta, filter)
|
||||
}
|
||||
|
||||
// others
|
||||
|
||||
Reference in New Issue
Block a user