@@ -25,13 +25,23 @@ import (
25
25
26
26
kcpdevv1alpha1 "github.com/kcp-dev/kcp/sdk/apis/apis/v1alpha1"
27
27
28
+ "k8s.io/apimachinery/pkg/runtime"
28
29
"k8s.io/apimachinery/pkg/util/sets"
30
+ "k8s.io/client-go/tools/record"
29
31
)
30
32
33
+ const eventType = "Reconciling"
34
+
31
35
// createAPIExportReconciler creates the reconciler for the APIExport.
32
36
// WARNING: The APIExport in this is NOT created by the Sync Agent, it's created
33
37
// by a controller in kcp. Make sure you don't create a reconciling conflict!
34
- func (r * Reconciler ) createAPIExportReconciler (availableResourceSchemas sets.Set [string ], claimedResourceKinds sets.Set [string ], agentName string , apiExportName string ) reconciling.NamedAPIExportReconcilerFactory {
38
+ func (r * Reconciler ) createAPIExportReconciler (
39
+ availableResourceSchemas sets.Set [string ],
40
+ claimedResourceKinds sets.Set [string ],
41
+ agentName string ,
42
+ apiExportName string ,
43
+ recorder record.EventRecorder ,
44
+ ) reconciling.NamedAPIExportReconcilerFactory {
35
45
return func () (string , reconciling.APIExportReconciler ) {
36
46
return apiExportName , func (existing * kcpdevv1alpha1.APIExport ) (* kcpdevv1alpha1.APIExport , error ) {
37
47
if existing .Annotations == nil {
@@ -40,7 +50,10 @@ func (r *Reconciler) createAPIExportReconciler(availableResourceSchemas sets.Set
40
50
existing .Annotations [syncagentv1alpha1 .AgentNameAnnotation ] = agentName
41
51
42
52
// combine existing schemas with new ones
43
- existing .Spec .LatestResourceSchemas = mergeResourceSchemas (existing .Spec .LatestResourceSchemas , availableResourceSchemas )
53
+ newSchemas := mergeResourceSchemas (existing .Spec .LatestResourceSchemas , availableResourceSchemas )
54
+ createSchemaEvents (existing , existing .Spec .LatestResourceSchemas , newSchemas , recorder )
55
+
56
+ existing .Spec .LatestResourceSchemas = newSchemas
44
57
45
58
// To allow admins to configure additional permission claims, sometimes
46
59
// useful for debugging, we do not override the permission claims, but
@@ -65,6 +78,8 @@ func (r *Reconciler) createAPIExportReconciler(availableResourceSchemas sets.Set
65
78
},
66
79
All : true ,
67
80
})
81
+
82
+ recorder .Eventf (existing , eventType , "AddingPermissionClaim" , "Added new permission claim for all %s." , claimed )
68
83
}
69
84
70
85
// prevent reconcile loops by ensuring a stable order
@@ -113,6 +128,19 @@ func mergeResourceSchemas(existing []string, configured sets.Set[string]) []stri
113
128
return result
114
129
}
115
130
131
+ func createSchemaEvents (obj runtime.Object , oldSchemas , newSchemas []string , recorder record.EventRecorder ) {
132
+ oldSet := sets .New (oldSchemas ... )
133
+ newSet := sets .New (newSchemas ... )
134
+
135
+ for _ , s := range newSet .Difference (oldSet ) {
136
+ recorder .Eventf (obj , eventType , "AddingResourceSchema" , "Added new resource schema %s." , s )
137
+ }
138
+
139
+ for _ , s := range oldSet .Difference (newSet ) {
140
+ recorder .Eventf (obj , eventType , "RemovingResourceSchema" , "Removed resource schema %s." , s )
141
+ }
142
+ }
143
+
116
144
func parseResourceGroup (schema string ) string {
117
145
// <version>.<resource>.<group>
118
146
parts := strings .SplitN (schema , "." , 2 )
0 commit comments