@@ -249,36 +249,6 @@ func (r *RuleS2SReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
249
249
localAddressGroups := localService .AddressGroups .Items
250
250
targetAddressGroups := targetService .AddressGroups .Items
251
251
252
- if len (localAddressGroups ) == 0 || len (targetAddressGroups ) == 0 {
253
- // Определяем, у какого именно сервиса отсутствуют адресные группы
254
- var missingAddressGroupsMsg string
255
- if len (localAddressGroups ) == 0 && len (targetAddressGroups ) == 0 {
256
- missingAddressGroupsMsg = fmt .Sprintf ("Both services have no address groups: localService '%s', targetService '%s'" , localService .Name , targetService .Name )
257
- } else if len (localAddressGroups ) == 0 {
258
- missingAddressGroupsMsg = fmt .Sprintf ("LocalService '%s' has no address groups" , localService .Name )
259
- } else {
260
- missingAddressGroupsMsg = fmt .Sprintf ("TargetService '%s' has no address groups" , targetService .Name )
261
- }
262
-
263
- meta .SetStatusCondition (& ruleS2S .Status .Conditions , metav1.Condition {
264
- Type : netguardv1alpha1 .ConditionReady ,
265
- Status : metav1 .ConditionTrue ,
266
- Reason : "ValidConfiguration" ,
267
- Message : fmt .Sprintf ("Rule is valid but inactive: %s" , missingAddressGroupsMsg ),
268
- })
269
- if err := UpdateStatusWithRetry (ctx , r .Client , ruleS2S , DefaultMaxRetries ); err != nil {
270
- logger .Error (err , "Failed to update RuleS2S status" )
271
- }
272
-
273
- // Логируем информацию, но НЕ ставим в очередь повторно
274
- logger .Info (missingAddressGroupsMsg ,
275
- "localService" , localService .Name ,
276
- "targetService" , targetService .Name )
277
-
278
- // Возвращаем пустой Result без RequeueAfter
279
- return ctrl.Result {}, nil
280
- }
281
-
282
252
// Determine which ports to use based on traffic direction
283
253
// In both cases, we use ports from the service that receives the traffic
284
254
var ports []netguardv1alpha1.IngressPort
@@ -290,30 +260,64 @@ func (r *RuleS2SReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ct
290
260
ports = targetService .Spec .IngressPorts
291
261
}
292
262
263
+ // Collect all inactive conditions
264
+ var inactiveConditions []string
265
+
266
+ // Check address groups
267
+ if len (localAddressGroups ) == 0 && len (targetAddressGroups ) == 0 {
268
+ inactiveConditions = append (inactiveConditions ,
269
+ fmt .Sprintf ("Both services have no address groups: localService '%s', targetService '%s'" ,
270
+ localService .Name , targetService .Name ))
271
+ } else if len (localAddressGroups ) == 0 {
272
+ inactiveConditions = append (inactiveConditions ,
273
+ fmt .Sprintf ("LocalService '%s' has no address groups" , localService .Name ))
274
+ } else if len (targetAddressGroups ) == 0 {
275
+ inactiveConditions = append (inactiveConditions ,
276
+ fmt .Sprintf ("TargetService '%s' has no address groups" , targetService .Name ))
277
+ }
278
+
279
+ // Check ports
293
280
if len (ports ) == 0 {
294
- // Определяем, для какого сервиса не определены порты
295
281
var serviceName string
296
282
if strings .ToLower (ruleS2S .Spec .Traffic ) == "ingress" {
297
283
serviceName = fmt .Sprintf ("local service '%s'" , localService .Name )
298
284
} else {
299
285
serviceName = fmt .Sprintf ("target service '%s'" , targetService .Name )
300
286
}
301
287
302
- infoMsg := fmt .Sprintf ("No ports defined for the %s (traffic direction: %s)" ,
303
- serviceName , ruleS2S .Spec .Traffic )
288
+ inactiveConditions = append (inactiveConditions ,
289
+ fmt .Sprintf ("No ports defined for the %s (traffic direction: %s)" ,
290
+ serviceName , ruleS2S .Spec .Traffic ))
291
+ }
292
+
293
+ // If there are any inactive conditions, set status and return
294
+ if len (inactiveConditions ) > 0 {
295
+ // Format the message with line breaks
296
+ var formattedMessage strings.Builder
297
+ formattedMessage .WriteString ("Rule is valid but inactive due to the following reasons:\n " )
298
+
299
+ for i , condition := range inactiveConditions {
300
+ formattedMessage .WriteString (fmt .Sprintf ("%d. %s" , i + 1 , condition ))
301
+ if i < len (inactiveConditions )- 1 {
302
+ formattedMessage .WriteString ("\n " )
303
+ }
304
+ }
304
305
305
306
meta .SetStatusCondition (& ruleS2S .Status .Conditions , metav1.Condition {
306
307
Type : netguardv1alpha1 .ConditionReady ,
307
308
Status : metav1 .ConditionTrue ,
308
309
Reason : "ValidConfiguration" ,
309
- Message : fmt . Sprintf ( "Rule is valid but inactive: %s" , infoMsg ),
310
+ Message : formattedMessage . String ( ),
310
311
})
311
312
if err := UpdateStatusWithRetry (ctx , r .Client , ruleS2S , DefaultMaxRetries ); err != nil {
312
313
logger .Error (err , "Failed to update RuleS2S status" )
313
314
}
314
315
315
316
// Логируем информацию
316
- logger .Info (infoMsg , "traffic" , ruleS2S .Spec .Traffic )
317
+ logger .Info ("Rule is valid but inactive" ,
318
+ "conditions" , strings .Join (inactiveConditions , "; " ),
319
+ "localService" , localService .Name ,
320
+ "targetService" , targetService .Name )
317
321
318
322
// Возвращаем пустой Result без RequeueAfter
319
323
return ctrl.Result {}, nil
0 commit comments