Skip to content
This repository was archived by the owner on Apr 24, 2023. It is now read-only.

Commit 1a39d43

Browse files
authored
Merge pull request #34 from integr8ly/upgrades
update gitea image automatically
2 parents 4405eb9 + f2cd279 commit 1a39d43

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

pkg/controller/gitea/gitea_controller.go

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package gitea
33
import (
44
"context"
55
"fmt"
6+
v12 "k8s.io/api/apps/v1"
67
"log"
8+
"time"
79

810
"k8s.io/api/apps/v1beta1"
911

@@ -28,6 +30,10 @@ const (
2830
PhaseDone
2931
)
3032

33+
const (
34+
RequeueDelay = time.Second * 30
35+
)
36+
3137
// Add creates a new Gitea Controller and adds it to the Manager. The Manager will set fields on the Controller
3238
// and Start it when the Manager is Started.
3339
func Add(mgr manager.Manager) error {
@@ -99,7 +105,7 @@ func (r *ReconcileGitea) Reconcile(request reconcile.Request) (reconcile.Result,
99105
case PhaseInstallGitea:
100106
return r.InstallGitea(instanceCopy)
101107
case PhaseDone:
102-
log.Printf("Gitea installation complete")
108+
return r.UpdateGitea(instanceCopy)
103109
}
104110

105111
return reconcile.Result{}, nil
@@ -212,3 +218,35 @@ func (r *ReconcileGitea) CreateResource(cr *integreatlyv1alpha1.Gitea, resourceN
212218
}
213219
return nil
214220
}
221+
222+
// Creates a generic kubernetes resource from a templates
223+
func (r *ReconcileGitea) UpdateGitea(cr *integreatlyv1alpha1.Gitea) (reconcile.Result, error) {
224+
selector := types.NamespacedName{
225+
Namespace: cr.Namespace,
226+
Name: GiteaDeploymentName,
227+
}
228+
229+
deployment := v12.Deployment{}
230+
err := r.client.Get(context.TODO(), selector, &deployment)
231+
if err != nil {
232+
return reconcile.Result{RequeueAfter: RequeueDelay}, nil
233+
}
234+
235+
if len(deployment.Spec.Template.Spec.Containers) == 0 {
236+
log.Print("no containers in deployment")
237+
return reconcile.Result{RequeueAfter: RequeueDelay}, nil
238+
}
239+
240+
expectedImage := fmt.Sprintf("%s:%s", GiteaImage, GiteaVersion)
241+
currentImage := deployment.Spec.Template.Spec.Containers[0].Image
242+
243+
if currentImage != expectedImage {
244+
log.Print("Updating gitea to ", expectedImage)
245+
deployment.Spec.Template.Spec.Containers[0].Image = expectedImage
246+
err = r.client.Update(context.TODO(), &deployment)
247+
return reconcile.Result{RequeueAfter: RequeueDelay}, err
248+
}
249+
250+
log.Print("Gitea image is up to date: ", currentImage)
251+
return reconcile.Result{RequeueAfter: RequeueDelay}, nil
252+
}

0 commit comments

Comments
 (0)