coord nodeconf source, nodeconf service updates

This commit is contained in:
Sergey Cherepanov 2023-04-08 17:01:40 +02:00
parent 86ac8e0d75
commit c843b27b19
No known key found for this signature in database
GPG Key ID: 87F8EDE8FBDF637C
7 changed files with 248 additions and 70 deletions

View File

@ -23,6 +23,7 @@ type CoordinatorClient interface {
StatusCheck(ctx context.Context, spaceId string) (status *coordinatorproto.SpaceStatusPayload, err error) StatusCheck(ctx context.Context, spaceId string) (status *coordinatorproto.SpaceStatusPayload, err error)
SpaceSign(ctx context.Context, payload SpaceSignPayload) (receipt *coordinatorproto.SpaceReceiptWithSignature, err error) SpaceSign(ctx context.Context, payload SpaceSignPayload) (receipt *coordinatorproto.SpaceReceiptWithSignature, err error)
FileLimitCheck(ctx context.Context, spaceId string, identity []byte) (limit uint64, err error) FileLimitCheck(ctx context.Context, spaceId string, identity []byte) (limit uint64, err error)
NetworkConfiguration(ctx context.Context, currentId string) (*coordinatorproto.NetworkConfigurationResponse, error)
app.Component app.Component
} }
@ -128,6 +129,21 @@ func (c *coordinatorClient) FileLimitCheck(ctx context.Context, spaceId string,
return resp.Limit, nil return resp.Limit, nil
} }
func (c *coordinatorClient) NetworkConfiguration(ctx context.Context, currentId string) (resp *coordinatorproto.NetworkConfigurationResponse, err error) {
cl, err := c.client(ctx)
if err != nil {
return
}
resp, err = cl.NetworkConfiguration(ctx, &coordinatorproto.NetworkConfigurationRequest{
CurrentId: currentId,
})
if err != nil {
err = rpcerr.Unwrap(err)
return
}
return
}
func (c *coordinatorClient) client(ctx context.Context) (coordinatorproto.DRPCCoordinatorClient, error) { func (c *coordinatorClient) client(ctx context.Context) (coordinatorproto.DRPCCoordinatorClient, error) {
p, err := c.pool.GetOneOf(ctx, c.nodeConf.CoordinatorPeers()) p, err := c.pool.GetOneOf(ctx, c.nodeConf.CoordinatorPeers())
if err != nil { if err != nil {

View File

@ -771,10 +771,12 @@ func (m *NetworkConfigurationRequest) GetCurrentId() string {
type NetworkConfigurationResponse struct { type NetworkConfigurationResponse struct {
// id of current configuration // id of current configuration
ConfigurationId string `protobuf:"bytes,1,opt,name=configurationId,proto3" json:"configurationId,omitempty"` ConfigurationId string `protobuf:"bytes,1,opt,name=configurationId,proto3" json:"configurationId,omitempty"`
// network id
NetworkId string `protobuf:"bytes,2,opt,name=networkId,proto3" json:"networkId,omitempty"`
// nodes list - it will be empty if the client's currentId is equal configurationId // nodes list - it will be empty if the client's currentId is equal configurationId
Nodes []*Node `protobuf:"bytes,2,rep,name=nodes,proto3" json:"nodes,omitempty"` Nodes []*Node `protobuf:"bytes,3,rep,name=nodes,proto3" json:"nodes,omitempty"`
// unix timestamp of the creation time of configuration // unix timestamp of the creation time of configuration
CreationTimeUnix uint64 `protobuf:"varint,3,opt,name=creationTimeUnix,proto3" json:"creationTimeUnix,omitempty"` CreationTimeUnix uint64 `protobuf:"varint,4,opt,name=creationTimeUnix,proto3" json:"creationTimeUnix,omitempty"`
} }
func (m *NetworkConfigurationResponse) Reset() { *m = NetworkConfigurationResponse{} } func (m *NetworkConfigurationResponse) Reset() { *m = NetworkConfigurationResponse{} }
@ -817,6 +819,13 @@ func (m *NetworkConfigurationResponse) GetConfigurationId() string {
return "" return ""
} }
func (m *NetworkConfigurationResponse) GetNetworkId() string {
if m != nil {
return m.NetworkId
}
return ""
}
func (m *NetworkConfigurationResponse) GetNodes() []*Node { func (m *NetworkConfigurationResponse) GetNodes() []*Node {
if m != nil { if m != nil {
return m.Nodes return m.Nodes
@ -920,64 +929,65 @@ func init() {
} }
var fileDescriptor_d94f6f99586adae2 = []byte{ var fileDescriptor_d94f6f99586adae2 = []byte{
// 911 bytes of a gzipped FileDescriptorProto // 918 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcd, 0x6e, 0x23, 0x45, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xcd, 0x6e, 0x23, 0x45,
0x10, 0xf6, 0xd8, 0x4e, 0x82, 0x6b, 0x22, 0xef, 0xa4, 0x49, 0xc2, 0x60, 0xcc, 0x60, 0x0d, 0xb0, 0x10, 0xf6, 0xd8, 0x4e, 0x82, 0xcb, 0x91, 0x77, 0xd2, 0x24, 0x61, 0x30, 0x66, 0xb0, 0x06, 0x58,
0x98, 0x80, 0xb2, 0x2b, 0x2f, 0x20, 0x10, 0x17, 0xc0, 0x2c, 0x52, 0x10, 0x0a, 0xd1, 0x24, 0x06, 0x4c, 0x40, 0xd9, 0x95, 0x17, 0x10, 0x88, 0x0b, 0x60, 0x16, 0x29, 0x08, 0x85, 0x68, 0x12, 0x83,
0x01, 0x07, 0x34, 0x3b, 0x53, 0x49, 0x5a, 0x71, 0xba, 0x87, 0xee, 0x36, 0x9b, 0x1c, 0x90, 0x78, 0x80, 0x03, 0x9a, 0x9d, 0xa9, 0x24, 0xad, 0x38, 0xdd, 0x43, 0x77, 0x9b, 0x4d, 0x0e, 0x48, 0x3c,
0x04, 0x4e, 0x1c, 0x90, 0x78, 0x03, 0x1e, 0x81, 0x07, 0xe0, 0x98, 0x23, 0x47, 0x94, 0x48, 0x3c, 0x02, 0x27, 0x0e, 0x3c, 0x03, 0x6f, 0x00, 0x0f, 0xc0, 0x31, 0x47, 0x8e, 0x28, 0x91, 0x78, 0x0e,
0x07, 0xea, 0xf9, 0xb1, 0x7b, 0xec, 0x71, 0x82, 0xb4, 0x17, 0xdb, 0xfd, 0xd5, 0xef, 0x57, 0x55, 0xd4, 0xf3, 0xe7, 0x1e, 0x7b, 0x9c, 0x20, 0xed, 0xc5, 0x76, 0x7f, 0xf5, 0xfb, 0x55, 0x55, 0x57,
0x5d, 0x6d, 0x78, 0x37, 0xe2, 0x5c, 0xc4, 0x94, 0x85, 0x8a, 0x8b, 0x07, 0xc6, 0xef, 0x44, 0x70, 0x1b, 0xde, 0x0d, 0x39, 0x17, 0x11, 0x65, 0x81, 0xe2, 0xe2, 0x81, 0xf1, 0x3b, 0x16, 0x5c, 0xf1,
0xc5, 0x1f, 0xa4, 0x9f, 0xd2, 0xc4, 0x77, 0x53, 0x88, 0xd8, 0x06, 0xe4, 0xff, 0x66, 0x81, 0x73, 0x07, 0xc9, 0xa7, 0x34, 0xf1, 0xdd, 0x04, 0x22, 0x6d, 0x03, 0xf2, 0x7e, 0xb3, 0xc0, 0x3e, 0x8c,
0x98, 0x84, 0x11, 0x1e, 0xd2, 0x13, 0x16, 0xe0, 0x0f, 0x13, 0x94, 0x8a, 0xb8, 0xb0, 0x26, 0x35, 0x83, 0x10, 0x0f, 0xe9, 0x09, 0xf3, 0xf1, 0x87, 0x29, 0x4a, 0x45, 0x1c, 0x58, 0x93, 0x1a, 0xdb,
0xb6, 0x17, 0xbb, 0x56, 0xcf, 0xea, 0xb7, 0x82, 0xe2, 0x48, 0xb6, 0x61, 0xf5, 0x14, 0xc3, 0x18, 0x8b, 0x1c, 0xab, 0x6f, 0x0d, 0x5a, 0x7e, 0x7e, 0x24, 0xdb, 0xb0, 0x7a, 0x8a, 0x41, 0x84, 0xc2,
0x85, 0x5b, 0xef, 0x59, 0xfd, 0xf5, 0x20, 0x3f, 0x91, 0x1e, 0xd8, 0x7c, 0x1c, 0xef, 0xc5, 0xc8, 0xa9, 0xf7, 0xad, 0xc1, 0xba, 0x9f, 0x9d, 0x48, 0x1f, 0xda, 0x7c, 0x12, 0xed, 0x45, 0xc8, 0x14,
0x14, 0x55, 0x97, 0x6e, 0x23, 0x15, 0x9a, 0x10, 0x19, 0xc0, 0x26, 0xc3, 0xa7, 0xc5, 0x51, 0x47, 0x55, 0x97, 0x4e, 0x23, 0x11, 0x9a, 0x10, 0x19, 0xc2, 0x26, 0xc3, 0xa7, 0xf9, 0x51, 0x47, 0x0b,
0x0b, 0xd5, 0x44, 0xa0, 0xdb, 0x4c, 0x55, 0x2b, 0x65, 0xbe, 0x02, 0x92, 0xe5, 0xa6, 0x42, 0x35, 0xd4, 0x54, 0xa0, 0xd3, 0x4c, 0x54, 0x2b, 0x65, 0x9e, 0x02, 0x92, 0xe6, 0xa6, 0x02, 0x35, 0x95,
0x91, 0x07, 0xe1, 0xe5, 0x98, 0x87, 0x31, 0x79, 0x08, 0xab, 0x32, 0x05, 0xd2, 0xe4, 0xda, 0x03, 0x07, 0xc1, 0xe5, 0x84, 0x07, 0x11, 0x79, 0x08, 0xab, 0x32, 0x01, 0x92, 0xe4, 0x3a, 0x43, 0x67,
0x77, 0xd7, 0xe4, 0x68, 0x18, 0x04, 0xb9, 0x1e, 0x79, 0x1b, 0x36, 0x62, 0x1c, 0xa3, 0xa2, 0x9c, 0xd7, 0xe4, 0x68, 0x18, 0xf8, 0x99, 0x1e, 0x79, 0x1b, 0x36, 0x22, 0x9c, 0xa0, 0xa2, 0x9c, 0x1d,
0x1d, 0xd1, 0x73, 0x94, 0x2a, 0x3c, 0x4f, 0x52, 0x02, 0x8d, 0x60, 0x51, 0xe0, 0x8f, 0x60, 0xc3, 0xd1, 0x73, 0x94, 0x2a, 0x38, 0x8f, 0x13, 0x02, 0x0d, 0x7f, 0x51, 0xe0, 0x8d, 0x61, 0xc3, 0xa8,
0xa8, 0x88, 0x4c, 0x38, 0x93, 0x48, 0x3e, 0x82, 0x35, 0x81, 0x11, 0xd2, 0x44, 0xa5, 0x51, 0xed, 0x88, 0x8c, 0x39, 0x93, 0x48, 0x3e, 0x82, 0x35, 0x81, 0x21, 0xd2, 0x58, 0x25, 0x51, 0xdb, 0xc3,
0xc1, 0xfd, 0xc5, 0xa8, 0x41, 0xa6, 0xf0, 0x35, 0x55, 0xa7, 0x53, 0x0e, 0x41, 0x61, 0xe6, 0x9f, 0xfb, 0x8b, 0x51, 0xfd, 0x54, 0xe1, 0x6b, 0xaa, 0x4e, 0x0b, 0x0e, 0x7e, 0x6e, 0xe6, 0x9d, 0xc1,
0xc1, 0x8b, 0x4b, 0xb5, 0xc8, 0x43, 0x78, 0x5e, 0x1a, 0xc2, 0x9c, 0x6a, 0x1a, 0x6a, 0x3d, 0xa8, 0x8b, 0x4b, 0xb5, 0xc8, 0x43, 0x78, 0x5e, 0x1a, 0xc2, 0x8c, 0x6a, 0x12, 0x6a, 0xdd, 0xaf, 0x12,
0x12, 0x91, 0x2e, 0xb4, 0xe4, 0xb4, 0x88, 0x59, 0x33, 0x66, 0x80, 0xff, 0xa7, 0x05, 0xeb, 0x66, 0x91, 0x1e, 0xb4, 0x64, 0x51, 0xc4, 0xb4, 0x19, 0x33, 0xc0, 0xfb, 0xd3, 0x82, 0x75, 0x33, 0xda,
0xb4, 0xdb, 0x5b, 0x9a, 0x20, 0x8a, 0xbd, 0x38, 0xf5, 0xd2, 0x0a, 0xf2, 0x13, 0xe9, 0xc3, 0xbd, 0xed, 0x2d, 0x8d, 0x11, 0xc5, 0x5e, 0x94, 0x78, 0x69, 0xf9, 0xd9, 0x89, 0x0c, 0xe0, 0x5e, 0x10,
0x30, 0x8a, 0xf8, 0x84, 0xa9, 0xb9, 0xb6, 0xce, 0xc3, 0x3a, 0xf9, 0x88, 0x33, 0x25, 0xf8, 0x78, 0x86, 0x7c, 0xca, 0xd4, 0x5c, 0x5b, 0xe7, 0x61, 0x9d, 0x7c, 0xc8, 0x99, 0x12, 0x7c, 0xb2, 0xcf,
0x9f, 0xc7, 0x38, 0xd5, 0xce, 0x3a, 0x5b, 0x25, 0x22, 0x1e, 0xc0, 0x8f, 0xe1, 0x98, 0xc6, 0x23, 0x23, 0x2c, 0xb4, 0xd3, 0xce, 0x56, 0x89, 0x88, 0x0b, 0xf0, 0x63, 0x30, 0xa1, 0xd1, 0x98, 0x29,
0xa6, 0xe8, 0xd8, 0x5d, 0xe9, 0x59, 0xfd, 0x66, 0x60, 0x20, 0xfe, 0x77, 0xb0, 0xf5, 0x19, 0x1d, 0x3a, 0x71, 0x56, 0xfa, 0xd6, 0xa0, 0xe9, 0x1b, 0x88, 0xf7, 0x1d, 0x6c, 0x7d, 0x46, 0x27, 0xf8,
0xe3, 0x17, 0xf4, 0x9c, 0xaa, 0xe1, 0x29, 0x46, 0x67, 0xc5, 0x64, 0x56, 0x24, 0x65, 0x55, 0x27, 0x05, 0x3d, 0xa7, 0x6a, 0x74, 0x8a, 0xe1, 0x59, 0x3e, 0x99, 0x15, 0x49, 0x59, 0xd5, 0x49, 0x19,
0x65, 0x10, 0xae, 0x97, 0x08, 0xfb, 0xbb, 0xb0, 0x3d, 0xef, 0x3c, 0x6f, 0xf2, 0x26, 0xac, 0x8c, 0x84, 0xeb, 0x25, 0xc2, 0xde, 0x2e, 0x6c, 0xcf, 0x3b, 0xcf, 0x9a, 0xbc, 0x09, 0x2b, 0x13, 0x8d,
0x35, 0x9a, 0xfa, 0x6c, 0x06, 0xd9, 0xc1, 0x7f, 0x04, 0x2f, 0x18, 0x43, 0x55, 0x4a, 0x67, 0x69, 0x26, 0x3e, 0x9b, 0x7e, 0x7a, 0xf0, 0x1e, 0xc1, 0x0b, 0xc6, 0x50, 0x95, 0xd2, 0x59, 0x5a, 0x55,
0x55, 0xfd, 0x11, 0xb8, 0x8b, 0x46, 0x79, 0x98, 0x0f, 0x60, 0x2d, 0x31, 0x1a, 0x6c, 0x0f, 0x5e, 0x6f, 0x0c, 0xce, 0xa2, 0x51, 0x16, 0xe6, 0x03, 0x58, 0x8b, 0x8d, 0x06, 0xb7, 0x87, 0xaf, 0x2c,
0x59, 0x36, 0xc1, 0x79, 0xb3, 0x83, 0x42, 0xdf, 0xff, 0xd5, 0x9a, 0xf3, 0x1b, 0xb2, 0x13, 0xbc, 0x9b, 0xe0, 0xac, 0xd9, 0x7e, 0xae, 0xef, 0xfd, 0x6a, 0xcd, 0xf9, 0x0d, 0xd8, 0x09, 0xde, 0x7d,
0xfb, 0xda, 0xee, 0x80, 0x53, 0xcc, 0x79, 0x66, 0x32, 0xad, 0xca, 0x02, 0x4e, 0xde, 0x81, 0xad, 0x6d, 0x77, 0xc0, 0xce, 0xe7, 0x3c, 0x35, 0x29, 0xaa, 0xb2, 0x80, 0x93, 0x77, 0x60, 0xab, 0x8c,
0x32, 0x56, 0x0c, 0x63, 0xd6, 0xfd, 0x6a, 0xa1, 0xff, 0x55, 0x3e, 0xdd, 0xe5, 0xbc, 0x9e, 0x9d, 0xe5, 0xc3, 0x98, 0x76, 0xbf, 0x5a, 0xe8, 0x7d, 0x95, 0x4d, 0x77, 0x39, 0xaf, 0x67, 0x27, 0xfc,
0xf0, 0x87, 0xf0, 0xd2, 0x3e, 0xaa, 0xa7, 0x5c, 0x9c, 0x0d, 0x39, 0x3b, 0xa6, 0x27, 0x13, 0x11, 0x21, 0xbc, 0xb4, 0x8f, 0xea, 0x29, 0x17, 0x67, 0x23, 0xce, 0x8e, 0xe9, 0xc9, 0x54, 0x04, 0x3a,
0xea, 0xe0, 0x05, 0xe5, 0x2e, 0xb4, 0xa2, 0x89, 0x10, 0xa8, 0x1b, 0x9f, 0x93, 0x9e, 0x01, 0xfe, 0x78, 0x4e, 0xb9, 0x07, 0xad, 0x70, 0x2a, 0x04, 0xea, 0xc6, 0x67, 0xa4, 0x67, 0x80, 0xf7, 0x87,
0xef, 0x16, 0x74, 0xab, 0xad, 0xf3, 0xc4, 0xfa, 0x70, 0x2f, 0x32, 0x05, 0x53, 0x27, 0xf3, 0x30, 0x05, 0xbd, 0x6a, 0xeb, 0x2c, 0xb1, 0x01, 0xdc, 0x0b, 0x4d, 0x41, 0xe1, 0x64, 0x1e, 0xd6, 0x81,
0x79, 0x03, 0x56, 0x18, 0x8f, 0x51, 0xba, 0xf5, 0x5e, 0xa3, 0x6f, 0x0f, 0x36, 0x4a, 0x04, 0xf4, 0x58, 0xea, 0xa9, 0x28, 0xdd, 0x0c, 0x20, 0x6f, 0xc0, 0x0a, 0xe3, 0x11, 0x4a, 0xa7, 0xd1, 0x6f,
0x6c, 0x07, 0x99, 0x5c, 0x97, 0x3a, 0x12, 0x18, 0x16, 0x2b, 0x65, 0xc4, 0xe8, 0x45, 0x5a, 0xb9, 0x0c, 0xda, 0xc3, 0x8d, 0x12, 0x3d, 0x3d, 0xf9, 0x7e, 0x2a, 0xd7, 0x8d, 0x08, 0x05, 0x06, 0xf9,
0x66, 0xb0, 0x80, 0xfb, 0x14, 0x9a, 0xda, 0xd4, 0xb8, 0x82, 0x56, 0xe9, 0x0a, 0x76, 0xa1, 0x15, 0xc2, 0x19, 0x33, 0x7a, 0x91, 0xdc, 0x93, 0xa6, 0xbf, 0x80, 0x7b, 0x14, 0x9a, 0xda, 0xd4, 0xb8,
0xc6, 0xb1, 0x40, 0x29, 0xf3, 0xc0, 0xad, 0x60, 0x06, 0x90, 0xb7, 0x60, 0x45, 0x5d, 0x26, 0x28, 0xa0, 0x56, 0xe9, 0x82, 0xf6, 0xa0, 0x15, 0x44, 0x91, 0x40, 0x29, 0x51, 0x3a, 0xf5, 0x7e, 0x43,
0xdd, 0x46, 0xaf, 0xd1, 0x6f, 0x0f, 0xb6, 0x16, 0x52, 0x3a, 0xba, 0x4c, 0x30, 0xc8, 0x74, 0x76, 0xa7, 0x54, 0x00, 0xe4, 0x2d, 0x58, 0x51, 0x97, 0x71, 0x96, 0x52, 0x67, 0xb8, 0xb5, 0x90, 0xd2,
0x7e, 0xb6, 0x00, 0x1e, 0x0b, 0xc1, 0xc5, 0x30, 0xcd, 0xb2, 0x0d, 0x30, 0x62, 0x78, 0x91, 0x60, 0xd1, 0x65, 0x8c, 0x7e, 0xaa, 0xb3, 0xf3, 0xb3, 0x05, 0xf0, 0x58, 0x08, 0x2e, 0x46, 0x49, 0x96,
0xa4, 0x30, 0x76, 0x6a, 0xc4, 0xc9, 0xd7, 0xc5, 0xa7, 0xba, 0xb9, 0x18, 0x3b, 0x16, 0x71, 0x61, 0x1d, 0x80, 0x31, 0xc3, 0x8b, 0x18, 0x43, 0x85, 0x91, 0x5d, 0x23, 0x76, 0xb6, 0x4c, 0x3e, 0xd5,
0x73, 0x86, 0x50, 0xce, 0x0e, 0x90, 0xc5, 0x94, 0x9d, 0x38, 0xf5, 0xa9, 0xee, 0x50, 0xd3, 0xc1, 0xad, 0xc7, 0xc8, 0xb6, 0x88, 0x03, 0x9b, 0x33, 0x84, 0x72, 0x76, 0x80, 0x2c, 0xa2, 0xec, 0xc4,
0xd8, 0x69, 0x10, 0x02, 0xed, 0x14, 0xd9, 0xe7, 0xea, 0xf1, 0x05, 0x95, 0x4a, 0x3a, 0x4d, 0xe2, 0xae, 0x17, 0xba, 0x23, 0x4d, 0x07, 0x23, 0xbb, 0x41, 0x08, 0x74, 0x12, 0x64, 0x9f, 0xab, 0xc7,
0x80, 0x9d, 0xc6, 0xfb, 0xf2, 0xf8, 0x58, 0xa2, 0x72, 0xfe, 0xa8, 0xef, 0xfc, 0x04, 0xb6, 0xd1, 0x17, 0x54, 0x2a, 0x69, 0x37, 0x89, 0x0d, 0xed, 0x24, 0xde, 0x97, 0xc7, 0xc7, 0x12, 0x95, 0xfd,
0x69, 0xb2, 0x5d, 0x5a, 0xee, 0x85, 0xb3, 0x1a, 0xf1, 0xa0, 0x63, 0x0e, 0x44, 0x16, 0xb6, 0xc8, 0x7b, 0x7d, 0xe7, 0x27, 0x68, 0x1b, 0x73, 0x40, 0xb6, 0x4b, 0xab, 0x3f, 0x77, 0x56, 0x23, 0x2e,
0xc2, 0xb1, 0xe6, 0xe4, 0x85, 0xe0, 0x50, 0x85, 0x42, 0xdb, 0xd7, 0xe7, 0xfc, 0x16, 0x84, 0x1a, 0x74, 0xcd, 0x71, 0x49, 0xc3, 0xe6, 0x59, 0xd8, 0xd6, 0x9c, 0x3c, 0x17, 0x1c, 0xaa, 0x40, 0x68,
0x3b, 0xef, 0xc3, 0x73, 0x45, 0x51, 0x88, 0x0d, 0x6b, 0x47, 0x02, 0xf1, 0xe3, 0x83, 0x3d, 0xa7, 0xfb, 0xfa, 0x9c, 0xdf, 0x9c, 0x50, 0x63, 0xe7, 0x7d, 0x78, 0x2e, 0x2f, 0x0a, 0x69, 0xc3, 0xda,
0xa6, 0x0f, 0x7a, 0x1f, 0xe8, 0x83, 0xa5, 0xa9, 0x0c, 0x67, 0x65, 0xd4, 0x58, 0x7d, 0xf0, 0x6f, 0x91, 0x40, 0xfc, 0xf8, 0x60, 0xcf, 0xae, 0xe9, 0x83, 0xde, 0x16, 0xfa, 0x60, 0x69, 0x2a, 0xa3,
0x03, 0x6c, 0x03, 0x24, 0x9f, 0x43, 0x6b, 0xfa, 0x40, 0x90, 0x97, 0x2b, 0x46, 0x79, 0xf6, 0x94, 0x59, 0x19, 0x35, 0x56, 0x1f, 0xfe, 0xdb, 0x80, 0xb6, 0x01, 0x92, 0xcf, 0xa1, 0x55, 0x3c, 0x1f,
0x76, 0xbc, 0x65, 0xe2, 0x7c, 0x02, 0xbf, 0x81, 0x76, 0x79, 0x19, 0x11, 0xbf, 0x64, 0x51, 0xb9, 0xe4, 0xe5, 0x8a, 0x41, 0x9f, 0x3d, 0xb4, 0x5d, 0x77, 0x99, 0x38, 0x9b, 0xcf, 0x6f, 0xa0, 0x53,
0x06, 0x3b, 0xaf, 0xde, 0xaa, 0x93, 0xbb, 0xfe, 0xbe, 0x78, 0xd9, 0x67, 0x2b, 0x88, 0xbc, 0xb6, 0x5e, 0x55, 0xc4, 0x2b, 0x59, 0x54, 0x2e, 0xc9, 0xee, 0xab, 0xb7, 0xea, 0x64, 0xae, 0xbf, 0xcf,
0xec, 0xe2, 0x95, 0xdc, 0xbf, 0x7e, 0x87, 0x56, 0x1e, 0xe0, 0x49, 0xf1, 0x50, 0x1a, 0x77, 0x9e, 0xdf, 0xfd, 0xd9, 0x82, 0x22, 0xaf, 0x2d, 0xbb, 0x96, 0x25, 0xf7, 0xaf, 0xdf, 0xa1, 0x95, 0x05,
0xdc, 0x62, 0x6b, 0xec, 0xaa, 0xce, 0xfd, 0xbb, 0xd4, 0xf2, 0x18, 0x67, 0xb0, 0x59, 0x75, 0x83, 0x78, 0x92, 0x3f, 0xa3, 0xc6, 0x46, 0x20, 0xb7, 0xd8, 0x1a, 0x9b, 0xac, 0x7b, 0xff, 0x2e, 0xb5,
0x49, 0xbf, 0x3c, 0xed, 0xcb, 0x57, 0x44, 0xe7, 0xcd, 0xff, 0xa1, 0x99, 0x05, 0xfb, 0xe4, 0xbd, 0x2c, 0xc6, 0x19, 0x6c, 0x56, 0xdd, 0x6f, 0x32, 0x28, 0x4f, 0xfb, 0xf2, 0x05, 0xd2, 0x7d, 0xf3,
0xbf, 0xae, 0x3d, 0xeb, 0xea, 0xda, 0xb3, 0xfe, 0xb9, 0xf6, 0xac, 0x5f, 0x6e, 0xbc, 0xda, 0xd5, 0x7f, 0x68, 0xa6, 0xc1, 0x3e, 0x79, 0xef, 0xaf, 0x6b, 0xd7, 0xba, 0xba, 0x76, 0xad, 0x7f, 0xae,
0x8d, 0x57, 0xfb, 0xfb, 0xc6, 0xab, 0x7d, 0xdb, 0xbd, 0xed, 0xaf, 0xd6, 0x93, 0xd5, 0xf4, 0xeb, 0x5d, 0xeb, 0x97, 0x1b, 0xb7, 0x76, 0x75, 0xe3, 0xd6, 0xfe, 0xbe, 0x71, 0x6b, 0xdf, 0xf6, 0x6e,
0xd1, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xac, 0x4c, 0x78, 0x4a, 0x91, 0x09, 0x00, 0x00, 0xfb, 0x23, 0xf6, 0x64, 0x35, 0xf9, 0x7a, 0xf4, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x48, 0x5e,
0x22, 0xba, 0xaf, 0x09, 0x00, 0x00,
} }
func (m *SpaceSignRequest) Marshal() (dAtA []byte, err error) { func (m *SpaceSignRequest) Marshal() (dAtA []byte, err error) {
@ -1454,7 +1464,7 @@ func (m *NetworkConfigurationResponse) MarshalToSizedBuffer(dAtA []byte) (int, e
if m.CreationTimeUnix != 0 { if m.CreationTimeUnix != 0 {
i = encodeVarintCoordinator(dAtA, i, uint64(m.CreationTimeUnix)) i = encodeVarintCoordinator(dAtA, i, uint64(m.CreationTimeUnix))
i-- i--
dAtA[i] = 0x18 dAtA[i] = 0x20
} }
if len(m.Nodes) > 0 { if len(m.Nodes) > 0 {
for iNdEx := len(m.Nodes) - 1; iNdEx >= 0; iNdEx-- { for iNdEx := len(m.Nodes) - 1; iNdEx >= 0; iNdEx-- {
@ -1467,9 +1477,16 @@ func (m *NetworkConfigurationResponse) MarshalToSizedBuffer(dAtA []byte) (int, e
i = encodeVarintCoordinator(dAtA, i, uint64(size)) i = encodeVarintCoordinator(dAtA, i, uint64(size))
} }
i-- i--
dAtA[i] = 0x12 dAtA[i] = 0x1a
} }
} }
if len(m.NetworkId) > 0 {
i -= len(m.NetworkId)
copy(dAtA[i:], m.NetworkId)
i = encodeVarintCoordinator(dAtA, i, uint64(len(m.NetworkId)))
i--
dAtA[i] = 0x12
}
if len(m.ConfigurationId) > 0 { if len(m.ConfigurationId) > 0 {
i -= len(m.ConfigurationId) i -= len(m.ConfigurationId)
copy(dAtA[i:], m.ConfigurationId) copy(dAtA[i:], m.ConfigurationId)
@ -1758,6 +1775,10 @@ func (m *NetworkConfigurationResponse) Size() (n int) {
if l > 0 { if l > 0 {
n += 1 + l + sovCoordinator(uint64(l)) n += 1 + l + sovCoordinator(uint64(l))
} }
l = len(m.NetworkId)
if l > 0 {
n += 1 + l + sovCoordinator(uint64(l))
}
if len(m.Nodes) > 0 { if len(m.Nodes) > 0 {
for _, e := range m.Nodes { for _, e := range m.Nodes {
l = e.Size() l = e.Size()
@ -3210,6 +3231,38 @@ func (m *NetworkConfigurationResponse) Unmarshal(dAtA []byte) error {
m.ConfigurationId = string(dAtA[iNdEx:postIndex]) m.ConfigurationId = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex iNdEx = postIndex
case 2: case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field NetworkId", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowCoordinator
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthCoordinator
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthCoordinator
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.NetworkId = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 { if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType) return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType)
} }
@ -3243,7 +3296,7 @@ func (m *NetworkConfigurationResponse) Unmarshal(dAtA []byte) error {
return err return err
} }
iNdEx = postIndex iNdEx = postIndex
case 3: case 4:
if wireType != 0 { if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field CreationTimeUnix", wireType) return fmt.Errorf("proto: wrong wireType = %d for field CreationTimeUnix", wireType)
} }

View File

@ -124,10 +124,12 @@ message NetworkConfigurationRequest {
message NetworkConfigurationResponse { message NetworkConfigurationResponse {
// id of current configuration // id of current configuration
string configurationId = 1; string configurationId = 1;
// network id
string networkId = 2;
// nodes list - it will be empty if the client's currentId is equal configurationId // nodes list - it will be empty if the client's currentId is equal configurationId
repeated Node nodes = 2; repeated Node nodes = 3;
// unix timestamp of the creation time of configuration // unix timestamp of the creation time of configuration
uint64 creationTimeUnix = 3; uint64 creationTimeUnix = 4;
} }
// NodeType determines the type of API that a node supports // NodeType determines the type of API that a node supports

View File

@ -0,0 +1,56 @@
package nodeconfsource
import (
"context"
"github.com/anytypeio/any-sync/app"
"github.com/anytypeio/any-sync/coordinator/coordinatorclient"
"github.com/anytypeio/any-sync/nodeconf"
"time"
)
type NodeConfSource interface {
app.Component
nodeconf.Source
}
type nodeConfSource struct {
cl coordinatorclient.CoordinatorClient
}
func (n *nodeConfSource) Init(a *app.App) (err error) {
n.cl = a.MustComponent(coordinatorclient.CName).(coordinatorclient.CoordinatorClient)
return nil
}
func (n *nodeConfSource) Name() (name string) {
return nodeconf.CNameSource
}
func (n *nodeConfSource) GetLast(ctx context.Context, currentId string) (c nodeconf.Configuration, err error) {
res, err := n.cl.NetworkConfiguration(ctx, currentId)
if err != nil {
return
}
if res.ConfigurationId == currentId {
err = nodeconf.ErrConfigurationNotChanged
return
}
nodes := make([]nodeconf.Node, len(res.Nodes))
for i, node := range res.Nodes {
types := make([]nodeconf.NodeType, len(node.Types))
for j, nt := range node.Types {
types[j] = nodeconf.NodeType(nt)
}
nodes[i] = nodeconf.Node{
PeerId: node.PeerId,
Addresses: node.Addresses,
Types: types,
}
}
return nodeconf.Configuration{
Id: res.ConfigurationId,
NetworkId: res.NetworkId,
Nodes: nodes,
CreationTime: time.Unix(int64(res.CreationTimeUnix), 0),
}, nil
}

View File

@ -21,7 +21,7 @@ type NodeConf interface {
ConsensusPeers() []string ConsensusPeers() []string
// CoordinatorPeers returns list of coordinator nodes // CoordinatorPeers returns list of coordinator nodes
CoordinatorPeers() []string CoordinatorPeers() []string
// Addresses returns map[peerId][]addr with connection addresses for all known nodes // PeerAddresses returns peer addresses by peer id
PeerAddresses(peerId string) (addrs []string, ok bool) PeerAddresses(peerId string) (addrs []string, ok bool)
// CHash returns nodes consistent table // CHash returns nodes consistent table
CHash() chash.CHash CHash() chash.CHash

View File

@ -1,12 +1,14 @@
package nodeconf package nodeconf
import ( import (
"context"
commonaccount "github.com/anytypeio/any-sync/accountservice" commonaccount "github.com/anytypeio/any-sync/accountservice"
"github.com/anytypeio/any-sync/app" "github.com/anytypeio/any-sync/app"
"github.com/anytypeio/any-sync/app/logger" "github.com/anytypeio/any-sync/app/logger"
"github.com/anytypeio/go-chash" "github.com/anytypeio/go-chash"
"go.uber.org/zap" "go.uber.org/zap"
"sync" "sync"
"time"
) )
const CName = "common.nodeconf" const CName = "common.nodeconf"
@ -24,25 +26,63 @@ func New() Service {
type Service interface { type Service interface {
NodeConf NodeConf
app.Component app.ComponentRunnable
} }
type service struct { type service struct {
accountId string accountId string
config Configuration
source Source
store Store
last NodeConf last NodeConf
mu sync.RWMutex mu sync.RWMutex
} }
func (s *service) Init(a *app.App) (err error) { func (s *service) Init(a *app.App) (err error) {
nodesConf := a.MustComponent("config").(ConfigGetter) s.config = a.MustComponent("config").(ConfigGetter).GetNodeConf()
s.accountId = a.MustComponent(commonaccount.CName).(commonaccount.Service).Account().PeerId s.accountId = a.MustComponent(commonaccount.CName).(commonaccount.Service).Account().PeerId
return s.setLastConfiguration(nodesConf.GetNodeConf()) s.source = a.MustComponent(CNameSource).(Source)
s.store = a.MustComponent(CNameStore).(Store)
lastStored, err := s.store.GetLast(context.Background(), s.config.NetworkId)
if err == ErrConfigurationNotFound {
lastStored = s.config
err = nil
}
return s.setLastConfiguration(lastStored)
} }
func (s *service) Name() (name string) { func (s *service) Name() (name string) {
return CName return CName
} }
func (s *service) Run(_ context.Context) (err error) {
go s.updateLoop(context.Background())
return
}
func (s *service) updateLoop(ctx context.Context) {
for _ = range time.NewTicker(time.Minute * 10).C {
err := s.updateConfiguration(ctx)
if err != nil {
if err == ErrConfigurationNotChanged {
continue
}
log.Info("can't update configuration", zap.Error(err))
}
}
}
func (s *service) updateConfiguration(ctx context.Context) (err error) {
last, err := s.source.GetLast(ctx, s.Configuration().Id)
if err != nil {
return
}
if err = s.store.SaveLast(ctx, last); err != nil {
return
}
return s.setLastConfiguration(last)
}
func (s *service) setLastConfiguration(c Configuration) (err error) { func (s *service) setLastConfiguration(c Configuration) (err error) {
s.mu.Lock() s.mu.Lock()
defer s.mu.Unlock() defer s.mu.Unlock()
@ -157,3 +197,7 @@ func (s *service) NodeTypes(nodeId string) []NodeType {
defer s.mu.RUnlock() defer s.mu.RUnlock()
return s.last.NodeTypes(nodeId) return s.last.NodeTypes(nodeId)
} }
func (s *service) Close(ctx context.Context) (err error) {
return
}

View File

@ -1,9 +1,16 @@
package nodeconf package nodeconf
import "context" import (
"context"
"errors"
)
const CNameSource = "common.nodeconf.source" const CNameSource = "common.nodeconf.source"
var (
ErrConfigurationNotChanged = errors.New("configuration not changed")
)
type Source interface { type Source interface {
GetLast(ctx context.Context) (c Configuration, err error) GetLast(ctx context.Context, currentId string) (c Configuration, err error)
} }