mirror of
https://github.com/intel/intel-device-plugins-for-kubernetes.git
synced 2025-06-03 03:59:37 +00:00

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>
45 lines
917 B
Go
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
|
|
}
|