import (
"context"
"errors"
+ "fmt"
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
func (p *OpenWrtProvider) AddOrUpdateObject(handler basehandler.ISdewanHandler, instance runtime.Object) (bool, error) {
reqLogger := log.WithValues(handler.GetType(), handler.GetName(instance), "cnf", p.Deployment.Name)
ctx := context.Background()
+ ReplicaSetList := &appsv1.ReplicaSetList{}
+ err := p.K8sClient.List(ctx, ReplicaSetList, client.MatchingLabels{"sdewanPurpose": p.SdewanPurpose})
+ if err != nil {
+ return false, err
+ }
+ if len(ReplicaSetList.Items) != 1 {
+ return false, errors.New(fmt.Sprintf("More than one of repicaset exist with label: sdewanPurpose=%s", p.SdewanPurpose))
+ }
podList := &corev1.PodList{}
- err := p.K8sClient.List(ctx, podList, client.MatchingLabels{"sdewanPurpose": p.SdewanPurpose})
+ err = p.K8sClient.List(ctx, podList, client.MatchingFields{"OwnBy": ReplicaSetList.Items[0].ObjectMeta.Name})
if err != nil {
return false, err
}
"fmt"
"os"
+ corev1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"
}
return fieldValues
})
+ if err != nil {
+ setupLog.Error(err, "unable to start manager")
+ os.Exit(1)
+ }
err = mgr.GetFieldIndexer().IndexField(context.Background(), &rbacv1.ClusterRoleBinding{}, ".subjects", func(rawObj runtime.Object) []string {
var fieldValues []string
clusterrolebinding := rawObj.(*rbacv1.ClusterRoleBinding)
setupLog.Error(err, "unable to start manager")
os.Exit(1)
}
+ err = mgr.GetFieldIndexer().IndexField(context.Background(), &corev1.Pod{}, "OwnBy", func(rawObj runtime.Object) []string {
+ // grab the job object, extract the owner...
+ var fieldValues []string
+ pod := rawObj.(*corev1.Pod)
+ owner := metav1.GetControllerOf(pod)
+ if owner == nil || owner.Kind != "ReplicaSet" {
+ return nil
+ }
+ return append(fieldValues, owner.Name)
+ })
+ if err != nil {
+ setupLog.Error(err, "unable to start manager")
+ os.Exit(1)
+ }
if err = (&controllers.Mwan3PolicyReconciler{
Client: mgr.GetClient(),