This is an automated email from the ASF dual-hosted git repository.
alexstocks pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 22bc867 application service discovery support etcd reporter (#1221)
22bc867 is described below
commit 22bc8675307341b9aea4b484d69cd1c714adb896
Author: WilliamLeaves <[email protected]>
AuthorDate: Mon Jun 14 15:34:41 2021 +0800
application service discovery support etcd reporter (#1221)
* modify map use in nacos service_discovery
* fix map double write bug
* etcd app level service discovery implement
* ange variable name; add more asserts for etcd_report tes
* Update report.go
Co-authored-by: yexiaobo <[email protected]>
Co-authored-by: Xin.Zh <[email protected]>
---
metadata/report/delegate/delegate_report.go | 4 ++--
metadata/report/etcd/report.go | 20 ++++++++++++++++----
metadata/report/etcd/report_test.go | 13 +++++++++++++
3 files changed, 31 insertions(+), 6 deletions(-)
diff --git a/metadata/report/delegate/delegate_report.go
b/metadata/report/delegate/delegate_report.go
index cd92fbb..e1495d1 100644
--- a/metadata/report/delegate/delegate_report.go
+++ b/metadata/report/delegate/delegate_report.go
@@ -148,13 +148,13 @@ func NewMetadataReport() (*MetadataReport, error) {
return bmr, nil
}
-// GetAppMetadata delegate get metadata info
+// PublishAppMetadata delegate publish metadata info
func (mr *MetadataReport) PublishAppMetadata(identifier
*identifier.SubscriberMetadataIdentifier, info *common.MetadataInfo) error {
report := instance.GetMetadataReportInstance()
return report.PublishAppMetadata(identifier, info)
}
-// PublishAppMetadata delegate publish metadata info
+// GetAppMetadata delegate get metadata info
func (mr *MetadataReport) GetAppMetadata(identifier
*identifier.SubscriberMetadataIdentifier) (*common.MetadataInfo, error) {
report := instance.GetMetadataReportInstance()
return report.GetAppMetadata(identifier)
diff --git a/metadata/report/etcd/report.go b/metadata/report/etcd/report.go
index 1597130..bec551c 100644
--- a/metadata/report/etcd/report.go
+++ b/metadata/report/etcd/report.go
@@ -18,6 +18,7 @@
package etcd
import (
+ "encoding/json"
"strings"
"time"
)
@@ -52,14 +53,25 @@ type etcdMetadataReport struct {
// GetAppMetadata get metadata info from etcd
func (e *etcdMetadataReport) GetAppMetadata(metadataIdentifier
*identifier.SubscriberMetadataIdentifier) (*common.MetadataInfo, error) {
- // TODO will implement
- panic("implement me")
+ key := e.getNodeKey(metadataIdentifier)
+ data, err := e.client.Get(key)
+ if err != nil {
+ return nil, err
+ }
+
+ info := &common.MetadataInfo{}
+ return info, json.Unmarshal([]byte(data), info)
}
// PublishAppMetadata publish metadata info to etcd
func (e *etcdMetadataReport) PublishAppMetadata(metadataIdentifier
*identifier.SubscriberMetadataIdentifier, info *common.MetadataInfo) error {
- // TODO will implement
- panic("implement me")
+ key := e.getNodeKey(metadataIdentifier)
+ value, err := json.Marshal(info)
+ if err == nil {
+ err = e.client.Put(key, string(value))
+ }
+
+ return err
}
// StoreProviderMetadata will store the metadata
diff --git a/metadata/report/etcd/report_test.go
b/metadata/report/etcd/report_test.go
index a459791..d0162eb 100644
--- a/metadata/report/etcd/report_test.go
+++ b/metadata/report/etcd/report_test.go
@@ -94,8 +94,21 @@ func TestEtcdMetadataReport_CRUD(t *testing.T) {
err = metadataReport.SaveSubscribedData(subMi, string(urls))
assert.Nil(t, err)
+ serviceUrl, _ =
common.NewURL("dubbo://127.0.0.1:20000/com.ikurento.user.UserProvider?interface=com.ikurento.user.UserProvider&group=&version=2.6.0")
+ metadataInfo := common.NewMetadataInfo(subMi.Application, "",
map[string]*common.ServiceInfo{
+ "com.ikurento.user.UserProvider":
common.NewServiceInfoWithURL(serviceUrl),
+ })
err = metadataReport.RemoveServiceMetadata(serviceMi)
assert.Nil(t, err)
+ err = metadataReport.PublishAppMetadata(subMi, metadataInfo)
+ assert.Nil(t, err)
+
+ mdInfo, err := metadataReport.GetAppMetadata(subMi)
+ assert.Nil(t, err)
+ assert.Equal(t, metadataInfo.App, mdInfo.App)
+ assert.Equal(t, metadataInfo.Revision, mdInfo.Revision)
+ assert.Equal(t, 1, len(mdInfo.Services))
+ assert.NotNil(t,
metadataInfo.Services["com.ikurento.user.UserProvider"])
e.Close()
}