未验证 提交 4abaf967 编写于 作者: K KubeSphere CI Bot 提交者: GitHub

Merge pull request #2065 from shaowenchen/fix_create_devops

fix devops create and delete bug
...@@ -22,7 +22,6 @@ import ( ...@@ -22,7 +22,6 @@ import (
devopsClient "kubesphere.io/kubesphere/pkg/simple/client/devops" devopsClient "kubesphere.io/kubesphere/pkg/simple/client/devops"
"kubesphere.io/kubesphere/pkg/utils/k8sutil" "kubesphere.io/kubesphere/pkg/utils/k8sutil"
"kubesphere.io/kubesphere/pkg/utils/sliceutil" "kubesphere.io/kubesphere/pkg/utils/sliceutil"
"net/http"
"reflect" "reflect"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
"time" "time"
...@@ -282,10 +281,8 @@ func (c *Controller) syncHandler(key string) error { ...@@ -282,10 +281,8 @@ func (c *Controller) syncHandler(key string) error {
} }
// Check project exists, otherwise we will create it. // Check project exists, otherwise we will create it.
_, err := c.devopsClient.GetDevOpsProject(copyProject.Status.AdminNamespace) _, err := c.devopsClient.GetDevOpsProject(copyProject.Status.AdminNamespace)
if err != nil && devopsClient.GetDevOpsStatusCode(err) != http.StatusNotFound { if err != nil {
klog.Error(err, fmt.Sprintf("failed to get project %s ", key)) klog.Error(err, fmt.Sprintf("failed to get project %s ", key))
return err
} else {
_, err := c.devopsClient.CreateDevOpsProject(copyProject.Status.AdminNamespace) _, err := c.devopsClient.CreateDevOpsProject(copyProject.Status.AdminNamespace)
if err != nil { if err != nil {
klog.Error(err, fmt.Sprintf("failed to get project %s ", key)) klog.Error(err, fmt.Sprintf("failed to get project %s ", key))
...@@ -296,16 +293,9 @@ func (c *Controller) syncHandler(key string) error { ...@@ -296,16 +293,9 @@ func (c *Controller) syncHandler(key string) error {
} else { } else {
// Finalizers processing logic // Finalizers processing logic
if sliceutil.HasString(project.ObjectMeta.Finalizers, devopsv1alpha3.DevOpsProjectFinalizerName) { if sliceutil.HasString(project.ObjectMeta.Finalizers, devopsv1alpha3.DevOpsProjectFinalizerName) {
_, err := c.devopsClient.GetDevOpsProject(key) if err := c.deleteDevOpsProjectInDevOps(project); err != nil {
if err != nil && devopsClient.GetDevOpsStatusCode(err) != http.StatusNotFound { klog.Error(err, fmt.Sprintf("failed to delete resource %s in devops", key))
klog.Error(err, fmt.Sprintf("failed to get project %s ", key))
return err return err
} else if err != nil && devopsClient.GetDevOpsStatusCode(err) == http.StatusNotFound {
} else {
if err := c.deleteDevOpsProjectInDevOps(project); err != nil {
klog.Error(err, fmt.Sprintf("failed to delete resource %s in devops", key))
return err
}
} }
project.ObjectMeta.Finalizers = sliceutil.RemoveString(project.ObjectMeta.Finalizers, func(item string) bool { project.ObjectMeta.Finalizers = sliceutil.RemoveString(project.ObjectMeta.Finalizers, func(item string) bool {
return item == devopsv1alpha3.DevOpsProjectFinalizerName return item == devopsv1alpha3.DevOpsProjectFinalizerName
...@@ -324,7 +314,7 @@ func (c *Controller) syncHandler(key string) error { ...@@ -324,7 +314,7 @@ func (c *Controller) syncHandler(key string) error {
func (c *Controller) deleteDevOpsProjectInDevOps(project *devopsv1alpha3.DevOpsProject) error { func (c *Controller) deleteDevOpsProjectInDevOps(project *devopsv1alpha3.DevOpsProject) error {
err := c.devopsClient.DeleteDevOpsProject(project.Name) err := c.devopsClient.DeleteDevOpsProject(project.Status.AdminNamespace)
if err != nil { if err != nil {
klog.Errorf("error happened while deleting %s, %v", project.Name, err) klog.Errorf("error happened while deleting %s, %v", project.Name, err)
} }
......
...@@ -385,7 +385,7 @@ func TestDeleteDevOpsProjects(t *testing.T) { ...@@ -385,7 +385,7 @@ func TestDeleteDevOpsProjects(t *testing.T) {
f.devopsProjectLister = append(f.devopsProjectLister, project) f.devopsProjectLister = append(f.devopsProjectLister, project)
f.objects = append(f.objects, project) f.objects = append(f.objects, project)
f.initDevOpsProject = []string{project.Name} f.initDevOpsProject = []string{project.Name}
f.expectDevOpsProject = []string{} f.expectDevOpsProject = []string{project.Name}
expectProject := project.DeepCopy() expectProject := project.DeepCopy()
expectProject.Finalizers = []string{} expectProject.Finalizers = []string{}
f.expectUpdateDevOpsProjectAction(expectProject) f.expectUpdateDevOpsProjectAction(expectProject)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册