This is an automated email from the ASF dual-hosted git repository.

chenjunxu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-dashboard.git


The following commit(s) were added to refs/heads/master by this push:
     new d42d2e8  fix: upstream node can't display when the node's weight is 
set to 0 (#934)
d42d2e8 is described below

commit d42d2e8fdf009a2493115e18e60624899fa6bc60
Author: nic-chen <[email protected]>
AuthorDate: Tue Dec 1 17:20:48 2020 +0800

    fix: upstream node can't display when the node's weight is set to 0 (#934)
---
 api/internal/core/entity/format.go      |  3 ++-
 api/internal/core/entity/format_test.go | 21 +++++++++++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/api/internal/core/entity/format.go 
b/api/internal/core/entity/format.go
index a1384b4..c4bb9f9 100644
--- a/api/internal/core/entity/format.go
+++ b/api/internal/core/entity/format.go
@@ -72,8 +72,9 @@ func NodesFormat(obj interface{}) interface{} {
                return nodes
        case []*Node:
                log.Infof("nodes type: %v", objType)
-               return nodes
+               return obj
        case []interface{}:
+               log.Infof("nodes type []interface{}: %v", objType)
                list := obj.([]interface{})
                for _, v := range list {
                        val := v.(map[string]interface{})
diff --git a/api/internal/core/entity/format_test.go 
b/api/internal/core/entity/format_test.go
index ab63232..7ca9d4c 100644
--- a/api/internal/core/entity/format_test.go
+++ b/api/internal/core/entity/format_test.go
@@ -54,6 +54,27 @@ func TestNodesFormat(t *testing.T) {
        assert.Contains(t, jsonStr, `"host":"127.0.0.1"`)
 }
 
+func TestNodesFormat_struct(t *testing.T) {
+       // route data saved in ETCD
+       var route Route
+       route.Uris = []string{"/*"}
+       route.Upstream = &UpstreamDef{}
+       route.Upstream.Type = "roundrobin"
+       var nodes = []*Node{{Host: "127.0.0.1", Port: 80, Weight: 0}}
+       route.Upstream.Nodes = nodes
+
+       // nodes format
+       formattedNodes := NodesFormat(route.Upstream.Nodes)
+
+       // json encode for client
+       res, err := json.Marshal(formattedNodes)
+       assert.Nil(t, err)
+       jsonStr := string(res)
+       assert.Contains(t, jsonStr, `"weight":0`)
+       assert.Contains(t, jsonStr, `"port":80`)
+       assert.Contains(t, jsonStr, `"host":"127.0.0.1"`)
+}
+
 func TestNodesFormat_Map(t *testing.T) {
        // route data saved in ETCD
        routeStr := `{

Reply via email to