add query parameter for devops credential

Signed-off-by: shaowenchen <mail@chenshaowen.com>
This commit is contained in:
shaowenchen
2020-07-31 20:19:54 +08:00
parent 4702beb6ac
commit b82dc56eee
3 changed files with 43 additions and 22 deletions

View File

@@ -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