Commit 0fabf210 authored by qiuqunfeng's avatar qiuqunfeng
Browse files

Enhance WAF service mode update with listener synchronization

- Implement concurrent listener mode updates for WAF services
- Add client retrieval and listing of listeners by gateway name
- Return updated WAF service metadata after mode modification
- Improve error handling for client and listener operations
parent 4d18b503
...@@ -280,7 +280,29 @@ func (s *wafService) UpdateMode(ctx context.Context, req *UpdateModeReq) (*WafSe ...@@ -280,7 +280,29 @@ func (s *wafService) UpdateMode(ctx context.Context, req *UpdateModeReq) (*WafSe
return nil, fmt.Errorf("failed to update WAF service mode: %v", err) return nil, fmt.Errorf("failed to update WAF service mode: %v", err)
} }
} }
return nil, nil // Update mode for each listener
client := s.clusterClientManager.GetClient(req.RegionCode)
if client == nil {
return nil, fmt.Errorf("failed to get cluster client for region %s", req.RegionCode)
}
listenerList, err := client.WafV1alpha1().Services(req.Namespace).List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("apigateway_name=%s", req.GatewayName)})
if err != nil {
return nil, fmt.Errorf("failed to get listener list: %v", err)
}
for _, listener := range listenerList.Items {
listener := listener // Create new variable for goroutine
go func() {
log.Info().Msgf("update WAF service mode: %v", listener.Name)
_, err := client.WafV1alpha1().Services(req.Namespace).Update(ctx, &listener, metav1.UpdateOptions{})
if err != nil {
log.Error().Msgf("failed to update WAF service mode: %v", err)
}
}()
}
return &WafService{
GatewayName: req.GatewayName,
Mode: string(req.Mode),
}, nil
} }
func (s *wafService) GetRuleCategories(ctx context.Context) ([]WafRuleCategory, error) { func (s *wafService) GetRuleCategories(ctx context.Context) ([]WafRuleCategory, error) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment