forked from cisco-app-networking/networkservicemesh
/
nsm.go
63 lines (48 loc) · 1.67 KB
/
nsm.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
package registryserver
import (
"context"
"github.com/pkg/errors"
"cisco-app-networking.github.io/networkservicemesh/pkg/tools/spanhelper"
"github.com/golang/protobuf/ptypes/empty"
"github.com/sirupsen/logrus"
"cisco-app-networking.github.io/networkservicemesh/controlplane/api/registry"
)
type nsmRegistryService struct {
nsmName string
cache RegistryCache
}
func newNsmRegistryService(nsmName string, cache RegistryCache) *nsmRegistryService {
return &nsmRegistryService{
nsmName: nsmName,
cache: cache,
}
}
func (n *nsmRegistryService) RegisterNSM(ctx context.Context, nsm *registry.NetworkServiceManager) (*registry.NetworkServiceManager, error) {
span := spanhelper.FromContext(ctx, "RegisterNSM")
defer span.Finish()
span.LogObject("nsm", nsm)
nsmCr := mapNsmToCustomResource(nsm)
nsmCr.SetName(n.nsmName)
span.LogObject("nsm-cr", nsmCr)
registeredNsm, err := n.cache.CreateOrUpdateNetworkServiceManager(nsmCr)
span.LogObject("registered-nsm", registeredNsm)
if err != nil {
err = errors.Wrap(err, "failed to create or update nsm: %s")
span.LogError(err)
return nil, err
}
nsm = mapNsmFromCustomResource(registeredNsm)
span.LogObject("response", nsm)
return nsm, nil
}
func (n *nsmRegistryService) GetEndpoints(context.Context, *empty.Empty) (*registry.NetworkServiceEndpointList, error) {
logrus.Info("Received GetEndpoints")
var response []*registry.NetworkServiceEndpoint
for _, endpoint := range n.cache.GetEndpointsByNsm(n.nsmName) {
response = append(response, mapNseFromCustomResource(endpoint))
}
logrus.Infof("GetEndpoints return: %v", response)
return ®istry.NetworkServiceEndpointList{
NetworkServiceEndpoints: response,
}, nil
}