You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by ba...@apache.org on 2023/03/17 10:24:13 UTC
[apisix-dashboard] branch master updated: fix: upstream nodes metadata miss (#2773)
This is an automated email from the ASF dual-hosted git repository.
baoyuan 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 4a2b50fff fix: upstream nodes metadata miss (#2773)
4a2b50fff is described below
commit 4a2b50fff0a60e38224116b565a35828b197a8fb
Author: Baoyuan <ba...@gmail.com>
AuthorDate: Fri Mar 17 18:24:05 2023 +0800
fix: upstream nodes metadata miss (#2773)
---
api/internal/core/entity/format.go | 5 +++++
api/internal/core/entity/format_test.go | 37 +++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+)
diff --git a/api/internal/core/entity/format.go b/api/internal/core/entity/format.go
index dcc50c480..d7df2b13c 100644
--- a/api/internal/core/entity/format.go
+++ b/api/internal/core/entity/format.go
@@ -99,6 +99,11 @@ func NodesFormat(obj interface{}) interface{} {
if _, ok := val["priority"]; ok {
node.Priority = int(val["priority"].(float64))
}
+
+ if _, ok := val["metadata"]; ok {
+ node.Metadata = val["metadata"].(map[string]interface{})
+ }
+
nodes = append(nodes, node)
}
return nodes
diff --git a/api/internal/core/entity/format_test.go b/api/internal/core/entity/format_test.go
index b3b5d299e..ef1254204 100644
--- a/api/internal/core/entity/format_test.go
+++ b/api/internal/core/entity/format_test.go
@@ -385,3 +385,40 @@ func TestMapKV2Node(t *testing.T) {
})
}
}
+
+func TestNodesFormatWithMetadata(t *testing.T) {
+ // route data saved in ETCD
+ routeStr := `{
+ "uris": ["/*"],
+ "upstream": {
+ "type": "roundrobin",
+ "nodes": [{
+ "host": "127.0.0.1",
+ "port": 80,
+ "weight": 0,
+ "priority":10,
+ "metadata": {
+ "name": "test"
+ }
+ }]
+ }
+ }`
+
+ // bind struct
+ var route Route
+ err := json.Unmarshal([]byte(routeStr), &route)
+ assert.Nil(t, err)
+
+ // nodes format
+ nodes := NodesFormat(route.Upstream.Nodes)
+
+ // json encode for client
+ res, err := json.Marshal(nodes)
+ 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"`)
+ assert.Contains(t, jsonStr, `"priority":10`)
+ assert.Contains(t, jsonStr, `"metadata":{"name":"test"}`)
+}