#173 Add waiting mechanism for seed job agent (#224)

#173 Add waiting mechanism for the seed job agent
This commit is contained in:
Jakub Al-Khalili
2019-12-17 13:45:31 +01:00
committed by Tomasz Sęk
parent 667d263f7d
commit 7df8b32f95
4 changed files with 35 additions and 7 deletions
@@ -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()