Rename virtuslab.com to jenkins.io

This commit is contained in:
Tomasz Sęk 2019-02-12 19:50:22 +01:00
parent 8c1a44bc30
commit da17e1a011
No known key found for this signature in database
GPG Key ID: DC356D23F6A644D0
45 changed files with 269 additions and 269 deletions

View File

@ -159,7 +159,7 @@ ifeq ($(ENVIRONMENT),minikube)
endif endif
@RUNNING_TESTS=1 go test -parallel=1 "./test/e2e/" -tags "$(BUILDTAGS) cgo" -v -timeout 30m \ @RUNNING_TESTS=1 go test -parallel=1 "./test/e2e/" -tags "$(BUILDTAGS) cgo" -v -timeout 30m \
-root=$(CURRENT_DIRECTORY) -kubeconfig=$(HOME)/.kube/config -globalMan deploy/crds/virtuslab_v1alpha1_jenkins_crd.yaml -namespacedMan deploy/namespace-init.yaml $(EXTRA_ARGS) -root=$(CURRENT_DIRECTORY) -kubeconfig=$(HOME)/.kube/config -globalMan deploy/crds/jenkinsio_v1alpha1_jenkins_crd.yaml -namespacedMan deploy/namespace-init.yaml $(EXTRA_ARGS)
.PHONY: vet .PHONY: vet
vet: ## Verifies `go vet` passes vet: ## Verifies `go vet` passes
@ -307,7 +307,7 @@ minikube-run: export OPERATOR_NAME = $(NAME)
minikube-run: start-minikube ## Run the operator locally and use minikube as Kubernetes cluster, you can use EXTRA_ARGS minikube-run: start-minikube ## Run the operator locally and use minikube as Kubernetes cluster, you can use EXTRA_ARGS
@echo "+ $@" @echo "+ $@"
kubectl config use-context minikube kubectl config use-context minikube
kubectl apply -f deploy/crds/virtuslab_v1alpha1_jenkins_crd.yaml kubectl apply -f deploy/crds/jenkinsio_v1alpha1_jenkins_crd.yaml
@echo "Watching '$(WATCH_NAMESPACE)' namespace" @echo "Watching '$(WATCH_NAMESPACE)' namespace"
build/_output/bin/jenkins-operator $(EXTRA_ARGS) build/_output/bin/jenkins-operator $(EXTRA_ARGS)

View File

@ -1,4 +1,4 @@
apiVersion: virtuslab.com/v1alpha1 apiVersion: jenkins.io/v1alpha1
kind: Jenkins kind: Jenkins
metadata: metadata:
name: example name: example

View File

@ -1,9 +1,9 @@
apiVersion: apiextensions.k8s.io/v1beta1 apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
name: jenkins.virtuslab.com name: jenkins.jenkins.io
spec: spec:
group: virtuslab.com group: jenkins.io
names: names:
kind: Jenkins kind: Jenkins
listKind: JenkinsList listKind: JenkinsList

View File

@ -5,7 +5,7 @@ metadata:
name: jenkins-operator name: jenkins-operator
rules: rules:
- apiGroups: - apiGroups:
- virtuslab.com - jenkins.io
resources: resources:
- '*' - '*'
verbs: verbs:

View File

@ -32,7 +32,7 @@ make build && make minikube-run EXTRA_ARGS='--minikube --local'
Once minikube and **jenkins-operator** are up and running, apply Jenkins custom resource: Once minikube and **jenkins-operator** are up and running, apply Jenkins custom resource:
```bash ```bash
kubectl apply -f deploy/crds/virtuslab_v1alpha1_jenkins_cr.yaml kubectl apply -f deploy/crds/jenkinsio_v1alpha1_jenkins_cr.yaml
kubectl get jenkins -o yaml kubectl get jenkins -o yaml
kubectl get po kubectl get po
``` ```
@ -63,7 +63,7 @@ To be able to work with the docker daemon on `minikube` machine run the followin
eval $(minikube docker-env) eval $(minikube docker-env)
``` ```
### When `pkg/apis/virtuslab/v1alpha1/jenkins_types.go` has changed ### When `pkg/apis/jenkinsio/v1alpha1/jenkins_types.go` has changed
Run: Run:

View File

