Added JMESpath to query the state of specific

meshes.
This commit is contained in:
Tim Beatham 2023-10-31 10:34:09 +00:00
parent e56780fdd4
commit aa3d40f82c
3 changed files with 21 additions and 7 deletions

View File

@ -2,15 +2,15 @@ package crdt
// MeshNodeCrdt: Represents a CRDT for a mesh nodes
type MeshNodeCrdt struct {
HostEndpoint string `automerge:"hostEndpoint" json:"hostEndpoint"`
WgEndpoint string `automerge:"wgEndpoint" json:"wgEndpoint"`
PublicKey string `automerge:"publicKey" json:"publicKey"`
WgHost string `automerge:"wgHost" json:"wgHost"`
Timestamp int64 `automerge:"timestamp" json:"timestamp"`
Routes map[string]interface{} `automerge:"routes" json:"routes"`
HostEndpoint string `automerge:"hostEndpoint"`
WgEndpoint string `automerge:"wgEndpoint"`
PublicKey string `automerge:"publicKey"`
WgHost string `automerge:"wgHost"`
Timestamp int64 `automerge:"timestamp"`
Routes map[string]interface{} `automerge:"routes"`
}
// MeshCrdt: Represents the mesh network as a whole
type MeshCrdt struct {
Nodes map[string]MeshNodeCrdt `automerge:"nodes" json:"nodes"`
Nodes map[string]MeshNodeCrdt `automerge:"nodes"`
}

View File

@ -43,3 +43,15 @@ func MapKeys[K comparable, V any](m map[K]V) []K {
return values
}
type convert[V1 any, V2 any] func(V1) V2
func Map[V1 any, V2 any](list []V1, f convert[V1, V2]) []V2 {
newList := make([]V2, len(list))
for i, elem := range list {
newList[i] = f(elem)
}
return newList
}

View File

@ -87,10 +87,12 @@ func (s *SyncServiceImpl) SyncMesh(stream rpc.SyncService_SyncMeshServer) error
if syncer != nil {
syncer.Complete()
}
return nil
}
}
}
func NewSyncService(server *ctrlserver.MeshCtrlServer) *SyncServiceImpl {
return &SyncServiceImpl{Server: server}
}