Skip to content

Commit

Permalink
fix: delete executions (#287)
Browse files Browse the repository at this point in the history
Signed-off-by: Vladislav Sukhin <[email protected]>
  • Loading branch information
vsukhin committed Aug 2, 2024
1 parent 8eb900e commit cd8385e
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 0 deletions.
6 changes: 6 additions & 0 deletions cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,8 @@ func main() {
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
CronJobClient: cronJobClient,
ServiceName: httpConfig.Fullname,
ServicePort: httpConfig.Port,
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "Test")
os.Exit(1)
Expand All @@ -174,6 +176,8 @@ func main() {
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
CronJobClient: cronJobClient,
ServiceName: httpConfig.Fullname,
ServicePort: httpConfig.Port,
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "TestSuite")
os.Exit(1)
Expand Down Expand Up @@ -229,6 +233,8 @@ func main() {
Client: mgr.GetClient(),
Scheme: mgr.GetScheme(),
CronJobClient: cronJobClient,
ServiceName: httpConfig.Fullname,
ServicePort: httpConfig.Port,
}).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "TestWorkflow")
os.Exit(1)
Expand Down
30 changes: 30 additions & 0 deletions internal/controller/tests/test_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ package tests
import (
"context"
"encoding/json"
"fmt"
"net/http"

"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
Expand All @@ -39,6 +41,8 @@ type TestReconciler struct {
client.Client
Scheme *runtime.Scheme
CronJobClient *cronjob.Client
ServiceName string
ServicePort int
}

//+kubebuilder:rbac:groups=tests.testkube.io,resources=tests,verbs=get;list;watch;create;update;patch;delete
Expand Down Expand Up @@ -66,6 +70,10 @@ func (r *TestReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.
return ctrl.Result{}, err
}

if _, err = r.deleteTest(req.NamespacedName.Name, req.NamespacedName.Namespace); err != nil {
return ctrl.Result{}, err
}

return ctrl.Result{}, nil
}

Expand Down Expand Up @@ -158,3 +166,25 @@ func (r *TestReconciler) SetupWithManager(mgr ctrl.Manager) error {
WithEventFilter(pred).
Complete(r)
}

func (r *TestReconciler) deleteTest(testName, namespace string) (out string, err error) {
request, err := http.NewRequest(http.MethodDelete,
fmt.Sprintf("http://%s.%s.svc.cluster.local:%d/v1/tests/%s?skipDeleteCRD=true",
r.ServiceName, namespace, r.ServicePort, testName), nil)
if err != nil {
return out, err
}

request.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(request)
if err != nil {
return out, err
}
defer resp.Body.Close()

if resp.StatusCode > 300 {
return out, fmt.Errorf("could not DELETE, statusCode: %d", resp.StatusCode)
}

return fmt.Sprintf("status: %d", resp.StatusCode), err
}
30 changes: 30 additions & 0 deletions internal/controller/testsuite/testsuite_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ package testsuite
import (
"context"
"encoding/json"
"fmt"
"net/http"

"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/runtime"
Expand All @@ -38,6 +40,8 @@ type TestSuiteReconciler struct {
client.Client
Scheme *runtime.Scheme
CronJobClient *cronjob.Client
ServiceName string
ServicePort int
}

//+kubebuilder:rbac:groups=tests.testkube.io,resources=testsuites,verbs=get;list;watch;create;update;patch;delete
Expand Down Expand Up @@ -65,6 +69,10 @@ func (r *TestSuiteReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
return ctrl.Result{}, err
}

if _, err = r.deleteTestSuite(req.NamespacedName.Name, req.NamespacedName.Namespace); err != nil {
return ctrl.Result{}, err
}

return ctrl.Result{}, nil
}

Expand Down Expand Up @@ -158,3 +166,25 @@ func (r *TestSuiteReconciler) SetupWithManager(mgr ctrl.Manager) error {
WithEventFilter(pred).
Complete(r)
}

func (r *TestSuiteReconciler) deleteTestSuite(testSuiteName, namespace string) (out string, err error) {
request, err := http.NewRequest(http.MethodDelete,
fmt.Sprintf("http://%s.%s.svc.cluster.local:%d/v1/test-suites/%s?skipDeleteCRD=true",
r.ServiceName, namespace, r.ServicePort, testSuiteName), nil)
if err != nil {
return out, err
}

request.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(request)
if err != nil {
return out, err
}
defer resp.Body.Close()

if resp.StatusCode > 300 {
return out, fmt.Errorf("could not DELETE, statusCode: %d", resp.StatusCode)
}

return fmt.Sprintf("status: %d", resp.StatusCode), err
}
30 changes: 30 additions & 0 deletions internal/controller/testworkflows/testworkflow_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ package testworkflows

import (
"context"
"fmt"
"maps"
"net/http"

testworkflowsv1 "github.com/kubeshop/testkube-operator/api/testworkflows/v1"
"github.com/kubeshop/testkube-operator/pkg/cronjob"
Expand All @@ -37,6 +39,8 @@ type TestWorkflowReconciler struct {
client.Client
Scheme *runtime.Scheme
CronJobClient *cronjob.Client
ServiceName string
ServicePort int
}

//+kubebuilder:rbac:groups=testworkflows.testkube.io,resources=testworkflows,verbs=get;list;watch;create;update;patch;delete
Expand Down Expand Up @@ -64,6 +68,10 @@ func (r *TestWorkflowReconciler) Reconcile(ctx context.Context, req ctrl.Request
return ctrl.Result{}, err
}

if _, err = r.deleteTestWorkflow(req.NamespacedName.Name, req.NamespacedName.Namespace); err != nil {
return ctrl.Result{}, err
}

return ctrl.Result{}, nil
}

Expand Down Expand Up @@ -215,3 +223,25 @@ func (r *TestWorkflowReconciler) SetupWithManager(mgr ctrl.Manager) error {
For(&testworkflowsv1.TestWorkflow{}).
Complete(r)
}

func (r *TestWorkflowReconciler) deleteTestWorkflow(testWorkflowName, namespace string) (out string, err error) {
request, err := http.NewRequest(http.MethodDelete,
fmt.Sprintf("http://%s.%s.svc.cluster.local:%d/v1/test-workflows/%s?skipDeleteCRD=true",
r.ServiceName, namespace, r.ServicePort, testWorkflowName), nil)
if err != nil {
return out, err
}

request.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(request)
if err != nil {
return out, err
}
defer resp.Body.Close()

if resp.StatusCode > 300 {
return out, fmt.Errorf("could not DELETE, statusCode: %d", resp.StatusCode)
}

return fmt.Sprintf("status: %d", resp.StatusCode), err
}

0 comments on commit cd8385e

Please sign in to comment.