feat: allow to ignore volumes during reconciliation
This commit is contained in:
parent
8a66d658eb
commit
2a21ee7c2c
|
|
@ -400,6 +400,10 @@ type JenkinsMaster struct {
|
||||||
// Defaults to 30 seconds.
|
// Defaults to 30 seconds.
|
||||||
// +optional
|
// +optional
|
||||||
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
|
TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
|
||||||
|
|
||||||
|
// IgnoredVolumes defines the list of volume names that should be excluded from processing or consideration.
|
||||||
|
// +optional
|
||||||
|
IgnoredVolumes []string `json:"ignoredVolumes,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Service defines Kubernetes service attributes
|
// Service defines Kubernetes service attributes
|
||||||
|
|
|
||||||
|
|
@ -160,6 +160,47 @@ func TestCompareVolumes(t *testing.T) {
|
||||||
|
|
||||||
assert.True(t, got)
|
assert.True(t, got)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("different - additional workspace identity volume", func(t *testing.T) {
|
||||||
|
jenkins := &v1alpha2.Jenkins{
|
||||||
|
Spec: v1alpha2.JenkinsSpec{
|
||||||
|
Master: v1alpha2.JenkinsMaster{},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
pod := corev1.Pod{
|
||||||
|
Spec: corev1.PodSpec{
|
||||||
|
ServiceAccountName: "service-account-name",
|
||||||
|
Volumes: append(resources.GetJenkinsMasterPodBaseVolumes(jenkins), corev1.Volume{Name: "azure-identity-token"}),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
reconciler := New(configuration.Configuration{Jenkins: jenkins}, client.JenkinsAPIConnectionSettings{})
|
||||||
|
|
||||||
|
got := reconciler.compareVolumes(pod)
|
||||||
|
|
||||||
|
assert.False(t, got)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("additional workspace identity volume but ignored", func(t *testing.T) {
|
||||||
|
jenkins := &v1alpha2.Jenkins{
|
||||||
|
Spec: v1alpha2.JenkinsSpec{
|
||||||
|
Master: v1alpha2.JenkinsMaster{
|
||||||
|
IgnoredVolumes: []string{"azure-identity-token"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
pod := corev1.Pod{
|
||||||
|
Spec: corev1.PodSpec{
|
||||||
|
ServiceAccountName: "service-account-name",
|
||||||
|
Volumes: append(resources.GetJenkinsMasterPodBaseVolumes(jenkins), corev1.Volume{Name: "azure-identity-token"}),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
reconciler := New(configuration.Configuration{Jenkins: jenkins}, client.JenkinsAPIConnectionSettings{})
|
||||||
|
|
||||||
|
got := reconciler.compareVolumes(pod)
|
||||||
|
|
||||||
|
assert.True(t, got)
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJenkinsBaseConfigurationReconciler_verifyPlugins(t *testing.T) {
|
func TestJenkinsBaseConfigurationReconciler_verifyPlugins(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -294,6 +294,11 @@ func CompareContainerVolumeMounts(expected corev1.Container, actual corev1.Conta
|
||||||
func (r *JenkinsBaseConfigurationReconciler) compareVolumes(actualPod corev1.Pod) bool {
|
func (r *JenkinsBaseConfigurationReconciler) compareVolumes(actualPod corev1.Pod) bool {
|
||||||
var toCompare []corev1.Volume
|
var toCompare []corev1.Volume
|
||||||
for _, volume := range actualPod.Spec.Volumes {
|
for _, volume := range actualPod.Spec.Volumes {
|
||||||
|
|
||||||
|
if r.isVolumeIgnored(volume.Name) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
// filter out service account
|
// filter out service account
|
||||||
if strings.HasPrefix(volume.Name, actualPod.Spec.ServiceAccountName) {
|
if strings.HasPrefix(volume.Name, actualPod.Spec.ServiceAccountName) {
|
||||||
continue
|
continue
|
||||||
|
|
@ -421,3 +426,13 @@ func (r *JenkinsBaseConfigurationReconciler) ensureBaseConfiguration(jenkinsClie
|
||||||
})
|
})
|
||||||
return reconcile.Result{Requeue: requeue}, err
|
return reconcile.Result{Requeue: requeue}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// isVolumeIgnored checks if the given volume name is in the list of ignored volumes
|
||||||
|
func (r *JenkinsBaseConfigurationReconciler) isVolumeIgnored(volumeName string) bool {
|
||||||
|
for _, ignoredVolume := range r.Jenkins.Spec.Master.IgnoredVolumes {
|
||||||
|
if ignoredVolume == volumeName {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue