This is an automated email from the ASF dual-hosted git repository.
tokers pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git
The following commit(s) were added to refs/heads/master by this push:
new 2cc9c76 fix: add name field when create route and upstream (#333)
2cc9c76 is described below
commit 2cc9c7618cac6094c00bf152649f2c5f98bfa9e7
Author: okaybase <[email protected]>
AuthorDate: Fri Apr 2 15:28:56 2021 +0800
fix: add name field when create route and upstream (#333)
Co-authored-by: lixingwang <[email protected]>
Co-authored-by: Alex Zhang <[email protected]>
---
pkg/apisix/resource.go | 2 ++
pkg/apisix/route.go | 6 ++++++
pkg/apisix/upstream.go | 3 +++
test/e2e/ingress/resourcepushing.go | 42 +++++++++++++++++++++++++++++++++++++
test/e2e/scaffold/k8s.go | 5 +++++
5 files changed, 58 insertions(+)
diff --git a/pkg/apisix/resource.go b/pkg/apisix/resource.go
index 7dadb3e..8808788 100644
--- a/pkg/apisix/resource.go
+++ b/pkg/apisix/resource.go
@@ -76,6 +76,7 @@ type routeItem struct {
UpstreamId string `json:"upstream_id"`
ServiceId string `json:"service_id"`
Host string `json:"host"`
+ Hosts []string `json:"hosts"`
URI string `json:"uri"`
Vars [][]v1.StringOrSlice `json:"vars"`
Uris []string `json:"uris"`
@@ -115,6 +116,7 @@ func (i *item) route(clusterName string) (*v1.Route, error)
{
UpstreamId: route.UpstreamId,
ServiceId: route.ServiceId,
Plugins: route.Plugins,
+ Hosts: route.Hosts,
Priority: route.Priority,
}, nil
}
diff --git a/pkg/apisix/route.go b/pkg/apisix/route.go
index 5d3ab20..551e1b7 100644
--- a/pkg/apisix/route.go
+++ b/pkg/apisix/route.go
@@ -30,11 +30,13 @@ import (
type routeReqBody struct {
Desc string `json:"desc,omitempty"`
+ Name string `json:"name,omitempty"`
URI string `json:"uri,omitempty"`
Priority int `json:"priority,omitempty"`
Uris []string `json:"uris,omitempty"`
Vars [][]v1.StringOrSlice `json:"vars,omitempty"`
Host string `json:"host,omitempty"`
+ Hosts []string `json:"hosts,omitempty"`
ServiceId string `json:"service_id,omitempty"`
UpstreamId string `json:"upstream_id,omitempty"`
Plugins v1.Plugins `json:"plugins,omitempty"`
@@ -162,8 +164,10 @@ func (r *routeClient) Create(ctx context.Context, obj
*v1.Route) (*v1.Route, err
data, err := json.Marshal(routeReqBody{
Priority: obj.Priority,
Desc: obj.Name,
+ Name: obj.Name,
URI: obj.Path,
Host: obj.Host,
+ Hosts: obj.Hosts,
ServiceId: obj.ServiceId,
UpstreamId: obj.UpstreamId,
Uris: obj.Uris,
@@ -231,7 +235,9 @@ func (r *routeClient) Update(ctx context.Context, obj
*v1.Route) (*v1.Route, err
body, err := json.Marshal(routeReqBody{
Priority: obj.Priority,
Desc: obj.Name,
+ Name: obj.Name,
Host: obj.Host,
+ Hosts: obj.Hosts,
URI: obj.Path,
ServiceId: obj.ServiceId,
Plugins: obj.Plugins,
diff --git a/pkg/apisix/upstream.go b/pkg/apisix/upstream.go
index bb1077a..826f725 100644
--- a/pkg/apisix/upstream.go
+++ b/pkg/apisix/upstream.go
@@ -67,6 +67,7 @@ type upstreamReqBody struct {
Key string `json:"key,omitempty"`
Nodes upstreamNodes `json:"nodes"`
Desc string `json:"desc"`
+ Name string `json:"name"`
Scheme string `json:"scheme,omitempty"`
Retries int `json:"retries,omitempty"`
Timeout *v1.UpstreamTimeout `json:"timeout,omitempty"`
@@ -199,6 +200,7 @@ func (u *upstreamClient) Create(ctx context.Context, obj
*v1.Upstream) (*v1.Upst
Key: obj.Key,
Nodes: nodes,
Desc: obj.Name,
+ Name: obj.Name,
Scheme: obj.Scheme,
Checks: obj.Checks,
Retries: obj.Retries,
@@ -278,6 +280,7 @@ func (u *upstreamClient) Update(ctx context.Context, obj
*v1.Upstream) (*v1.Upst
Key: obj.Key,
Nodes: nodes,
Desc: obj.Name,
+ Name: obj.Name,
})
if err != nil {
return nil, err
diff --git a/test/e2e/ingress/resourcepushing.go
b/test/e2e/ingress/resourcepushing.go
index 6e3bbe6..54f64de 100644
--- a/test/e2e/ingress/resourcepushing.go
+++ b/test/e2e/ingress/resourcepushing.go
@@ -333,4 +333,46 @@ spec:
resp.Body().Contains("origin")
resp.Header("X-Request-Id").NotEmpty()
})
+
+ ginkgo.It("verify route items", func() {
+ backendSvc, backendSvcPort := s.DefaultHTTPBackend()
+ apisixRoute := fmt.Sprintf(`
+apiVersion: apisix.apache.org/v2alpha1
+kind: ApisixRoute
+metadata:
+ name: httpbin-route
+spec:
+ http:
+ - name: rule1
+ priority: 1
+ match:
+ hosts:
+ - httpbin.com
+ paths:
+ - /ip
+ backend:
+ serviceName: %s
+ servicePort: %d
+`, backendSvc, backendSvcPort[0])
+
+ assert.Nil(ginkgo.GinkgoT(),
s.CreateResourceFromString(apisixRoute), "creating ApisixRoute")
+ assert.Nil(ginkgo.GinkgoT(), s.EnsureNumApisixRoutesCreated(1))
+ assert.Nil(ginkgo.GinkgoT(),
s.EnsureNumApisixUpstreamsCreated(1))
+
+ routes, err := s.ListApisixRoutes()
+ assert.Nil(ginkgo.GinkgoT(), err, "listing routes")
+ assert.Len(ginkgo.GinkgoT(), routes, 1)
+ name := s.Namespace() + "_" + "httpbin-route" + "_" + "rule1"
+ assert.Equal(ginkgo.GinkgoT(), routes[0].Name, name)
+ assert.Equal(ginkgo.GinkgoT(), routes[0].Uris, []string{"/ip"})
+ assert.Equal(ginkgo.GinkgoT(), routes[0].Hosts,
[]string{"httpbin.com"})
+
+ resp := s.NewAPISIXClient().GET("/ip").WithHeader("Host",
"httpbin.com").Expect()
+ resp.Status(http.StatusOK)
+ resp.Body().Contains("origin")
+
+ resp = s.NewAPISIXClient().GET("/ip").Expect()
+ resp.Status(http.StatusNotFound)
+ resp.Body().Contains("404 Route Not Found")
+ })
})
diff --git a/test/e2e/scaffold/k8s.go b/test/e2e/scaffold/k8s.go
index a87a55f..37f8868 100644
--- a/test/e2e/scaffold/k8s.go
+++ b/test/e2e/scaffold/k8s.go
@@ -276,3 +276,8 @@ func (s *Scaffold) newAPISIXTunnels() error {
s.addFinalizers(s.apisixHttpsTunnel.Close)
return nil
}
+
+// Namespace returns the current working namespace.
+func (s *Scaffold) Namespace() string {
+ return s.kubectlOptions.Namespace
+}