forked from go-chassis/go-chassis
/
sc_convertor.go
executable file
·129 lines (120 loc) · 3.96 KB
/
sc_convertor.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package servicecenter
import (
"github.com/go-chassis/go-chassis/core/registry"
"github.com/go-chassis/go-sc-client"
"github.com/go-chassis/go-sc-client/model"
)
// ToMicroService assign sc micro-service to go chassis micro-service
func ToMicroService(scs *model.MicroService) *registry.MicroService {
cs := ®istry.MicroService{}
cs.ServiceID = scs.ServiceID
cs.ServiceName = scs.ServiceName
cs.Version = scs.Version
cs.AppID = scs.AppID
cs.Metadata = scs.Properties
cs.Schemas = scs.Schemas
cs.Level = scs.Level
cs.Status = scs.Status
if scs.Framework != nil {
cs.Framework = ®istry.Framework{
Name: scs.Framework.Name,
Version: scs.Framework.Version,
}
}
return cs
}
// ToSCService assign go chassis micro-service to the sc micro-service
func ToSCService(cs *registry.MicroService) *model.MicroService {
scs := &model.MicroService{}
scs.ServiceID = cs.ServiceID
scs.ServiceName = cs.ServiceName
scs.Version = cs.Version
scs.AppID = cs.AppID
scs.Environment = cs.Environment
scs.Properties = cs.Metadata
scs.Schemas = cs.Schemas
scs.Level = cs.Level
scs.Status = cs.Status
if cs.Framework != nil {
scs.Framework = &model.Framework{}
scs.Framework.Version = cs.Framework.Version
scs.Framework.Name = cs.Framework.Name
}
scs.RegisterBy = cs.RegisterBy
return scs
}
// ToMicroServiceInstance assign model micro-service instance parameters to registry micro-service instance parameters
func ToMicroServiceInstance(ins *model.MicroServiceInstance) *registry.MicroServiceInstance {
msi := ®istry.MicroServiceInstance{
InstanceID: ins.InstanceID,
Metadata: ins.Properties,
Status: ins.Status,
}
m, p := registry.GetProtocolMap(ins.Endpoints)
msi.EndpointsMap = m
msi.DefaultEndpoint = m[p]
msi.DefaultProtocol = p
if ins.DataCenterInfo != nil {
msi.DataCenterInfo = ®istry.DataCenterInfo{
Name: ins.DataCenterInfo.Name,
AvailableZone: ins.DataCenterInfo.AvailableZone,
Region: ins.DataCenterInfo.Region,
}
}
if msi.Metadata == nil {
msi.Metadata = make(map[string]string)
}
msi.Metadata["version"] = ins.Version
return msi
}
// ToSCInstance assign registry micro-service instance parameters to model micro-service instance parameters
func ToSCInstance(msi *registry.MicroServiceInstance) *model.MicroServiceInstance {
si := &model.MicroServiceInstance{}
eps := registry.GetProtocolList(msi.EndpointsMap)
si.InstanceID = msi.InstanceID
si.Endpoints = eps
si.Properties = msi.Metadata
si.HostName = msi.HostName
si.Status = msi.Status
if msi.DataCenterInfo != nil {
si.DataCenterInfo = &model.DataCenterInfo{}
si.DataCenterInfo.Name = msi.DataCenterInfo.Name
si.DataCenterInfo.AvailableZone = msi.DataCenterInfo.AvailableZone
si.DataCenterInfo.Region = msi.DataCenterInfo.Region
}
return si
}
// ToSCDependency assign registry micro-service dependencies to model micro-service dependencies
func ToSCDependency(dep *registry.MicroServiceDependency) *model.MircroServiceDependencyRequest {
scDep := &model.MircroServiceDependencyRequest{
Dependencies: make([]*model.MicroServiceDependency, 1),
}
scDep.Dependencies[0] = &model.MicroServiceDependency{}
scDep.Dependencies[0].Consumer = &model.DependencyMicroService{
AppID: dep.Consumer.AppID,
ServiceName: dep.Consumer.ServiceName,
Version: dep.Consumer.Version,
}
for _, p := range dep.Providers {
scP := &model.DependencyMicroService{
AppID: p.AppID,
ServiceName: p.ServiceName,
Version: p.Version,
}
scDep.Dependencies[0].Providers = append(scDep.Dependencies[0].Providers, scP)
}
return scDep
}
//ToSCOptions convert registry opstions into sc client options
func ToSCOptions(options registry.Options) client.Options {
sco := client.Options{}
sco.Timeout = options.Timeout
sco.TLSConfig = options.TLSConfig
sco.Addrs = options.Addrs
sco.Compressed = options.Compressed
sco.ConfigTenant = options.Tenant
sco.EnableSSL = options.EnableSSL
sco.Verbose = options.Verbose
sco.Version = options.Version
return sco
}