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