From 4767d429c098a74d8db9ed1448b87a5e5a0aa4b2 Mon Sep 17 00:00:00 2001 From: Matthias Bertschy Date: Thu, 22 Aug 2024 17:58:53 +0200 Subject: [PATCH] generate netpol from NetworkNeighborhood Signed-off-by: Matthias Bertschy --- pkg/registry/file/generatednetworkpolicy.go | 26 +++++++++---------- .../file/generatednetworkpolicy_test.go | 22 ++++++++++++---- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/pkg/registry/file/generatednetworkpolicy.go b/pkg/registry/file/generatednetworkpolicy.go index 58aa311c6..f3281bf85 100644 --- a/pkg/registry/file/generatednetworkpolicy.go +++ b/pkg/registry/file/generatednetworkpolicy.go @@ -8,7 +8,7 @@ import ( "github.com/kubescape/go-logger" "github.com/kubescape/go-logger/helpers" "github.com/kubescape/storage/pkg/apis/softwarecomposition" - "github.com/kubescape/storage/pkg/apis/softwarecomposition/networkpolicy/v1" + "github.com/kubescape/storage/pkg/apis/softwarecomposition/networkpolicy/v2" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -17,8 +17,8 @@ import ( ) const ( - networkNeighborsResource = "networkneighborses" - knownServersResource = "knownservers" + networkNeighborhoodResource = "networkneighborhoods" + knownServersResource = "knownservers" ) // GeneratedNetworkPolicyStorage offers a storage solution for GeneratedNetworkPolicy objects, implementing custom business logic for these objects and using the underlying default storage implementation. @@ -42,11 +42,11 @@ func (s *GeneratedNetworkPolicyStorage) Get(ctx context.Context, key string, opt logger.L().Ctx(ctx).Debug("GeneratedNetworkPolicyStorage.Get", helpers.String("key", key)) // retrieve network neighbor with the same name - networkNeighborsObjPtr := &softwarecomposition.NetworkNeighbors{} + networkNeighborhoodObjPtr := &softwarecomposition.NetworkNeighborhood{} - key = replaceKeyForKind(key, networkNeighborsResource) + key = replaceKeyForKind(key, networkNeighborhoodResource) - if err := s.realStore.Get(ctx, key, opts, networkNeighborsObjPtr); err != nil { + if err := s.realStore.Get(ctx, key, opts, networkNeighborhoodObjPtr); err != nil { return err } @@ -56,7 +56,7 @@ func (s *GeneratedNetworkPolicyStorage) Get(ctx context.Context, key string, opt return err } - generatedNetworkPolicy, err := networkpolicy.GenerateNetworkPolicy(*networkNeighborsObjPtr, knownServersListObjPtr.Items, metav1.Now()) + generatedNetworkPolicy, err := networkpolicy.GenerateNetworkPolicy(networkNeighborhoodObjPtr, knownServersListObjPtr.Items, metav1.Now()) if err != nil { return fmt.Errorf("error generating network policy: %w", err) } @@ -77,8 +77,8 @@ func (s *GeneratedNetworkPolicyStorage) Get(ctx context.Context, key string, opt // GetList generates and returns a list of GeneratedNetworkPolicy objects for the given namespace func (s *GeneratedNetworkPolicyStorage) GetList(ctx context.Context, key string, _ storage.ListOptions, listObj runtime.Object) error { - // get all network neighbors on namespace - networkNeighborsObjListPtr := &softwarecomposition.NetworkNeighborsList{} + // get all network neighborhood on namespace + networkNeighborhoodObjListPtr := &softwarecomposition.NetworkNeighborhoodList{} generatedNetworkPolicyList := &softwarecomposition.GeneratedNetworkPolicyList{ TypeMeta: metav1.TypeMeta{ @@ -88,7 +88,7 @@ func (s *GeneratedNetworkPolicyStorage) GetList(ctx context.Context, key string, namespace := getNamespaceFromKey(key) - if err := s.realStore.GetByNamespace(ctx, softwarecomposition.GroupName, networkNeighborsResource, namespace, networkNeighborsObjListPtr); err != nil { + if err := s.realStore.GetByNamespace(ctx, softwarecomposition.GroupName, networkNeighborhoodResource, namespace, networkNeighborhoodObjListPtr); err != nil { return err } @@ -97,11 +97,11 @@ func (s *GeneratedNetworkPolicyStorage) GetList(ctx context.Context, key string, return err } - for _, networkNeighbors := range networkNeighborsObjListPtr.Items { - if !networkpolicy.IsAvailable(networkNeighbors) { + for _, networkNeighborhood := range networkNeighborhoodObjListPtr.Items { + if !networkpolicy.IsAvailable(&networkNeighborhood) { continue } - generatedNetworkPolicy, err := networkpolicy.GenerateNetworkPolicy(networkNeighbors, knownServersListObjPtr.Items, metav1.Now()) + generatedNetworkPolicy, err := networkpolicy.GenerateNetworkPolicy(&networkNeighborhood, knownServersListObjPtr.Items, metav1.Now()) if err != nil { return fmt.Errorf("error generating network policy: %w", err) } diff --git a/pkg/registry/file/generatednetworkpolicy_test.go b/pkg/registry/file/generatednetworkpolicy_test.go index 2760cea51..21cc3f222 100644 --- a/pkg/registry/file/generatednetworkpolicy_test.go +++ b/pkg/registry/file/generatednetworkpolicy_test.go @@ -32,7 +32,7 @@ func TestGeneratedNetworkPolicyStorage_Get(t *testing.T) { args: args{ key: "/spdx.softwarecomposition.kubescape.io/generatednetworkpolicies/kubescape/toto", }, - expectedError: storage.NewKeyNotFoundError("/spdx.softwarecomposition.kubescape.io/networkneighborses/kubescape/toto", 0), + expectedError: storage.NewKeyNotFoundError("/spdx.softwarecomposition.kubescape.io/networkneighborhoods/kubescape/toto", 0), }, { name: "existing object is returned", @@ -51,6 +51,10 @@ func TestGeneratedNetworkPolicyStorage_Get(t *testing.T) { Name: "toto", Namespace: "kubescape", CreationTimestamp: v1.Time{}, + Labels: map[string]string{ + helpersv1.KindMetadataKey: "Deployment", + helpersv1.NameMetadataKey: "toto", + }, }, Spec: softwarecomposition.NetworkPolicy{ Kind: "NetworkPolicy", @@ -59,8 +63,12 @@ func TestGeneratedNetworkPolicyStorage_Get(t *testing.T) { Annotations: map[string]string{ "generated-by": "kubescape", }, - Name: "toto", + Name: "deployment-toto", Namespace: "kubescape", + Labels: map[string]string{ + helpersv1.KindMetadataKey: "Deployment", + helpersv1.NameMetadataKey: "toto", + }, }, Spec: softwarecomposition.NetworkPolicySpec{ PolicyTypes: []softwarecomposition.PolicyType{ @@ -82,9 +90,9 @@ func TestGeneratedNetworkPolicyStorage_Get(t *testing.T) { generatedNetworkPolicyStorage := NewGeneratedNetworkPolicyStorage(realStorage) if tt.create { - wlObj := &softwarecomposition.NetworkNeighbors{ + wlObj := &softwarecomposition.NetworkNeighborhood{ TypeMeta: v1.TypeMeta{ - Kind: "NetworkNeighbors", + Kind: "NetworkNeighborhood", APIVersion: "spdx.softwarecomposition.kubescape.io", }, ObjectMeta: v1.ObjectMeta{ @@ -93,9 +101,13 @@ func TestGeneratedNetworkPolicyStorage_Get(t *testing.T) { Annotations: map[string]string{ helpersv1.StatusMetadataKey: helpersv1.Ready, }, + Labels: map[string]string{ + helpersv1.KindMetadataKey: "Deployment", + helpersv1.NameMetadataKey: "toto", + }, }, } - err := realStorage.Create(context.TODO(), "/spdx.softwarecomposition.kubescape.io/networkneighborses/kubescape/toto", wlObj, nil, 0) + err := realStorage.Create(context.TODO(), "/spdx.softwarecomposition.kubescape.io/networkneighborhoods/kubescape/toto", wlObj, nil, 0) assert.NoError(t, err) }