Small improvements
This commit is contained in:
		
							parent
							
								
									44d751eee5
								
							
						
					
					
						commit
						393c3d690c
					
				|  | @ -57,6 +57,7 @@ type Jenkins interface { | |||
| 	Poll() (int, error) | ||||
| 	ExecuteScript(groovyScript string) (logs string, err error) | ||||
| 	GetNodeSecret(name string) (string, error) | ||||
| 	IsNotFoundError(err error) bool | ||||
| } | ||||
| 
 | ||||
| type jenkins struct { | ||||
|  | @ -67,7 +68,7 @@ type jenkins struct { | |||
| func (jenkins *jenkins) CreateOrUpdateJob(config, jobName string) (job *gojenkins.Job, created bool, err error) { | ||||
| 	// create or update
 | ||||
| 	job, err = jenkins.GetJob(jobName) | ||||
| 	if isNotFoundError(err) { | ||||
| 	if jenkins.IsNotFoundError(err) { | ||||
| 		job, err = jenkins.CreateJob(config, jobName) | ||||
| 		created = true | ||||
| 		return job, true, errors.WithStack(err) | ||||
|  | @ -135,7 +136,7 @@ func New(url, user, passwordOrToken string) (Jenkins, error) { | |||
| 	return jenkinsClient, nil | ||||
| } | ||||
| 
 | ||||
| func isNotFoundError(err error) bool { | ||||
| func (jenkins *jenkins) IsNotFoundError(err error) bool { | ||||
| 	if err != nil { | ||||
| 		return err.Error() == errorNotFound.Error() | ||||
| 	} | ||||
|  |  | |||
|  | @ -138,6 +138,20 @@ func (m *MockJenkins) CreateFolder(name string, parents ...string) (*gojenkins.F | |||
| 	return ret0, ret1 | ||||
| } | ||||
| 
 | ||||
| // IsNotFoundError mocks base method
 | ||||
| func (m *MockJenkins) IsNotFoundError(err error) bool { | ||||
| 	m.ctrl.T.Helper() | ||||
| 	ret := m.ctrl.Call(m, "IsNotFoundError", err) | ||||
| 	ret0, _ := ret[0].(bool) | ||||
| 	return ret0 | ||||
| } | ||||
| 
 | ||||
| // IsNotFoundError indicates an expected call of IsNotFoundError
 | ||||
| func (mr *MockJenkinsMockRecorder) IsNotFoundError(err error) *gomock.Call { | ||||
| 	mr.mock.ctrl.T.Helper() | ||||
| 	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "IsNotFoundError", reflect.TypeOf((*MockJenkins)(nil).IsNotFoundError), err) | ||||
| } | ||||
| 
 | ||||
| // CreateFolder indicates an expected call of CreateFolder
 | ||||
| func (mr *MockJenkinsMockRecorder) CreateFolder(name interface{}, parents ...interface{}) *gomock.Call { | ||||
| 	mr.mock.ctrl.T.Helper() | ||||
|  |  | |||
|  | @ -227,11 +227,13 @@ func (s SeedJobs) createAgent(jenkinsClient jenkinsclient.Jenkins, k8sClient cli | |||
| 	_, err := jenkinsClient.GetNode(agentName) | ||||
| 
 | ||||
| 	// Create node if not exists
 | ||||
| 	if err != nil { | ||||
| 	if jenkinsClient.IsNotFoundError(err) { | ||||
| 		_, err = jenkinsClient.CreateNode(agentName, 1, "The jenkins-operator generated agent", "/home/jenkins", agentName) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	} else if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	secret, err := jenkinsClient.GetNodeSecret(agentName) | ||||
|  | @ -242,13 +244,13 @@ func (s SeedJobs) createAgent(jenkinsClient jenkinsclient.Jenkins, k8sClient cli | |||
| 	deployment := agentDeployment(jenkinsManifest, namespace, agentName, secret) | ||||
| 
 | ||||
| 	err = k8sClient.Create(context.TODO(), deployment) | ||||
| 	if err != nil { | ||||
| 	if apierrors.IsAlreadyExists(err) { | ||||
| 		err := k8sClient.Update(context.TODO(), deployment) | ||||
| 		if err != nil && apierrors.IsAlreadyExists(err) { | ||||
| 			return err | ||||
| 		} else if err != nil { | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	} else if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	return nil | ||||
|  | @ -265,7 +267,7 @@ func agentDeployment(jenkinsManifest *v1alpha2.Jenkins, namespace string, agentN | |||
| 				Spec: corev1.PodSpec{ | ||||
| 					Containers: []corev1.Container{ | ||||
| 						{ | ||||
| 							Name:  fmt.Sprintf("%s-container", agentName), | ||||
| 							Name:  "jnlp", | ||||
| 							Image: "jenkins/jnlp-slave:alpine", | ||||
| 							Env: []corev1.EnvVar{ | ||||
| 								{ | ||||
|  |  | |||
|  | @ -48,6 +48,10 @@ func TestEnsureSeedJobs(t *testing.T) { | |||
| 			}, | ||||
| 		} | ||||
| 
 | ||||
| 		jobID := jenkins.Spec.SeedJobs[0].ID | ||||
| 
 | ||||
| 		jenkinsClient.EXPECT().IsNotFoundError(nil).AnyTimes() | ||||
| 		jenkinsClient.EXPECT().GetJob(jobID).AnyTimes() | ||||
| 		jenkinsClient.EXPECT().GetNodeSecret(agentName).Return(secret, nil).AnyTimes() | ||||
| 		jenkinsClient.EXPECT().GetAllNodes().Return([]*gojenkins.Node{}, nil).AnyTimes() | ||||
| 		jenkinsClient.EXPECT().CreateNode(agentName, 1, "The jenkins-operator generated agent", "/home/jenkins", agentName).Return(testNode, nil).AnyTimes() | ||||
|  | @ -59,6 +63,10 @@ func TestEnsureSeedJobs(t *testing.T) { | |||
| 
 | ||||
| 		_, err = seedJobClient.EnsureSeedJobs(jenkins) | ||||
| 		assert.NoError(t, err) | ||||
| 
 | ||||
| 		_, err = jenkinsClient.GetJob(jobID) | ||||
| 
 | ||||
| 		assert.False(t, jenkinsClient.IsNotFoundError(err)) | ||||
| 	}) | ||||
| 
 | ||||
| 	t.Run("delete pod when no seed jobs", func(t *testing.T) { | ||||
|  | @ -78,6 +86,7 @@ func TestEnsureSeedJobs(t *testing.T) { | |||
| 		err := v1alpha2.SchemeBuilder.AddToScheme(scheme.Scheme) | ||||
| 		assert.NoError(t, err) | ||||
| 
 | ||||
| 		jenkinsClient.EXPECT().IsNotFoundError(nil).AnyTimes() | ||||
| 		jenkinsClient.EXPECT().GetNode(agentName).AnyTimes() | ||||
| 		jenkinsClient.EXPECT().GetNodeSecret(agentName).Return(secret, nil).AnyTimes() | ||||
| 		jenkinsClient.EXPECT().GetAllNodes().Return([]*gojenkins.Node{}, nil).AnyTimes() | ||||
|  | @ -85,6 +94,15 @@ func TestEnsureSeedJobs(t *testing.T) { | |||
| 
 | ||||
| 		seedJobsClient := New(jenkinsClient, fakeClient, nil) | ||||
| 
 | ||||
| 		err = fakeClient.Create(ctx, &appsv1.Deployment{ | ||||
| 			ObjectMeta: metav1.ObjectMeta{ | ||||
| 				Name:      fmt.Sprintf("%s-deployment", agentName), | ||||
| 				Namespace: namespace, | ||||
| 			}, | ||||
| 		}) | ||||
| 
 | ||||
| 		assert.NoError(t, err) | ||||
| 
 | ||||
| 		// when
 | ||||
| 		_, err = seedJobsClient.EnsureSeedJobs(jenkinsCustomRes) | ||||
| 		assert.NoError(t, err) | ||||
|  | @ -223,6 +241,7 @@ func TestCreateAgent(t *testing.T) { | |||
| 		err := v1alpha2.SchemeBuilder.AddToScheme(scheme.Scheme) | ||||
| 		assert.NoError(t, err) | ||||
| 
 | ||||
| 		jenkinsClient.EXPECT().IsNotFoundError(nil).AnyTimes() | ||||
| 		jenkinsClient.EXPECT().GetNode(agentName).AnyTimes() | ||||
| 		jenkinsClient.EXPECT().GetNodeSecret(agentName).Return(secret, nil).AnyTimes() | ||||
| 		jenkinsClient.EXPECT().GetAllNodes().Return([]*gojenkins.Node{}, nil).AnyTimes() | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue