intel-device-plugins-for-ku.../cmd/fpga_plugin/mode.go
Mikko Ylinen 61c135d1d6 fpga_plugin: drop dependency to k8s.io/kubernetes
This commit drops fpga_plugin dependency to k8s.io/kubernetes which
was used to get GetHostname(). After this change, the plugin node
name can be set using new -node-name parameter. The default value for
is read from NODE_NAME environment variable.

If the node annotation override check fails, we continue with the default
mode parameter and do not exist like we did previously.

Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
2020-02-21 18:48:30 +02:00

45 lines
917 B
Go

package main
import (
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
)
func getModeOverrideFromCluster(nodeName, kubeConfig, master, mode string) (string, error) {
var config *rest.Config
var err error
if len(nodeName) == 0 {
return mode, fmt.Errorf("node name is not set")
}
if len(kubeConfig) == 0 {
config, err = rest.InClusterConfig()
} else {
config, err = clientcmd.BuildConfigFromFlags(master, kubeConfig)
}
if err != nil {
return mode, err
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
return mode, err
}
node, err := clientset.CoreV1().Nodes().Get(nodeName, metav1.GetOptions{})
if err != nil {
return mode, err
}
if nodeMode, ok := node.ObjectMeta.Annotations["fpga.intel.com/device-plugin-mode"]; ok {
return nodeMode, nil
}
return mode, nil
}