@@ -38,6 +38,7 @@ import (
38
38
"k8s.io/apimachinery/pkg/types"
39
39
ctrl "sigs.k8s.io/controller-runtime"
40
40
"sigs.k8s.io/controller-runtime/pkg/client"
41
+ "sigs.k8s.io/controller-runtime/pkg/client/apiutil"
41
42
"sigs.k8s.io/controller-runtime/pkg/event"
42
43
"sigs.k8s.io/controller-runtime/pkg/predicate"
43
44
@@ -50,7 +51,6 @@ type GitRepositoryReconciler struct {
50
51
Log logr.Logger
51
52
Scheme * runtime.Scheme
52
53
Storage * Storage
53
- Kind string
54
54
}
55
55
56
56
// +kubebuilder:rbac:groups=source.fluxcd.io,resources=gitrepositories,verbs=get;list;watch;create;update;patch;delete
@@ -60,16 +60,16 @@ func (r *GitRepositoryReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
60
60
ctx , cancel := context .WithTimeout (context .Background (), 15 * time .Second )
61
61
defer cancel ()
62
62
63
- log := r .Log .WithValues (r .Kind , req .NamespacedName )
64
-
65
63
var repo sourcev1.GitRepository
66
64
if err := r .Get (ctx , req .NamespacedName , & repo ); err != nil {
67
65
return ctrl.Result {}, client .IgnoreNotFound (err )
68
66
}
69
67
68
+ log := r .Log .WithValues (repo .Kind , req .NamespacedName )
69
+
70
70
// set initial status
71
71
if reset , status := r .shouldResetStatus (repo ); reset {
72
- log .Info ("Initializing repository" )
72
+ log .Info ("Initializing Git repository" )
73
73
repo .Status = status
74
74
if err := r .Status ().Update (ctx , & repo ); err != nil {
75
75
log .Error (err , "unable to update GitRepository status" )
@@ -83,7 +83,7 @@ func (r *GitRepositoryReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
83
83
// try git clone
84
84
syncedRepo , err := r .sync (* repo .DeepCopy ())
85
85
if err != nil {
86
- log .Info ("Repository sync failed" , "error" , err .Error ())
86
+ log .Info ("Git repository sync failed" , "error" , err .Error ())
87
87
}
88
88
89
89
// update status
@@ -92,7 +92,7 @@ func (r *GitRepositoryReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
92
92
return ctrl.Result {Requeue : true }, err
93
93
}
94
94
95
- log .Info ("Repository sync succeeded" , "msg" , sourcev1 .GitRepositoryReadyMessage (syncedRepo ))
95
+ log .Info ("Git repository sync succeeded" , "msg" , sourcev1 .GitRepositoryReadyMessage (syncedRepo ))
96
96
97
97
// requeue repository
98
98
return ctrl.Result {RequeueAfter : repo .Spec .Interval .Duration }, nil
@@ -104,16 +104,21 @@ func (r *GitRepositoryReconciler) SetupWithManager(mgr ctrl.Manager) error {
104
104
WithEventFilter (RepositoryChangePredicate {}).
105
105
WithEventFilter (predicate.Funcs {
106
106
DeleteFunc : func (e event.DeleteEvent ) bool {
107
+ gvk , err := apiutil .GVKForObject (e .Object , r .Scheme )
108
+ if err != nil {
109
+ r .Log .Error (err , "unable to get GroupVersionKind for deleted object" )
110
+ return false
111
+ }
107
112
// delete artifacts
108
- artifact := r .Storage .ArtifactFor (r .Kind , e .Meta , "dummy " , "" )
113
+ artifact := r .Storage .ArtifactFor (gvk .Kind , e .Meta , "* " , "" )
109
114
if err := r .Storage .RemoveAll (artifact ); err != nil {
110
115
r .Log .Error (err , "unable to delete artifacts" ,
111
- r .Kind , fmt .Sprintf ("%s/%s" , e .Meta .GetNamespace (), e .Meta .GetName ()))
116
+ gvk .Kind , fmt .Sprintf ("%s/%s" , e .Meta .GetNamespace (), e .Meta .GetName ()))
112
117
} else {
113
- r .Log .Info ("Repository artifacts deleted" ,
114
- r .Kind , fmt .Sprintf ("%s/%s" , e .Meta .GetNamespace (), e .Meta .GetName ()))
118
+ r .Log .Info ("Git repository artifacts deleted" ,
119
+ gvk .Kind , fmt .Sprintf ("%s/%s" , e .Meta .GetNamespace (), e .Meta .GetName ()))
115
120
}
116
- return false
121
+ return true
117
122
},
118
123
}).
119
124
Complete (r )
@@ -199,7 +204,7 @@ func (r *GitRepositoryReconciler) sync(repository sourcev1.GitRepository) (sourc
199
204
Force : true ,
200
205
})
201
206
if err != nil {
202
- err = fmt .Errorf ("git checkout %s for %s error: %w" , commit , branch , err )
207
+ err = fmt .Errorf ("git checkout '%s' for '%s' error: %w" , commit , branch , err )
203
208
return sourcev1 .GitRepositoryNotReady (repository , sourcev1 .GitOperationFailedReason , err .Error ()), err
204
209
}
205
210
} else if exp := repository .Spec .Reference .SemVer ; exp != "" {
@@ -222,7 +227,7 @@ func (r *GitRepositoryReconciler) sync(repository sourcev1.GitRepository) (sourc
222
227
})
223
228
224
229
svTags := make (map [string ]string )
225
- svers := []semver.Version {}
230
+ var svers []semver.Version
226
231
for tag , _ := range tags {
227
232
v , _ := semver .ParseTolerant (tag )
228
233
if rng (v ) {
@@ -269,7 +274,7 @@ func (r *GitRepositoryReconciler) sync(repository sourcev1.GitRepository) (sourc
269
274
revision = fmt .Sprintf ("%s/%s" , branch , ref .Hash ().String ())
270
275
}
271
276
272
- artifact := r .Storage .ArtifactFor (r .Kind , repository .ObjectMeta .GetObjectMeta (),
277
+ artifact := r .Storage .ArtifactFor (repository .Kind , repository .ObjectMeta .GetObjectMeta (),
273
278
fmt .Sprintf ("%s.tar.gz" , ref .Hash ().String ()), revision )
274
279
275
280
// create artifact dir
@@ -301,7 +306,7 @@ func (r *GitRepositoryReconciler) sync(repository sourcev1.GitRepository) (sourc
301
306
return sourcev1 .GitRepositoryNotReady (repository , sourcev1 .StorageOperationFailedReason , err .Error ()), err
302
307
}
303
308
304
- message := fmt .Sprintf ("Artifact is available at: %s" , artifact .Path )
309
+ message := fmt .Sprintf ("Git repoistory artifacts are available at: %s" , artifact .Path )
305
310
return sourcev1 .GitRepositoryReady (repository , artifact , url , sourcev1 .GitOperationSucceedReason , message ), nil
306
311
}
307
312
@@ -361,13 +366,9 @@ func (r *GitRepositoryReconciler) auth(repository sourcev1.GitRepository, tmp st
361
366
auth := & http.BasicAuth {}
362
367
if username , ok := credentials ["username" ]; ok {
363
368
auth .Username = string (username )
364
- } else {
365
- return nil , fmt .Errorf ("%s secret does not contain username" , repository .Spec .SecretRef .Name )
366
369
}
367
370
if password , ok := credentials ["password" ]; ok {
368
371
auth .Password = string (password )
369
- } else {
370
- return nil , fmt .Errorf ("%s secret does not contain password" , repository .Spec .SecretRef .Name )
371
372
}
372
373
373
374
if auth .Username == "" || auth .Password == "" {
0 commit comments