Compare commits

...

2 Commits

Author SHA1 Message Date
Jean-Marc ANDRE
7b465eaa66 rbac changes 2023-04-25 09:32:22 +02:00
Jean-Marc ANDRE
a077d6deb2 update the sidecar containers when BackupConfiguration.Spec.Image has changed 2023-04-25 09:27:18 +02:00
4 changed files with 21 additions and 18 deletions

View File

@ -127,7 +127,6 @@ spec:
type: array
required:
- name
- sharePath
type: object
type: array
retry:
@ -146,7 +145,6 @@ spec:
required:
- backupType
- containers
- retry
- targetKind
- targetName
type: object

View File

@ -5,4 +5,4 @@ kind: Kustomization
images:
- name: controller
newName: docker.io/desmo999r/formolcontroller
newTag: v0.5.1
newTag: v1.0.2

View File

@ -112,12 +112,8 @@ rules:
resources:
- secrets
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- ""

View File

@ -209,15 +209,6 @@ func (r *BackupConfigurationReconciler) DeleteSidecar(backupConf formolv1alpha1.
return nil
}
func hasSidecar(podSpec *corev1.PodSpec) bool {
for _, container := range podSpec.Containers {
if container.Name == formolv1alpha1.SIDECARCONTAINER_NAME {
return true
}
}
return false
}
func (r *BackupConfigurationReconciler) addSidecar(backupConf formolv1alpha1.BackupConfiguration, target formolv1alpha1.Target) (err error) {
repo := formolv1alpha1.Repo{}
if err = r.Get(r.Context, client.ObjectKey{
@ -228,7 +219,6 @@ func (r *BackupConfigurationReconciler) addSidecar(backupConf formolv1alpha1.Bac
return err
}
r.Log.V(1).Info("Got Repository", "repo", repo)
sidecar := formolv1alpha1.GetSidecar(backupConf, target)
targetObject, targetPodSpec := formolv1alpha1.GetTargetObjects(target.TargetKind)
if err := r.Get(r.Context, client.ObjectKey{
Namespace: backupConf.Namespace,
@ -237,7 +227,26 @@ func (r *BackupConfigurationReconciler) addSidecar(backupConf formolv1alpha1.Bac
r.Log.Error(err, "cannot get target", "target", target.TargetName)
return err
}
if !hasSidecar(targetPodSpec) {
hasSidecar := func(podSpec *corev1.PodSpec) int {
for i, container := range podSpec.Containers {
if container.Name == formolv1alpha1.SIDECARCONTAINER_NAME {
return i
}
}
return -1
}
if res := hasSidecar(targetPodSpec); res != -1 {
if targetPodSpec.Containers[res].Image != backupConf.Spec.Image {
r.Log.V(0).Info("New sidecar image. Updating pod", "old", targetPodSpec.Containers[res].Image, "new", backupConf.Spec.Image)
targetPodSpec.Containers[res].Image = backupConf.Spec.Image
if err = r.Update(r.Context, targetObject); err != nil {
r.Log.Error(err, "unable to update targetObject", "targetObject", targetObject)
return
}
return
}
} else {
sidecar := formolv1alpha1.GetSidecar(backupConf, target)
if err = r.createSidecarRBAC(targetPodSpec); err != nil {
r.Log.Error(err, "unable to create RBAC for the sidecar container")
return