mirror of
https://github.com/jenkinsci/kubernetes-operator.git
synced 2026-10-04 23:21:11 +02:00
#173 Add waiting mechanism for the seed job agent
This commit is contained in:
committed by
Tomasz Sęk
parent
667d263f7d
commit
7df8b32f95
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user