Skip to content

Commit

Permalink
fix: reconciler scraper (#4174)
Browse files Browse the repository at this point in the history
* fix: reconcile execution with scraper

* fix: add executor client

* fix: change reconciliation interval
  • Loading branch information
vsukhin authored Jul 13, 2023
1 parent bdc478a commit 63ea519
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 5 deletions.
1 change: 1 addition & 0 deletions cmd/api-server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -454,6 +454,7 @@ func main() {
reconcilerClient := reconciler.NewClient(clientset,
resultsRepository,
testResultsRepository,
executorsClient,
log.DefaultLogger,
cfg.TestkubeNamespace)
g.Go(func() error {
Expand Down
47 changes: 42 additions & 5 deletions pkg/reconciler/reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/client-go/kubernetes"

executorv1 "github.com/kubeshop/testkube-operator/apis/executor/v1"
executorsclientv1 "github.com/kubeshop/testkube-operator/client/executors/v1"
"github.com/kubeshop/testkube/pkg/api/v1/testkube"
"github.com/kubeshop/testkube/pkg/executor"
"github.com/kubeshop/testkube/pkg/mapper/tests"
Expand All @@ -29,16 +31,18 @@ type Client struct {
k8sclient kubernetes.Interface
resultRepository result.Repository
testResultRepository testresult.Repository
executorsClient *executorsclientv1.ExecutorsClient
logger *zap.SugaredLogger
namespace string
}

func NewClient(k8sclient kubernetes.Interface, resultRepository result.Repository, testResultRepository testresult.Repository,
logger *zap.SugaredLogger, namespace string) *Client {
executorsClient *executorsclientv1.ExecutorsClient, logger *zap.SugaredLogger, namespace string) *Client {
return &Client{
k8sclient: k8sclient,
resultRepository: resultRepository,
testResultRepository: testResultRepository,
executorsClient: executorsClient,
logger: logger,
namespace: namespace,
}
Expand Down Expand Up @@ -83,21 +87,54 @@ OuterLoop:
case <-ctx.Done():
return ctx.Err()
default:
exec, err := client.executorsClient.GetByType(execution.TestType)
if err != nil {
client.logger.Errorw("error getting executor by test type %w", err)
}

errMessage := errTestkubeAPICrahsed.Error()
pods, err := executor.GetJobPods(ctx, client.k8sclient.CoreV1().Pods(client.namespace), execution.Id, 1, 1)
id := execution.Id
pods, err := executor.GetJobPods(ctx, client.k8sclient.CoreV1().Pods(client.namespace), id, 1, 1)
if err == nil {
InnerLoop:
ExecutorLoop:
for _, pod := range pods.Items {
if pod.Labels["job-name"] == execution.Id {
if pod.Labels["job-name"] == id {
switch pod.Status.Phase {
case corev1.PodFailed:
errMessage = pod.Status.Message
break InnerLoop
break ExecutorLoop
default:
continue OuterLoop
}
}
}
} else if exec != nil && exec.Spec.ExecutorType == executorv1.ExecutorTypeContainer {
supportArtifacts := false
for _, feature := range exec.Spec.Features {
if feature == executorv1.FeatureArtifacts {
supportArtifacts = true
break
}
}

if supportArtifacts && execution.ArtifactRequest != nil && execution.ArtifactRequest.StorageClassName != "" {
id = execution.Id + "-scraper"
pods, err = executor.GetJobPods(ctx, client.k8sclient.CoreV1().Pods(client.namespace), id, 1, 1)
if err == nil {
ScraperLoop:
for _, pod := range pods.Items {
if pod.Labels["job-name"] == id {
switch pod.Status.Phase {
case corev1.PodFailed:
errMessage = pod.Status.Message
break ScraperLoop
default:
continue OuterLoop
}
}
}
}
}
}

execution.ExecutionResult = &testkube.ExecutionResult{
Expand Down

0 comments on commit 63ea519

Please sign in to comment.