From aeb73b92f18d1dfcad55fbb3109605807e6a6398 Mon Sep 17 00:00:00 2001 From: Sebastian Sch Date: Thu, 7 Dec 2023 18:30:01 +0200 Subject: [PATCH] update vars to add the namespace in one please Signed-off-by: Sebastian Sch --- cmd/sriov-network-config-daemon/start.go | 3 +- controllers/sriovibnetwork_controller.go | 3 +- controllers/sriovnetwork_controller.go | 3 +- .../sriovnetworknodepolicy_controller.go | 30 +++++++++---------- .../sriovnetworknodepolicy_controller_test.go | 3 +- .../sriovnetworkpoolconfig_controller.go | 19 +++++++++++- controllers/sriovoperatorconfig_controller.go | 14 ++++----- main.go | 21 +++++-------- pkg/daemon/daemon.go | 18 +++++------ pkg/daemon/daemon_test.go | 12 ++++---- pkg/daemon/event_recorder.go | 2 +- pkg/daemon/writer.go | 4 +-- pkg/global/vars/vars.go | 4 +++ 13 files changed, 76 insertions(+), 60 deletions(-) diff --git a/cmd/sriov-network-config-daemon/start.go b/cmd/sriov-network-config-daemon/start.go index 99b178b27f..fb23def11d 100644 --- a/cmd/sriov-network-config-daemon/start.go +++ b/cmd/sriov-network-config-daemon/start.go @@ -225,8 +225,7 @@ func runStartCmd(cmd *cobra.Command, args []string) error { } setupLog.Info("Running on", "platform", vars.PlatformType.String()) - var namespace = os.Getenv("NAMESPACE") - if err := sriovnetworkv1.InitNicIDMapFromConfigMap(kubeclient, namespace); err != nil { + if err := sriovnetworkv1.InitNicIDMapFromConfigMap(kubeclient, vars.Namespace); err != nil { setupLog.Error(err, "failed to run init NicIdMap") return err } diff --git a/controllers/sriovibnetwork_controller.go b/controllers/sriovibnetwork_controller.go index 0ffe5fba0f..e26254810a 100644 --- a/controllers/sriovibnetwork_controller.go +++ b/controllers/sriovibnetwork_controller.go @@ -35,6 +35,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/reconcile" sriovnetworkv1 "github.com/k8snetworkplumbingwg/sriov-network-operator/api/v1" + "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/global/vars" ) // SriovIBNetworkReconciler reconciles a SriovIBNetwork object @@ -58,7 +59,7 @@ type SriovIBNetworkReconciler struct { // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.8.3/pkg/reconcile func (r *SriovIBNetworkReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { // The SriovNetwork CR shall only be defined in operator namespace. - req.Namespace = namespace + req.Namespace = vars.Namespace reqLogger := log.FromContext(ctx).WithValues("sriovnetwork", req.NamespacedName) reqLogger.Info("Reconciling SriovIBNetwork") var err error diff --git a/controllers/sriovnetwork_controller.go b/controllers/sriovnetwork_controller.go index f89d524c19..9edda49e05 100644 --- a/controllers/sriovnetwork_controller.go +++ b/controllers/sriovnetwork_controller.go @@ -35,6 +35,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/reconcile" sriovnetworkv1 "github.com/k8snetworkplumbingwg/sriov-network-operator/api/v1" + "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/global/vars" ) // SriovNetworkReconciler reconciles a SriovNetwork object @@ -57,7 +58,7 @@ type SriovNetworkReconciler struct { // For more details, check Reconcile and its Result here: // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.8.3/pkg/reconcile func (r *SriovNetworkReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { - req.Namespace = namespace + req.Namespace = vars.Namespace reqLogger := log.FromContext(ctx).WithValues("sriovnetwork", req.NamespacedName) reqLogger.Info("Reconciling SriovNetwork") diff --git a/controllers/sriovnetworknodepolicy_controller.go b/controllers/sriovnetworknodepolicy_controller.go index 94ab4a3d06..6c38cfe6d9 100644 --- a/controllers/sriovnetworknodepolicy_controller.go +++ b/controllers/sriovnetworknodepolicy_controller.go @@ -25,8 +25,6 @@ import ( "strings" "time" - utils "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/utils" - errs "github.com/pkg/errors" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -52,7 +50,9 @@ import ( sriovnetworkv1 "github.com/k8snetworkplumbingwg/sriov-network-operator/api/v1" "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/apply" constants "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/global/consts" + "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/global/vars" "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/render" + "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/utils" ) const nodePolicySyncEventName = "node-policy-sync-event" @@ -86,11 +86,11 @@ func (r *SriovNetworkNodePolicyReconciler) Reconcile(ctx context.Context, req ct reqLogger.Info("Reconciling") defaultPolicy := &sriovnetworkv1.SriovNetworkNodePolicy{} - err := r.Get(ctx, types.NamespacedName{Name: constants.DefaultPolicyName, Namespace: namespace}, defaultPolicy) + err := r.Get(ctx, types.NamespacedName{Name: constants.DefaultPolicyName, Namespace: vars.Namespace}, defaultPolicy) if err != nil { if errors.IsNotFound(err) { // Default policy object not found, create it. - defaultPolicy.SetNamespace(namespace) + defaultPolicy.SetNamespace(vars.Namespace) defaultPolicy.SetName(constants.DefaultPolicyName) defaultPolicy.Spec = sriovnetworkv1.SriovNetworkNodePolicySpec{ NumVfs: 0, @@ -99,7 +99,7 @@ func (r *SriovNetworkNodePolicyReconciler) Reconcile(ctx context.Context, req ct } err = r.Create(ctx, defaultPolicy) if err != nil { - reqLogger.Error(err, "Failed to create default Policy", "Namespace", namespace, "Name", constants.DefaultPolicyName) + reqLogger.Error(err, "Failed to create default Policy", "Namespace", vars.Namespace, "Name", constants.DefaultPolicyName) return reconcile.Result{}, err } reqLogger.Info("Default policy created") @@ -129,7 +129,7 @@ func (r *SriovNetworkNodePolicyReconciler) Reconcile(ctx context.Context, req ct "kubernetes.io/os": "linux", } defaultOpConf := &sriovnetworkv1.SriovOperatorConfig{} - if err := r.Get(ctx, types.NamespacedName{Namespace: namespace, Name: constants.DefaultConfigName}, defaultOpConf); err != nil { + if err := r.Get(ctx, types.NamespacedName{Namespace: vars.Namespace, Name: constants.DefaultConfigName}, defaultOpConf); err != nil { return reconcile.Result{}, err } if len(defaultOpConf.Spec.ConfigDaemonNodeSelector) > 0 { @@ -220,7 +220,7 @@ func (r *SriovNetworkNodePolicyReconciler) syncDevicePluginConfigMap(ctx context }, ObjectMeta: metav1.ObjectMeta{ Name: constants.ConfigMapName, - Namespace: namespace, + Namespace: vars.Namespace, }, Data: configData, } @@ -250,14 +250,14 @@ func (r *SriovNetworkNodePolicyReconciler) syncAllSriovNetworkNodeStates(ctx con logger := log.Log.WithName("syncAllSriovNetworkNodeStates") logger.V(1).Info("Start to sync all SriovNetworkNodeState custom resource") found := &corev1.ConfigMap{} - if err := r.Get(ctx, types.NamespacedName{Namespace: namespace, Name: constants.ConfigMapName}, found); err != nil { + if err := r.Get(ctx, types.NamespacedName{Namespace: vars.Namespace, Name: constants.ConfigMapName}, found); err != nil { logger.V(1).Info("Fail to get", "ConfigMap", constants.ConfigMapName) } for _, node := range nl.Items { logger.V(1).Info("Sync SriovNetworkNodeState CR", "name", node.Name) ns := &sriovnetworkv1.SriovNetworkNodeState{} ns.Name = node.Name - ns.Namespace = namespace + ns.Namespace = vars.Namespace j, _ := json.Marshal(ns) logger.V(2).Info("SriovNetworkNodeState CR", "content", j) if err := r.syncSriovNetworkNodeState(ctx, np, npl, ns, &node, utils.HashConfigMap(found)); err != nil { @@ -368,7 +368,7 @@ func (r *SriovNetworkNodePolicyReconciler) syncPluginDaemonObjs(ctx context.Cont // render plugin manifests data := render.MakeRenderData() - data.Data["Namespace"] = namespace + data.Data["Namespace"] = vars.Namespace data.Data["SRIOVDevicePluginImage"] = os.Getenv("SRIOV_DEVICE_PLUGIN_IMAGE") data.Data["ReleaseVersion"] = os.Getenv("RELEASEVERSION") data.Data["ResourcePrefix"] = os.Getenv("RESOURCE_PREFIX") @@ -384,7 +384,7 @@ func (r *SriovNetworkNodePolicyReconciler) syncPluginDaemonObjs(ctx context.Cont defaultConfig := &sriovnetworkv1.SriovOperatorConfig{} err = r.Get(ctx, types.NamespacedName{ - Name: constants.DefaultConfigName, Namespace: namespace}, defaultConfig) + Name: constants.DefaultConfigName, Namespace: vars.Namespace}, defaultConfig) if err != nil { return err } @@ -436,7 +436,7 @@ func (r *SriovNetworkNodePolicyReconciler) syncPluginDaemonObjs(ctx context.Cont func (r *SriovNetworkNodePolicyReconciler) deleteSriovCniManifests(ctx context.Context) error { ds := &appsv1.DaemonSet{} - err := r.Get(ctx, types.NamespacedName{Namespace: namespace, Name: "sriov-cni"}, ds) + err := r.Get(ctx, types.NamespacedName{Namespace: vars.Namespace, Name: "sriov-cni"}, ds) if err != nil { if !errors.IsNotFound(err) { return err @@ -449,7 +449,7 @@ func (r *SriovNetworkNodePolicyReconciler) deleteSriovCniManifests(ctx context.C } rb := &rbacv1.RoleBinding{} - err = r.Get(ctx, types.NamespacedName{Namespace: namespace, Name: "sriov-cni"}, rb) + err = r.Get(ctx, types.NamespacedName{Namespace: vars.Namespace, Name: "sriov-cni"}, rb) if err != nil { if !errors.IsNotFound(err) { return err @@ -462,7 +462,7 @@ func (r *SriovNetworkNodePolicyReconciler) deleteSriovCniManifests(ctx context.C } sa := &corev1.ServiceAccount{} - err = r.Get(ctx, types.NamespacedName{Namespace: namespace, Name: "sriov-cni"}, sa) + err = r.Get(ctx, types.NamespacedName{Namespace: vars.Namespace, Name: "sriov-cni"}, sa) if err != nil { if !errors.IsNotFound(err) { return err @@ -629,7 +629,7 @@ func (r *SriovNetworkNodePolicyReconciler) renderDevicePluginConfigData(ctx cont } nodeState := &sriovnetworkv1.SriovNetworkNodeState{} - err := r.Get(ctx, types.NamespacedName{Namespace: namespace, Name: node.Name}, nodeState) + err := r.Get(ctx, types.NamespacedName{Namespace: vars.Namespace, Name: node.Name}, nodeState) if err != nil { return rcl, err } diff --git a/controllers/sriovnetworknodepolicy_controller_test.go b/controllers/sriovnetworknodepolicy_controller_test.go index e3dc044634..5435ba90dd 100644 --- a/controllers/sriovnetworknodepolicy_controller_test.go +++ b/controllers/sriovnetworknodepolicy_controller_test.go @@ -18,6 +18,7 @@ import ( sriovnetworkv1 "github.com/k8snetworkplumbingwg/sriov-network-operator/api/v1" v1 "github.com/k8snetworkplumbingwg/sriov-network-operator/api/v1" "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/global/consts" + "github.com/k8snetworkplumbingwg/sriov-network-operator/pkg/global/vars" ) func TestNodeSelectorMerge(t *testing.T) { @@ -213,7 +214,7 @@ func TestRenderDevicePluginConfigData(t *testing.T) { reconciler := SriovNetworkNodePolicyReconciler{} node := corev1.Node{ObjectMeta: metav1.ObjectMeta{Name: "node1"}} - nodeState := sriovnetworkv1.SriovNetworkNodeState{ObjectMeta: metav1.ObjectMeta{Name: node.Name, Namespace: namespace}} + nodeState := sriovnetworkv1.SriovNetworkNodeState{ObjectMeta: metav1.ObjectMeta{Name: node.Name, Namespace: vars.Namespace}} scheme := runtime.NewScheme() utilruntime.Must(sriovnetworkv1.AddToScheme(scheme)) diff --git a/controllers/sriovnetworkpoolconfig_controller.go b/controllers/sriovnetworkpoolconfig_controller.go index 9fb4b05da3..a4ff82d6b7 100644 --- a/controllers/sriovnetworkpoolconfig_controller.go +++ b/controllers/sriovnetworkpoolconfig_controller.go @@ -7,9 +7,12 @@ import ( "reflect" mcfgv1 "github.com/openshift/machine-config-operator/pkg/apis/machineconfiguration.openshift.io/v1" + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/intstr" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/log" @@ -53,11 +56,25 @@ func (r *SriovNetworkPoolConfigReconciler) Reconcile(ctx context.Context, req ct } logger.Info("Reconciling") - // // Fetch SriovNetworkPoolConfig + // Fetch SriovNetworkPoolConfig instance := &sriovnetworkv1.SriovNetworkPoolConfig{} err := r.Get(ctx, req.NamespacedName, instance) if err != nil { if errors.IsNotFound(err) { + // looks like someone remove the default pool lets recreate it... + if req.Name == constants.DefaultConfigName { + config := &sriovnetworkv1.SriovNetworkPoolConfig{} + config.Namespace = vars.Namespace + config.Name = constants.DefaultConfigName + maxUnv := intstr.Parse("1") + config.Spec = sriovnetworkv1.SriovNetworkPoolConfigSpec{ + MaxUnavailable: &maxUnv, + NodeSelector: &metav1.LabelSelector{}, + } + err = r.Create(context.TODO(), config) + return reconcile.Result{}, err + } + // Request object not found, could have been deleted after reconcile request. // Owned objects are automatically garbage collected. For additional cleanup logic use finalizers. // Return and don't requeue diff --git a/controllers/sriovoperatorconfig_controller.go b/controllers/sriovoperatorconfig_controller.go index 76e144d770..b3a1a1f677 100644 --- a/controllers/sriovoperatorconfig_controller.go +++ b/controllers/sriovoperatorconfig_controller.go @@ -77,7 +77,7 @@ func (r *SriovOperatorConfigReconciler) Reconcile(ctx context.Context, req ctrl. } defaultConfig := &sriovnetworkv1.SriovOperatorConfig{} err := r.Get(ctx, types.NamespacedName{ - Name: consts.DefaultConfigName, Namespace: namespace}, defaultConfig) + Name: consts.DefaultConfigName, Namespace: vars.Namespace}, defaultConfig) if err != nil { if apierrors.IsNotFound(err) { singleNode, err := utils.IsSingleNodeCluster(r.Client) @@ -86,7 +86,7 @@ func (r *SriovOperatorConfigReconciler) Reconcile(ctx context.Context, req ctrl. } // Default Config object not found, create it. - defaultConfig.SetNamespace(namespace) + defaultConfig.SetNamespace(vars.Namespace) defaultConfig.SetName(consts.DefaultConfigName) defaultConfig.Spec = sriovnetworkv1.SriovOperatorConfigSpec{ EnableInjector: func() *bool { b := enableAdmissionController; return &b }(), @@ -100,7 +100,7 @@ func (r *SriovOperatorConfigReconciler) Reconcile(ctx context.Context, req ctrl. err = r.Create(ctx, defaultConfig) if err != nil { logger.Error(err, "Failed to create default Operator Config", "Namespace", - namespace, "Name", consts.DefaultConfigName) + vars.Namespace, "Name", consts.DefaultConfigName) return reconcile.Result{}, err } return reconcile.Result{}, nil @@ -109,7 +109,7 @@ func (r *SriovOperatorConfigReconciler) Reconcile(ctx context.Context, req ctrl. return reconcile.Result{}, err } - if req.Namespace != namespace { + if req.Namespace != vars.Namespace { return reconcile.Result{}, nil } @@ -160,7 +160,7 @@ func (r *SriovOperatorConfigReconciler) syncPluginDaemonSet(ctx context.Context, names := []string{"sriov-cni", "sriov-device-plugin"} for _, name := range names { - err := r.Client.Get(ctx, types.NamespacedName{Name: name, Namespace: namespace}, ds) + err := r.Client.Get(ctx, types.NamespacedName{Name: name, Namespace: vars.Namespace}, ds) if err != nil { if apierrors.IsNotFound(err) { continue @@ -189,7 +189,7 @@ func (r *SriovOperatorConfigReconciler) syncConfigDaemonSet(ctx context.Context, data := render.MakeRenderData() data.Data["Image"] = os.Getenv("SRIOV_NETWORK_CONFIG_DAEMON_IMAGE") - data.Data["Namespace"] = namespace + data.Data["Namespace"] = vars.Namespace data.Data["SRIOVCNIImage"] = os.Getenv("SRIOV_CNI_IMAGE") data.Data["SRIOVInfiniBandCNIImage"] = os.Getenv("SRIOV_INFINIBAND_CNI_IMAGE") data.Data["ReleaseVersion"] = os.Getenv("RELEASEVERSION") @@ -247,7 +247,7 @@ func (r *SriovOperatorConfigReconciler) syncWebhookObjs(ctx context.Context, dc for name, path := range webhooks { // Render Webhook manifests data := render.MakeRenderData() - data.Data["Namespace"] = namespace + data.Data["Namespace"] = vars.Namespace data.Data["SRIOVMutatingWebhookName"] = name data.Data["NetworkResourcesInjectorImage"] = os.Getenv("NETWORK_RESOURCES_INJECTOR_IMAGE") data.Data["SriovNetworkWebhookImage"] = os.Getenv("SRIOV_NETWORK_WEBHOOK_IMAGE") diff --git a/main.go b/main.go index 4d3ae72e29..ac03ae5b13 100644 --- a/main.go +++ b/main.go @@ -100,7 +100,6 @@ func main() { le := leaderelection.GetLeaderElectionConfig(kubeClient, enableLeaderElection) - namespace := os.Getenv("NAMESPACE") mgr, err := ctrl.NewManager(restConfig, ctrl.Options{ Scheme: scheme, Metrics: server.Options{BindAddress: metricsAddr}, @@ -111,7 +110,7 @@ func main() { RenewDeadline: &le.RenewDeadline, RetryPeriod: &le.RetryPeriod, LeaderElectionID: "a56def2a.openshift.io", - Cache: cache.Options{DefaultNamespaces: map[string]cache.Config{namespace: {}}}, + Cache: cache.Options{DefaultNamespaces: map[string]cache.Config{vars.Namespace: {}}}, }) if err != nil { setupLog.Error(err, "unable to start manager") @@ -271,9 +270,8 @@ func main() { } func initNicIDMap() error { - namespace := os.Getenv("NAMESPACE") kubeclient := kubernetes.NewForConfigOrDie(ctrl.GetConfigOrDie()) - if err := sriovnetworkv1.InitNicIDMapFromConfigMap(kubeclient, namespace); err != nil { + if err := sriovnetworkv1.InitNicIDMapFromConfigMap(kubeclient, vars.Namespace); err != nil { return err } @@ -289,12 +287,11 @@ func createDefaultPolicy(c client.Client) error { NicSelector: sriovnetworkv1.SriovNetworkNicSelector{}, }, } - namespace := os.Getenv("NAMESPACE") - err := c.Get(context.TODO(), types.NamespacedName{Name: constants.DefaultPolicyName, Namespace: namespace}, policy) + err := c.Get(context.TODO(), types.NamespacedName{Name: constants.DefaultPolicyName, Namespace: vars.Namespace}, policy) if err != nil { if errors.IsNotFound(err) { logger.Info("Create a default SriovNetworkNodePolicy") - policy.Namespace = namespace + policy.Namespace = vars.Namespace policy.Name = constants.DefaultPolicyName err = c.Create(context.TODO(), policy) if err != nil { @@ -324,12 +321,11 @@ func createDefaultOperatorConfig(c client.Client) error { DisableDrain: singleNode, }, } - namespace := os.Getenv("NAMESPACE") - err = c.Get(context.TODO(), types.NamespacedName{Name: constants.DefaultConfigName, Namespace: namespace}, config) + err = c.Get(context.TODO(), types.NamespacedName{Name: constants.DefaultConfigName, Namespace: vars.Namespace}, config) if err != nil { if errors.IsNotFound(err) { logger.Info("Create default SriovOperatorConfig") - config.Namespace = namespace + config.Namespace = vars.Namespace config.Name = constants.DefaultConfigName err = c.Create(context.TODO(), config) if err != nil { @@ -346,12 +342,11 @@ func createDefaultPoolConfig(c client.Client) error { logger := setupLog.WithName("createDefaultOperatorConfig") config := &sriovnetworkv1.SriovNetworkPoolConfig{} - namespace := os.Getenv("NAMESPACE") - err := c.Get(context.TODO(), types.NamespacedName{Name: constants.DefaultConfigName, Namespace: namespace}, config) + err := c.Get(context.TODO(), types.NamespacedName{Name: constants.DefaultConfigName, Namespace: vars.Namespace}, config) if err != nil { if errors.IsNotFound(err) { logger.Info("Create default SriovNetworkPoolConfig") - config.Namespace = namespace + config.Namespace = vars.Namespace config.Name = constants.DefaultConfigName maxun := intstr.Parse("1") config.Spec = sriovnetworkv1.SriovNetworkPoolConfigSpec{ diff --git a/pkg/daemon/daemon.go b/pkg/daemon/daemon.go index daf01545a3..687274022f 100644 --- a/pkg/daemon/daemon.go +++ b/pkg/daemon/daemon.go @@ -89,8 +89,6 @@ const ( udevScriptsPath = "/bindata/scripts/load-udev.sh" ) -var namespace = os.Getenv("NAMESPACE") - func New( client client.Client, sriovClient snclientset.Interface, @@ -157,7 +155,7 @@ func (dn *Daemon) Run(stopCh <-chan struct{}, exitCh <-chan error) error { dn.mu = &sync.Mutex{} informerFactory := sninformer.NewFilteredSharedInformerFactory(dn.sriovClient, time.Second*15, - namespace, + vars.Namespace, func(lo *metav1.ListOptions) { lo.FieldSelector = "metadata.name=" + vars.NodeName lo.TimeoutSeconds = &timeout @@ -174,7 +172,7 @@ func (dn *Daemon) Run(stopCh <-chan struct{}, exitCh <-chan error) error { cfgInformerFactory := sninformer.NewFilteredSharedInformerFactory(dn.sriovClient, time.Second*30, - namespace, + vars.Namespace, func(lo *metav1.ListOptions) { lo.FieldSelector = "metadata.name=" + "default" }, @@ -306,7 +304,7 @@ func (dn *Daemon) nodeStateSyncHandler() error { var err error // Get the latest NodeState var sriovResult = &systemd.SriovResult{SyncStatus: consts.SyncStatusSucceeded, LastSyncError: ""} - dn.desiredNodeState, err = dn.sriovClient.SriovnetworkV1().SriovNetworkNodeStates(namespace).Get(context.Background(), vars.NodeName, metav1.GetOptions{}) + dn.desiredNodeState, err = dn.sriovClient.SriovnetworkV1().SriovNetworkNodeStates(vars.Namespace).Get(context.Background(), vars.NodeName, metav1.GetOptions{}) if err != nil { log.Log.Error(err, "nodeStateSyncHandler(): Failed to fetch node state", "name", vars.NodeName) return err @@ -392,7 +390,7 @@ func (dn *Daemon) nodeStateSyncHandler() error { // we need to load the latest status to our object // if we don't do it we can have a race here where the user remove the virtual functions but the operator didn't // trigger the refresh - updatedState, err := dn.sriovClient.SriovnetworkV1().SriovNetworkNodeStates(namespace).Get(context.Background(), vars.NodeName, metav1.GetOptions{}) + updatedState, err := dn.sriovClient.SriovnetworkV1().SriovNetworkNodeStates(vars.Namespace).Get(context.Background(), vars.NodeName, metav1.GetOptions{}) if err != nil { log.Log.Error(err, "nodeStateSyncHandler(): Failed to fetch node state", "name", vars.NodeName) return err @@ -591,7 +589,7 @@ func (dn *Daemon) restartDevicePluginPod() error { log.Log.V(2).Info("restartDevicePluginPod(): try to restart device plugin pod") var podToDelete string - pods, err := dn.kubeClient.CoreV1().Pods(namespace).List(context.Background(), metav1.ListOptions{ + pods, err := dn.kubeClient.CoreV1().Pods(vars.Namespace).List(context.Background(), metav1.ListOptions{ LabelSelector: "app=sriov-device-plugin", FieldSelector: "spec.nodeName=" + vars.NodeName, }) @@ -611,7 +609,7 @@ func (dn *Daemon) restartDevicePluginPod() error { podToDelete = pods.Items[0].Name log.Log.V(2).Info("restartDevicePluginPod(): Found device plugin pod, deleting it", "pod-name", podToDelete) - err = dn.kubeClient.CoreV1().Pods(namespace).Delete(context.Background(), podToDelete, metav1.DeleteOptions{}) + err = dn.kubeClient.CoreV1().Pods(vars.Namespace).Delete(context.Background(), podToDelete, metav1.DeleteOptions{}) if errors.IsNotFound(err) { log.Log.Info("restartDevicePluginPod(): pod to delete not found") return nil @@ -622,7 +620,7 @@ func (dn *Daemon) restartDevicePluginPod() error { } if err := wait.PollImmediateUntil(3*time.Second, func() (bool, error) { - _, err := dn.kubeClient.CoreV1().Pods(namespace).Get(context.Background(), podToDelete, metav1.GetOptions{}) + _, err := dn.kubeClient.CoreV1().Pods(vars.Namespace).Get(context.Background(), podToDelete, metav1.GetOptions{}) if errors.IsNotFound(err) { log.Log.Info("restartDevicePluginPod(): device plugin pod exited") return true, nil @@ -666,7 +664,7 @@ func (dn *Daemon) rebootNode() { func (dn *Daemon) tryCreateSwitchdevUdevRule() error { log.Log.V(2).Info("tryCreateSwitchdevUdevRule()") - nodeState, nodeStateErr := dn.sriovClient.SriovnetworkV1().SriovNetworkNodeStates(namespace).Get( + nodeState, nodeStateErr := dn.sriovClient.SriovnetworkV1().SriovNetworkNodeStates(vars.Namespace).Get( context.Background(), vars.NodeName, metav1.GetOptions{}, diff --git a/pkg/daemon/daemon_test.go b/pkg/daemon/daemon_test.go index 9538e7f57e..affcc87bcd 100644 --- a/pkg/daemon/daemon_test.go +++ b/pkg/daemon/daemon_test.go @@ -31,7 +31,7 @@ import ( var FakeSupportedNicIDs corev1.ConfigMap = corev1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ Name: sriovnetworkv1.SupportedNicIDConfigmap, - Namespace: namespace, + Namespace: vars.Namespace, }, Data: map[string]string{ "Intel_i40e_XXV710": "8086 158a 154c", @@ -42,7 +42,7 @@ var FakeSupportedNicIDs corev1.ConfigMap = corev1.ConfigMap{ var SriovDevicePluginPod corev1.Pod = corev1.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "sriov-device-plugin-xxxx", - Namespace: namespace, + Namespace: vars.Namespace, Labels: map[string]string{ "app": "sriov-device-plugin", }, @@ -113,7 +113,7 @@ var _ = Describe("Config Daemon", func() { ObjectMeta: metav1.ObjectMeta{Name: "test-node"}}) snclient := snclientset.NewSimpleClientset() - err = sriovnetworkv1.InitNicIDMapFromConfigMap(kubeClient, namespace) + err = sriovnetworkv1.InitNicIDMapFromConfigMap(kubeClient, vars.Namespace) Expect(err).ToNot(HaveOccurred()) er := NewEventRecorder(snclient, kubeClient) @@ -207,7 +207,7 @@ var _ = Describe("Config Daemon", func() { Expect(msg.syncStatus).To(Equal("Succeeded")) Eventually(func() (int, error) { - podList, err := sut.kubeClient.CoreV1().Pods(namespace).List(context.Background(), metav1.ListOptions{ + podList, err := sut.kubeClient.CoreV1().Pods(vars.Namespace).List(context.Background(), metav1.ListOptions{ LabelSelector: "app=sriov-device-plugin", FieldSelector: "spec.nodeName=test-node", }) @@ -264,14 +264,14 @@ var _ = Describe("Config Daemon", func() { func createSriovNetworkNodeState(c snclient.Interface, nodeState *sriovnetworkv1.SriovNetworkNodeState) error { _, err := c.SriovnetworkV1(). - SriovNetworkNodeStates(namespace). + SriovNetworkNodeStates(vars.Namespace). Create(context.Background(), nodeState, metav1.CreateOptions{}) return err } func updateSriovNetworkNodeState(c snclient.Interface, nodeState *sriovnetworkv1.SriovNetworkNodeState) error { _, err := c.SriovnetworkV1(). - SriovNetworkNodeStates(namespace). + SriovNetworkNodeStates(vars.Namespace). Update(context.Background(), nodeState, metav1.UpdateOptions{}) return err } diff --git a/pkg/daemon/event_recorder.go b/pkg/daemon/event_recorder.go index cceb4e5fd0..462a4daabf 100644 --- a/pkg/daemon/event_recorder.go +++ b/pkg/daemon/event_recorder.go @@ -36,7 +36,7 @@ func NewEventRecorder(c snclientset.Interface, kubeclient kubernetes.Interface) // SendEvent Send an Event on the NodeState object func (e *EventRecorder) SendEvent(eventType string, msg string) { - nodeState, err := e.client.SriovnetworkV1().SriovNetworkNodeStates(namespace).Get(context.Background(), vars.NodeName, metav1.GetOptions{}) + nodeState, err := e.client.SriovnetworkV1().SriovNetworkNodeStates(vars.Namespace).Get(context.Background(), vars.NodeName, metav1.GetOptions{}) if err != nil { log.Log.V(2).Error(err, "SendEvent(): Failed to fetch node state, skip SendEvent", "name", vars.NodeName) return diff --git a/pkg/daemon/writer.go b/pkg/daemon/writer.go index 2964e46d27..a6c6afa600 100644 --- a/pkg/daemon/writer.go +++ b/pkg/daemon/writer.go @@ -153,7 +153,7 @@ func (w *NodeStateStatusWriter) updateNodeStateStatusRetry(f func(*sriovnetworkv lastError = n.Status.LastSyncError var err error - nodeState, err = w.client.SriovnetworkV1().SriovNetworkNodeStates(namespace).UpdateStatus(context.Background(), n, metav1.UpdateOptions{}) + nodeState, err = w.client.SriovnetworkV1().SriovNetworkNodeStates(vars.Namespace).UpdateStatus(context.Background(), n, metav1.UpdateOptions{}) if err != nil { log.Log.V(0).Error(err, "updateNodeStateStatusRetry(): fail to update the node status") } @@ -210,7 +210,7 @@ func (w *NodeStateStatusWriter) getNodeState() (*sriovnetworkv1.SriovNetworkNode var lastErr error var n *sriovnetworkv1.SriovNetworkNodeState err := wait.PollImmediate(10*time.Second, 5*time.Minute, func() (bool, error) { - n, lastErr = w.client.SriovnetworkV1().SriovNetworkNodeStates(namespace).Get(context.Background(), vars.NodeName, metav1.GetOptions{}) + n, lastErr = w.client.SriovnetworkV1().SriovNetworkNodeStates(vars.Namespace).Get(context.Background(), vars.NodeName, metav1.GetOptions{}) if lastErr == nil { return true, nil } diff --git a/pkg/global/vars/vars.go b/pkg/global/vars/vars.go index fd3db93603..f8791674bf 100644 --- a/pkg/global/vars/vars.go +++ b/pkg/global/vars/vars.go @@ -11,6 +11,8 @@ import ( ) var ( + Namespace string + ClusterType string // PlatformsMap contains supported platforms for virtual VF @@ -48,6 +50,8 @@ func init() { Config = nil Scheme = nil + Namespace = os.Getenv("NAMESPACE") + ClusterType = os.Getenv("CLUSTER_TYPE") DevMode = false