Skip to content

Commit

Permalink
generate netpol from NetworkNeighborhood
Browse files Browse the repository at this point in the history
Signed-off-by: Matthias Bertschy <[email protected]>
  • Loading branch information
matthyx committed Aug 22, 2024
1 parent bd9baba commit 4767d42
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 18 deletions.
26 changes: 13 additions & 13 deletions pkg/registry/file/generatednetworkpolicy.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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.
Expand All @@ -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
}

Expand All @@ -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)
}
Expand All @@ -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{
Expand All @@ -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
}

Expand All @@ -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)
}
Expand Down
22 changes: 17 additions & 5 deletions pkg/registry/file/generatednetworkpolicy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
Expand All @@ -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{
Expand All @@ -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{
Expand All @@ -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)
}

Expand Down

0 comments on commit 4767d42

Please sign in to comment.