Add support for policy auto-creation

This commit is contained in:
M Essam Hamed
2025-04-16 14:45:23 +02:00
committed by M. Essam
parent 924f17f525
commit 38445c58fa
12 changed files with 712 additions and 212 deletions
+18 -2
View File
@@ -1,6 +1,8 @@
package v1
import (
"maps"
"github.com/netbirdio/kubernetes-operator/internal/util"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
@@ -18,6 +20,10 @@ type NBResourceSpec struct {
// +optional
PolicyName string `json:"policyName,omitempty"`
// +optional
PolicySourceGroups []string `json:"policySourceGroups,omitempty"`
// +optional
PolicyFriendlyName map[string]string `json:"policyFriendlyName,omitempty"`
// +optional
TCPPorts []int32 `json:"tcpPorts,omitempty"`
// +optional
UDPPorts []int32 `json:"udpPorts,omitempty"`
@@ -31,7 +37,8 @@ func (a NBResourceSpec) Equal(b NBResourceSpec) bool {
util.Equivalent(a.Groups, b.Groups) &&
a.PolicyName == b.PolicyName &&
util.Equivalent(a.TCPPorts, b.TCPPorts) &&
util.Equivalent(a.UDPPorts, b.UDPPorts)
util.Equivalent(a.UDPPorts, b.UDPPorts) &&
util.Equivalent(a.PolicySourceGroups, b.PolicySourceGroups)
}
// NBResourceStatus defines the observed state of NBResource.
@@ -47,7 +54,13 @@ type NBResourceStatus struct {
// +optional
Groups []string `json:"groups,omitempty"`
// +optional
PolicySourceGroups []string `json:"policySourceGroups,omitempty"`
// +optional
PolicyFriendlyName map[string]string `json:"policyFriendlyName,omitempty"`
// +optional
Conditions []NBCondition `json:"conditions,omitempty"`
// +optional
PolicyNameMapping map[string]string `json:"policyNameMapping"`
}
// Equal returns if NBResourceStatus is equal to this one
@@ -57,7 +70,10 @@ func (a NBResourceStatus) Equal(b NBResourceStatus) bool {
util.Equivalent(a.TCPPorts, b.TCPPorts) &&
util.Equivalent(a.UDPPorts, b.UDPPorts) &&
util.Equivalent(a.Groups, b.Groups) &&
util.Equivalent(a.Conditions, b.Conditions)
util.Equivalent(a.Conditions, b.Conditions) &&
util.Equivalent(a.PolicySourceGroups, b.PolicySourceGroups) &&
maps.Equal(a.PolicyFriendlyName, b.PolicyFriendlyName) &&
maps.Equal(a.PolicyNameMapping, b.PolicyNameMapping)
}
// +kubebuilder:object:root=true
+31
View File
@@ -329,6 +329,18 @@ func (in *NBResourceSpec) DeepCopyInto(out *NBResourceSpec) {
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.PolicySourceGroups != nil {
in, out := &in.PolicySourceGroups, &out.PolicySourceGroups
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.PolicyFriendlyName != nil {
in, out := &in.PolicyFriendlyName, &out.PolicyFriendlyName
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.TCPPorts != nil {
in, out := &in.TCPPorts, &out.TCPPorts
*out = make([]int32, len(*in))
@@ -379,6 +391,18 @@ func (in *NBResourceStatus) DeepCopyInto(out *NBResourceStatus) {
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.PolicySourceGroups != nil {
in, out := &in.PolicySourceGroups, &out.PolicySourceGroups
*out = make([]string, len(*in))
copy(*out, *in)
}
if in.PolicyFriendlyName != nil {
in, out := &in.PolicyFriendlyName, &out.PolicyFriendlyName
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
if in.Conditions != nil {
in, out := &in.Conditions, &out.Conditions
*out = make([]NBCondition, len(*in))
@@ -386,6 +410,13 @@ func (in *NBResourceStatus) DeepCopyInto(out *NBResourceStatus) {
(*in)[i].DeepCopyInto(&(*out)[i])
}
}
if in.PolicyNameMapping != nil {
in, out := &in.PolicyNameMapping, &out.PolicyNameMapping
*out = make(map[string]string, len(*in))
for key, val := range *in {
(*out)[key] = val
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NBResourceStatus.