From 1b302adf5527e2cc46a27eab96ba8651aff0a373 Mon Sep 17 00:00:00 2001 From: Mikhail Avramenko Date: Mon, 13 Dec 2021 13:21:37 +0700 Subject: [PATCH] returned old excludedPrefixServer implementation, added client Signed-off-by: Mikhail Avramenko --- .../common/excludedprefixes/client.go | 2 + .../common/excludedprefixes/client_test.go | 94 +++++++++++--- .../common/excludedprefixes/metadata.go | 48 -------- .../common/excludedprefixes/server.go | 50 +------- .../common/excludedprefixes/server_test.go | 116 ++++-------------- .../common/excludedprefixes/utils.go | 40 ------ 6 files changed, 105 insertions(+), 245 deletions(-) delete mode 100644 pkg/networkservice/common/excludedprefixes/metadata.go diff --git a/pkg/networkservice/common/excludedprefixes/client.go b/pkg/networkservice/common/excludedprefixes/client.go index f9607df8e..64aa51701 100644 --- a/pkg/networkservice/common/excludedprefixes/client.go +++ b/pkg/networkservice/common/excludedprefixes/client.go @@ -112,6 +112,8 @@ func (epc *excludedPrefixesClient) Request(ctx context.Context, request *network logger.Debugf("Added excluded prefixes: %+v", epc.excludedPrefixes) }) + ipCtx.ExcludedPrefixes = oldExcludedPrefixes + return resp, err } diff --git a/pkg/networkservice/common/excludedprefixes/client_test.go b/pkg/networkservice/common/excludedprefixes/client_test.go index ecb397b65..380899304 100644 --- a/pkg/networkservice/common/excludedprefixes/client_test.go +++ b/pkg/networkservice/common/excludedprefixes/client_test.go @@ -30,6 +30,8 @@ import ( "github.com/networkservicemesh/sdk/pkg/networkservice/core/adapters" "github.com/networkservicemesh/sdk/pkg/networkservice/core/chain" "github.com/networkservicemesh/sdk/pkg/networkservice/ipam/point2pointipam" + "github.com/networkservicemesh/sdk/pkg/networkservice/utils/checks/checkconnection" + "github.com/networkservicemesh/sdk/pkg/networkservice/utils/checks/checkrequest" "github.com/networkservicemesh/sdk/pkg/networkservice/utils/inject/injecterror" "github.com/networkservicemesh/sdk/pkg/networkservice/utils/inject/injectexcludedprefixes" "github.com/networkservicemesh/sdk/pkg/networkservice/utils/inject/injectipcontext" @@ -108,7 +110,16 @@ func TestExcludedPrefixesClient_Request_SrcAndDestPrefixesAreDifferent(t *testin Connection: &networkservice.Connection{}, } - resp, err = chain.NewNetworkServiceClient(client, server2).Request(ctx, request2) + resp, err = chain.NewNetworkServiceClient( + client, + checkconnection.NewClient(t, func(t *testing.T, conn *networkservice.Connection) { + if conn.GetContext() == nil || conn.GetContext().GetIpContext() == nil { + return + } + require.ElementsMatch(t, expectedExcludedIPs, conn.GetContext().GetIpContext().GetExcludedPrefixes()) + }), + server2, + ).Request(ctx, request2) require.NoError(t, err) srcIPs = resp.GetContext().GetIpContext().GetSrcIpAddrs() @@ -116,9 +127,6 @@ func TestExcludedPrefixesClient_Request_SrcAndDestPrefixesAreDifferent(t *testin srcIP2 := srcIPs[0] require.NotEqual(t, srcIP1, srcIP2) - - excludedIPs := resp.GetContext().GetIpContext().GetExcludedPrefixes() - require.ElementsMatch(t, expectedExcludedIPs, excludedIPs) } func TestExcludedPrefixesClient_Close_PrefixesAreRemoved(t *testing.T) { @@ -197,10 +205,17 @@ func TestExcludedPrefixesClient_Request_WithExcludedPrefixes(t *testing.T) { point2pointipam.NewServer(ipNet), ) - resp, err = chain.NewNetworkServiceClient(client, server2).Request(ctx, request2) + _, err = chain.NewNetworkServiceClient( + client, + checkconnection.NewClient(t, func(t *testing.T, conn *networkservice.Connection) { + if conn.GetContext() == nil || conn.GetContext().GetIpContext() == nil { + return + } + require.ElementsMatch(t, expectedExcludedPrefixes, conn.GetContext().GetIpContext().GetExcludedPrefixes()) + }), + server2, + ).Request(ctx, request2) require.NoError(t, err) - - require.ElementsMatch(t, expectedExcludedPrefixes, resp.GetContext().GetIpContext().GetExcludedPrefixes()) } func TestExcludedPrefixesClient_Request_PrefixesUnchangedAfterError(t *testing.T) { @@ -261,10 +276,17 @@ func TestExcludedPrefixesClient_Request_PrefixesUnchangedAfterError(t *testing.T point2pointipam.NewServer(ipNet)), ) - resp, err = chain.NewNetworkServiceClient(client, server3).Request(ctx, request3) + _, err = chain.NewNetworkServiceClient( + client, + checkconnection.NewClient(t, func(t *testing.T, conn *networkservice.Connection) { + if conn.GetContext() == nil || conn.GetContext().GetIpContext() == nil { + return + } + require.ElementsMatch(t, expectedExcludedPrefixes, conn.GetContext().GetIpContext().GetExcludedPrefixes()) + }), + server3, + ).Request(ctx, request3) require.NoError(t, err) - - require.ElementsMatch(t, expectedExcludedPrefixes, resp.GetContext().GetIpContext().GetExcludedPrefixes()) } func TestExcludedPrefixesClient_Request_SuccessfulRefresh(t *testing.T) { @@ -307,11 +329,18 @@ func TestExcludedPrefixesClient_Request_SuccessfulRefresh(t *testing.T) { // src/dest IPs from first server should still be present in a request to another server expectedExcludedPrefixes2 := []string{"172.16.0.99/32", "172.16.0.97/32", "172.16.0.96/32", "172.16.0.98/32", "172.16.0.100/32"} - resp, err = chain.NewNetworkServiceClient(client, server1).Request(ctx, request) + _, err = chain.NewNetworkServiceClient( + client, + checkconnection.NewClient(t, func(t *testing.T, conn *networkservice.Connection) { + if conn.GetContext() == nil || conn.GetContext().GetIpContext() == nil { + return + } + require.ElementsMatch(t, expectedExcludedPrefixes, conn.GetContext().GetIpContext().GetExcludedPrefixes()) + }), + server1, + ).Request(ctx, request) require.NoError(t, err) - require.ElementsMatch(t, expectedExcludedPrefixes, resp.GetContext().GetIpContext().GetExcludedPrefixes()) - server2 := chain.NewNetworkServiceClient( adapters.NewServerToClient( point2pointipam.NewServer(ipNet)), @@ -321,10 +350,17 @@ func TestExcludedPrefixesClient_Request_SuccessfulRefresh(t *testing.T) { Connection: &networkservice.Connection{}, } - resp, err = chain.NewNetworkServiceClient(client, server2).Request(ctx, request2) + _, err = chain.NewNetworkServiceClient( + client, + checkconnection.NewClient(t, func(t *testing.T, conn *networkservice.Connection) { + if conn.GetContext() == nil || conn.GetContext().GetIpContext() == nil { + return + } + require.ElementsMatch(t, expectedExcludedPrefixes2, conn.GetContext().GetIpContext().GetExcludedPrefixes()) + }), + server2, + ).Request(ctx, request2) require.NoError(t, err) - - require.ElementsMatch(t, expectedExcludedPrefixes2, resp.GetContext().GetIpContext().GetExcludedPrefixes()) } func TestExcludedPrefixesClient_Request_EndpointConflicts(t *testing.T) { @@ -451,3 +487,29 @@ func TestExcludedPrefixesClient_Request_EndpointConflictCloseError(t *testing.T) require.Error(t, err) require.Contains(t, err.Error(), "connection closed") } + +func TestClient(t *testing.T) { + reqPrefixes := []string{"100.1.1.0/13", "10.32.0.0/12", "10.96.0.0/12"} + + client := chain.NewNetworkServiceClient( + excludedprefixes.NewClient(), + checkrequest.NewClient(t, func(t *testing.T, request *networkservice.NetworkServiceRequest) { + request.Connection.Context.IpContext.ExcludedPrefixes = append(request.Connection.Context.IpContext.ExcludedPrefixes, []string{"172.16.2.0/24"}...) + }), + ) + + req := &networkservice.NetworkServiceRequest{ + Connection: &networkservice.Connection{ + Context: &networkservice.ConnectionContext{ + IpContext: &networkservice.IPContext{ + ExcludedPrefixes: reqPrefixes, + }, + }, + }, + } + + _, err := client.Request(context.Background(), req) + + require.ElementsMatch(t, reqPrefixes, req.Connection.Context.IpContext.ExcludedPrefixes) + require.NoError(t, err) +} diff --git a/pkg/networkservice/common/excludedprefixes/metadata.go b/pkg/networkservice/common/excludedprefixes/metadata.go deleted file mode 100644 index 67fc04064..000000000 --- a/pkg/networkservice/common/excludedprefixes/metadata.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright (c) 2021 Doc.ai and/or its affiliates. -// -// SPDX-License-Identifier: Apache-2.0 -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at: -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package excludedprefixes - -import ( - "context" - - "github.com/networkservicemesh/sdk/pkg/networkservice/utils/metadata" -) - -type keyType struct{} - -type prefixesInfo struct { - previousFilePrefixes []string - previousClientPrefixes []string - previousDiff []string -} - -func load(ctx context.Context) (prefixesInfo, bool) { - val, ok := metadata.Map(ctx, false).Load(keyType{}) - if !ok { - return prefixesInfo{}, false - } - - return val.(prefixesInfo), true -} - -func store(ctx context.Context, info prefixesInfo) { - metadata.Map(ctx, false).Store(keyType{}, info) -} - -func del(ctx context.Context) { - metadata.Map(ctx, false).Delete(keyType{}) -} diff --git a/pkg/networkservice/common/excludedprefixes/server.go b/pkg/networkservice/common/excludedprefixes/server.go index ef3a88323..400e1f37a 100644 --- a/pkg/networkservice/common/excludedprefixes/server.go +++ b/pkg/networkservice/common/excludedprefixes/server.go @@ -22,7 +22,6 @@ package excludedprefixes import ( "context" - "sort" "sync" "sync/atomic" @@ -88,56 +87,15 @@ func (eps *excludedPrefixesServer) Request(ctx context.Context, request *network if conn.GetContext().GetIpContext() == nil { conn.Context.IpContext = &networkservice.IPContext{} } - // excluded prefixes from file - prefixesFromFile := eps.prefixPool.Load().(*ippool.PrefixPool).GetPrefixes() - // excluded prefixes from client - clientPrefixes := conn.GetContext().GetIpContext().GetExcludedPrefixes() - - sort.Strings(prefixesFromFile) - sort.Strings(clientPrefixes) - - if IsEqual(prefixesFromFile, clientPrefixes) { - return next.Server(ctx).Request(ctx, request) - } - - prefixesInfo, _ := load(ctx) - - clientPrefixesChanged := !IsEqual(prefixesInfo.previousClientPrefixes, clientPrefixes) - filePrefixesChanged := !IsEqual(prefixesInfo.previousFilePrefixes, prefixesFromFile) - - finalPrefixes := clientPrefixes - if !clientPrefixesChanged && filePrefixesChanged { - finalPrefixes = removePrefixes(clientPrefixes, prefixesInfo.previousDiff) - } - - finalPrefixes = removeDuplicates(append(finalPrefixes, prefixesFromFile...)) - request.GetConnection().GetContext().GetIpContext().ExcludedPrefixes = finalPrefixes - - if filePrefixesChanged { - prefixesInfo.previousFilePrefixes = make([]string, len(prefixesFromFile)) - copy(prefixesInfo.previousFilePrefixes, prefixesFromFile) - } - - if clientPrefixesChanged { - prefixesInfo.previousClientPrefixes = make([]string, len(finalPrefixes)) - copy(prefixesInfo.previousClientPrefixes, finalPrefixes) - } - - prefixesInfo.previousDiff = Subtract(clientPrefixes, prefixesFromFile) - - log.FromContext(ctx). - WithField("excludedPrefixes", "server"). - WithField("prefixesFromFile", prefixesFromFile). - WithField("previousPrefixesInfo", prefixesInfo). - Debugf("adding excluded prefixes to connection") - - store(ctx, prefixesInfo) + prefixes := eps.prefixPool.Load().(*ippool.PrefixPool).GetPrefixes() + log.FromContext(ctx).Debugf("ExcludedPrefixesService: adding excluded prefixes to connection: %v", prefixes) + ipCtx := conn.GetContext().GetIpContext() + ipCtx.ExcludedPrefixes = removeDuplicates(append(ipCtx.GetExcludedPrefixes(), prefixes...)) return next.Server(ctx).Request(ctx, request) } func (eps *excludedPrefixesServer) Close(ctx context.Context, connection *networkservice.Connection) (*empty.Empty, error) { - del(ctx) return next.Server(ctx).Close(ctx, connection) } diff --git a/pkg/networkservice/common/excludedprefixes/server_test.go b/pkg/networkservice/common/excludedprefixes/server_test.go index 8499e4f49..71ccceb3a 100644 --- a/pkg/networkservice/common/excludedprefixes/server_test.go +++ b/pkg/networkservice/common/excludedprefixes/server_test.go @@ -36,7 +36,6 @@ import ( "github.com/networkservicemesh/sdk/pkg/networkservice/common/excludedprefixes" "github.com/networkservicemesh/sdk/pkg/networkservice/core/chain" "github.com/networkservicemesh/sdk/pkg/networkservice/utils/checks/checkrequest" - "github.com/networkservicemesh/sdk/pkg/networkservice/utils/metadata" ) const defaultPrefixesFileName = "excluded_prefixes.yaml" @@ -51,13 +50,9 @@ func TestNewExcludedPrefixesService(t *testing.T) { configPath := filepath.Join(dir, defaultPrefixesFileName) require.NoError(t, ioutil.WriteFile(configPath, []byte(testConfig), os.ModePerm)) - server := chain.NewNetworkServiceServer( - metadata.NewServer(), - excludedprefixes.NewServer(context.Background(), excludedprefixes.WithConfigPath(configPath)), - checkrequest.NewServer(t, func(t *testing.T, request *networkservice.NetworkServiceRequest) { - require.Equal(t, request.Connection.Context.IpContext.ExcludedPrefixes, prefixes) - }), - ) + server := chain.NewNetworkServiceServer(excludedprefixes.NewServer(context.Background(), excludedprefixes.WithConfigPath(configPath)), checkrequest.NewServer(t, func(t *testing.T, request *networkservice.NetworkServiceRequest) { + require.Equal(t, request.Connection.Context.IpContext.ExcludedPrefixes, prefixes) + })) req := request() _, err := server.Request(context.Background(), req) @@ -77,13 +72,7 @@ func TestCheckReloadedPrefixes(t *testing.T) { defer func() { _ = os.Remove(configPath) }() - server := chain.NewNetworkServiceServer( - metadata.NewServer(), - excludedprefixes.NewServer( - context.Background(), - excludedprefixes.WithConfigPath(configPath), - ), - ) + server := chain.NewNetworkServiceServer(excludedprefixes.NewServer(context.Background(), excludedprefixes.WithConfigPath(configPath))) req := request() err := ioutil.WriteFile(configPath, []byte(testConfig), 0600) @@ -126,17 +115,11 @@ func TestUniqueRequestPrefixes(t *testing.T) { require.NoError(t, ioutil.WriteFile(configPath, []byte(testConfig), os.ModePerm)) defer func() { _ = os.Remove(configPath) }() - server := chain.NewNetworkServiceServer( - metadata.NewServer(), - excludedprefixes.NewServer(context.Background(), excludedprefixes.WithConfigPath(configPath)), - checkrequest.NewServer(t, func(t *testing.T, request *networkservice.NetworkServiceRequest) { - require.True(t, excludedprefixes.IsEqual(uniquePrefixes, request.Connection.Context.IpContext.ExcludedPrefixes)) - }), - ) - + server := chain.NewNetworkServiceServer(excludedprefixes.NewServer(context.Background(), excludedprefixes.WithConfigPath(configPath)), checkrequest.NewServer(t, func(t *testing.T, request *networkservice.NetworkServiceRequest) { + require.Equal(t, uniquePrefixes, request.Connection.Context.IpContext.ExcludedPrefixes) + })) req := &networkservice.NetworkServiceRequest{ Connection: &networkservice.Connection{ - Id: "1", Context: &networkservice.ConnectionContext{ IpContext: &networkservice.IPContext{ ExcludedPrefixes: reqPrefixes, @@ -150,83 +133,31 @@ func TestUniqueRequestPrefixes(t *testing.T) { } func TestFilePrefixesChanged(t *testing.T) { - prefixes := []string{"172.16.1.0/24", "10.32.0.0/12", "10.96.0.0/12", "10.20.128.0/17", "10.20.64.0/18", "10.20.8.0/21", "10.20.4.0/22"} - reqPrefixes := []string{"100.1.1.0/13", "10.32.0.0/12", "10.96.0.0/12", "10.20.0.0/24", "10.20.128.0/17", "10.20.64.0/18", "10.20.16.0/20", "10.20.2.0/23"} - diffPrefxies := []string{"100.1.1.0/13", "10.32.0.0/12", "10.96.0.0/12", "10.20.0.0/24", "10.20.128.0/17", "10.20.64.0/18", "10.20.16.0/20", "10.20.2.0/23", "10.20.4.0/22", "10.20.8.0/21", "172.16.1.0/24"} + filePrefixes := []string{"172.16.1.0/24", "10.32.0.0/12", "10.96.0.0/12", "10.20.128.0/17"} + reqPrefixes := []string{"100.1.1.0/13", "10.32.0.0/12", "10.96.0.0/12"} + diffPrefxies := []string{"100.1.1.0/13", "10.32.0.0/12", "10.96.0.0/12", "10.20.128.0/17", "172.16.1.0/24"} + newFilePrefixes := []string{"172.16.2.0/24"} dir := filepath.Join(os.TempDir(), t.Name()) defer func() { _ = os.RemoveAll(dir) }() require.NoError(t, os.MkdirAll(dir, os.ModePerm)) - testConfig := strings.Join(append([]string{"prefixes:"}, prefixes...), "\n- ") + testConfig := strings.Join(append([]string{"prefixes:"}, filePrefixes...), "\n- ") configPath := filepath.Join(dir, defaultPrefixesFileName) require.NoError(t, ioutil.WriteFile(configPath, []byte(testConfig), os.ModePerm)) defer func() { _ = os.Remove(configPath) }() + var prefixesAfterServer []string isFirst := true server := chain.NewNetworkServiceServer( - metadata.NewServer(), excludedprefixes.NewServer(context.Background(), excludedprefixes.WithConfigPath(configPath)), checkrequest.NewServer(t, func(t *testing.T, request *networkservice.NetworkServiceRequest) { if isFirst { - require.True(t, excludedprefixes.IsEqual(diffPrefxies, request.Connection.Context.IpContext.ExcludedPrefixes)) + require.ElementsMatch(t, diffPrefxies, request.Connection.Context.IpContext.ExcludedPrefixes) isFirst = false } - }), - ) - req := &networkservice.NetworkServiceRequest{ - Connection: &networkservice.Connection{ - Id: "1", - Context: &networkservice.ConnectionContext{ - IpContext: &networkservice.IPContext{ - ExcludedPrefixes: reqPrefixes, - }, - }, - }, - } - - _, err := server.Request(context.Background(), req) - - newExcludedPrefixes := []string{"172.16.2.0/24"} - require.NoError(t, ioutil.WriteFile(configPath, []byte(strings.Join(append([]string{"prefixes:"}, newExcludedPrefixes...), "\n- ")), os.ModePerm)) - - newDiffPrefixes := []string{"10.20.0.0/24", "10.20.128.0/17", "10.20.64.0/18", "10.20.16.0/20", "10.20.2.0/23", "10.32.0.0/12", "10.96.0.0/12", "100.1.1.0/13", "172.16.2.0/24"} - - require.Eventually(t, func() bool { - _, err = server.Request(context.Background(), req) - fmt.Printf("%v\n", req.Connection.Context.IpContext.ExcludedPrefixes) - return excludedprefixes.IsEqual(req.Connection.Context.IpContext.ExcludedPrefixes, newDiffPrefixes) - }, time.Second*10, time.Millisecond*100) - - require.NoError(t, err) -} - -// request1: {clientPrefixes: a, serverPrefixes:a, finalPrefixes: a} -// request2: {clientPrefixes: a, serverPrefixes:b, finalPrefixes: ab} -func TestClientAndFilePrefixesAreSame(t *testing.T) { - prefixes := []string{"172.16.1.0/24", "10.32.0.0/12"} - reqPrefixes := []string{"172.16.1.0/24", "10.32.0.0/12"} - firstDiffPrefxies := []string{"172.16.1.0/24", "10.32.0.0/12"} - - dir := filepath.Join(os.TempDir(), t.Name()) - defer func() { _ = os.RemoveAll(dir) }() - require.NoError(t, os.MkdirAll(dir, os.ModePerm)) - - testConfig := strings.Join(append([]string{"prefixes:"}, prefixes...), "\n- ") - configPath := filepath.Join(dir, defaultPrefixesFileName) - require.NoError(t, ioutil.WriteFile(configPath, []byte(testConfig), os.ModePerm)) - defer func() { _ = os.Remove(configPath) }() - - isFirst := true - server := chain.NewNetworkServiceServer( - metadata.NewServer(), - excludedprefixes.NewServer(context.Background(), excludedprefixes.WithConfigPath(configPath)), - checkrequest.NewServer(t, func(t *testing.T, request *networkservice.NetworkServiceRequest) { - if isFirst { - require.True(t, excludedprefixes.IsEqual(firstDiffPrefxies, request.Connection.Context.IpContext.ExcludedPrefixes)) - isFirst = false - } + prefixesAfterServer = request.Connection.Context.IpContext.ExcludedPrefixes }), ) @@ -243,15 +174,13 @@ func TestClientAndFilePrefixesAreSame(t *testing.T) { _, err := server.Request(context.Background(), req) - newExcludedPrefixes := []string{"172.16.2.0/24"} - require.NoError(t, ioutil.WriteFile(configPath, []byte(strings.Join(append([]string{"prefixes:"}, newExcludedPrefixes...), "\n- ")), os.ModePerm)) - - newDiffPrefixes := []string{"172.16.1.0/24", "10.32.0.0/12", "172.16.2.0/24"} + require.NoError(t, ioutil.WriteFile(configPath, []byte(strings.Join(append([]string{"prefixes:"}, newFilePrefixes...), "\n- ")), os.ModePerm)) require.Eventually(t, func() bool { _, err = server.Request(context.Background(), req) - return excludedprefixes.IsEqual(req.Connection.Context.IpContext.ExcludedPrefixes, newDiffPrefixes) - }, time.Second*5, time.Millisecond*100) + fmt.Printf("%v\n", prefixesAfterServer) + return excludedprefixes.IsEqual(prefixesAfterServer, append(diffPrefxies, newFilePrefixes...)) + }, time.Second, time.Millisecond*100) require.NoError(t, err) } @@ -261,10 +190,8 @@ func testWaitForFile(t *testing.T, filePath string) { testConfig := strings.Join(append([]string{"prefixes:"}, prefixes...), "\n- ") - server := chain.NewNetworkServiceServer( - metadata.NewServer(), - excludedprefixes.NewServer(context.Background(), excludedprefixes.WithConfigPath(filePath)), - ) + server := chain.NewNetworkServiceServer(excludedprefixes.NewServer(context.Background(), + excludedprefixes.WithConfigPath(filePath))) req := request() _, err := server.Request(context.Background(), req) @@ -294,7 +221,6 @@ func testWaitForFile(t *testing.T, filePath string) { func request() *networkservice.NetworkServiceRequest { return &networkservice.NetworkServiceRequest{ Connection: &networkservice.Connection{ - Id: "1", Context: &networkservice.ConnectionContext{}, }, } diff --git a/pkg/networkservice/common/excludedprefixes/utils.go b/pkg/networkservice/common/excludedprefixes/utils.go index 3aef876fa..a2f90da00 100644 --- a/pkg/networkservice/common/excludedprefixes/utils.go +++ b/pkg/networkservice/common/excludedprefixes/utils.go @@ -56,32 +56,6 @@ func exclude(source, exclude []string) []string { return source } -func removePrefixes(origin, prefixesToRemove []string) []string { - if len(origin) == 0 || len(prefixesToRemove) == 0 { - return origin - } - - prefixesMap := toMap(prefixesToRemove) - var rv []string - for _, p := range origin { - if _, ok := prefixesMap[p]; !ok { - rv = append(rv, p) - } - } - - return rv -} - -func toMap(arr []string) map[string]struct{} { - rv := map[string]struct{}{} - - for _, a := range arr { - rv[a] = struct{}{} - } - - return rv -} - // IsEqual check if two slices contains equal strings, no matter the order func IsEqual(s1, s2 []string) bool { s1copy := make([]string, len(s1)) @@ -95,17 +69,3 @@ func IsEqual(s1, s2 []string) bool { return reflect.DeepEqual(s1copy, s2copy) } - -// Subtract calculates setB - setA -func Subtract(setA, setB []string) []string { - sliceMap := toMap(setA) - - var rv []string - for _, s := range setB { - if _, ok := sliceMap[s]; !ok { - rv = append(rv, s) - } - } - - return rv -}