@@ -3,7 +3,9 @@ package gitea
33import (
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.
3339func 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