parent
							
								
									dcafa71d67
								
							
						
					
					
						commit
						e609611c4d
					
				|  | @ -91,6 +91,11 @@ func (r *ReconcileJenkinsBaseConfiguration) Reconcile() (reconcile.Result, jenki | ||||||
| 	} | 	} | ||||||
| 	r.logger.V(log.VDebug).Info("Service is present") | 	r.logger.V(log.VDebug).Info("Service is present") | ||||||
| 
 | 
 | ||||||
|  | 	if err := r.createBackupCredentialsSecret(metaObject); err != nil { | ||||||
|  | 		return reconcile.Result{}, nil, err | ||||||
|  | 	} | ||||||
|  | 	r.logger.V(log.VDebug).Info("Backup credentials secret is present") | ||||||
|  | 
 | ||||||
| 	result, err := r.createJenkinsMasterPod(metaObject) | 	result, err := r.createJenkinsMasterPod(metaObject) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return reconcile.Result{}, nil, err | 		return reconcile.Result{}, nil, err | ||||||
|  | @ -225,7 +230,11 @@ func (r *ReconcileJenkinsBaseConfiguration) createUserConfigurationConfigMap(met | ||||||
| 	} else if err != nil { | 	} else if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	//TODO make sure labels are fine
 | 	valid := r.verifyLabelsForWatchedResource(currentConfigMap) | ||||||
|  | 	if !valid { | ||||||
|  | 		currentConfigMap.ObjectMeta.Labels = resources.BuildLabelsForWatchedResources(r.jenkins) | ||||||
|  | 		return r.k8sClient.Update(context.TODO(), currentConfigMap) | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  | @ -443,3 +452,31 @@ func (r *ReconcileJenkinsBaseConfiguration) baseConfiguration(jenkinsClient jenk | ||||||
| 
 | 
 | ||||||
| 	return reconcile.Result{}, nil | 	return reconcile.Result{}, nil | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | func (r *ReconcileJenkinsBaseConfiguration) createBackupCredentialsSecret(meta metav1.ObjectMeta) error { | ||||||
|  | 	currentSecret := &corev1.Secret{} | ||||||
|  | 	err := r.k8sClient.Get(context.TODO(), types.NamespacedName{Name: resources.GetBackupCredentialsSecretName(r.jenkins), Namespace: r.jenkins.Namespace}, currentSecret) | ||||||
|  | 	if err != nil && errors.IsNotFound(err) { | ||||||
|  | 		return r.k8sClient.Create(context.TODO(), resources.NewBackupCredentialsSecret(r.jenkins)) | ||||||
|  | 	} else if err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 	valid := r.verifyLabelsForWatchedResource(currentSecret) | ||||||
|  | 	if !valid { | ||||||
|  | 		currentSecret.ObjectMeta.Labels = resources.BuildLabelsForWatchedResources(r.jenkins) | ||||||
|  | 		return r.k8sClient.Update(context.TODO(), currentSecret) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (r *ReconcileJenkinsBaseConfiguration) verifyLabelsForWatchedResource(object metav1.Object) bool { | ||||||
|  | 	requiredLabels := resources.BuildLabelsForWatchedResources(r.jenkins) | ||||||
|  | 	for key, value := range requiredLabels { | ||||||
|  | 		if object.GetLabels()[key] != value { | ||||||
|  | 			return false | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return true | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -16,8 +16,13 @@ func GetBackupCredentialsSecretName(jenkins *virtuslabv1alpha1.Jenkins) string { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // NewBackupCredentialsSecret builds the Kubernetes secret used to store backup credentials
 | // NewBackupCredentialsSecret builds the Kubernetes secret used to store backup credentials
 | ||||||
| func NewBackupCredentialsSecret(meta metav1.ObjectMeta, jenkins *virtuslabv1alpha1.Jenkins) *corev1.Secret { | func NewBackupCredentialsSecret(jenkins *virtuslabv1alpha1.Jenkins) *corev1.Secret { | ||||||
| 	meta.Name = GetBackupCredentialsSecretName(jenkins) | 	meta := metav1.ObjectMeta{ | ||||||
|  | 		Name:      GetBackupCredentialsSecretName(jenkins), | ||||||
|  | 		Namespace: jenkins.ObjectMeta.Namespace, | ||||||
|  | 		Labels:    BuildLabelsForWatchedResources(jenkins), | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	return &corev1.Secret{ | 	return &corev1.Secret{ | ||||||
| 		TypeMeta:   buildSecretTypeMeta(), | 		TypeMeta:   buildSecretTypeMeta(), | ||||||
| 		ObjectMeta: meta, | 		ObjectMeta: meta, | ||||||
|  | @ -26,6 +26,17 @@ func BuildResourceLabels(jenkins *virtuslabv1alpha1.Jenkins) map[string]string { | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // 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
 | ||||||
|  | // any owner
 | ||||||
|  | func BuildLabelsForWatchedResources(jenkins *virtuslabv1alpha1.Jenkins) map[string]string { | ||||||
|  | 	return map[string]string{ | ||||||
|  | 		constants.LabelAppKey:       constants.LabelAppValue, | ||||||
|  | 		constants.LabelJenkinsCRKey: jenkins.Name, | ||||||
|  | 		constants.LabelWatchKey:     constants.LabelWatchValue, | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // 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 *virtuslabv1alpha1.Jenkins) string { | ||||||
| 	return fmt.Sprintf("%s-%s", constants.LabelAppValue, jenkins.ObjectMeta.Name) | 	return fmt.Sprintf("%s-%s", constants.LabelAppValue, jenkins.ObjectMeta.Name) | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ import ( | ||||||
| 	"github.com/VirtusLab/jenkins-operator/pkg/controller/jenkins/constants" | 	"github.com/VirtusLab/jenkins-operator/pkg/controller/jenkins/constants" | ||||||
| 
 | 
 | ||||||
| 	corev1 "k8s.io/api/core/v1" | 	corev1 "k8s.io/api/core/v1" | ||||||
|  | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| const configureTheme = ` | const configureTheme = ` | ||||||
|  | @ -38,9 +39,11 @@ func GetUserConfigurationConfigMapName(jenkins *virtuslabv1alpha1.Jenkins) strin | ||||||
| 
 | 
 | ||||||
| // 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 *virtuslabv1alpha1.Jenkins) *corev1.ConfigMap { | ||||||
| 	meta := NewResourceObjectMeta(jenkins) | 	meta := metav1.ObjectMeta{ | ||||||
| 	meta.Name = GetUserConfigurationConfigMapName(jenkins) | 		Name:      GetUserConfigurationConfigMapName(jenkins), | ||||||
| 	meta.Labels[constants.LabelWatchKey] = constants.LabelWatchValue // add watch for resource
 | 		Namespace: jenkins.ObjectMeta.Namespace, | ||||||
|  | 		Labels:    BuildLabelsForWatchedResources(jenkins), | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	return &corev1.ConfigMap{ | 	return &corev1.ConfigMap{ | ||||||
| 		TypeMeta:   buildConfigMapTypeMeta(), | 		TypeMeta:   buildConfigMapTypeMeta(), | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue