@@ -153,46 +153,34 @@ func (d *adcClient) Update(ctx context.Context, tctx *provider.TranslateContext,
153153 Namespace : obj .GetNamespace (),
154154 Name : obj .GetName (),
155155 }
156+
156157 switch t := obj .(type ) {
157158 case * gatewayv1.HTTPRoute :
158- if result , err = d .translator .TranslateHTTPRoute (tctx , t .DeepCopy ()); err != nil {
159- return err
160- }
159+ result , err = d .handleHTTPRoute (tctx , t .DeepCopy ())
161160 resourceTypes = append (resourceTypes , "service" )
162- // delete http route if old configs diff with new configs exist
163- if err = d .DeleteHTTPRoute (ctx , tctx , t .DeepCopy ()); err != nil {
164- return err
165- }
166161 case * gatewayv1.Gateway :
167- if result , err = d .translator .TranslateGateway (tctx , t .DeepCopy ()); err != nil {
168- return err
169- }
162+ result , err = d .translator .TranslateGateway (tctx , t .DeepCopy ())
170163 resourceTypes = append (resourceTypes , "global_rule" , "ssl" , "plugin_metadata" )
171- if err = d .updateConfigs (rk , tctx ); err != nil {
172- return err
173- }
174164 case * networkingv1.Ingress :
175- if result , err = d .translator .TranslateIngress (tctx , t .DeepCopy ()); err != nil {
176- return err
177- }
165+ result , err = d .translator .TranslateIngress (tctx , t .DeepCopy ())
178166 resourceTypes = append (resourceTypes , "service" , "ssl" )
179- if err = d .updateConfigs (rk , tctx ); err != nil {
180- return err
181- }
182167 case * v1alpha1.Consumer :
183- if result , err = d .translator .TranslateConsumerV1alpha1 (tctx , t .DeepCopy ()); err != nil {
184- return err
185- }
168+ result , err = d .translator .TranslateConsumerV1alpha1 (tctx , t .DeepCopy ())
186169 resourceTypes = append (resourceTypes , "consumer" )
187- if err = d . updateConfigs ( rk , tctx ); err != nil {
188- return err
189- }
170+ }
171+ if err != nil {
172+ return err
190173 }
191174 if result == nil {
192175 return nil
193176 }
194177
195- configs := d .getConfigs (rk )
178+ // Update configs for non-HTTPRoute types
179+ if _ , ok := obj .(* gatewayv1.HTTPRoute ); ! ok {
180+ if err := d .updateConfigs (rk , tctx ); err != nil {
181+ return err
182+ }
183+ }
196184
197185 return d .sync (Task {
198186 Name : obj .GetName (),
@@ -205,26 +193,51 @@ func (d *adcClient) Update(ctx context.Context, tctx *provider.TranslateContext,
205193 Consumers : result .Consumers ,
206194 },
207195 ResourceTypes : resourceTypes ,
208- configs : configs ,
196+ configs : d . getConfigs ( rk ) ,
209197 })
210198}
211199
212- func (d * adcClient ) DeleteHTTPRoute (ctx context.Context , tctx * provider.TranslateContext , obj client.Object ) error {
213- // diff adc configs
200+ func (d * adcClient ) handleHTTPRoute (tctx * provider.TranslateContext , route * gatewayv1.HTTPRoute ) (* translator.TranslateResult , error ) {
201+ result , err := d .translator .TranslateHTTPRoute (tctx , route )
202+ if err != nil {
203+ return nil , err
204+ }
205+
206+ if err := d .deleteHTTPRoute (tctx , route ); err != nil {
207+ return nil , err
208+ }
209+
210+ return result , nil
211+ }
212+
213+ func (d * adcClient ) deleteHTTPRoute (tctx * provider.TranslateContext , obj client.Object ) error {
214214 rk := ResourceKind {
215215 Kind : obj .GetObjectKind ().GroupVersionKind ().Kind ,
216216 Namespace : obj .GetNamespace (),
217217 Name : obj .GetName (),
218218 }
219219
220220 oldConfigs := d .getConfigs (rk )
221- err := d .updateConfigs (rk , tctx )
222- if err != nil {
221+ if err := d .updateConfigs (rk , tctx ); err != nil {
223222 return err
224223 }
225224 newConfigs := d .getConfigs (rk )
226225
227- // diff old configs and new configs
226+ deleteConfigs := d .findConfigsToDelete (oldConfigs , newConfigs )
227+ if len (deleteConfigs ) == 0 {
228+ return nil
229+ }
230+
231+ log .Debugw ("http route delete configs" , zap .Any ("configs" , deleteConfigs ))
232+ return d .sync (Task {
233+ Name : obj .GetName (),
234+ Labels : label .GenLabel (obj ),
235+ ResourceTypes : []string {"service" },
236+ configs : deleteConfigs ,
237+ })
238+ }
239+
240+ func (d * adcClient ) findConfigsToDelete (oldConfigs , newConfigs []adcConfig ) []adcConfig {
228241 var deleteConfigs []adcConfig
229242 for _ , config := range oldConfigs {
230243 if ! slices .ContainsFunc (newConfigs , func (c adcConfig ) bool {
@@ -233,22 +246,7 @@ func (d *adcClient) DeleteHTTPRoute(ctx context.Context, tctx *provider.Translat
233246 deleteConfigs = append (deleteConfigs , config )
234247 }
235248 }
236-
237- if len (deleteConfigs ) > 0 {
238- log .Debugw ("http route delete configs" , zap .Any ("configs" , deleteConfigs ))
239- // sync old delete
240- err = d .sync (Task {
241- Name : obj .GetName (),
242- Labels : label .GenLabel (obj ),
243- ResourceTypes : []string {"service" },
244- configs : deleteConfigs ,
245- })
246- if err != nil {
247- return err
248- }
249- }
250-
251- return nil
249+ return deleteConfigs
252250}
253251
254252func (d * adcClient ) Delete (ctx context.Context , obj client.Object ) error {
0 commit comments