@@ -62,25 +62,32 @@ func (mgp metaGeneratePatches) Name() string {
62
62
return mgp .name
63
63
}
64
64
65
- func (mgp metaGeneratePatches ) GeneratePatches (
66
- ctx context. Context ,
67
- req * runtimehooksv1. GeneratePatchesRequest ,
68
- resp * runtimehooksv1. GeneratePatchesResponse ,
69
- ) {
70
- clusterKey := handlers . ClusterKeyFromReq ( req )
71
- getCluster := func ( ctx context. Context ) ( * clusterv1. Cluster , error ) {
72
- cluster := & clusterv1. Cluster {}
73
- var err error
74
- fn := sync . OnceFunc (func () {
75
- err = mgp .cl .Get (ctx , clusterKey , cluster )
65
+ func (mgp metaGeneratePatches ) CreateClusterGetter (
66
+ clusterKey client. ObjectKey ,
67
+ ) func (context. Context ) ( * clusterv1. Cluster , error ) {
68
+ return func ( ctx context. Context ) ( * clusterv1. Cluster , error ) {
69
+ var (
70
+ cluster clusterv1. Cluster
71
+ err error
72
+ once sync. Once
73
+ )
74
+ once . Do (func () {
75
+ err = mgp .cl .Get (ctx , clusterKey , & cluster )
76
76
})
77
- fn ()
78
77
if err != nil {
79
78
return nil , fmt .Errorf ("failed to fetch cluster %w" , err )
80
79
}
81
- return cluster , nil
80
+ return & cluster , nil
82
81
}
82
+ }
83
83
84
+ func (mgp metaGeneratePatches ) GeneratePatches (
85
+ ctx context.Context ,
86
+ req * runtimehooksv1.GeneratePatchesRequest ,
87
+ resp * runtimehooksv1.GeneratePatchesResponse ,
88
+ ) {
89
+ clusterKey := handlers .ClusterKeyFromReq (req )
90
+ clusterGetter := mgp .CreateClusterGetter (clusterKey )
84
91
topologymutation .WalkTemplates (
85
92
ctx ,
86
93
unstructured .UnstructuredJSONScheme ,
@@ -93,7 +100,7 @@ func (mgp metaGeneratePatches) GeneratePatches(
93
100
holderRef runtimehooksv1.HolderReference ,
94
101
) error {
95
102
for _ , h := range mgp .mutators {
96
- if err := h .Mutate (ctx , obj .(* unstructured.Unstructured ), vars , holderRef , clusterKey , getCluster ); err != nil {
103
+ if err := h .Mutate (ctx , obj .(* unstructured.Unstructured ), vars , holderRef , clusterKey , clusterGetter ); err != nil {
97
104
return err
98
105
}
99
106
}
0 commit comments