@ -21,7 +21,7 @@ Once jenkins-operator is up and running let's deploy actual Jenkins instance.
Let's use example below: Let's use example below:
```bash ```bash
apiVersion: virtuslab.com/v1alpha1 apiVersion: jenkins.io/v1alpha1
kind: Jenkins kind: Jenkins
metadata: metadata:
name: example name: example
@ -149,7 +149,7 @@ podTemplate(label: label,
Jenkins Seed Jobs are configured using `Jenkins.spec.seedJobs` section from your custom resource manifest: Jenkins Seed Jobs are configured using `Jenkins.spec.seedJobs` section from your custom resource manifest:
``` ```
apiVersion: virtuslab.com/v1alpha1 apiVersion: jenkins.io/v1alpha1
kind: Jenkins kind: Jenkins
metadata: metadata:
name: example name: example
@ -167,7 +167,7 @@ spec:
If your GitHub repository is **private** you have to configure corresponding **privateKey** and Kubernetes Secret: If your GitHub repository is **private** you have to configure corresponding **privateKey** and Kubernetes Secret:
``` ```
apiVersion: virtuslab.com/v1alpha1 apiVersion: jenkins.io/v1alpha1
kind: Jenkins kind: Jenkins
metadata: metadata:
name: example name: example

View File

@ -14,7 +14,7 @@ To run **jenkins-operator**, you will need:
Install Jenkins Custom Resource Definition: Install Jenkins Custom Resource Definition:
```bash ```bash
kubectl apply -f deploy/crds/virtuslab_v1alpha1_jenkins_crd.yaml kubectl apply -f deploy/crds/jenkinsio_v1alpha1_jenkins_crd.yaml
``` ```
## Deploy jenkins-operator ## Deploy jenkins-operator

View File

@ -1,7 +1,7 @@
package apis package apis
import ( import (
"github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
) )
func init() { func init() {

View File

@ -0,0 +1,4 @@
// Package v1alpha1 contains API Schema definitions for the jenkins.io v1alpha1 API group
// +k8s:deepcopy-gen=package,register
// +groupName=jenkins.io
package v1alpha1

View File

@ -1,8 +1,8 @@
// NOTE: Boilerplate only. Ignore this file. // NOTE: Boilerplate only. Ignore this file.
// Package v1alpha1 contains API Schema definitions for the virtuslab v1alpha1 API group // Package v1alpha1 contains API Schema definitions for the jenkins.io v1alpha1 API group
// +k8s:deepcopy-gen=package,register // +k8s:deepcopy-gen=package,register
// +groupName=virtuslab.com // +groupName=jenkins.io
package v1alpha1 package v1alpha1
import ( import (
@ -17,7 +17,7 @@ const (
var ( var (
// SchemeGroupVersion is group version used to register these objects // SchemeGroupVersion is group version used to register these objects
SchemeGroupVersion = schema.GroupVersion{Group: "virtuslab.com", Version: "v1alpha1"} SchemeGroupVersion = schema.GroupVersion{Group: "jenkins.io", Version: "v1alpha1"}
// SchemeBuilder is used to add go types to the GroupVersionKind scheme // SchemeBuilder is used to add go types to the GroupVersionKind scheme
SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion} SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}

View File

@ -1,4 +0,0 @@
// Package v1alpha1 contains API Schema definitions for the virtuslab v1alpha1 API group
// +k8s:deepcopy-gen=package,register
// +groupName=virtuslab.com
package v1alpha1

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"fmt" "fmt"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins"
@ -21,7 +21,7 @@ import (
type AmazonS3Backup struct{} type AmazonS3Backup struct{}
// GetRestoreJobXML returns Jenkins restore backup job config XML // GetRestoreJobXML returns Jenkins restore backup job config XML
func (b *AmazonS3Backup) GetRestoreJobXML(jenkins virtuslabv1alpha1.Jenkins) (string, error) { func (b *AmazonS3Backup) GetRestoreJobXML(jenkins v1alpha1.Jenkins) (string, error) {
return `<?xml version='1.1' encoding='UTF-8'?> return `<?xml version='1.1' encoding='UTF-8'?>
<flow-definition plugin="workflow-job@2.31"> <flow-definition plugin="workflow-job@2.31">
<actions/> <actions/>
@ -106,7 +106,7 @@ node(&apos;master&apos;) {
} }
// GetBackupJobXML returns Jenkins backup job config XML // GetBackupJobXML returns Jenkins backup job config XML
func (b *AmazonS3Backup) GetBackupJobXML(jenkins virtuslabv1alpha1.Jenkins) (string, error) { func (b *AmazonS3Backup) GetBackupJobXML(jenkins v1alpha1.Jenkins) (string, error) {
return `<?xml version='1.1' encoding='UTF-8'?> return `<?xml version='1.1' encoding='UTF-8'?>
<flow-definition plugin="workflow-job@2.31"> <flow-definition plugin="workflow-job@2.31">
<actions/> <actions/>
@ -188,7 +188,7 @@ node(&apos;master&apos;) {
} }
// IsConfigurationValidForBasePhase validates if user provided valid configuration of backup for base phase // IsConfigurationValidForBasePhase validates if user provided valid configuration of backup for base phase
func (b *AmazonS3Backup) IsConfigurationValidForBasePhase(jenkins virtuslabv1alpha1.Jenkins, logger logr.Logger) bool { func (b *AmazonS3Backup) IsConfigurationValidForBasePhase(jenkins v1alpha1.Jenkins, logger logr.Logger) bool {
if len(jenkins.Spec.BackupAmazonS3.BucketName) == 0 { if len(jenkins.Spec.BackupAmazonS3.BucketName) == 0 {
logger.V(log.VWarn).Info("Bucket name not set in 'spec.backupAmazonS3.bucketName'") logger.V(log.VWarn).Info("Bucket name not set in 'spec.backupAmazonS3.bucketName'")
return false return false
@ -208,7 +208,7 @@ func (b *AmazonS3Backup) IsConfigurationValidForBasePhase(jenkins virtuslabv1alp
} }
// IsConfigurationValidForUserPhase validates if user provided valid configuration of backup for user phase // IsConfigurationValidForUserPhase validates if user provided valid configuration of backup for user phase
func (b *AmazonS3Backup) IsConfigurationValidForUserPhase(k8sClient k8s.Client, jenkins virtuslabv1alpha1.Jenkins, logger logr.Logger) (bool, error) { func (b *AmazonS3Backup) IsConfigurationValidForUserPhase(k8sClient k8s.Client, jenkins v1alpha1.Jenkins, logger logr.Logger) (bool, error) {
backupSecretName := resources.GetBackupCredentialsSecretName(&jenkins) backupSecretName := resources.GetBackupCredentialsSecretName(&jenkins)
backupSecret := &corev1.Secret{} backupSecret := &corev1.Secret{}
err := k8sClient.Get(context.TODO(), types.NamespacedName{Namespace: jenkins.Namespace, Name: backupSecretName}, backupSecret) err := k8sClient.Get(context.TODO(), types.NamespacedName{Namespace: jenkins.Namespace, Name: backupSecretName}, backupSecret)

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"testing" "testing"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -17,14 +17,14 @@ import (
func TestAmazonS3Backup_IsConfigurationValidForBasePhase(t *testing.T) { func TestAmazonS3Backup_IsConfigurationValidForBasePhase(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
jenkins virtuslabv1alpha1.Jenkins jenkins v1alpha1.Jenkins
want bool want bool
}{ }{
{ {
name: "happy", name: "happy",
jenkins: virtuslabv1alpha1.Jenkins{ jenkins: v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
BackupAmazonS3: virtuslabv1alpha1.JenkinsBackupAmazonS3{ BackupAmazonS3: v1alpha1.JenkinsBackupAmazonS3{
BucketName: "some-value", BucketName: "some-value",
BucketPath: "some-value", BucketPath: "some-value",
Region: "some-value", Region: "some-value",
@ -35,9 +35,9 @@ func TestAmazonS3Backup_IsConfigurationValidForBasePhase(t *testing.T) {
}, },
{ {
name: "fail, no bucket name", name: "fail, no bucket name",
jenkins: virtuslabv1alpha1.Jenkins{ jenkins: v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
BackupAmazonS3: virtuslabv1alpha1.JenkinsBackupAmazonS3{ BackupAmazonS3: v1alpha1.JenkinsBackupAmazonS3{
BucketName: "", BucketName: "",
BucketPath: "some-value", BucketPath: "some-value",
Region: "some-value", Region: "some-value",
@ -48,9 +48,9 @@ func TestAmazonS3Backup_IsConfigurationValidForBasePhase(t *testing.T) {
}, },
{ {
name: "fail, no bucket path", name: "fail, no bucket path",
jenkins: virtuslabv1alpha1.Jenkins{ jenkins: v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
BackupAmazonS3: virtuslabv1alpha1.JenkinsBackupAmazonS3{ BackupAmazonS3: v1alpha1.JenkinsBackupAmazonS3{
BucketName: "some-value", BucketName: "some-value",
BucketPath: "", BucketPath: "",
Region: "some-value", Region: "some-value",
@ -61,9 +61,9 @@ func TestAmazonS3Backup_IsConfigurationValidForBasePhase(t *testing.T) {
}, },
{ {
name: "fail, no region", name: "fail, no region",
jenkins: virtuslabv1alpha1.Jenkins{ jenkins: v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
BackupAmazonS3: virtuslabv1alpha1.JenkinsBackupAmazonS3{ BackupAmazonS3: v1alpha1.JenkinsBackupAmazonS3{
BucketName: "some-value", BucketName: "some-value",
BucketPath: "some-value", BucketPath: "some-value",
Region: "", Region: "",
@ -85,14 +85,14 @@ func TestAmazonS3Backup_IsConfigurationValidForBasePhase(t *testing.T) {
func TestAmazonS3Backup_IsConfigurationValidForUserPhase(t *testing.T) { func TestAmazonS3Backup_IsConfigurationValidForUserPhase(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
jenkins *virtuslabv1alpha1.Jenkins jenkins *v1alpha1.Jenkins
secret *corev1.Secret secret *corev1.Secret
want bool want bool
wantErr bool wantErr bool
}{ }{
{ {
name: "happy", name: "happy",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"}, ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"},
}, },
secret: &corev1.Secret{ secret: &corev1.Secret{
@ -107,7 +107,7 @@ func TestAmazonS3Backup_IsConfigurationValidForUserPhase(t *testing.T) {
}, },
{ {
name: "fail, no secret", name: "fail, no secret",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"}, ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"},
}, },
want: false, want: false,
@ -115,7 +115,7 @@ func TestAmazonS3Backup_IsConfigurationValidForUserPhase(t *testing.T) {
}, },
{ {
name: "fail, no secret key in secret", name: "fail, no secret key in secret",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"}, ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"},
}, },
secret: &corev1.Secret{ secret: &corev1.Secret{
@ -130,7 +130,7 @@ func TestAmazonS3Backup_IsConfigurationValidForUserPhase(t *testing.T) {
}, },
{ {
name: "fail, no access key in secret", name: "fail, no access key in secret",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"}, ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"},
}, },
secret: &corev1.Secret{ secret: &corev1.Secret{

View File

@ -5,7 +5,7 @@ import (
"fmt" "fmt"
"time" "time"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup/aws" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup/aws"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup/nobackup" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup/nobackup"
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client" jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
@ -26,23 +26,23 @@ const (
// Provider defines API of backup providers // Provider defines API of backup providers
type Provider interface { type Provider interface {
GetRestoreJobXML(jenkins virtuslabv1alpha1.Jenkins) (string, error) GetRestoreJobXML(jenkins v1alpha1.Jenkins) (string, error)
GetBackupJobXML(jenkins virtuslabv1alpha1.Jenkins) (string, error) GetBackupJobXML(jenkins v1alpha1.Jenkins) (string, error)
IsConfigurationValidForBasePhase(jenkins virtuslabv1alpha1.Jenkins, logger logr.Logger) bool IsConfigurationValidForBasePhase(jenkins v1alpha1.Jenkins, logger logr.Logger) bool
IsConfigurationValidForUserPhase(k8sClient k8s.Client, jenkins virtuslabv1alpha1.Jenkins, logger logr.Logger) (bool, error) IsConfigurationValidForUserPhase(k8sClient k8s.Client, jenkins v1alpha1.Jenkins, logger logr.Logger) (bool, error)
GetRequiredPlugins() map[string][]plugins.Plugin GetRequiredPlugins() map[string][]plugins.Plugin
} }
// Backup defines backup manager which is responsible of backup of jobs history // Backup defines backup manager which is responsible of backup of jobs history
type Backup struct { type Backup struct {
jenkins *virtuslabv1alpha1.Jenkins jenkins *v1alpha1.Jenkins
k8sClient k8s.Client k8sClient k8s.Client
logger logr.Logger logger logr.Logger
jenkinsClient jenkinsclient.Jenkins jenkinsClient jenkinsclient.Jenkins
} }
// New returns instance of backup manager // New returns instance of backup manager
func New(jenkins *virtuslabv1alpha1.Jenkins, k8sClient k8s.Client, logger logr.Logger, jenkinsClient jenkinsclient.Jenkins) *Backup { func New(jenkins *v1alpha1.Jenkins, k8sClient k8s.Client, logger logr.Logger, jenkinsClient jenkinsclient.Jenkins) *Backup {
return &Backup{jenkins: jenkins, k8sClient: k8sClient, logger: logger, jenkinsClient: jenkinsClient} return &Backup{jenkins: jenkins, k8sClient: k8sClient, logger: logger, jenkinsClient: jenkinsClient}
} }
@ -127,11 +127,11 @@ func (b *Backup) EnsureBackupJob() error {
} }
// GetBackupProvider returns backup provider by type // GetBackupProvider returns backup provider by type
func GetBackupProvider(backupType virtuslabv1alpha1.JenkinsBackup) (Provider, error) { func GetBackupProvider(backupType v1alpha1.JenkinsBackup) (Provider, error) {
switch backupType { switch backupType {
case virtuslabv1alpha1.JenkinsBackupTypeNoBackup: case v1alpha1.JenkinsBackupTypeNoBackup:
return &nobackup.NoBackup{}, nil return &nobackup.NoBackup{}, nil
case virtuslabv1alpha1.JenkinsBackupTypeAmazonS3: case v1alpha1.JenkinsBackupTypeAmazonS3:
return &aws.AmazonS3Backup{}, nil return &aws.AmazonS3Backup{}, nil
default: default:
return nil, errors.Errorf("Invalid BackupManager type '%s'", backupType) return nil, errors.Errorf("Invalid BackupManager type '%s'", backupType)

View File

@ -1,7 +1,7 @@
package nobackup package nobackup
import ( import (
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins"
"github.com/go-logr/logr" "github.com/go-logr/logr"
@ -27,22 +27,22 @@ var emptyJob = `<?xml version='1.1' encoding='UTF-8'?>
` `
// GetRestoreJobXML returns Jenkins restore backup job config XML // GetRestoreJobXML returns Jenkins restore backup job config XML
func (b *NoBackup) GetRestoreJobXML(jenkins virtuslabv1alpha1.Jenkins) (string, error) { func (b *NoBackup) GetRestoreJobXML(jenkins v1alpha1.Jenkins) (string, error) {
return emptyJob, nil return emptyJob, nil
} }
// GetBackupJobXML returns Jenkins backup job config XML // GetBackupJobXML returns Jenkins backup job config XML
func (b *NoBackup) GetBackupJobXML(jenkins virtuslabv1alpha1.Jenkins) (string, error) { func (b *NoBackup) GetBackupJobXML(jenkins v1alpha1.Jenkins) (string, error) {
return emptyJob, nil return emptyJob, nil
} }
// IsConfigurationValidForBasePhase validates if user provided valid configuration of backup for base phase // IsConfigurationValidForBasePhase validates if user provided valid configuration of backup for base phase
func (b *NoBackup) IsConfigurationValidForBasePhase(jenkins virtuslabv1alpha1.Jenkins, logger logr.Logger) bool { func (b *NoBackup) IsConfigurationValidForBasePhase(jenkins v1alpha1.Jenkins, logger logr.Logger) bool {
return true return true
} }
// IsConfigurationValidForUserPhase validates if user provided valid configuration of backup for user phase // IsConfigurationValidForUserPhase validates if user provided valid configuration of backup for user phase
func (b *NoBackup) IsConfigurationValidForUserPhase(k8sClient k8s.Client, jenkins virtuslabv1alpha1.Jenkins, logger logr.Logger) (bool, error) { func (b *NoBackup) IsConfigurationValidForUserPhase(k8sClient k8s.Client, jenkins v1alpha1.Jenkins, logger logr.Logger) (bool, error) {
return true, nil return true, nil
} }

View File

@ -6,7 +6,7 @@ import (
"reflect" "reflect"
"time" "time"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup"
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client" jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources"
@ -36,13 +36,13 @@ type ReconcileJenkinsBaseConfiguration struct {
k8sClient client.Client k8sClient client.Client
scheme *runtime.Scheme scheme *runtime.Scheme
logger logr.Logger logger logr.Logger
jenkins *virtuslabv1alpha1.Jenkins jenkins *v1alpha1.Jenkins
local, minikube bool local, minikube bool
} }
// New create structure which takes care of base configuration // New create structure which takes care of base configuration
func New(client client.Client, scheme *runtime.Scheme, logger logr.Logger, func New(client client.Client, scheme *runtime.Scheme, logger logr.Logger,
jenkins *virtuslabv1alpha1.Jenkins, local, minikube bool) *ReconcileJenkinsBaseConfiguration { jenkins *v1alpha1.Jenkins, local, minikube bool) *ReconcileJenkinsBaseConfiguration {
return &ReconcileJenkinsBaseConfiguration{ return &ReconcileJenkinsBaseConfiguration{
k8sClient: client, k8sClient: client,
scheme: scheme, scheme: scheme,
@ -305,7 +305,7 @@ func (r *ReconcileJenkinsBaseConfiguration) ensureJenkinsMasterPod(meta metav1.O
if err != nil { if err != nil {
return reconcile.Result{}, err return reconcile.Result{}, err
} }
r.jenkins.Status = virtuslabv1alpha1.JenkinsStatus{} r.jenkins.Status = v1alpha1.JenkinsStatus{}
err = r.updateResource(r.jenkins) err = r.updateResource(r.jenkins)
if err != nil { if err != nil {
return reconcile.Result{}, err return reconcile.Result{}, err

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"testing" "testing"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -17,16 +17,16 @@ import (
func TestReconcileJenkinsBaseConfiguration_ensurePluginsRequiredByAllBackupProviders(t *testing.T) { func TestReconcileJenkinsBaseConfiguration_ensurePluginsRequiredByAllBackupProviders(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
jenkins *virtuslabv1alpha1.Jenkins jenkins *v1alpha1.Jenkins
requiredPlugins map[string][]plugins.Plugin requiredPlugins map[string][]plugins.Plugin
want reconcile.Result want reconcile.Result
wantErr bool wantErr bool
}{ }{
{ {
name: "happy, no required plugins", name: "happy, no required plugins",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Master: virtuslabv1alpha1.JenkinsMaster{ Master: v1alpha1.JenkinsMaster{
Plugins: map[string][]string{ Plugins: map[string][]string{
"first-plugin:0.0.1": {"second-plugin:0.0.1"}, "first-plugin:0.0.1": {"second-plugin:0.0.1"},
}, },
@ -38,9 +38,9 @@ func TestReconcileJenkinsBaseConfiguration_ensurePluginsRequiredByAllBackupProvi
}, },
{ {
name: "happy, required plugins are set", name: "happy, required plugins are set",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Master: virtuslabv1alpha1.JenkinsMaster{ Master: v1alpha1.JenkinsMaster{
Plugins: map[string][]string{ Plugins: map[string][]string{
"first-plugin:0.0.1": {"second-plugin:0.0.1"}, "first-plugin:0.0.1": {"second-plugin:0.0.1"},
}, },
@ -55,9 +55,9 @@ func TestReconcileJenkinsBaseConfiguration_ensurePluginsRequiredByAllBackupProvi
}, },
{ {
name: "happy, jenkins CR must be updated", name: "happy, jenkins CR must be updated",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Master: virtuslabv1alpha1.JenkinsMaster{ Master: v1alpha1.JenkinsMaster{
Plugins: map[string][]string{ Plugins: map[string][]string{
"first-plugin:0.0.1": {"second-plugin:0.0.1"}, "first-plugin:0.0.1": {"second-plugin:0.0.1"},
}, },
@ -73,9 +73,9 @@ func TestReconcileJenkinsBaseConfiguration_ensurePluginsRequiredByAllBackupProvi
}, },
{ {
name: "happy, jenkins CR must be updated", name: "happy, jenkins CR must be updated",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Master: virtuslabv1alpha1.JenkinsMaster{ Master: v1alpha1.JenkinsMaster{
Plugins: map[string][]string{ Plugins: map[string][]string{
"first-plugin:0.0.1": {"second-plugin:0.0.1"}, "first-plugin:0.0.1": {"second-plugin:0.0.1"},
}, },
@ -92,7 +92,7 @@ func TestReconcileJenkinsBaseConfiguration_ensurePluginsRequiredByAllBackupProvi
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
err := virtuslabv1alpha1.SchemeBuilder.AddToScheme(scheme.Scheme) err := v1alpha1.SchemeBuilder.AddToScheme(scheme.Scheme)
assert.NoError(t, err) assert.NoError(t, err)
r := &ReconcileJenkinsBaseConfiguration{ r := &ReconcileJenkinsBaseConfiguration{
k8sClient: fake.NewFakeClient(), k8sClient: fake.NewFakeClient(),

View File

@ -3,7 +3,7 @@ package resources
import ( import (
"fmt" "fmt"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
@ -11,12 +11,12 @@ import (
) )
// GetBackupCredentialsSecretName returns name of Kubernetes secret used to store backup credentials // GetBackupCredentialsSecretName returns name of Kubernetes secret used to store backup credentials
func GetBackupCredentialsSecretName(jenkins *virtuslabv1alpha1.Jenkins) string { func GetBackupCredentialsSecretName(jenkins *v1alpha1.Jenkins) string {
return fmt.Sprintf("%s-backup-credentials-%s", constants.OperatorName, jenkins.Name) return fmt.Sprintf("%s-backup-credentials-%s", constants.OperatorName, jenkins.Name)
} }
// NewBackupCredentialsSecret builds the Kubernetes secret used to store backup credentials // NewBackupCredentialsSecret builds the Kubernetes secret used to store backup credentials
func NewBackupCredentialsSecret(jenkins *virtuslabv1alpha1.Jenkins) *corev1.Secret { func NewBackupCredentialsSecret(jenkins *v1alpha1.Jenkins) *corev1.Secret {
meta := metav1.ObjectMeta{ meta := metav1.ObjectMeta{
Name: GetBackupCredentialsSecretName(jenkins), Name: GetBackupCredentialsSecretName(jenkins),
Namespace: jenkins.ObjectMeta.Namespace, Namespace: jenkins.ObjectMeta.Namespace,

View File

@ -3,7 +3,7 @@ package resources
import ( import (
"fmt" "fmt"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
@ -162,12 +162,12 @@ jenkins.save()
` `
// GetBaseConfigurationConfigMapName returns name of Kubernetes config map used to base configuration // GetBaseConfigurationConfigMapName returns name of Kubernetes config map used to base configuration
func GetBaseConfigurationConfigMapName(jenkins *virtuslabv1alpha1.Jenkins) string { func GetBaseConfigurationConfigMapName(jenkins *v1alpha1.Jenkins) string {
return fmt.Sprintf("%s-base-configuration-%s", constants.OperatorName, jenkins.ObjectMeta.Name) return fmt.Sprintf("%s-base-configuration-%s", constants.OperatorName, jenkins.ObjectMeta.Name)
} }
// NewBaseConfigurationConfigMap builds Kubernetes config map used to base configuration // NewBaseConfigurationConfigMap builds Kubernetes config map used to base configuration
func NewBaseConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *virtuslabv1alpha1.Jenkins) (*corev1.ConfigMap, error) { func NewBaseConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *v1alpha1.Jenkins) (*corev1.ConfigMap, error) {
meta.Name = GetBaseConfigurationConfigMapName(jenkins) meta.Name = GetBaseConfigurationConfigMapName(jenkins)
return &corev1.ConfigMap{ return &corev1.ConfigMap{

View File

@ -5,7 +5,7 @@ import (
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
"text/template" "text/template"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@ -50,12 +50,12 @@ func buildCreateJenkinsOperatorUserGroovyScript() (*string, error) {
} }
// GetInitConfigurationConfigMapName returns name of Kubernetes config map used to init configuration // GetInitConfigurationConfigMapName returns name of Kubernetes config map used to init configuration
func GetInitConfigurationConfigMapName(jenkins *virtuslabv1alpha1.Jenkins) string { func GetInitConfigurationConfigMapName(jenkins *v1alpha1.Jenkins) string {
return fmt.Sprintf("%s-init-configuration-%s", constants.OperatorName, jenkins.ObjectMeta.Name) return fmt.Sprintf("%s-init-configuration-%s", constants.OperatorName, jenkins.ObjectMeta.Name)
} }
// NewInitConfigurationConfigMap builds Kubernetes config map used to init configuration // NewInitConfigurationConfigMap builds Kubernetes config map used to init configuration
func NewInitConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *virtuslabv1alpha1.Jenkins) (*corev1.ConfigMap, error) { func NewInitConfigurationConfigMap(meta metav1.ObjectMeta, jenkins *v1alpha1.Jenkins) (*corev1.ConfigMap, error) {
meta.Name = GetInitConfigurationConfigMapName(jenkins) meta.Name = GetInitConfigurationConfigMapName(jenkins)
createJenkinsOperatorUserGroovy, err := buildCreateJenkinsOperatorUserGroovyScript() createJenkinsOperatorUserGroovy, err := buildCreateJenkinsOperatorUserGroovyScript()

View File

@ -3,14 +3,14 @@ package resources
import ( import (
"fmt" "fmt"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
) )
// NewResourceObjectMeta builds ObjectMeta for all Kubernetes resources created by operator // NewResourceObjectMeta builds ObjectMeta for all Kubernetes resources created by operator
func NewResourceObjectMeta(jenkins *virtuslabv1alpha1.Jenkins) metav1.ObjectMeta { func NewResourceObjectMeta(jenkins *v1alpha1.Jenkins) metav1.ObjectMeta {
return metav1.ObjectMeta{ return metav1.ObjectMeta{
Name: GetResourceName(jenkins), Name: GetResourceName(jenkins),
Namespace: jenkins.ObjectMeta.Namespace, Namespace: jenkins.ObjectMeta.Namespace,
@ -19,7 +19,7 @@ func NewResourceObjectMeta(jenkins *virtuslabv1alpha1.Jenkins) metav1.ObjectMeta
} }
// BuildResourceLabels returns labels for all Kubernetes resources created by operator // BuildResourceLabels returns labels for all Kubernetes resources created by operator
func BuildResourceLabels(jenkins *virtuslabv1alpha1.Jenkins) map[string]string { func BuildResourceLabels(jenkins *v1alpha1.Jenkins) map[string]string {
return map[string]string{ return map[string]string{
constants.LabelAppKey: constants.LabelAppValue, constants.LabelAppKey: constants.LabelAppValue,
constants.LabelJenkinsCRKey: jenkins.Name, constants.LabelJenkinsCRKey: jenkins.Name,
@ -29,7 +29,7 @@ func BuildResourceLabels(jenkins *virtuslabv1alpha1.Jenkins) map[string]string {
// BuildLabelsForWatchedResources returns labels for Kubernetes resources which operator want to watch // BuildLabelsForWatchedResources returns labels for Kubernetes resources which operator want to watch
// resources with that labels should not be deleted after Jenkins CR deletion, to prevent this situation don't set // resources with that labels should not be deleted after Jenkins CR deletion, to prevent this situation don't set
// any owner // any owner
func BuildLabelsForWatchedResources(jenkins *virtuslabv1alpha1.Jenkins) map[string]string { func BuildLabelsForWatchedResources(jenkins *v1alpha1.Jenkins) map[string]string {
return map[string]string{ return map[string]string{
constants.LabelAppKey: constants.LabelAppValue, constants.LabelAppKey: constants.LabelAppValue,
constants.LabelJenkinsCRKey: jenkins.Name, constants.LabelJenkinsCRKey: jenkins.Name,
@ -38,6 +38,6 @@ func BuildLabelsForWatchedResources(jenkins *virtuslabv1alpha1.Jenkins) map[stri
} }
// GetResourceName returns name of Kubernetes resource base on Jenkins CR // GetResourceName returns name of Kubernetes resource base on Jenkins CR
func GetResourceName(jenkins *virtuslabv1alpha1.Jenkins) string { func GetResourceName(jenkins *v1alpha1.Jenkins) string {
return fmt.Sprintf("%s-%s", constants.LabelAppValue, jenkins.ObjectMeta.Name) return fmt.Sprintf("%s-%s", constants.LabelAppValue, jenkins.ObjectMeta.Name)
} }

View File

@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@ -32,13 +32,13 @@ func buildSecretTypeMeta() metav1.TypeMeta {
// GetOperatorCredentialsSecretName returns name of Kubernetes secret used to store jenkins operator credentials // GetOperatorCredentialsSecretName returns name of Kubernetes secret used to store jenkins operator credentials
// to allow calls to Jenkins API // to allow calls to Jenkins API
func GetOperatorCredentialsSecretName(jenkins *virtuslabv1alpha1.Jenkins) string { func GetOperatorCredentialsSecretName(jenkins *v1alpha1.Jenkins) string {
return fmt.Sprintf("%s-credentials-%s", constants.OperatorName, jenkins.Name) return fmt.Sprintf("%s-credentials-%s", constants.OperatorName, jenkins.Name)
} }
// NewOperatorCredentialsSecret builds the Kubernetes secret used to store jenkins operator credentials // NewOperatorCredentialsSecret builds the Kubernetes secret used to store jenkins operator credentials
// to allow calls to Jenkins API // to allow calls to Jenkins API
func NewOperatorCredentialsSecret(meta metav1.ObjectMeta, jenkins *virtuslabv1alpha1.Jenkins) *corev1.Secret { func NewOperatorCredentialsSecret(meta metav1.ObjectMeta, jenkins *v1alpha1.Jenkins) *corev1.Secret {
meta.Name = GetOperatorCredentialsSecretName(jenkins) meta.Name = GetOperatorCredentialsSecretName(jenkins)
return &corev1.Secret{ return &corev1.Secret{
TypeMeta: buildSecretTypeMeta(), TypeMeta: buildSecretTypeMeta(),

View File

@ -2,7 +2,7 @@ package resources
import ( import (
"fmt" "fmt"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@ -58,7 +58,7 @@ func buildPodTypeMeta() metav1.TypeMeta {
} }
// NewJenkinsMasterPod builds Jenkins Master Kubernetes Pod resource // NewJenkinsMasterPod builds Jenkins Master Kubernetes Pod resource
func NewJenkinsMasterPod(objectMeta metav1.ObjectMeta, jenkins *virtuslabv1alpha1.Jenkins) *corev1.Pod { func NewJenkinsMasterPod(objectMeta metav1.ObjectMeta, jenkins *v1alpha1.Jenkins) *corev1.Pod {
initialDelaySeconds := int32(30) initialDelaySeconds := int32(30)
timeoutSeconds := int32(5) timeoutSeconds := int32(5)
failureThreshold := int32(12) failureThreshold := int32(12)

View File

@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"text/template" "text/template"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
@ -358,12 +358,12 @@ func buildInitBashScript(pluginsToInstall map[string][]string) (*string, error)
return &output, nil return &output, nil
} }
func getScriptsConfigMapName(jenkins *virtuslabv1alpha1.Jenkins) string { func getScriptsConfigMapName(jenkins *v1alpha1.Jenkins) string {
return fmt.Sprintf("%s-scripts-%s", constants.OperatorName, jenkins.ObjectMeta.Name) return fmt.Sprintf("%s-scripts-%s", constants.OperatorName, jenkins.ObjectMeta.Name)
} }
// NewScriptsConfigMap builds Kubernetes config map used to store scripts // NewScriptsConfigMap builds Kubernetes config map used to store scripts
func NewScriptsConfigMap(meta metav1.ObjectMeta, jenkins *virtuslabv1alpha1.Jenkins) (*corev1.ConfigMap, error) { func NewScriptsConfigMap(meta metav1.ObjectMeta, jenkins *v1alpha1.Jenkins) (*corev1.ConfigMap, error) {
meta.Name = getScriptsConfigMapName(jenkins) meta.Name = getScriptsConfigMapName(jenkins)
initBashScript, err := buildInitBashScript(jenkins.Spec.Master.Plugins) initBashScript, err := buildInitBashScript(jenkins.Spec.Master.Plugins)

View File

@ -3,7 +3,7 @@ package resources
import ( import (
"fmt" "fmt"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
@ -33,12 +33,12 @@ jenkins.save()
` `
// GetUserConfigurationConfigMapName returns name of Kubernetes config map used to user configuration // GetUserConfigurationConfigMapName returns name of Kubernetes config map used to user configuration
func GetUserConfigurationConfigMapName(jenkins *virtuslabv1alpha1.Jenkins) string { func GetUserConfigurationConfigMapName(jenkins *v1alpha1.Jenkins) string {
return fmt.Sprintf("%s-user-configuration-%s", constants.OperatorName, jenkins.ObjectMeta.Name) return fmt.Sprintf("%s-user-configuration-%s", constants.OperatorName, jenkins.ObjectMeta.Name)
} }
// NewUserConfigurationConfigMap builds Kubernetes config map used to user configuration // NewUserConfigurationConfigMap builds Kubernetes config map used to user configuration
func NewUserConfigurationConfigMap(jenkins *virtuslabv1alpha1.Jenkins) *corev1.ConfigMap { func NewUserConfigurationConfigMap(jenkins *v1alpha1.Jenkins) *corev1.ConfigMap {
meta := metav1.ObjectMeta{ meta := metav1.ObjectMeta{
Name: GetUserConfigurationConfigMapName(jenkins), Name: GetUserConfigurationConfigMapName(jenkins),
Namespace: jenkins.ObjectMeta.Namespace, Namespace: jenkins.ObjectMeta.Namespace,

View File

@ -5,7 +5,7 @@ import (
"fmt" "fmt"
"regexp" "regexp"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins"
@ -22,7 +22,7 @@ var (
) )
// Validate validates Jenkins CR Spec.master section // Validate validates Jenkins CR Spec.master section
func (r *ReconcileJenkinsBaseConfiguration) Validate(jenkins *virtuslabv1alpha1.Jenkins) (bool, error) { func (r *ReconcileJenkinsBaseConfiguration) Validate(jenkins *v1alpha1.Jenkins) (bool, error) {
if jenkins.Spec.Master.Image == "" { if jenkins.Spec.Master.Image == "" {
r.logger.V(log.VWarn).Info("Image not set") r.logger.V(log.VWarn).Info("Image not set")
return false, nil return false, nil
@ -92,7 +92,7 @@ func (r *ReconcileJenkinsBaseConfiguration) verifyBackup() (bool, error) {
} }
valid := false valid := false
for _, backupType := range virtuslabv1alpha1.AllowedJenkinsBackups { for _, backupType := range v1alpha1.AllowedJenkinsBackups {
if r.jenkins.Spec.Backup == backupType { if r.jenkins.Spec.Backup == backupType {
valid = true valid = true
} }
@ -100,11 +100,11 @@ func (r *ReconcileJenkinsBaseConfiguration) verifyBackup() (bool, error) {
if !valid { if !valid {
r.logger.V(log.VWarn).Info(fmt.Sprintf("Invalid backup strategy '%s'", r.jenkins.Spec.Backup)) r.logger.V(log.VWarn).Info(fmt.Sprintf("Invalid backup strategy '%s'", r.jenkins.Spec.Backup))
r.logger.V(log.VWarn).Info(fmt.Sprintf("Allowed backups '%+v'", virtuslabv1alpha1.AllowedJenkinsBackups)) r.logger.V(log.VWarn).Info(fmt.Sprintf("Allowed backups '%+v'", v1alpha1.AllowedJenkinsBackups))
return false, nil return false, nil
} }
if r.jenkins.Spec.Backup == virtuslabv1alpha1.JenkinsBackupTypeNoBackup { if r.jenkins.Spec.Backup == v1alpha1.JenkinsBackupTypeNoBackup {
return true, nil return true, nil
} }

View File

@ -5,7 +5,7 @@ import (
"fmt" "fmt"
"testing" "testing"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
@ -66,17 +66,17 @@ func TestValidatePlugins(t *testing.T) {
func TestReconcileJenkinsBaseConfiguration_verifyBackup(t *testing.T) { func TestReconcileJenkinsBaseConfiguration_verifyBackup(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
jenkins *virtuslabv1alpha1.Jenkins jenkins *v1alpha1.Jenkins
secret *corev1.Secret secret *corev1.Secret
want bool want bool
wantErr bool wantErr bool
}{ }{
{ {
name: "happy, no backup", name: "happy, no backup",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"}, ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"},
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Backup: virtuslabv1alpha1.JenkinsBackupTypeNoBackup, Backup: v1alpha1.JenkinsBackupTypeNoBackup,
}, },
}, },
want: true, want: true,
@ -84,10 +84,10 @@ func TestReconcileJenkinsBaseConfiguration_verifyBackup(t *testing.T) {
}, },
{ {
name: "happy", name: "happy",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"}, ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"},
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Backup: virtuslabv1alpha1.JenkinsBackupTypeAmazonS3, Backup: v1alpha1.JenkinsBackupTypeAmazonS3,
}, },
}, },
secret: &corev1.Secret{ secret: &corev1.Secret{
@ -98,10 +98,10 @@ func TestReconcileJenkinsBaseConfiguration_verifyBackup(t *testing.T) {
}, },
{ {
name: "fail, no secret", name: "fail, no secret",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"}, ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"},
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Backup: virtuslabv1alpha1.JenkinsBackupTypeAmazonS3, Backup: v1alpha1.JenkinsBackupTypeAmazonS3,
}, },
}, },
want: false, want: false,
@ -109,9 +109,9 @@ func TestReconcileJenkinsBaseConfiguration_verifyBackup(t *testing.T) {
}, },
{ {
name: "fail, empty backup type", name: "fail, empty backup type",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"}, ObjectMeta: metav1.ObjectMeta{Namespace: "namespace-name", Name: "jenkins-cr-name"},
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Backup: "", Backup: "",
}, },
}, },

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"time" "time"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup"
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client" jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources"
@ -25,12 +25,12 @@ type ReconcileUserConfiguration struct {
k8sClient k8s.Client k8sClient k8s.Client
jenkinsClient jenkinsclient.Jenkins jenkinsClient jenkinsclient.Jenkins
logger logr.Logger logger logr.Logger
jenkins *virtuslabv1alpha1.Jenkins jenkins *v1alpha1.Jenkins
} }
// New create structure which takes care of user configuration // New create structure which takes care of user configuration
func New(k8sClient k8s.Client, jenkinsClient jenkinsclient.Jenkins, logger logr.Logger, func New(k8sClient k8s.Client, jenkinsClient jenkinsclient.Jenkins, logger logr.Logger,
jenkins *virtuslabv1alpha1.Jenkins) *ReconcileUserConfiguration { jenkins *v1alpha1.Jenkins) *ReconcileUserConfiguration {
return &ReconcileUserConfiguration{ return &ReconcileUserConfiguration{
k8sClient: k8sClient, k8sClient: k8sClient,
jenkinsClient: jenkinsClient, jenkinsClient: jenkinsClient,

View File

@ -6,7 +6,7 @@ import (
"encoding/base64" "encoding/base64"
"fmt" "fmt"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client" jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/jobs" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/jobs"
@ -47,7 +47,7 @@ func New(jenkinsClient jenkinsclient.Jenkins, k8sClient k8s.Client, logger logr.
} }
// EnsureSeedJobs configures seed job and runs it for every entry from Jenkins.Spec.SeedJobs // EnsureSeedJobs configures seed job and runs it for every entry from Jenkins.Spec.SeedJobs
func (s *SeedJobs) EnsureSeedJobs(jenkins *virtuslabv1alpha1.Jenkins) (done bool, err error) { func (s *SeedJobs) EnsureSeedJobs(jenkins *v1alpha1.Jenkins) (done bool, err error) {
err = s.createJob() err = s.createJob()
if err != nil { if err != nil {
s.logger.V(log.VWarn).Info("Couldn't create jenkins seed job") s.logger.V(log.VWarn).Info("Couldn't create jenkins seed job")
@ -74,7 +74,7 @@ func (s *SeedJobs) createJob() error {
} }
// buildJobs is responsible for running jenkins builds which configures jenkins seed jobs and deploy keys // buildJobs is responsible for running jenkins builds which configures jenkins seed jobs and deploy keys
func (s *SeedJobs) buildJobs(jenkins *virtuslabv1alpha1.Jenkins) (done bool, err error) { func (s *SeedJobs) buildJobs(jenkins *v1alpha1.Jenkins) (done bool, err error) {
allDone := true allDone := true
seedJobs := jenkins.Spec.SeedJobs seedJobs := jenkins.Spec.SeedJobs
for _, seedJob := range seedJobs { for _, seedJob := range seedJobs {
@ -113,7 +113,7 @@ func (s *SeedJobs) buildJobs(jenkins *virtuslabv1alpha1.Jenkins) (done bool, err
} }
// privateKeyFromSecret it's utility function which extracts deploy key from the kubernetes secret // privateKeyFromSecret it's utility function which extracts deploy key from the kubernetes secret
func (s *SeedJobs) privateKeyFromSecret(namespace string, seedJob virtuslabv1alpha1.SeedJob) (string, error) { func (s *SeedJobs) privateKeyFromSecret(namespace string, seedJob v1alpha1.SeedJob) (string, error) {
if seedJob.PrivateKey.SecretKeyRef != nil { if seedJob.PrivateKey.SecretKeyRef != nil {
deployKeySecret := &v1.Secret{} deployKeySecret := &v1.Secret{}
namespaceName := types.NamespacedName{Namespace: namespace, Name: seedJob.PrivateKey.SecretKeyRef.Name} namespaceName := types.NamespacedName{Namespace: namespace, Name: seedJob.PrivateKey.SecretKeyRef.Name}

View File

@ -5,7 +5,7 @@ import (
"fmt" "fmt"
"testing" "testing"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
"github.com/bndr/gojenkins" "github.com/bndr/gojenkins"
@ -29,7 +29,7 @@ func TestEnsureSeedJobs(t *testing.T) {
jenkinsClient := client.NewMockJenkins(ctrl) jenkinsClient := client.NewMockJenkins(ctrl)
fakeClient := fake.NewFakeClient() fakeClient := fake.NewFakeClient()
err := virtuslabv1alpha1.SchemeBuilder.AddToScheme(scheme.Scheme) err := v1alpha1.SchemeBuilder.AddToScheme(scheme.Scheme)
assert.NoError(t, err) assert.NoError(t, err)
jenkins := jenkinsCustomResource() jenkins := jenkinsCustomResource()
@ -76,7 +76,7 @@ func TestEnsureSeedJobs(t *testing.T) {
GetBuild(ConfigureSeedJobsName, gomock.Any()). GetBuild(ConfigureSeedJobsName, gomock.Any()).
Return(&gojenkins.Build{ Return(&gojenkins.Build{
Raw: &gojenkins.BuildResponse{ Raw: &gojenkins.BuildResponse{
Result: string(virtuslabv1alpha1.BuildSuccessStatus), Result: string(v1alpha1.BuildSuccessStatus),
}, },
}, nil) }, nil)
} }
@ -99,26 +99,26 @@ func TestEnsureSeedJobs(t *testing.T) {
// first run - should create job and schedule build // first run - should create job and schedule build
if reconcileAttempt == 1 { if reconcileAttempt == 1 {
assert.False(t, done) assert.False(t, done)
assert.Equal(t, string(virtuslabv1alpha1.BuildRunningStatus), string(build.Status)) assert.Equal(t, string(v1alpha1.BuildRunningStatus), string(build.Status))
} }
// second run - should update and finish job // second run - should update and finish job
if reconcileAttempt == 2 { if reconcileAttempt == 2 {
assert.True(t, done) assert.True(t, done)
assert.Equal(t, string(virtuslabv1alpha1.BuildSuccessStatus), string(build.Status)) assert.Equal(t, string(v1alpha1.BuildSuccessStatus), string(build.Status))
} }
} }
} }
func jenkinsCustomResource() *virtuslabv1alpha1.Jenkins { func jenkinsCustomResource() *v1alpha1.Jenkins {
return &virtuslabv1alpha1.Jenkins{ return &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "jenkins", Name: "jenkins",
Namespace: "default", Namespace: "default",
}, },
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Master: virtuslabv1alpha1.JenkinsMaster{ Master: v1alpha1.JenkinsMaster{
Image: "jenkins/jenkins", Image: "jenkins/jenkins",
Annotations: map[string]string{"test": "label"}, Annotations: map[string]string{"test": "label"},
Resources: corev1.ResourceRequirements{ Resources: corev1.ResourceRequirements{
@ -132,13 +132,13 @@ func jenkinsCustomResource() *virtuslabv1alpha1.Jenkins {
}, },
}, },
}, },
SeedJobs: []virtuslabv1alpha1.SeedJob{ SeedJobs: []v1alpha1.SeedJob{
{ {
ID: "jenkins-operator-e2e", ID: "jenkins-operator-e2e",
Targets: "cicd/jobs/*.jenkins", Targets: "cicd/jobs/*.jenkins",
Description: "Jenkins Operator e2e tests repository", Description: "Jenkins Operator e2e tests repository",
RepositoryBranch: "master", RepositoryBranch: "master",
RepositoryURL: "https://github.com/VirtusLab/jenkins-operator-e2e.git", RepositoryURL: "https://github.com/jenkinsci/kubernetes-operator.git",
}, },
}, },
}, },

View File

@ -8,7 +8,7 @@ import (
"fmt" "fmt"
"strings" "strings"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/backup"
"github.com/jenkinsci/kubernetes-operator/pkg/log" "github.com/jenkinsci/kubernetes-operator/pkg/log"
@ -18,7 +18,7 @@ import (
) )
// Validate validates Jenkins CR Spec section // Validate validates Jenkins CR Spec section
func (r *ReconcileUserConfiguration) Validate(jenkins *virtuslabv1alpha1.Jenkins) (bool, error) { func (r *ReconcileUserConfiguration) Validate(jenkins *v1alpha1.Jenkins) (bool, error) {
valid, err := r.validateSeedJobs(jenkins) valid, err := r.validateSeedJobs(jenkins)
if !valid || err != nil { if !valid || err != nil {
return valid, err return valid, err
@ -32,7 +32,7 @@ func (r *ReconcileUserConfiguration) Validate(jenkins *virtuslabv1alpha1.Jenkins
return backupProvider.IsConfigurationValidForUserPhase(r.k8sClient, *r.jenkins, r.logger) return backupProvider.IsConfigurationValidForUserPhase(r.k8sClient, *r.jenkins, r.logger)
} }
func (r *ReconcileUserConfiguration) validateSeedJobs(jenkins *virtuslabv1alpha1.Jenkins) (bool, error) { func (r *ReconcileUserConfiguration) validateSeedJobs(jenkins *v1alpha1.Jenkins) (bool, error) {
valid := true valid := true
if jenkins.Spec.SeedJobs != nil { if jenkins.Spec.SeedJobs != nil {
for _, seedJob := range jenkins.Spec.SeedJobs { for _, seedJob := range jenkins.Spec.SeedJobs {

View File

@ -5,7 +5,7 @@ import (
"fmt" "fmt"
"testing" "testing"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
@ -52,21 +52,21 @@ SwiLd8TWAvXkxdXm8fDOGAZbYK2alMV+M+9E2OpZsBUCxmb/3FAofF6JccKoJOH8
func TestValidateSeedJobs(t *testing.T) { func TestValidateSeedJobs(t *testing.T) {
data := []struct { data := []struct {
description string description string
jenkins *virtuslabv1alpha1.Jenkins jenkins *v1alpha1.Jenkins
secret *corev1.Secret secret *corev1.Secret
expectedResult bool expectedResult bool
}{ }{
{ {
description: "Valid with public repository and without private key", description: "Valid with public repository and without private key",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
SeedJobs: []virtuslabv1alpha1.SeedJob{ SeedJobs: []v1alpha1.SeedJob{
{ {
ID: "jenkins-operator-e2e", ID: "jenkins-operator-e2e",
Targets: "cicd/jobs/*.jenkins", Targets: "cicd/jobs/*.jenkins",
Description: "Jenkins Operator e2e tests repository", Description: "Jenkins Operator e2e tests repository",
RepositoryBranch: "master", RepositoryBranch: "master",
RepositoryURL: "https://github.com/VirtusLab/jenkins-operator-e2e.git", RepositoryURL: "https://github.com/jenkinsci/kubernetes-operator.git",
}, },
}, },
}, },
@ -75,14 +75,14 @@ func TestValidateSeedJobs(t *testing.T) {
}, },
{ {
description: "Invalid without id", description: "Invalid without id",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
SeedJobs: []virtuslabv1alpha1.SeedJob{ SeedJobs: []v1alpha1.SeedJob{
{ {
Targets: "cicd/jobs/*.jenkins", Targets: "cicd/jobs/*.jenkins",
Description: "Jenkins Operator e2e tests repository", Description: "Jenkins Operator e2e tests repository",
RepositoryBranch: "master", RepositoryBranch: "master",
RepositoryURL: "https://github.com/VirtusLab/jenkins-operator-e2e.git", RepositoryURL: "https://github.com/jenkinsci/kubernetes-operator.git",
}, },
}, },
}, },
@ -91,16 +91,16 @@ func TestValidateSeedJobs(t *testing.T) {
}, },
{ {
description: "Valid with private key and secret", description: "Valid with private key and secret",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
SeedJobs: []virtuslabv1alpha1.SeedJob{ SeedJobs: []v1alpha1.SeedJob{
{ {
ID: "jenkins-operator-e2e", ID: "jenkins-operator-e2e",
Targets: "cicd/jobs/*.jenkins", Targets: "cicd/jobs/*.jenkins",
Description: "Jenkins Operator e2e tests repository", Description: "Jenkins Operator e2e tests repository",
RepositoryBranch: "master", RepositoryBranch: "master",
RepositoryURL: "https://github.com/VirtusLab/jenkins-operator-e2e.git", RepositoryURL: "https://github.com/jenkinsci/kubernetes-operator.git",
PrivateKey: virtuslabv1alpha1.PrivateKey{ PrivateKey: v1alpha1.PrivateKey{
SecretKeyRef: &corev1.SecretKeySelector{ SecretKeyRef: &corev1.SecretKeySelector{
LocalObjectReference: corev1.LocalObjectReference{ LocalObjectReference: corev1.LocalObjectReference{
Name: "deploy-keys", Name: "deploy-keys",
@ -129,16 +129,16 @@ func TestValidateSeedJobs(t *testing.T) {
}, },
{ {
description: "Invalid private key in secret", description: "Invalid private key in secret",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
SeedJobs: []virtuslabv1alpha1.SeedJob{ SeedJobs: []v1alpha1.SeedJob{
{ {
ID: "jenkins-operator-e2e", ID: "jenkins-operator-e2e",
Targets: "cicd/jobs/*.jenkins", Targets: "cicd/jobs/*.jenkins",
Description: "Jenkins Operator e2e tests repository", Description: "Jenkins Operator e2e tests repository",
RepositoryBranch: "master", RepositoryBranch: "master",
RepositoryURL: "https://github.com/VirtusLab/jenkins-operator-e2e.git", RepositoryURL: "https://github.com/jenkinsci/kubernetes-operator.git",
PrivateKey: virtuslabv1alpha1.PrivateKey{ PrivateKey: v1alpha1.PrivateKey{
SecretKeyRef: &corev1.SecretKeySelector{ SecretKeyRef: &corev1.SecretKeySelector{
LocalObjectReference: corev1.LocalObjectReference{ LocalObjectReference: corev1.LocalObjectReference{
Name: "deploy-keys", Name: "deploy-keys",
@ -167,16 +167,16 @@ func TestValidateSeedJobs(t *testing.T) {
}, },
{ {
description: "Invalid with PrivateKey and empty Secret data", description: "Invalid with PrivateKey and empty Secret data",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
SeedJobs: []virtuslabv1alpha1.SeedJob{ SeedJobs: []v1alpha1.SeedJob{
{ {
ID: "jenkins-operator-e2e", ID: "jenkins-operator-e2e",
Targets: "cicd/jobs/*.jenkins", Targets: "cicd/jobs/*.jenkins",
Description: "Jenkins Operator e2e tests repository", Description: "Jenkins Operator e2e tests repository",
RepositoryBranch: "master", RepositoryBranch: "master",
RepositoryURL: "https://github.com/VirtusLab/jenkins-operator-e2e.git", RepositoryURL: "https://github.com/jenkinsci/kubernetes-operator.git",
PrivateKey: virtuslabv1alpha1.PrivateKey{ PrivateKey: v1alpha1.PrivateKey{
SecretKeyRef: &corev1.SecretKeySelector{ SecretKeyRef: &corev1.SecretKeySelector{
LocalObjectReference: corev1.LocalObjectReference{ LocalObjectReference: corev1.LocalObjectReference{
Name: "deploy-keys", Name: "deploy-keys",
@ -205,15 +205,15 @@ func TestValidateSeedJobs(t *testing.T) {
}, },
{ {
description: "Invalid with ssh RepositoryURL and empty PrivateKey", description: "Invalid with ssh RepositoryURL and empty PrivateKey",
jenkins: &virtuslabv1alpha1.Jenkins{ jenkins: &v1alpha1.Jenkins{
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
SeedJobs: []virtuslabv1alpha1.SeedJob{ SeedJobs: []v1alpha1.SeedJob{
{ {
ID: "jenkins-operator-e2e", ID: "jenkins-operator-e2e",
Targets: "cicd/jobs/*.jenkins", Targets: "cicd/jobs/*.jenkins",
Description: "Jenkins Operator e2e tests repository", Description: "Jenkins Operator e2e tests repository",
RepositoryBranch: "master", RepositoryBranch: "master",
RepositoryURL: "git@github.com:VirtusLab/jenkins-operator.git", RepositoryURL: "git@github.com:jenkinsci/kubernetes-operator.git",
}, },
}, },
}, },

View File

@ -6,7 +6,7 @@ import (
"fmt" "fmt"
"sort" "sort"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client" jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/jobs" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/jobs"
@ -51,7 +51,7 @@ func (g *Groovy) ConfigureGroovyJob() error {
} }
// EnsureGroovyJob executes groovy script and verifies jenkins job status according to reconciliation loop lifecycle // EnsureGroovyJob executes groovy script and verifies jenkins job status according to reconciliation loop lifecycle
func (g *Groovy) EnsureGroovyJob(secretOrConfigMapData map[string]string, jenkins *virtuslabv1alpha1.Jenkins) (bool, error) { func (g *Groovy) EnsureGroovyJob(secretOrConfigMapData map[string]string, jenkins *v1alpha1.Jenkins) (bool, error) {
jobsClient := jobs.New(g.jenkinsClient, g.k8sClient, g.logger) jobsClient := jobs.New(g.jenkinsClient, g.k8sClient, g.logger)
hash := g.calculateHash(secretOrConfigMapData) hash := g.calculateHash(secretOrConfigMapData)

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"fmt" "fmt"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/user" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/user"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
@ -61,7 +61,7 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
} }
// Watch for changes to primary resource Jenkins // Watch for changes to primary resource Jenkins
err = c.Watch(&source.Kind{Type: &virtuslabv1alpha1.Jenkins{}}, &handler.EnqueueRequestForObject{}) err = c.Watch(&source.Kind{Type: &v1alpha1.Jenkins{}}, &handler.EnqueueRequestForObject{})
if err != nil { if err != nil {
return err return err
} }
@ -69,7 +69,7 @@ func add(mgr manager.Manager, r reconcile.Reconciler) error {
// Watch for changes to secondary resource Pods and requeue the owner Jenkins // Watch for changes to secondary resource Pods and requeue the owner Jenkins
err = c.Watch(&source.Kind{Type: &corev1.Pod{}}, &handler.EnqueueRequestForOwner{ err = c.Watch(&source.Kind{Type: &corev1.Pod{}}, &handler.EnqueueRequestForOwner{
IsController: true, IsController: true,
OwnerType: &virtuslabv1alpha1.Jenkins{}, OwnerType: &v1alpha1.Jenkins{},
}) })
if err != nil { if err != nil {
return err return err
@ -117,7 +117,7 @@ func (r *ReconcileJenkins) Reconcile(request reconcile.Request) (reconcile.Resul
func (r *ReconcileJenkins) reconcile(request reconcile.Request, logger logr.Logger) (reconcile.Result, error) { func (r *ReconcileJenkins) reconcile(request reconcile.Request, logger logr.Logger) (reconcile.Result, error) {
// Fetch the Jenkins instance // Fetch the Jenkins instance
jenkins := &virtuslabv1alpha1.Jenkins{} jenkins := &v1alpha1.Jenkins{}
err := r.client.Get(context.TODO(), request.NamespacedName, jenkins) err := r.client.Get(context.TODO(), request.NamespacedName, jenkins)
if err != nil { if err != nil {
if apierrors.IsNotFound(err) { if apierrors.IsNotFound(err) {
@ -205,7 +205,7 @@ func (r *ReconcileJenkins) buildLogger(jenkinsName string) logr.Logger {
return log.Log.WithValues("cr", jenkinsName) return log.Log.WithValues("cr", jenkinsName)
} }
func (r *ReconcileJenkins) setDefaults(jenkins *virtuslabv1alpha1.Jenkins, logger logr.Logger) error { func (r *ReconcileJenkins) setDefaults(jenkins *v1alpha1.Jenkins, logger logr.Logger) error {
changed := false changed := false
if len(jenkins.Spec.Master.Image) == 0 { if len(jenkins.Spec.Master.Image) == 0 {
logger.Info("Setting default Jenkins master image: " + constants.DefaultJenkinsMasterImage) logger.Info("Setting default Jenkins master image: " + constants.DefaultJenkinsMasterImage)
@ -213,10 +213,10 @@ func (r *ReconcileJenkins) setDefaults(jenkins *virtuslabv1alpha1.Jenkins, logge
jenkins.Spec.Master.Image = constants.DefaultJenkinsMasterImage jenkins.Spec.Master.Image = constants.DefaultJenkinsMasterImage
} }
if len(jenkins.Spec.Backup) == 0 { if len(jenkins.Spec.Backup) == 0 {
logger.Info("Setting default backup strategy: " + virtuslabv1alpha1.JenkinsBackupTypeNoBackup) logger.Info("Setting default backup strategy: " + v1alpha1.JenkinsBackupTypeNoBackup)
logger.V(log.VWarn).Info("Backup is disable !!! Please configure backup in '.spec.backup'") logger.V(log.VWarn).Info("Backup is disable !!! Please configure backup in '.spec.backup'")
changed = true changed = true
jenkins.Spec.Backup = virtuslabv1alpha1.JenkinsBackupTypeNoBackup jenkins.Spec.Backup = v1alpha1.JenkinsBackupTypeNoBackup
} }
if len(jenkins.Spec.Master.Plugins) == 0 { if len(jenkins.Spec.Master.Plugins) == 0 {
logger.Info("Setting default base plugins") logger.Info("Setting default base plugins")

View File

@ -6,7 +6,7 @@ import (
"fmt" "fmt"
"strings" "strings"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
"github.com/jenkinsci/kubernetes-operator/pkg/log" "github.com/jenkinsci/kubernetes-operator/pkg/log"
@ -51,7 +51,7 @@ func New(jenkinsClient client.Jenkins, k8sClient k8s.Client, logger logr.Logger)
// entire state is saved in Jenkins.Status.Builds section // entire state is saved in Jenkins.Status.Builds section
// function return 'true' when build finished successfully or false when reconciliation loop should requeue this function // function return 'true' when build finished successfully or false when reconciliation loop should requeue this function
// preserveStatus determines that build won't be removed from Jenkins.Status.Builds section // preserveStatus determines that build won't be removed from Jenkins.Status.Builds section
func (jobs *Jobs) EnsureBuildJob(jobName, hash string, parameters map[string]string, jenkins *virtuslabv1alpha1.Jenkins, preserveStatus bool) (done bool, err error) { func (jobs *Jobs) EnsureBuildJob(jobName, hash string, parameters map[string]string, jenkins *v1alpha1.Jenkins, preserveStatus bool) (done bool, err error) {
jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Ensuring build, name:'%s' hash:'%s'", jobName, hash)) jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Ensuring build, name:'%s' hash:'%s'", jobName, hash))
build, err := jobs.getBuildFromStatus(jobName, hash, jenkins) build, err := jobs.getBuildFromStatus(jobName, hash, jenkins)
@ -62,13 +62,13 @@ func (jobs *Jobs) EnsureBuildJob(jobName, hash string, parameters map[string]str
if build != nil { if build != nil {
jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Build exists in status, %+v", build)) jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Build exists in status, %+v", build))
switch build.Status { switch build.Status {
case virtuslabv1alpha1.BuildSuccessStatus: case v1alpha1.BuildSuccessStatus:
return jobs.ensureSuccessBuild(*build, jenkins, preserveStatus) return jobs.ensureSuccessBuild(*build, jenkins, preserveStatus)
case virtuslabv1alpha1.BuildRunningStatus: case v1alpha1.BuildRunningStatus:
return jobs.ensureRunningBuild(*build, jenkins, preserveStatus) return jobs.ensureRunningBuild(*build, jenkins, preserveStatus)
case virtuslabv1alpha1.BuildUnstableStatus, virtuslabv1alpha1.BuildNotBuildStatus, virtuslabv1alpha1.BuildFailureStatus, virtuslabv1alpha1.BuildAbortedStatus: case v1alpha1.BuildUnstableStatus, v1alpha1.BuildNotBuildStatus, v1alpha1.BuildFailureStatus, v1alpha1.BuildAbortedStatus:
return jobs.ensureFailedBuild(*build, jenkins, parameters, preserveStatus) return jobs.ensureFailedBuild(*build, jenkins, parameters, preserveStatus)
case virtuslabv1alpha1.BuildExpiredStatus: case v1alpha1.BuildExpiredStatus:
return jobs.ensureExpiredBuild(*build, jenkins, preserveStatus) return jobs.ensureExpiredBuild(*build, jenkins, preserveStatus)
default: default:
jobs.logger.V(log.VWarn).Info(fmt.Sprintf("Unexpected build status, %+v", build)) jobs.logger.V(log.VWarn).Info(fmt.Sprintf("Unexpected build status, %+v", build))
@ -78,7 +78,7 @@ func (jobs *Jobs) EnsureBuildJob(jobName, hash string, parameters map[string]str
// build is run first time - build job and update status // build is run first time - build job and update status
created := metav1.Now() created := metav1.Now()
newBuild := virtuslabv1alpha1.Build{ newBuild := v1alpha1.Build{
JobName: jobName, JobName: jobName,
Hash: hash, Hash: hash,
CreateTime: &created, CreateTime: &created,
@ -86,7 +86,7 @@ func (jobs *Jobs) EnsureBuildJob(jobName, hash string, parameters map[string]str
return jobs.buildJob(newBuild, parameters, jenkins) return jobs.buildJob(newBuild, parameters, jenkins)
} }
func (jobs *Jobs) getBuildFromStatus(jobName string, hash string, jenkins *virtuslabv1alpha1.Jenkins) (*virtuslabv1alpha1.Build, error) { func (jobs *Jobs) getBuildFromStatus(jobName string, hash string, jenkins *v1alpha1.Jenkins) (*v1alpha1.Build, error) {
if jenkins != nil { if jenkins != nil {
builds := jenkins.Status.Builds builds := jenkins.Status.Builds
for _, build := range builds { for _, build := range builds {
@ -98,7 +98,7 @@ func (jobs *Jobs) getBuildFromStatus(jobName string, hash string, jenkins *virtu
return nil, nil return nil, nil
} }
func (jobs *Jobs) ensureSuccessBuild(build virtuslabv1alpha1.Build, jenkins *virtuslabv1alpha1.Jenkins, preserveStatus bool) (bool, error) { func (jobs *Jobs) ensureSuccessBuild(build v1alpha1.Build, jenkins *v1alpha1.Jenkins, preserveStatus bool) (bool, error) {
jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Ensuring success build, %+v", build)) jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Ensuring success build, %+v", build))
if !preserveStatus { if !preserveStatus {
@ -112,7 +112,7 @@ func (jobs *Jobs) ensureSuccessBuild(build virtuslabv1alpha1.Build, jenkins *vir
return true, nil return true, nil
} }
func (jobs *Jobs) ensureRunningBuild(build virtuslabv1alpha1.Build, jenkins *virtuslabv1alpha1.Jenkins, preserveStatus bool) (bool, error) { func (jobs *Jobs) ensureRunningBuild(build v1alpha1.Build, jenkins *v1alpha1.Jenkins, preserveStatus bool) (bool, error) {
jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Ensuring running build, %+v", build)) jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Ensuring running build, %+v", build))
// FIXME (antoniaklja) implement build expiration // FIXME (antoniaklja) implement build expiration
@ -126,7 +126,7 @@ func (jobs *Jobs) ensureRunningBuild(build virtuslabv1alpha1.Build, jenkins *vir
} }
if jenkinsBuild.GetResult() != "" { if jenkinsBuild.GetResult() != "" {
build.Status = virtuslabv1alpha1.BuildStatus(strings.ToLower(jenkinsBuild.GetResult())) build.Status = v1alpha1.BuildStatus(strings.ToLower(jenkinsBuild.GetResult()))
} }
err = jobs.updateBuildStatus(build, jenkins) err = jobs.updateBuildStatus(build, jenkins)
@ -135,13 +135,13 @@ func (jobs *Jobs) ensureRunningBuild(build virtuslabv1alpha1.Build, jenkins *vir
return false, err return false, err
} }
if build.Status == virtuslabv1alpha1.BuildSuccessStatus { if build.Status == v1alpha1.BuildSuccessStatus {
jobs.logger.Info(fmt.Sprintf("Build finished successfully, %+v", build)) jobs.logger.Info(fmt.Sprintf("Build finished successfully, %+v", build))
return true, nil return true, nil
} }
if build.Status == virtuslabv1alpha1.BuildFailureStatus || build.Status == virtuslabv1alpha1.BuildUnstableStatus || if build.Status == v1alpha1.BuildFailureStatus || build.Status == v1alpha1.BuildUnstableStatus ||
build.Status == virtuslabv1alpha1.BuildNotBuildStatus || build.Status == virtuslabv1alpha1.BuildAbortedStatus { build.Status == v1alpha1.BuildNotBuildStatus || build.Status == v1alpha1.BuildAbortedStatus {
jobs.logger.V(log.VWarn).Info(fmt.Sprintf("Build failed, %+v", build)) jobs.logger.V(log.VWarn).Info(fmt.Sprintf("Build failed, %+v", build))
return false, ErrorBuildFailed return false, ErrorBuildFailed
} }
@ -149,7 +149,7 @@ func (jobs *Jobs) ensureRunningBuild(build virtuslabv1alpha1.Build, jenkins *vir
return false, nil return false, nil
} }
func (jobs *Jobs) ensureFailedBuild(build virtuslabv1alpha1.Build, jenkins *virtuslabv1alpha1.Jenkins, parameters map[string]string, preserveStatus bool) (bool, error) { func (jobs *Jobs) ensureFailedBuild(build v1alpha1.Build, jenkins *v1alpha1.Jenkins, parameters map[string]string, preserveStatus bool) (bool, error) {
jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Ensuring failed build, %+v", build)) jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Ensuring failed build, %+v", build))
if build.Retires < BuildRetires { if build.Retires < BuildRetires {
@ -176,7 +176,7 @@ func (jobs *Jobs) ensureFailedBuild(build virtuslabv1alpha1.Build, jenkins *virt
return false, ErrorUnrecoverableBuildFailed return false, ErrorUnrecoverableBuildFailed
} }
func (jobs *Jobs) ensureExpiredBuild(build virtuslabv1alpha1.Build, jenkins *virtuslabv1alpha1.Jenkins, preserveStatus bool) (bool, error) { func (jobs *Jobs) ensureExpiredBuild(build v1alpha1.Build, jenkins *v1alpha1.Jenkins, preserveStatus bool) (bool, error) {
jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Ensuring expired build, %+v", build)) jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Ensuring expired build, %+v", build))
jenkinsBuild, err := jobs.jenkinsClient.GetBuild(build.JobName, build.Number) jenkinsBuild, err := jobs.jenkinsClient.GetBuild(build.JobName, build.Number)
@ -194,7 +194,7 @@ func (jobs *Jobs) ensureExpiredBuild(build virtuslabv1alpha1.Build, jenkins *vir
return false, err return false, err
} }
if virtuslabv1alpha1.BuildStatus(jenkinsBuild.GetResult()) != virtuslabv1alpha1.BuildAbortedStatus { if v1alpha1.BuildStatus(jenkinsBuild.GetResult()) != v1alpha1.BuildAbortedStatus {
return false, ErrorAbortBuildFailed return false, ErrorAbortBuildFailed
} }
@ -217,8 +217,8 @@ func (jobs *Jobs) ensureExpiredBuild(build virtuslabv1alpha1.Build, jenkins *vir
return true, nil return true, nil
} }
func (jobs *Jobs) removeBuildFromStatus(build virtuslabv1alpha1.Build, jenkins *virtuslabv1alpha1.Jenkins) error { func (jobs *Jobs) removeBuildFromStatus(build v1alpha1.Build, jenkins *v1alpha1.Jenkins) error {
builds := make([]virtuslabv1alpha1.Build, len(jenkins.Status.Builds)) builds := make([]v1alpha1.Build, len(jenkins.Status.Builds))
for _, existingBuild := range jenkins.Status.Builds { for _, existingBuild := range jenkins.Status.Builds {
if existingBuild.JobName != build.JobName && existingBuild.Hash != build.Hash { if existingBuild.JobName != build.JobName && existingBuild.Hash != build.Hash {
builds = append(builds, existingBuild) builds = append(builds, existingBuild)
@ -233,7 +233,7 @@ func (jobs *Jobs) removeBuildFromStatus(build virtuslabv1alpha1.Build, jenkins *
return nil return nil
} }
func (jobs *Jobs) buildJob(build virtuslabv1alpha1.Build, parameters map[string]string, jenkins *virtuslabv1alpha1.Jenkins) (bool, error) { func (jobs *Jobs) buildJob(build v1alpha1.Build, parameters map[string]string, jenkins *v1alpha1.Jenkins) (bool, error) {
jobs.logger.Info(fmt.Sprintf("Running job, %+v", build)) jobs.logger.Info(fmt.Sprintf("Running job, %+v", build))
job, err := jobs.jenkinsClient.GetJob(build.JobName) job, err := jobs.jenkinsClient.GetJob(build.JobName)
if err != nil { if err != nil {
@ -249,7 +249,7 @@ func (jobs *Jobs) buildJob(build virtuslabv1alpha1.Build, parameters map[string]
return false, err return false, err
} }
build.Status = virtuslabv1alpha1.BuildRunningStatus build.Status = v1alpha1.BuildRunningStatus
build.Number = nextBuildNumber build.Number = nextBuildNumber
err = jobs.updateBuildStatus(build, jenkins) err = jobs.updateBuildStatus(build, jenkins)
@ -260,7 +260,7 @@ func (jobs *Jobs) buildJob(build virtuslabv1alpha1.Build, parameters map[string]
return false, nil return false, nil
} }
func (jobs *Jobs) updateBuildStatus(build virtuslabv1alpha1.Build, jenkins *virtuslabv1alpha1.Jenkins) error { func (jobs *Jobs) updateBuildStatus(build v1alpha1.Build, jenkins *v1alpha1.Jenkins) error {
jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Updating build status, %+v", build)) jobs.logger.V(log.VDebug).Info(fmt.Sprintf("Updating build status, %+v", build))
// get index of existing build from status if exists // get index of existing build from status if exists
buildIndex := -1 buildIndex := -1

View File

@ -7,7 +7,7 @@ import (
"fmt" "fmt"
"testing" "testing"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
"github.com/bndr/gojenkins" "github.com/bndr/gojenkins"
@ -37,7 +37,7 @@ func TestSuccessEnsureJob(t *testing.T) {
// when // when
jenkins := jenkinsCustomResource() jenkins := jenkinsCustomResource()
fakeClient := fake.NewFakeClient() fakeClient := fake.NewFakeClient()
err := virtuslabv1alpha1.SchemeBuilder.AddToScheme(scheme.Scheme) err := v1alpha1.SchemeBuilder.AddToScheme(scheme.Scheme)
assert.NoError(t, err) assert.NoError(t, err)
err = fakeClient.Create(ctx, jenkins) err = fakeClient.Create(ctx, jenkins)
assert.NoError(t, err) assert.NoError(t, err)
@ -67,7 +67,7 @@ func TestSuccessEnsureJob(t *testing.T) {
GetBuild(jobName, buildNumber). GetBuild(jobName, buildNumber).
Return(&gojenkins.Build{ Return(&gojenkins.Build{
Raw: &gojenkins.BuildResponse{ Raw: &gojenkins.BuildResponse{
Result: string(virtuslabv1alpha1.BuildSuccessStatus), Result: string(v1alpha1.BuildSuccessStatus),
}, },
}, nil).AnyTimes() }, nil).AnyTimes()
@ -91,13 +91,13 @@ func TestSuccessEnsureJob(t *testing.T) {
// first run - build should be scheduled and status updated // first run - build should be scheduled and status updated
if reconcileAttempt == 1 { if reconcileAttempt == 1 {
assert.False(t, done) assert.False(t, done)
assert.Equal(t, build.Status, virtuslabv1alpha1.BuildRunningStatus) assert.Equal(t, build.Status, v1alpha1.BuildRunningStatus)
} }
// second run -job should be success and status updated // second run -job should be success and status updated
if reconcileAttempt == 2 { if reconcileAttempt == 2 {
assert.True(t, done) assert.True(t, done)
assert.Equal(t, build.Status, virtuslabv1alpha1.BuildSuccessStatus) assert.Equal(t, build.Status, v1alpha1.BuildSuccessStatus)
} }
} }
} }
@ -149,7 +149,7 @@ func TestEnsureJobWithFailedBuild(t *testing.T) {
GetBuild(jobName, int64(1)). GetBuild(jobName, int64(1)).
Return(&gojenkins.Build{ Return(&gojenkins.Build{
Raw: &gojenkins.BuildResponse{ Raw: &gojenkins.BuildResponse{
Result: string(virtuslabv1alpha1.BuildFailureStatus), Result: string(v1alpha1.BuildFailureStatus),
}, },
}, nil) }, nil)
} }
@ -178,7 +178,7 @@ func TestEnsureJobWithFailedBuild(t *testing.T) {
GetBuild(jobName, int64(2)). GetBuild(jobName, int64(2)).
Return(&gojenkins.Build{ Return(&gojenkins.Build{
Raw: &gojenkins.BuildResponse{ Raw: &gojenkins.BuildResponse{
Result: string(virtuslabv1alpha1.BuildSuccessStatus), Result: string(v1alpha1.BuildSuccessStatus),
}, },
}, nil) }, nil)
} }
@ -204,7 +204,7 @@ func TestEnsureJobWithFailedBuild(t *testing.T) {
assert.NoError(t, errEnsureBuildJob) assert.NoError(t, errEnsureBuildJob)
assert.False(t, done) assert.False(t, done)
assert.Equal(t, build.Number, int64(1)) assert.Equal(t, build.Number, int64(1))
assert.Equal(t, build.Status, virtuslabv1alpha1.BuildRunningStatus) assert.Equal(t, build.Status, v1alpha1.BuildRunningStatus)
} }
// second run - build should be failure and status updated // second run - build should be failure and status updated
@ -212,7 +212,7 @@ func TestEnsureJobWithFailedBuild(t *testing.T) {
assert.Error(t, errEnsureBuildJob) assert.Error(t, errEnsureBuildJob)
assert.False(t, done) assert.False(t, done)
assert.Equal(t, build.Number, int64(1)) assert.Equal(t, build.Number, int64(1))
assert.Equal(t, build.Status, virtuslabv1alpha1.BuildFailureStatus) assert.Equal(t, build.Status, v1alpha1.BuildFailureStatus)
} }
// third run - build should be rescheduled and status updated // third run - build should be rescheduled and status updated
@ -220,7 +220,7 @@ func TestEnsureJobWithFailedBuild(t *testing.T) {
assert.NoError(t, errEnsureBuildJob) assert.NoError(t, errEnsureBuildJob)
assert.False(t, done) assert.False(t, done)
assert.Equal(t, build.Number, int64(2)) assert.Equal(t, build.Number, int64(2))
assert.Equal(t, build.Status, virtuslabv1alpha1.BuildRunningStatus) assert.Equal(t, build.Status, v1alpha1.BuildRunningStatus)
} }
// fourth run - build should be success and status updated // fourth run - build should be success and status updated
@ -228,7 +228,7 @@ func TestEnsureJobWithFailedBuild(t *testing.T) {
assert.NoError(t, errEnsureBuildJob) assert.NoError(t, errEnsureBuildJob)
assert.True(t, done) assert.True(t, done)
assert.Equal(t, build.Number, int64(2)) assert.Equal(t, build.Number, int64(2))
assert.Equal(t, build.Status, virtuslabv1alpha1.BuildSuccessStatus) assert.Equal(t, build.Status, v1alpha1.BuildSuccessStatus)
} }
} }
} }
@ -281,7 +281,7 @@ func TestEnsureJobFailedWithMaxRetries(t *testing.T) {
GetBuild(buildName, int64(1)). GetBuild(buildName, int64(1)).
Return(&gojenkins.Build{ Return(&gojenkins.Build{
Raw: &gojenkins.BuildResponse{ Raw: &gojenkins.BuildResponse{
Result: string(virtuslabv1alpha1.BuildFailureStatus), Result: string(v1alpha1.BuildFailureStatus),
}, },
}, nil) }, nil)
} }
@ -310,7 +310,7 @@ func TestEnsureJobFailedWithMaxRetries(t *testing.T) {
GetBuild(buildName, int64(2)). GetBuild(buildName, int64(2)).
Return(&gojenkins.Build{ Return(&gojenkins.Build{
Raw: &gojenkins.BuildResponse{ Raw: &gojenkins.BuildResponse{
Result: string(virtuslabv1alpha1.BuildFailureStatus), Result: string(v1alpha1.BuildFailureStatus),
}, },
}, nil) }, nil)
} }
@ -337,7 +337,7 @@ func TestEnsureJobFailedWithMaxRetries(t *testing.T) {
assert.False(t, done) assert.False(t, done)
assert.Equal(t, build.Number, int64(1)) assert.Equal(t, build.Number, int64(1))
assert.Equal(t, build.Retires, 0) assert.Equal(t, build.Retires, 0)
assert.Equal(t, build.Status, virtuslabv1alpha1.BuildRunningStatus) assert.Equal(t, build.Status, v1alpha1.BuildRunningStatus)
} }
// second run - build should be failure and status updated // second run - build should be failure and status updated
@ -346,7 +346,7 @@ func TestEnsureJobFailedWithMaxRetries(t *testing.T) {
assert.False(t, done) assert.False(t, done)
assert.Equal(t, build.Number, int64(1)) assert.Equal(t, build.Number, int64(1))
assert.Equal(t, build.Retires, 0) assert.Equal(t, build.Retires, 0)
assert.Equal(t, build.Status, virtuslabv1alpha1.BuildFailureStatus) assert.Equal(t, build.Status, v1alpha1.BuildFailureStatus)
} }
// third run - build should be rescheduled and status updated // third run - build should be rescheduled and status updated
@ -356,7 +356,7 @@ func TestEnsureJobFailedWithMaxRetries(t *testing.T) {
//assert.Equal(t, build.Retires, 1) //assert.Equal(t, build.Retires, 1)
assert.Equal(t, build.Number, int64(2)) assert.Equal(t, build.Number, int64(2))
assert.Equal(t, build.Retires, 1) assert.Equal(t, build.Retires, 1)
assert.Equal(t, build.Status, virtuslabv1alpha1.BuildRunningStatus) assert.Equal(t, build.Status, v1alpha1.BuildRunningStatus)
} }
// fourth run - build should be failure and status updated // fourth run - build should be failure and status updated
@ -365,7 +365,7 @@ func TestEnsureJobFailedWithMaxRetries(t *testing.T) {
assert.False(t, done) assert.False(t, done)
assert.Equal(t, build.Number, int64(2)) assert.Equal(t, build.Number, int64(2))
assert.Equal(t, build.Retires, 1) assert.Equal(t, build.Retires, 1)
assert.Equal(t, build.Status, virtuslabv1alpha1.BuildFailureStatus) assert.Equal(t, build.Status, v1alpha1.BuildFailureStatus)
} }
// fifth run - build should be unrecoverable failed and status updated // fifth run - build should be unrecoverable failed and status updated
@ -374,19 +374,19 @@ func TestEnsureJobFailedWithMaxRetries(t *testing.T) {
assert.False(t, done) assert.False(t, done)
assert.Equal(t, build.Number, int64(2)) assert.Equal(t, build.Number, int64(2))
assert.Equal(t, build.Retires, 1) assert.Equal(t, build.Retires, 1)
assert.Equal(t, build.Status, virtuslabv1alpha1.BuildFailureStatus) assert.Equal(t, build.Status, v1alpha1.BuildFailureStatus)
} }
} }
} }
func jenkinsCustomResource() *virtuslabv1alpha1.Jenkins { func jenkinsCustomResource() *v1alpha1.Jenkins {
return &virtuslabv1alpha1.Jenkins{ return &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "jenkins", Name: "jenkins",
Namespace: "default", Namespace: "default",
}, },
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Master: virtuslabv1alpha1.JenkinsMaster{ Master: v1alpha1.JenkinsMaster{
Image: "jenkins/jenkins", Image: "jenkins/jenkins",
Annotations: map[string]string{"test": "label"}, Annotations: map[string]string{"test": "label"},
Resources: corev1.ResourceRequirements{ Resources: corev1.ResourceRequirements{
@ -400,13 +400,13 @@ func jenkinsCustomResource() *virtuslabv1alpha1.Jenkins {
}, },
}, },
}, },
SeedJobs: []virtuslabv1alpha1.SeedJob{ SeedJobs: []v1alpha1.SeedJob{
{ {
ID: "jenkins-operator-e2e", ID: "jenkins-operator-e2e",
Targets: "cicd/jobs/*.jenkins", Targets: "cicd/jobs/*.jenkins",
Description: "Jenkins Operator e2e tests repository", Description: "Jenkins Operator e2e tests repository",
RepositoryBranch: "master", RepositoryBranch: "master",
RepositoryURL: "https://github.com/VirtusLab/jenkins-operator-e2e.git", RepositoryURL: "https://github.com/jenkinsci/kubernetes-operator.git",
}, },
}, },
}, },

View File

@ -8,7 +8,7 @@ import (
"os" "os"
"testing" "testing"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
@ -98,20 +98,20 @@ func verifyIfBackupAndRestoreWasSuccessfull(t *testing.T, jenkinsClient *gojenki
assert.True(t, latestBackupFound) assert.True(t, latestBackupFound)
} }
func createJenkinsCRWithAmazonS3Backup(t *testing.T, namespace string, backupConfig amazonS3BackupConfiguration) *virtuslabv1alpha1.Jenkins { func createJenkinsCRWithAmazonS3Backup(t *testing.T, namespace string, backupConfig amazonS3BackupConfiguration) *v1alpha1.Jenkins {
jenkins := &virtuslabv1alpha1.Jenkins{ jenkins := &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "e2e", Name: "e2e",
Namespace: namespace, Namespace: namespace,
}, },
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Backup: virtuslabv1alpha1.JenkinsBackupTypeAmazonS3, Backup: v1alpha1.JenkinsBackupTypeAmazonS3,
BackupAmazonS3: virtuslabv1alpha1.JenkinsBackupAmazonS3{ BackupAmazonS3: v1alpha1.JenkinsBackupAmazonS3{
Region: backupConfig.Region, Region: backupConfig.Region,
BucketPath: backupConfig.BucketPath, BucketPath: backupConfig.BucketPath,
BucketName: backupConfig.BucketName, BucketName: backupConfig.BucketName,
}, },
Master: virtuslabv1alpha1.JenkinsMaster{ Master: v1alpha1.JenkinsMaster{
Image: "jenkins/jenkins", Image: "jenkins/jenkins",
}, },
}, },

View File

@ -5,7 +5,7 @@ import (
"reflect" "reflect"
"testing" "testing"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/plugins"
"github.com/bndr/gojenkins" "github.com/bndr/gojenkins"
@ -59,7 +59,7 @@ func createDefaultLimitsForContainersInNamespace(t *testing.T, namespace string)
} }
} }
func verifyJenkinsMasterPodAttributes(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) { func verifyJenkinsMasterPodAttributes(t *testing.T, jenkins *v1alpha1.Jenkins) {
jenkinsPod := getJenkinsMasterPod(t, jenkins) jenkinsPod := getJenkinsMasterPod(t, jenkins)
jenkins = getJenkins(t, jenkins.Namespace, jenkins.Name) jenkins = getJenkins(t, jenkins.Namespace, jenkins.Name)

View File

@ -6,7 +6,7 @@ import (
"net/http" "net/http"
"testing" "testing"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client" jenkinsclient "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/client"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources"
@ -18,8 +18,8 @@ import (
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
) )
func getJenkins(t *testing.T, namespace, name string) *virtuslabv1alpha1.Jenkins { func getJenkins(t *testing.T, namespace, name string) *v1alpha1.Jenkins {
jenkins := &virtuslabv1alpha1.Jenkins{} jenkins := &v1alpha1.Jenkins{}
namespaceName := types.NamespacedName{Namespace: namespace, Name: name} namespaceName := types.NamespacedName{Namespace: namespace, Name: name}
if err := framework.Global.Client.Get(context.TODO(), namespaceName, jenkins); err != nil { if err := framework.Global.Client.Get(context.TODO(), namespaceName, jenkins); err != nil {
t.Fatal(err) t.Fatal(err)
@ -28,7 +28,7 @@ func getJenkins(t *testing.T, namespace, name string) *virtuslabv1alpha1.Jenkins
return jenkins return jenkins
} }
func getJenkinsMasterPod(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) *v1.Pod { func getJenkinsMasterPod(t *testing.T, jenkins *v1alpha1.Jenkins) *v1.Pod {
lo := metav1.ListOptions{ lo := metav1.ListOptions{
LabelSelector: labels.SelectorFromSet(resources.BuildResourceLabels(jenkins)).String(), LabelSelector: labels.SelectorFromSet(resources.BuildResourceLabels(jenkins)).String(),
} }
@ -42,7 +42,7 @@ func getJenkinsMasterPod(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) *v1.P
return &podList.Items[0] return &podList.Items[0]
} }
func createJenkinsAPIClient(jenkins *virtuslabv1alpha1.Jenkins) (*gojenkins.Jenkins, error) { func createJenkinsAPIClient(jenkins *v1alpha1.Jenkins) (*gojenkins.Jenkins, error) {
adminSecret := &v1.Secret{} adminSecret := &v1.Secret{}
namespaceName := types.NamespacedName{Namespace: jenkins.Namespace, Name: resources.GetOperatorCredentialsSecretName(jenkins)} namespaceName := types.NamespacedName{Namespace: jenkins.Namespace, Name: resources.GetOperatorCredentialsSecretName(jenkins)}
if err := framework.Global.Client.Get(context.TODO(), namespaceName, adminSecret); err != nil { if err := framework.Global.Client.Get(context.TODO(), namespaceName, adminSecret); err != nil {
@ -75,14 +75,14 @@ func createJenkinsAPIClient(jenkins *virtuslabv1alpha1.Jenkins) (*gojenkins.Jenk
return jenkinsClient, nil return jenkinsClient, nil
} }
func createJenkinsCR(t *testing.T, namespace string) *virtuslabv1alpha1.Jenkins { func createJenkinsCR(t *testing.T, namespace string) *v1alpha1.Jenkins {
jenkins := &virtuslabv1alpha1.Jenkins{ jenkins := &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "e2e", Name: "e2e",
Namespace: namespace, Namespace: namespace,
}, },
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Master: virtuslabv1alpha1.JenkinsMaster{ Master: v1alpha1.JenkinsMaster{
Image: "jenkins/jenkins", Image: "jenkins/jenkins",
Annotations: map[string]string{"test": "label"}, Annotations: map[string]string{"test": "label"},
}, },
@ -97,19 +97,19 @@ func createJenkinsCR(t *testing.T, namespace string) *virtuslabv1alpha1.Jenkins
return jenkins return jenkins
} }
func createJenkinsCRWithSeedJob(t *testing.T, namespace string) *virtuslabv1alpha1.Jenkins { func createJenkinsCRWithSeedJob(t *testing.T, namespace string) *v1alpha1.Jenkins {
jenkins := &virtuslabv1alpha1.Jenkins{ jenkins := &v1alpha1.Jenkins{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "e2e", Name: "e2e",
Namespace: namespace, Namespace: namespace,
}, },
Spec: virtuslabv1alpha1.JenkinsSpec{ Spec: v1alpha1.JenkinsSpec{
Master: virtuslabv1alpha1.JenkinsMaster{ Master: v1alpha1.JenkinsMaster{
Image: "jenkins/jenkins", Image: "jenkins/jenkins",
Annotations: map[string]string{"test": "label"}, Annotations: map[string]string{"test": "label"},
}, },
//TODO(bantoniak) add seed job with private key //TODO(bantoniak) add seed job with private key
SeedJobs: []virtuslabv1alpha1.SeedJob{ SeedJobs: []v1alpha1.SeedJob{
{ {
ID: "jenkins-operator", ID: "jenkins-operator",
Targets: "cicd/jobs/*.jenkins", Targets: "cicd/jobs/*.jenkins",
@ -129,7 +129,7 @@ func createJenkinsCRWithSeedJob(t *testing.T, namespace string) *virtuslabv1alph
return jenkins return jenkins
} }
func verifyJenkinsAPIConnection(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) *gojenkins.Jenkins { func verifyJenkinsAPIConnection(t *testing.T, jenkins *v1alpha1.Jenkins) *gojenkins.Jenkins {
client, err := createJenkinsAPIClient(jenkins) client, err := createJenkinsAPIClient(jenkins)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
@ -139,7 +139,7 @@ func verifyJenkinsAPIConnection(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins
return client return client
} }
func restartJenkinsMasterPod(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) { func restartJenkinsMasterPod(t *testing.T, jenkins *v1alpha1.Jenkins) {
t.Log("Restarting Jenkins master pod") t.Log("Restarting Jenkins master pod")
jenkinsPod := getJenkinsMasterPod(t, jenkins) jenkinsPod := getJenkinsMasterPod(t, jenkins)
err := framework.Global.Client.Delete(context.TODO(), jenkinsPod) err := framework.Global.Client.Delete(context.TODO(), jenkinsPod)

View File

@ -5,7 +5,7 @@ import (
"testing" "testing"
"github.com/jenkinsci/kubernetes-operator/pkg/apis" "github.com/jenkinsci/kubernetes-operator/pkg/apis"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/constants"
f "github.com/operator-framework/operator-sdk/pkg/test" f "github.com/operator-framework/operator-sdk/pkg/test"
@ -35,10 +35,10 @@ func setupTest(t *testing.T) (string, *framework.TestCtx) {
t.Fatalf("could not initialize cluster resources: %v", err) t.Fatalf("could not initialize cluster resources: %v", err)
} }
jenkinsServiceList := &virtuslabv1alpha1.JenkinsList{ jenkinsServiceList := &v1alpha1.JenkinsList{
TypeMeta: metav1.TypeMeta{ TypeMeta: metav1.TypeMeta{
Kind: virtuslabv1alpha1.Kind, Kind: v1alpha1.Kind,
APIVersion: virtuslabv1alpha1.SchemeGroupVersion.String(), APIVersion: v1alpha1.SchemeGroupVersion.String(),
}, },
} }
err = framework.AddToFrameworkScheme(apis.AddToScheme, jenkinsServiceList) err = framework.AddToFrameworkScheme(apis.AddToScheme, jenkinsServiceList)

View File

@ -4,7 +4,7 @@ import (
"context" "context"
"testing" "testing"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
framework "github.com/operator-framework/operator-sdk/pkg/test" framework "github.com/operator-framework/operator-sdk/pkg/test"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
@ -24,8 +24,8 @@ func TestJenkinsMasterPodRestart(t *testing.T) {
waitForJenkinsBaseConfigurationToComplete(t, jenkins) waitForJenkinsBaseConfigurationToComplete(t, jenkins)
} }
func checkBaseConfigurationCompleteTimeIsNotSet(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) { func checkBaseConfigurationCompleteTimeIsNotSet(t *testing.T, jenkins *v1alpha1.Jenkins) {
jenkinsStatus := &virtuslabv1alpha1.Jenkins{} jenkinsStatus := &v1alpha1.Jenkins{}
namespaceName := types.NamespacedName{Namespace: jenkins.Namespace, Name: jenkins.Name} namespaceName := types.NamespacedName{Namespace: jenkins.Namespace, Name: jenkins.Name}
err := framework.Global.Client.Get(context.TODO(), namespaceName, jenkinsStatus) err := framework.Global.Client.Get(context.TODO(), namespaceName, jenkinsStatus)
if err != nil { if err != nil {

View File

@ -5,7 +5,7 @@ import (
"testing" "testing"
"time" "time"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/user/seedjobs" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/user/seedjobs"
"github.com/bndr/gojenkins" "github.com/bndr/gojenkins"
@ -31,7 +31,7 @@ func TestUserConfiguration(t *testing.T) {
verifyJenkinsSeedJobs(t, client, jenkins) verifyJenkinsSeedJobs(t, client, jenkins)
} }
func verifyJenkinsSeedJobs(t *testing.T, client *gojenkins.Jenkins, jenkins *virtuslabv1alpha1.Jenkins) { func verifyJenkinsSeedJobs(t *testing.T, client *gojenkins.Jenkins, jenkins *v1alpha1.Jenkins) {
t.Logf("Attempting to get configure seed job status '%v'", seedjobs.ConfigureSeedJobsName) t.Logf("Attempting to get configure seed job status '%v'", seedjobs.ConfigureSeedJobsName)
configureSeedJobs, err := client.GetJob(seedjobs.ConfigureSeedJobsName) configureSeedJobs, err := client.GetJob(seedjobs.ConfigureSeedJobsName)

View File

@ -6,7 +6,7 @@ import (
"testing" "testing"
"time" "time"
virtuslabv1alpha1 "github.com/jenkinsci/kubernetes-operator/pkg/apis/virtuslab/v1alpha1" "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkinsio/v1alpha1"
"github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources" "github.com/jenkinsci/kubernetes-operator/pkg/controller/jenkins/configuration/base/resources"
framework "github.com/operator-framework/operator-sdk/pkg/test" framework "github.com/operator-framework/operator-sdk/pkg/test"
@ -22,11 +22,11 @@ var (
) )
// checkConditionFunc is used to check if a condition for the jenkins CR is true // checkConditionFunc is used to check if a condition for the jenkins CR is true
type checkConditionFunc func(*virtuslabv1alpha1.Jenkins) bool type checkConditionFunc func(*v1alpha1.Jenkins) bool
func waitForJenkinsBaseConfigurationToComplete(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) { func waitForJenkinsBaseConfigurationToComplete(t *testing.T, jenkins *v1alpha1.Jenkins) {
t.Log("Waiting for Jenkins base configuration to complete") t.Log("Waiting for Jenkins base configuration to complete")
_, err := WaitUntilJenkinsConditionTrue(retryInterval, 150, jenkins, func(jenkins *virtuslabv1alpha1.Jenkins) bool { _, err := WaitUntilJenkinsConditionTrue(retryInterval, 150, jenkins, func(jenkins *v1alpha1.Jenkins) bool {
t.Logf("Current Jenkins status '%+v'", jenkins.Status) t.Logf("Current Jenkins status '%+v'", jenkins.Status)
return jenkins.Status.BaseConfigurationCompletedTime != nil return jenkins.Status.BaseConfigurationCompletedTime != nil
}) })
@ -36,7 +36,7 @@ func waitForJenkinsBaseConfigurationToComplete(t *testing.T, jenkins *virtuslabv
t.Log("Jenkins pod is running") t.Log("Jenkins pod is running")
} }
func waitForRecreateJenkinsMasterPod(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) { func waitForRecreateJenkinsMasterPod(t *testing.T, jenkins *v1alpha1.Jenkins) {
err := wait.Poll(retryInterval, 30*retryInterval, func() (bool, error) { err := wait.Poll(retryInterval, 30*retryInterval, func() (bool, error) {
lo := metav1.ListOptions{ lo := metav1.ListOptions{
LabelSelector: labels.SelectorFromSet(resources.BuildResourceLabels(jenkins)).String(), LabelSelector: labels.SelectorFromSet(resources.BuildResourceLabels(jenkins)).String(),
@ -57,9 +57,9 @@ func waitForRecreateJenkinsMasterPod(t *testing.T, jenkins *virtuslabv1alpha1.Je
t.Log("Jenkins pod has been recreated") t.Log("Jenkins pod has been recreated")
} }
func waitForJenkinsUserConfigurationToComplete(t *testing.T, jenkins *virtuslabv1alpha1.Jenkins) { func waitForJenkinsUserConfigurationToComplete(t *testing.T, jenkins *v1alpha1.Jenkins) {
t.Log("Waiting for Jenkins user configuration to complete") t.Log("Waiting for Jenkins user configuration to complete")
_, err := WaitUntilJenkinsConditionTrue(retryInterval, 30, jenkins, func(jenkins *virtuslabv1alpha1.Jenkins) bool { _, err := WaitUntilJenkinsConditionTrue(retryInterval, 30, jenkins, func(jenkins *v1alpha1.Jenkins) bool {
t.Logf("Current Jenkins status '%+v'", jenkins.Status) t.Logf("Current Jenkins status '%+v'", jenkins.Status)
return jenkins.Status.UserConfigurationCompletedTime != nil return jenkins.Status.UserConfigurationCompletedTime != nil
}) })
@ -70,8 +70,8 @@ func waitForJenkinsUserConfigurationToComplete(t *testing.T, jenkins *virtuslabv
} }
// WaitUntilJenkinsConditionTrue retries until the specified condition check becomes true for the jenkins CR // WaitUntilJenkinsConditionTrue retries until the specified condition check becomes true for the jenkins CR
func WaitUntilJenkinsConditionTrue(retryInterval time.Duration, retries int, jenkins *virtuslabv1alpha1.Jenkins, checkCondition checkConditionFunc) (*virtuslabv1alpha1.Jenkins, error) { func WaitUntilJenkinsConditionTrue(retryInterval time.Duration, retries int, jenkins *v1alpha1.Jenkins, checkCondition checkConditionFunc) (*v1alpha1.Jenkins, error) {
jenkinsStatus := &virtuslabv1alpha1.Jenkins{} jenkinsStatus := &v1alpha1.Jenkins{}
err := wait.Poll(retryInterval, time.Duration(retries)*retryInterval, func() (bool, error) { err := wait.Poll(retryInterval, time.Duration(retries)*retryInterval, func() (bool, error) {
namespacedName := types.NamespacedName{Namespace: jenkins.Namespace, Name: jenkins.Name} namespacedName := types.NamespacedName{Namespace: jenkins.Namespace, Name: jenkins.Name}
err := framework.Global.Client.Get(goctx.TODO(), namespacedName, jenkinsStatus) err := framework.Global.Client.Get(goctx.TODO(), namespacedName, jenkinsStatus)