Skip to content

Commit ee796ab

Browse files
committed
fix: r
Signed-off-by: ashing <[email protected]>
1 parent 6bdf26e commit ee796ab

File tree

1 file changed

+46
-48
lines changed

1 file changed

+46
-48
lines changed

internal/provider/adc/adc.go

Lines changed: 46 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -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

254252
func (d *adcClient) Delete(ctx context.Context, obj client.Object) error {

0 commit comments

Comments
 (0)