Skip to content
Merged
2 changes: 2 additions & 0 deletions src/operator/api/v2alpha1/clientintents_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ const (
OtterizeSvcNetworkPolicy = "intents.otterize.com/svc-network-policy"
OtterizeNetworkPolicyServiceDefaultDeny = "intents.otterize.com/network-policy-service-default-deny"
OtterizeNetworkPolicyExternalTraffic = "intents.otterize.com/network-policy-external-traffic"
OtterizeNetPolMetricsCollectors = "intents.otterize.com/network-policy-metrics-collectors"
OtterizeNetPolMetricsCollectorsLevel = "intents.otterize.com/network-policy-metrics-collectors-level"
ClientIntentsFinalizerName = "intents.otterize.com/client-intents-finalizer"
ProtectedServicesFinalizerName = "intents.otterize.com/protected-services-finalizer"
OtterizeIstioClientAnnotationKeyDeprecated = "intents.otterize.com/istio-client"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package metrics_collection_traffic

import (
"context"
"github.com/otterize/intents-operator/src/shared/errors"
"github.com/otterize/intents-operator/src/shared/injectablerecorder"
"github.com/samber/lo"
corev1 "k8s.io/api/core/v1"
"k8s.io/client-go/tools/record"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller"
)

//+kubebuilder:rbac:groups="",resources=pods,verbs=get;list;watch
//+kubebuilder:rbac:groups="networking.k8s.io",resources=networkpolicies,verbs=get;update;patch;list;watch;delete;create

type EndpointsReconciler struct {
client.Client
netpolHandle *NetworkPolicyHandler
injectablerecorder.InjectableRecorder
}

func NewEndpointsReconciler(client client.Client, netpolHandle *NetworkPolicyHandler) *EndpointsReconciler {
return &EndpointsReconciler{
Client: client,
netpolHandle: netpolHandle,
}
}

func (r *EndpointsReconciler) SetupWithManager(mgr ctrl.Manager) error {
recorder := mgr.GetEventRecorderFor("intents-operator")
r.InjectRecorder(recorder)

return ctrl.NewControllerManagedBy(mgr).
For(&corev1.Endpoints{}).
WithOptions(controller.Options{RecoverPanic: lo.ToPtr(true)}).
Complete(r)
}

func (r *EndpointsReconciler) InjectRecorder(recorder record.EventRecorder) {
r.Recorder = recorder
r.netpolHandle.InjectRecorder(recorder)
}

func (r *EndpointsReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
err := r.netpolHandle.HandleAllServicesInNamespace(ctx, req.Namespace)

if err != nil {
return ctrl.Result{}, errors.Wrap(err)
}

return ctrl.Result{}, nil
}
Loading
Loading