@@ -67,24 +67,24 @@ func (r *LoxilbIngressReconciler) Reconcile(ctx context.Context, req ctrl.Reques
67
67
// when ingress is added, install rule to loxilb-ingress
68
68
models , err := r .createLoxiModelList (ctx , ingress )
69
69
if err != nil {
70
- logger .Error (err , "Failed to set ingress. failed to create loxilb loadbalancer model" , "[]loxiapi.LoadBalancerModel" , models )
70
+ logger .Info ("failed to create loxilb loadbalancer model" , "error" , err )
71
+ return ctrl.Result {}, err
71
72
}
72
73
73
- logger .V ( 4 ). Info ("createLoxiModelList return models:" , "[]loxiapi.LoadBalancerModel" , models )
74
+ logger .Info ("createLoxiModelList return models:" , "[]loxiapi.LoadBalancerModel" , models )
74
75
75
76
for _ , model := range models {
76
77
err = r .LoxiClient .LoadBalancer ().Create (ctx , & model )
77
78
if err != nil {
78
79
if err .Error () != "lbrule-exists error" {
79
- logger .Error (err , "Failed to set ingress. failed to install loadbalancer rule to loxilb" , "loxiapi.LoadBalancerModel" , model )
80
+ logger .Error (err , "failed to install loadbalancer rule to loxilb" , "loxiapi.LoadBalancerModel" , model )
80
81
return ctrl.Result {}, err
81
82
}
82
83
}
83
84
}
84
85
85
86
if err := r .updateIngressStatus (ctx , ingress ); err != nil {
86
- logger .Error (err , "Failed to update ingress status." , "ingress" , ingress )
87
- return ctrl.Result {}, err
87
+ logger .Info ("failed to update ingress status." , "error" , err )
88
88
}
89
89
90
90
logger .Info ("This resource is created" , "ingress" , ingress )
@@ -134,8 +134,8 @@ func (r *LoxilbIngressReconciler) createLoxiLoadBalancerEndpoints(ctx context.Co
134
134
}
135
135
}
136
136
137
- if len (loxilbEpList ) = = 0 {
138
- return loxilbEpList , fmt .Errorf ("backend %s/%s service has no endpoint now " , ns , name )
137
+ if len (loxilbEpList ) < = 0 {
138
+ return loxilbEpList , fmt .Errorf ("no endpoints have been added to the %s/%s service yet. please wait " , ns , name )
139
139
}
140
140
141
141
return loxilbEpList , nil
@@ -219,6 +219,10 @@ func (r *LoxilbIngressReconciler) updateIngressStatus(ctx context.Context, ingre
219
219
}
220
220
221
221
for _ , ing := range svc .Status .LoadBalancer .Ingress {
222
+ if r .checkIngressLoadBalancerIngressExist (ingress , ing ) {
223
+ continue
224
+ }
225
+
222
226
newIngressLoadBalancerIngress := netv1.IngressLoadBalancerIngress {
223
227
IP : ing .IP ,
224
228
Hostname : ing .Hostname ,
@@ -238,6 +242,23 @@ func (r *LoxilbIngressReconciler) updateIngressStatus(ctx context.Context, ingre
238
242
return r .Client .Status ().Update (ctx , ingress )
239
243
}
240
244
245
+ func (r * LoxilbIngressReconciler ) checkIngressLoadBalancerIngressExist (ingress * netv1.Ingress , serviceIngress corev1.LoadBalancerIngress ) bool {
246
+ for _ , i := range ingress .Status .LoadBalancer .Ingress {
247
+ if i .IP != "" {
248
+ if i .IP == serviceIngress .IP {
249
+ return true
250
+ }
251
+ }
252
+ if i .Hostname != "" {
253
+ if i .Hostname == serviceIngress .Hostname {
254
+ return true
255
+ }
256
+ }
257
+ }
258
+
259
+ return false
260
+ }
261
+
241
262
func (r * LoxilbIngressReconciler ) SetupWithManager (mgr ctrl.Manager ) error {
242
263
checkIngClassNameFunc := func (ing * netv1.Ingress ) bool {
243
264
if ing .Spec .IngressClassName != nil {
0 commit comments