From dff6bc6315eb53c4fd65ac06543af6db4b5dbaef Mon Sep 17 00:00:00 2001 From: denis-tingajkin Date: Sun, 4 Jul 2021 03:44:04 +0700 Subject: [PATCH] fix deployments-k8s#2008 Signed-off-by: denis-tingajkin --- pkg/registry/etcd/ns_server.go | 3 +++ pkg/registry/etcd/ns_server_test.go | 34 ++++++++++++++++++++++++++++ pkg/registry/etcd/nse_server.go | 3 +++ pkg/registry/etcd/nse_server_test.go | 32 ++++++++++++++++++++++++++ 4 files changed, 72 insertions(+) diff --git a/pkg/registry/etcd/ns_server.go b/pkg/registry/etcd/ns_server.go index ed660cf..9ed534e 100644 --- a/pkg/registry/etcd/ns_server.go +++ b/pkg/registry/etcd/ns_server.go @@ -104,6 +104,9 @@ func (n *etcdNSRegistryServer) Find(query *registry.NetworkServiceQuery, s regis } for i := 0; i < len(list.Items); i++ { item := (*registry.NetworkService)(&list.Items[i].Spec) + if item.Name == "" { + item.Name = list.Items[i].Name + } if matchutils.MatchNetworkServices(query.NetworkService, item) { err := s.Send(item) if err != nil { diff --git a/pkg/registry/etcd/ns_server_test.go b/pkg/registry/etcd/ns_server_test.go index 198862a..ebdd8e3 100644 --- a/pkg/registry/etcd/ns_server_test.go +++ b/pkg/registry/etcd/ns_server_test.go @@ -19,11 +19,16 @@ package etcd_test import ( "context" "testing" + "time" "github.com/networkservicemesh/api/pkg/api/registry" "github.com/stretchr/testify/require" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/networkservicemesh/sdk/pkg/registry/core/adapters" "github.com/networkservicemesh/sdk-k8s/pkg/registry/etcd" + v1 "github.com/networkservicemesh/sdk-k8s/pkg/tools/k8s/apis/networkservicemesh.io/v1" "github.com/networkservicemesh/sdk-k8s/pkg/tools/k8s/client/clientset/versioned/fake" ) @@ -34,3 +39,32 @@ func Test_NSReRegister(t *testing.T) { _, err = s.Register(context.Background(), ®istry.NetworkService{Name: "ns-1", Payload: "IP"}) require.NoError(t, err) } + +func Test_K8sNERegistry_ShouldMatchMetadataToName(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + + var myClientset = fake.NewSimpleClientset() + + _, err := myClientset.NetworkservicemeshV1().NetworkServices("default").Create(ctx, &v1.NetworkService{ + ObjectMeta: metav1.ObjectMeta{ + Name: "ns-1", + }, + }, metav1.CreateOptions{}) + require.NoError(t, err) + + s := etcd.NewNetworkServiceRegistryServer(ctx, "default", myClientset) + c := adapters.NetworkServiceServerToClient(s) + + stream, err := c.Find(ctx, ®istry.NetworkServiceQuery{ + NetworkService: ®istry.NetworkService{ + Name: "ns-1", + }, + }) + require.NoError(t, err) + + nse, err := stream.Recv() + require.NoError(t, err) + + require.Equal(t, "ns-1", nse.Name) +} diff --git a/pkg/registry/etcd/nse_server.go b/pkg/registry/etcd/nse_server.go index 0273c42..ff32d12 100644 --- a/pkg/registry/etcd/nse_server.go +++ b/pkg/registry/etcd/nse_server.go @@ -81,6 +81,9 @@ func (n *etcdNSERegistryServer) Find(query *registry.NetworkServiceEndpointQuery } for i := 0; i < len(list.Items); i++ { item := (*registry.NetworkServiceEndpoint)(&list.Items[i].Spec) + if item.Name == "" { + item.Name = list.Items[i].Name + } if matchutils.MatchNetworkServiceEndpoints(query.NetworkServiceEndpoint, item) { err := s.Send(item) if err != nil { diff --git a/pkg/registry/etcd/nse_server_test.go b/pkg/registry/etcd/nse_server_test.go index ec73ee0..1a81304 100644 --- a/pkg/registry/etcd/nse_server_test.go +++ b/pkg/registry/etcd/nse_server_test.go @@ -18,11 +18,16 @@ package etcd_test import ( "context" "testing" + "time" "github.com/networkservicemesh/api/pkg/api/registry" "github.com/stretchr/testify/require" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + "github.com/networkservicemesh/sdk/pkg/registry/core/adapters" "github.com/networkservicemesh/sdk-k8s/pkg/registry/etcd" + v1 "github.com/networkservicemesh/sdk-k8s/pkg/tools/k8s/apis/networkservicemesh.io/v1" "github.com/networkservicemesh/sdk-k8s/pkg/tools/k8s/client/clientset/versioned/fake" ) @@ -33,3 +38,30 @@ func Test_NSEReRegister(t *testing.T) { _, err = s.Register(context.Background(), ®istry.NetworkServiceEndpoint{Name: "nse-1", NetworkServiceNames: []string{"ns-1"}}) require.NoError(t, err) } + +func Test_K8sNSERegistry_ShouldMatchMetadataToName(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + + var myClientset = fake.NewSimpleClientset() + _, err := myClientset.NetworkservicemeshV1().NetworkServiceEndpoints("default").Create(ctx, &v1.NetworkServiceEndpoint{ + ObjectMeta: metav1.ObjectMeta{ + Name: "nse-1", + }, + }, metav1.CreateOptions{}) + require.NoError(t, err) + + s := etcd.NewNetworkServiceEndpointRegistryServer(ctx, "default", myClientset) + c := adapters.NetworkServiceEndpointServerToClient(s) + stream, err := c.Find(ctx, ®istry.NetworkServiceEndpointQuery{ + NetworkServiceEndpoint: ®istry.NetworkServiceEndpoint{ + Name: "nse-1", + }, + }) + require.NoError(t, err) + + nse, err := stream.Recv() + require.NoError(t, err) + + require.Equal(t, "nse-1", nse.Name) +}