Merge pull request #2072 from shaowenchen/fix_create_pipeline
fix pipeline bugs
This commit is contained in:
@@ -21,7 +21,6 @@ import (
|
||||
devopsClient "kubesphere.io/kubesphere/pkg/simple/client/devops"
|
||||
"kubesphere.io/kubesphere/pkg/utils/k8sutil"
|
||||
"kubesphere.io/kubesphere/pkg/utils/sliceutil"
|
||||
"net/http"
|
||||
"reflect"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -217,24 +216,15 @@ func (c *Controller) syncHandler(key string) error {
|
||||
|
||||
copySecret := secret.DeepCopy()
|
||||
// DeletionTimestamp.IsZero() means copySecret has not been deleted.
|
||||
if copySecret.ObjectMeta.DeletionTimestamp.IsZero() {
|
||||
if secret.ObjectMeta.DeletionTimestamp.IsZero() {
|
||||
// https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/#finalizers
|
||||
if !sliceutil.HasString(copySecret.ObjectMeta.Finalizers, devopsv1alpha3.CredentialFinalizerName) {
|
||||
if !sliceutil.HasString(secret.ObjectMeta.Finalizers, devopsv1alpha3.CredentialFinalizerName) {
|
||||
copySecret.ObjectMeta.Finalizers = append(copySecret.ObjectMeta.Finalizers, devopsv1alpha3.CredentialFinalizerName)
|
||||
}
|
||||
// Check secret config exists, otherwise we will create it.
|
||||
// if secret exists, update config
|
||||
_, err := c.devopsClient.GetCredentialInProject(nsName, secret.Name)
|
||||
if err != nil && devopsClient.GetDevOpsStatusCode(err) != http.StatusNotFound {
|
||||
klog.Error(err, fmt.Sprintf("failed to get secret %s ", key))
|
||||
return err
|
||||
} else if err != nil {
|
||||
_, err := c.devopsClient.CreateCredentialInProject(nsName, copySecret)
|
||||
if err != nil {
|
||||
klog.Error(err, fmt.Sprintf("failed to create secret %s ", key))
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
_, err := c.devopsClient.CreateCredentialInProject(nsName, copySecret)
|
||||
if err != nil {
|
||||
if _, ok := copySecret.Annotations[devopsv1alpha3.CredentialAutoSyncAnnoKey]; ok {
|
||||
_, err := c.devopsClient.UpdateCredentialInProject(nsName, copySecret)
|
||||
if err != nil {
|
||||
@@ -247,16 +237,9 @@ func (c *Controller) syncHandler(key string) error {
|
||||
} else {
|
||||
// Finalizers processing logic
|
||||
if sliceutil.HasString(copySecret.ObjectMeta.Finalizers, devopsv1alpha3.CredentialFinalizerName) {
|
||||
_, err := c.devopsClient.GetCredentialInProject(nsName, secret.Name)
|
||||
if err != nil && devopsClient.GetDevOpsStatusCode(err) != http.StatusNotFound {
|
||||
klog.Error(err, fmt.Sprintf("failed to get secret %s ", key))
|
||||
if _, err := c.devopsClient.DeleteCredentialInProject(nsName, secret.Name); err != nil {
|
||||
klog.Error(err, fmt.Sprintf("failed to delete secret %s in devops", key))
|
||||
return err
|
||||
} else if err != nil && devopsClient.GetDevOpsStatusCode(err) == http.StatusNotFound {
|
||||
} else {
|
||||
if _, err := c.devopsClient.DeleteCredentialInProject(nsName, secret.Name); err != nil {
|
||||
klog.Error(err, fmt.Sprintf("failed to delete secret %s in devops", key))
|
||||
return err
|
||||
}
|
||||
}
|
||||
copySecret.ObjectMeta.Finalizers = sliceutil.RemoveString(copySecret.ObjectMeta.Finalizers, func(item string) bool {
|
||||
return item == devopsv1alpha3.CredentialFinalizerName
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
package devopscredential
|
||||
|
||||
import (
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"kubesphere.io/kubesphere/pkg/constants"
|
||||
fakeDevOps "kubesphere.io/kubesphere/pkg/simple/client/devops/fake"
|
||||
"reflect"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
v1 "k8s.io/api/core/v1"
|
||||
"kubesphere.io/kubesphere/pkg/constants"
|
||||
fakeDevOps "kubesphere.io/kubesphere/pkg/simple/client/devops/fake"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
@@ -351,27 +352,6 @@ func TestDeleteCredential(t *testing.T) {
|
||||
f.run(getKey(secret, t))
|
||||
}
|
||||
|
||||
func TestDeleteNotExistCredential(t *testing.T) {
|
||||
f := newFixture(t)
|
||||
nsName := "test-123"
|
||||
pipelineName := "test"
|
||||
projectName := "test_project"
|
||||
|
||||
ns := newNamespace(nsName, projectName)
|
||||
secret := newDeletingSecret(nsName, pipelineName)
|
||||
|
||||
expectSecret := secret.DeepCopy()
|
||||
expectSecret.Finalizers = []string{}
|
||||
f.secretLister = append(f.secretLister, secret)
|
||||
f.namespaceLister = append(f.namespaceLister, ns)
|
||||
f.kubeobjects = append(f.kubeobjects, secret)
|
||||
f.initDevOpsProject = nsName
|
||||
f.initCredential = []*v1.Secret{}
|
||||
f.expectCredential = []*v1.Secret{}
|
||||
f.expectUpdateSecretAction(expectSecret)
|
||||
f.run(getKey(secret, t))
|
||||
}
|
||||
|
||||
func TestUpdateCredential(t *testing.T) {
|
||||
f := newFixture(t)
|
||||
nsName := "test-123"
|
||||
|
||||
@@ -23,7 +23,6 @@ import (
|
||||
devopsClient "kubesphere.io/kubesphere/pkg/simple/client/devops"
|
||||
"kubesphere.io/kubesphere/pkg/utils/k8sutil"
|
||||
"kubesphere.io/kubesphere/pkg/utils/sliceutil"
|
||||
"net/http"
|
||||
"reflect"
|
||||
"time"
|
||||
)
|
||||
@@ -225,13 +224,10 @@ func (c *Controller) syncHandler(key string) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else if devopsClient.GetDevOpsStatusCode(err) != http.StatusNotFound {
|
||||
klog.Error(err, fmt.Sprintf("failed to get copyPipeline %s ", key))
|
||||
return err
|
||||
} else {
|
||||
_, err := c.devopsClient.CreateProjectPipeline(nsName, copyPipeline)
|
||||
if err != nil {
|
||||
klog.Error(err, fmt.Sprintf("failed to get copyPipeline %s ", key))
|
||||
klog.Error(err, fmt.Sprintf("failed to create copyPipeline %s ", key))
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -239,16 +235,8 @@ func (c *Controller) syncHandler(key string) error {
|
||||
} else {
|
||||
// Finalizers processing logic
|
||||
if sliceutil.HasString(copyPipeline.ObjectMeta.Finalizers, devopsv1alpha3.PipelineFinalizerName) {
|
||||
_, err := c.devopsClient.GetProjectPipelineConfig(nsName, pipeline.Name)
|
||||
if err != nil && devopsClient.GetDevOpsStatusCode(err) != http.StatusNotFound {
|
||||
klog.Error(err, fmt.Sprintf("failed to get pipeline %s ", key))
|
||||
return err
|
||||
} else if err != nil && devopsClient.GetDevOpsStatusCode(err) == http.StatusNotFound {
|
||||
} else {
|
||||
if _, err := c.devopsClient.DeleteProjectPipeline(nsName, pipeline.Name); err != nil {
|
||||
klog.Error(err, fmt.Sprintf("failed to delete pipeline %s in devops", key))
|
||||
return err
|
||||
}
|
||||
if _, err := c.devopsClient.DeleteProjectPipeline(nsName, pipeline.Name); err != nil {
|
||||
klog.Error(err, fmt.Sprintf("failed to delete pipeline %s in devops", key))
|
||||
}
|
||||
copyPipeline.ObjectMeta.Finalizers = sliceutil.RemoveString(copyPipeline.ObjectMeta.Finalizers, func(item string) bool {
|
||||
return item == devopsv1alpha3.PipelineFinalizerName
|
||||
|
||||
@@ -225,7 +225,7 @@ func TestDeleteS3Object(t *testing.T) {
|
||||
|
||||
f.s2ibinaryLister = append(f.s2ibinaryLister, s2iBinary)
|
||||
f.objects = append(f.objects, s2iBinary)
|
||||
f.initS3Objects = []*fakes3.Object{&fakes3.Object{
|
||||
f.initS3Objects = []*fakes3.Object{{
|
||||
Key: "default-test",
|
||||
}}
|
||||
f.expectS3Objects = []*fakes3.Object{}
|
||||
|
||||
Reference in New Issue
Block a user