#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
|
||||
|
||||
@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)
|
||||
|
||||
.PHONY: vet
|
||||
|
|
|
|||
|
|
@ -164,6 +164,14 @@ func (s *SeedJobs) EnsureSeedJobs(jenkins *v1alpha2.Jenkins) (done bool, err err
|
|||
if err != nil {
|
||||
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 {
|
||||
err := s.Client.Delete(context.TODO(), &appsv1.Deployment{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
|
|
@ -190,7 +198,7 @@ func (s *SeedJobs) EnsureSeedJobs(jenkins *v1alpha2.Jenkins) (done bool, err err
|
|||
}
|
||||
|
||||
seedJobIDs := s.getAllSeedJobIDs(*jenkins)
|
||||
if done && !reflect.DeepEqual(seedJobIDs, jenkins.Status.CreatedSeedJobs) {
|
||||
if !reflect.DeepEqual(seedJobIDs, jenkins.Status.CreatedSeedJobs) {
|
||||
jenkins.Status.CreatedSeedJobs = seedJobIDs
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -92,6 +92,7 @@ func TestEnsureSeedJobs(t *testing.T) {
|
|||
Client: fakeClient,
|
||||
ClientSet: kubernetes.Clientset{},
|
||||
Notifications: nil,
|
||||
Jenkins: jenkins,
|
||||
}
|
||||
|
||||
seedJobCreatingScript, err := seedJobCreatingGroovyScript(jenkins.Spec.SeedJobs[0])
|
||||
|
|
@ -135,6 +136,7 @@ func TestEnsureSeedJobs(t *testing.T) {
|
|||
Client: fakeClient,
|
||||
ClientSet: kubernetes.Clientset{},
|
||||
Notifications: nil,
|
||||
Jenkins: jenkins,
|
||||
}
|
||||
|
||||
jenkinsClient.EXPECT().GetNode(AgentName).AnyTimes()
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import (
|
|||
func TestConfiguration(t *testing.T) {
|
||||
t.Parallel()
|
||||
namespace, ctx := setupTest(t)
|
||||
// Deletes test namespace
|
||||
|
||||
defer ctx.Cleanup()
|
||||
|
||||
jenkinsCRName := "e2e"
|
||||
|
|
@ -192,12 +192,12 @@ func createDefaultLimitsForContainersInNamespace(t *testing.T, namespace string)
|
|||
{
|
||||
Type: corev1.LimitTypeContainer,
|
||||
DefaultRequest: map[corev1.ResourceName]resource.Quantity{
|
||||
corev1.ResourceCPU: resource.MustParse("1"),
|
||||
corev1.ResourceMemory: resource.MustParse("1Gi"),
|
||||
corev1.ResourceCPU: resource.MustParse("128m"),
|
||||
corev1.ResourceMemory: resource.MustParse("256Mi"),
|
||||
},
|
||||
Default: map[corev1.ResourceName]resource.Quantity{
|
||||
corev1.ResourceCPU: resource.MustParse("4"),
|
||||
corev1.ResourceMemory: resource.MustParse("4Gi"),
|
||||
corev1.ResourceCPU: resource.MustParse("256m"),
|
||||
corev1.ResourceMemory: resource.MustParse("512Mi"),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue