#173 Add waiting mechanism for the seed job agent
This commit is contained in:
parent
667d263f7d
commit
7df8b32f95
2
Makefile
2
Makefile
|
|
@ -186,7 +186,7 @@ ifeq ($(KUBECTL_CONTEXT),minikube)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@RUNNING_TESTS=1 go test -parallel=1 "./test/e2e/" -tags "$(BUILDTAGS) cgo" -v -timeout 30m -run "$(E2E_TEST_SELECTOR)" \
|
@RUNNING_TESTS=1 go test -parallel=1 "./test/e2e/" -tags "$(BUILDTAGS) cgo" -v -timeout 45m -run "$(E2E_TEST_SELECTOR)" \
|
||||||
-root=$(CURRENT_DIRECTORY) -kubeconfig=$(HOME)/.kube/config -globalMan deploy/crds/jenkins_$(API_VERSION)_jenkins_crd.yaml -namespacedMan deploy/namespace-init.yaml $(EXTRA_ARGS)
|
-root=$(CURRENT_DIRECTORY) -kubeconfig=$(HOME)/.kube/config -globalMan deploy/crds/jenkins_$(API_VERSION)_jenkins_crd.yaml -namespacedMan deploy/namespace-init.yaml $(EXTRA_ARGS)
|
||||||
|
|
||||||
.PHONY: vet
|
.PHONY: vet
|
||||||
|
|
|
||||||
|
|
@ -164,6 +164,14 @@ func (s *SeedJobs) EnsureSeedJobs(jenkins *v1alpha2.Jenkins) (done bool, err err
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
requeue, err := s.waitForSeedJobAgent(AgentName)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
if requeue {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
} else if len(jenkins.Spec.SeedJobs) == 0 {
|
} else if len(jenkins.Spec.SeedJobs) == 0 {
|
||||||
err := s.Client.Delete(context.TODO(), &appsv1.Deployment{
|
err := s.Client.Delete(context.TODO(), &appsv1.Deployment{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
|
|
@ -190,7 +198,7 @@ func (s *SeedJobs) EnsureSeedJobs(jenkins *v1alpha2.Jenkins) (done bool, err err
|
||||||
}
|
}
|
||||||
|
|
||||||
seedJobIDs := s.getAllSeedJobIDs(*jenkins)
|
seedJobIDs := s.getAllSeedJobIDs(*jenkins)
|
||||||
if done && !reflect.DeepEqual(seedJobIDs, jenkins.Status.CreatedSeedJobs) {
|
if !reflect.DeepEqual(seedJobIDs, jenkins.Status.CreatedSeedJobs) {
|
||||||
jenkins.Status.CreatedSeedJobs = seedJobIDs
|
jenkins.Status.CreatedSeedJobs = seedJobIDs
|
||||||
return false, stackerr.WithStack(s.Client.Update(context.TODO(), jenkins))
|
return false, stackerr.WithStack(s.Client.Update(context.TODO(), jenkins))
|
||||||
}
|
}
|
||||||
|
|
@ -198,6 +206,24 @@ func (s *SeedJobs) EnsureSeedJobs(jenkins *v1alpha2.Jenkins) (done bool, err err
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s SeedJobs) waitForSeedJobAgent(agentName string) (requeue bool, err error) {
|
||||||
|
agent := appsv1.Deployment{}
|
||||||
|
err = s.Client.Get(context.TODO(), types.NamespacedName{Name: agentDeploymentName(*s.Jenkins, agentName), Namespace: s.Jenkins.Namespace}, &agent)
|
||||||
|
if apierrors.IsNotFound(err) {
|
||||||
|
return true, nil
|
||||||
|
} else if err != nil {
|
||||||
|
return true, err
|
||||||
|
}
|
||||||
|
|
||||||
|
noReadyReplicas := agent.Status.ReadyReplicas == 0
|
||||||
|
if noReadyReplicas {
|
||||||
|
s.logger.Info(fmt.Sprintf("Waiting for Seed Job Agent `%s`...", agentName))
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
// createJob is responsible for creating jenkins job which configures jenkins seed jobs and deploy keys
|
// createJob is responsible for creating jenkins job which configures jenkins seed jobs and deploy keys
|
||||||
func (s *SeedJobs) createJobs(jenkins *v1alpha2.Jenkins) (requeue bool, err error) {
|
func (s *SeedJobs) createJobs(jenkins *v1alpha2.Jenkins) (requeue bool, err error) {
|
||||||
groovyClient := groovy.New(s.jenkinsClient, s.Client, s.logger, jenkins, "seed-jobs", jenkins.Spec.GroovyScripts.Customization)
|
groovyClient := groovy.New(s.jenkinsClient, s.Client, s.logger, jenkins, "seed-jobs", jenkins.Spec.GroovyScripts.Customization)
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,7 @@ func TestEnsureSeedJobs(t *testing.T) {
|
||||||
Client: fakeClient,
|
Client: fakeClient,
|
||||||
ClientSet: kubernetes.Clientset{},
|
ClientSet: kubernetes.Clientset{},
|
||||||
Notifications: nil,
|
Notifications: nil,
|
||||||
|
Jenkins: jenkins,
|
||||||
}
|
}
|
||||||
|
|
||||||
seedJobCreatingScript, err := seedJobCreatingGroovyScript(jenkins.Spec.SeedJobs[0])
|
seedJobCreatingScript, err := seedJobCreatingGroovyScript(jenkins.Spec.SeedJobs[0])
|
||||||
|
|
@ -135,6 +136,7 @@ func TestEnsureSeedJobs(t *testing.T) {
|
||||||
Client: fakeClient,
|
Client: fakeClient,
|
||||||
ClientSet: kubernetes.Clientset{},
|
ClientSet: kubernetes.Clientset{},
|
||||||
Notifications: nil,
|
Notifications: nil,
|
||||||
|
Jenkins: jenkins,
|
||||||
}
|
}
|
||||||
|
|
||||||
jenkinsClient.EXPECT().GetNode(AgentName).AnyTimes()
|
jenkinsClient.EXPECT().GetNode(AgentName).AnyTimes()
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ import (
|
||||||
func TestConfiguration(t *testing.T) {
|
func TestConfiguration(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
namespace, ctx := setupTest(t)
|
namespace, ctx := setupTest(t)
|
||||||
// Deletes test namespace
|
|
||||||
defer ctx.Cleanup()
|
defer ctx.Cleanup()
|
||||||
|
|
||||||
jenkinsCRName := "e2e"
|
jenkinsCRName := "e2e"
|
||||||
|
|
@ -192,12 +192,12 @@ func createDefaultLimitsForContainersInNamespace(t *testing.T, namespace string)
|
||||||
{
|
{
|
||||||
Type: corev1.LimitTypeContainer,
|
Type: corev1.LimitTypeContainer,
|
||||||
DefaultRequest: map[corev1.ResourceName]resource.Quantity{
|
DefaultRequest: map[corev1.ResourceName]resource.Quantity{
|
||||||
corev1.ResourceCPU: resource.MustParse("1"),
|
corev1.ResourceCPU: resource.MustParse("128m"),
|
||||||
corev1.ResourceMemory: resource.MustParse("1Gi"),
|
corev1.ResourceMemory: resource.MustParse("256Mi"),
|
||||||
},
|
},
|
||||||
Default: map[corev1.ResourceName]resource.Quantity{
|
Default: map[corev1.ResourceName]resource.Quantity{
|
||||||
corev1.ResourceCPU: resource.MustParse("4"),
|
corev1.ResourceCPU: resource.MustParse("256m"),
|
||||||
corev1.ResourceMemory: resource.MustParse("4Gi"),
|
corev1.ResourceMemory: resource.MustParse("512Mi"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue