@@ -21,33 +21,33 @@ import (
2121 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2222)
2323
24- func GenerateNetworkPolicy (nn * softwarecomposition.NetworkNeighborhood , knownServers softwarecomposition.IKnownServersFinder , timeProvider metav1.Time ) (softwarecomposition.GeneratedNetworkPolicy , error ) {
25- if ! IsAvailable (nn ) {
26- return softwarecomposition.GeneratedNetworkPolicy {}, fmt .Errorf ("nn %s/%s status annotation is not ready nor completed" , nn .Namespace , nn .Name )
24+ func GenerateNetworkPolicy (cp * softwarecomposition.ContainerProfile , knownServers softwarecomposition.IKnownServersFinder , timeProvider metav1.Time ) (softwarecomposition.GeneratedNetworkPolicy , error ) {
25+ if ! IsAvailable (cp ) {
26+ return softwarecomposition.GeneratedNetworkPolicy {}, fmt .Errorf ("container profile %s/%s status annotation is not ready nor completed" , cp .Namespace , cp .Name )
2727 }
2828
2929 // get name from labels and clean labels
30- kind , ok := nn .Labels [helpersv1 .RelatedKindMetadataKey ]
30+ kind , ok := cp .Labels [helpersv1 .RelatedKindMetadataKey ]
3131 if ! ok {
32- return softwarecomposition.GeneratedNetworkPolicy {}, fmt .Errorf ("nn %s/%s does not have a kind label" , nn .Namespace , nn .Name )
32+ return softwarecomposition.GeneratedNetworkPolicy {}, fmt .Errorf ("container profile %s/%s does not have a kind label" , cp .Namespace , cp .Name )
3333 }
34- name , ok := nn .Labels [helpersv1 .RelatedNameMetadataKey ]
34+ name , ok := cp .Labels [helpersv1 .RelatedNameMetadataKey ]
3535 if ! ok {
36- logger .L ().Debug ("nn does not have a workload-name label, falling back to nn .Name" , helpers .String ("name" , nn .Name ), helpers .String ("namespace" , nn .Namespace ))
37- name = nn .Name
36+ logger .L ().Debug ("container profile does not have a workload-name label, falling back to cp .Name" , helpers .String ("name" , cp .Name ), helpers .String ("namespace" , cp .Namespace ))
37+ name = cp .Name
3838 }
39- delete (nn .Labels , helpersv1 .TemplateHashKey )
39+ delete (cp .Labels , helpersv1 .TemplateHashKey )
4040
4141 networkPolicy := softwarecomposition.NetworkPolicy {
4242 Kind : "NetworkPolicy" ,
4343 APIVersion : "networking.k8s.io/v1" ,
4444 ObjectMeta : metav1.ObjectMeta {
4545 Name : fmt .Sprintf ("%s-%s" , strings .ToLower (kind ), name ),
46- Namespace : nn .Namespace ,
46+ Namespace : cp .Namespace ,
4747 Annotations : map [string ]string {
4848 "generated-by" : "kubescape" ,
4949 },
50- Labels : nn .Labels ,
50+ Labels : cp .Labels ,
5151 },
5252 Spec : softwarecomposition.NetworkPolicySpec {
5353 PodSelector : metav1.LabelSelector {},
@@ -58,12 +58,12 @@ func GenerateNetworkPolicy(nn *softwarecomposition.NetworkNeighborhood, knownSer
5858 },
5959 }
6060
61- if nn .Spec .MatchLabels != nil {
62- networkPolicy .Spec .PodSelector .MatchLabels = nn .Spec .MatchLabels
61+ if cp .Spec .MatchLabels != nil {
62+ networkPolicy .Spec .PodSelector .MatchLabels = cp .Spec .MatchLabels
6363 }
6464
65- if nn .Spec .MatchExpressions != nil {
66- networkPolicy .Spec .PodSelector .MatchExpressions = nn .Spec .MatchExpressions
65+ if cp .Spec .MatchExpressions != nil {
66+ networkPolicy .Spec .PodSelector .MatchExpressions = cp .Spec .MatchExpressions
6767 }
6868
6969 generatedNetworkPolicy := softwarecomposition.GeneratedNetworkPolicy {
@@ -72,17 +72,17 @@ func GenerateNetworkPolicy(nn *softwarecomposition.NetworkNeighborhood, knownSer
7272 APIVersion : "spdx.softwarecomposition.kubescape.io/v1beta1" ,
7373 },
7474 ObjectMeta : metav1.ObjectMeta {
75- Name : nn .Name ,
76- Namespace : nn .Namespace ,
77- Labels : nn .Labels ,
75+ Name : cp .Name ,
76+ Namespace : cp .Namespace ,
77+ Labels : cp .Labels ,
7878 CreationTimestamp : timeProvider ,
7979 },
8080 PoliciesRef : []softwarecomposition.PolicyRef {},
8181 }
8282
8383 ingressHash := make (map [string ]bool )
8484 ingressPolicyRefsHash := make (map [string ]bool )
85- for _ , neighbor := range listIngressNetworkNeighbors (nn ) {
85+ for _ , neighbor := range listIngressNetworkNeighbors (cp ) {
8686
8787 rule , policyRefs := generateIngressRule (neighbor , knownServers )
8888
@@ -104,7 +104,7 @@ func GenerateNetworkPolicy(nn *softwarecomposition.NetworkNeighborhood, knownSer
104104
105105 egressHash := make (map [string ]bool )
106106 egressPolicyRefsHash := make (map [string ]bool )
107- for _ , neighbor := range listEgressNetworkNeighbors (nn ) {
107+ for _ , neighbor := range listEgressNetworkNeighbors (cp ) {
108108
109109 rule , policyRefs := generateEgressRule (neighbor , knownServers )
110110
@@ -132,34 +132,17 @@ func GenerateNetworkPolicy(nn *softwarecomposition.NetworkNeighborhood, knownSer
132132 return generatedNetworkPolicy , nil
133133}
134134
135- func listIngressNetworkNeighbors (nn * softwarecomposition.NetworkNeighborhood ) []softwarecomposition.NetworkNeighbor {
136- var neighbors []softwarecomposition.NetworkNeighbor
137- for i := range nn .Spec .Containers {
138- neighbors = append (neighbors , nn .Spec .Containers [i ].Ingress ... )
139- }
140- for i := range nn .Spec .InitContainers {
141- neighbors = append (neighbors , nn .Spec .InitContainers [i ].Ingress ... )
142- }
143- for i := range nn .Spec .EphemeralContainers {
144- neighbors = append (neighbors , nn .Spec .EphemeralContainers [i ].Ingress ... )
145- }
146- return neighbors
147-
135+ // listIngressNetworkNeighbors returns the ingress neighbors for the container
136+ // profile. A ContainerProfile describes a single container, so its Spec.Ingress
137+ // is the exact equivalent of the previously-flattened per-container ingress list.
138+ func listIngressNetworkNeighbors (cp * softwarecomposition.ContainerProfile ) []softwarecomposition.NetworkNeighbor {
139+ return cp .Spec .Ingress
148140}
149141
150- func listEgressNetworkNeighbors (nn * softwarecomposition.NetworkNeighborhood ) []softwarecomposition.NetworkNeighbor {
151- var neighbors []softwarecomposition.NetworkNeighbor
152- for i := range nn .Spec .Containers {
153- neighbors = append (neighbors , nn .Spec .Containers [i ].Egress ... )
154- }
155- for i := range nn .Spec .InitContainers {
156- neighbors = append (neighbors , nn .Spec .InitContainers [i ].Egress ... )
157- }
158- for i := range nn .Spec .EphemeralContainers {
159- neighbors = append (neighbors , nn .Spec .EphemeralContainers [i ].Egress ... )
160- }
161- return neighbors
162-
142+ // listEgressNetworkNeighbors returns the egress neighbors for the container
143+ // profile. See listIngressNetworkNeighbors for the single-container rationale.
144+ func listEgressNetworkNeighbors (cp * softwarecomposition.ContainerProfile ) []softwarecomposition.NetworkNeighbor {
145+ return cp .Spec .Egress
163146}
164147
165148// containsIPBlockPeer reports whether peers already contains an entry with the given CIDR.
@@ -609,11 +592,11 @@ func removeLabels(labels map[string]string) {
609592 }
610593}
611594
612- func IsAvailable (nn * softwarecomposition.NetworkNeighborhood ) bool {
613- if nn .GetAnnotations ()[helpersv1 .ManagedByMetadataKey ] == helpersv1 .ManagedByUserValue {
595+ func IsAvailable (cp * softwarecomposition.ContainerProfile ) bool {
596+ if cp .GetAnnotations ()[helpersv1 .ManagedByMetadataKey ] == helpersv1 .ManagedByUserValue {
614597 return true
615598 }
616- switch nn .GetAnnotations ()[helpersv1 .StatusMetadataKey ] {
599+ switch cp .GetAnnotations ()[helpersv1 .StatusMetadataKey ] {
617600 case helpersv1 .Learning , helpersv1 .Completed :
618601 return true
619602 default :
0 commit comments