Skip to content

Commit 2208179

Browse files
committed
resolve comments
1 parent 3b3a415 commit 2208179

File tree

5 files changed

+50
-17
lines changed

5 files changed

+50
-17
lines changed

internal/controller/gatewayproxy_controller.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import (
3131
"sigs.k8s.io/controller-runtime/pkg/client"
3232
"sigs.k8s.io/controller-runtime/pkg/handler"
3333
"sigs.k8s.io/controller-runtime/pkg/reconcile"
34-
v1 "sigs.k8s.io/gateway-api/apis/v1"
34+
gatewayv1 "sigs.k8s.io/gateway-api/apis/v1"
3535

3636
"github.com/apache/apisix-ingress-controller/api/v1alpha1"
3737
"github.com/apache/apisix-ingress-controller/internal/controller/indexer"
@@ -64,13 +64,18 @@ func (r *GatewayProxyController) SetupWithManager(mrg ctrl.Manager) error {
6464
}
6565

6666
func (r *GatewayProxyController) Reconcile(ctx context.Context, req ctrl.Request) (reconcile.Result, error) {
67+
var tctx = provider.NewDefaultTranslateContext(ctx)
68+
6769
var gp v1alpha1.GatewayProxy
6870
if err := r.Get(ctx, req.NamespacedName, &gp); err != nil {
69-
return ctrl.Result{}, client.IgnoreNotFound(err)
71+
if client.IgnoreNotFound(err) == nil {
72+
gp.Namespace = req.Namespace
73+
gp.Name = req.Name
74+
err = r.Provider.Update(ctx, tctx, &gp)
75+
}
76+
return ctrl.Result{}, err
7077
}
7178

72-
var tctx = provider.NewDefaultTranslateContext(ctx)
73-
7479
// if there is no provider, update with empty translate context
7580
if gp.Spec.Provider == nil || gp.Spec.Provider.ControlPlane == nil {
7681
return reconcile.Result{}, r.Provider.Update(ctx, tctx, &gp)
@@ -108,7 +113,7 @@ func (r *GatewayProxyController) Reconcile(ctx context.Context, req ctrl.Request
108113

109114
// list Gateways that reference the GatewayProxy
110115
var (
111-
gatewayList v1.GatewayList
116+
gatewayList gatewayv1.GatewayList
112117
ingressClassList networkingv1.IngressClassList
113118
indexKey = indexer.GenIndexKey(gp.GetNamespace(), gp.GetName())
114119
)
@@ -119,11 +124,11 @@ func (r *GatewayProxyController) Reconcile(ctx context.Context, req ctrl.Request
119124

120125
// list IngressClasses that reference the GatewayProxy
121126
if err := r.List(ctx, &ingressClassList, client.MatchingFields{indexer.IngressClassParametersRef: indexKey}); err != nil {
122-
r.Log.Error(err, "failed to list GatewayList")
127+
r.Log.Error(err, "failed to list IngressClassList")
123128
return reconcile.Result{}, err
124129
}
125130

126-
// append referrers to tanslate context
131+
// append referrers to translate context
127132
for _, item := range gatewayList.Items {
128133
tctx.GatewayProxyReferrers[req.NamespacedName] = append(tctx.GatewayProxyReferrers[req.NamespacedName], utils.NamespacedNameKind(&item))
129134
}

internal/controller/indexer/indexer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ func setupGatewayProxyIndexer(mgr ctrl.Manager) error {
245245
context.Background(),
246246
&v1alpha1.GatewayProxy{},
247247
ServiceIndexRef,
248-
GatewayProxyserviceIndexFunc,
248+
GatewayProxyServiceIndexFunc,
249249
); err != nil {
250250
return err
251251
}
@@ -281,7 +281,7 @@ func setupGatewayClassIndexer(mgr ctrl.Manager) error {
281281
)
282282
}
283283

284-
func GatewayProxyserviceIndexFunc(rawOjb client.Object) []string {
284+
func GatewayProxyServiceIndexFunc(rawOjb client.Object) []string {
285285
gatewayProxy := rawOjb.(*v1alpha1.GatewayProxy)
286286
if gatewayProxy.Spec.Provider != nil &&
287287
gatewayProxy.Spec.Provider.ControlPlane != nil &&

test/e2e/crds/gatewayproxy.go

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
package gatewayapi
1919

2020
import (
21+
"context"
2122
"fmt"
2223
"net/http"
2324
"time"
@@ -26,6 +27,7 @@ import (
2627
. "github.com/onsi/ginkgo/v2"
2728
. "github.com/onsi/gomega"
2829
"k8s.io/apimachinery/pkg/types"
30+
"k8s.io/apimachinery/pkg/util/wait"
2931
"k8s.io/utils/ptr"
3032

3133
"github.com/apache/apisix-ingress-controller/test/e2e/framework"
@@ -137,18 +139,35 @@ spec:
137139
Replicas: ptr.To(2),
138140
})
139141

140-
// request every pod to check configuration effect
142+
By("check pod ready")
143+
err = wait.PollUntilContextTimeout(context.Background(), time.Second, 10*time.Second, true, func(ctx context.Context) (done bool, err error) {
144+
pods := s.GetPods(s.Namespace(), "app.kubernetes.io/name=apisix")
145+
if len(pods) != 2 {
146+
return false, nil
147+
}
148+
for _, pod := range pods {
149+
if pod.Status.PodIP == "" {
150+
return false, nil
151+
}
152+
}
153+
return true, nil
154+
})
155+
Expect(err).NotTo(HaveOccurred(), "check pods ready")
156+
157+
By("request every pod to check configuration effect")
141158
pods := s.GetPods(s.Namespace(), "app.kubernetes.io/name=apisix")
142159
for i, pod := range pods {
143160
s.Logf("pod name: %s", pod.GetName())
144161
tunnel := k8s.NewTunnel(s.KubeOpts(), k8s.ResourceTypePod, pod.GetName(), 9080+i, 9080)
145162
err := tunnel.ForwardPortE(s.GinkgoT)
146163
Expect(err).NotTo(HaveOccurred(), "forward pod: %s", pod.Name)
147164

148-
resp := scaffold.NewClient("http", tunnel.Endpoint()).
149-
GET("/get").WithHost("httpbin.org").Expect()
150-
resp.Status(http.StatusOK)
151-
resp.Header("X-Pod-Hostname").IsEqual(pod.Name)
165+
err = wait.PollUntilContextTimeout(context.Background(), time.Second, 30*time.Second, true, func(ctx context.Context) (done bool, err error) {
166+
resp := scaffold.NewClient("http", tunnel.Endpoint()).
167+
GET("/get").WithHost("httpbin.org").Expect().Raw()
168+
return resp.StatusCode == http.StatusOK && resp.Header.Get("X-Pod-Hostname") == pod.GetName(), nil
169+
})
170+
Expect(err).NotTo(HaveOccurred(), "request the pod: %s", pod.GetName())
152171

153172
tunnel.Close()
154173
}

test/e2e/scaffold/apisix_deployer.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,10 @@ func (s *APISIXDeployer) createAdminTunnel(svc *corev1.Service) (*k8s.Tunnel, er
302302
if err := adminTunnel.ForwardPortE(s.t); err != nil {
303303
return nil, err
304304
}
305-
s.addFinalizers(adminTunnel.Close)
305+
s.addFinalizers(func() {
306+
adminTunnel.Close()
307+
s.adminTunnel = nil
308+
})
306309

307310
return adminTunnel, nil
308311
}

test/e2e/scaffold/scaffold.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,13 +313,19 @@ func (s *Scaffold) createDataplaneTunnels(
313313
if err := httpTunnel.ForwardPortE(s.t); err != nil {
314314
return nil, nil, err
315315
}
316-
s.addFinalizers(httpTunnel.Close)
316+
s.addFinalizers(func() {
317+
httpTunnel.Close()
318+
s.apisixHttpTunnel = nil
319+
})
317320

318321
if err := httpsTunnel.ForwardPortE(s.t); err != nil {
319322
httpTunnel.Close()
320323
return nil, nil, err
321324
}
322-
s.addFinalizers(httpsTunnel.Close)
325+
s.addFinalizers(func() {
326+
httpsTunnel.Close()
327+
s.apisixHttpsTunnel = nil
328+
})
323329

324330
return httpTunnel, httpsTunnel, nil
325331
}

0 commit comments

Comments
 (0)