Kubelet creates v1.CSINode
This commit is contained in:
		@@ -11,7 +11,7 @@ go_library(
 | 
				
			|||||||
        "//pkg/volume:go_default_library",
 | 
					        "//pkg/volume:go_default_library",
 | 
				
			||||||
        "//pkg/volume/util:go_default_library",
 | 
					        "//pkg/volume/util:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
					        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/api/storage/v1beta1:go_default_library",
 | 
					        "//staging/src/k8s.io/api/storage/v1:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
 | 
					        "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
					        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
 | 
					        "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
 | 
				
			||||||
@@ -48,7 +48,7 @@ go_test(
 | 
				
			|||||||
        "//pkg/volume/testing:go_default_library",
 | 
					        "//pkg/volume/testing:go_default_library",
 | 
				
			||||||
        "//pkg/volume/util:go_default_library",
 | 
					        "//pkg/volume/util:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
					        "//staging/src/k8s.io/api/core/v1:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/api/storage/v1beta1:go_default_library",
 | 
					        "//staging/src/k8s.io/api/storage/v1:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
 | 
					        "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
 | 
					        "//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
					        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	v1 "k8s.io/api/core/v1"
 | 
						v1 "k8s.io/api/core/v1"
 | 
				
			||||||
	storagev1beta1 "k8s.io/api/storage/v1beta1"
 | 
						storagev1 "k8s.io/api/storage/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
						"k8s.io/apimachinery/pkg/api/errors"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/types"
 | 
						"k8s.io/apimachinery/pkg/types"
 | 
				
			||||||
@@ -72,7 +72,7 @@ type nodeUpdateFunc func(*v1.Node) (newNode *v1.Node, updated bool, err error)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Interface implements an interface for managing labels of a node
 | 
					// Interface implements an interface for managing labels of a node
 | 
				
			||||||
type Interface interface {
 | 
					type Interface interface {
 | 
				
			||||||
	CreateCSINode() (*storagev1beta1.CSINode, error)
 | 
						CreateCSINode() (*storagev1.CSINode, error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Updates or Creates the CSINode object with annotations for CSI Migration
 | 
						// Updates or Creates the CSINode object with annotations for CSI Migration
 | 
				
			||||||
	InitializeCSINodeWithAnnotation() error
 | 
						InitializeCSINodeWithAnnotation() error
 | 
				
			||||||
@@ -379,7 +379,7 @@ func (nim *nodeInfoManager) tryUpdateCSINode(
 | 
				
			|||||||
	maxAttachLimit int64,
 | 
						maxAttachLimit int64,
 | 
				
			||||||
	topology map[string]string) error {
 | 
						topology map[string]string) error {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nodeInfo, err := csiKubeClient.StorageV1beta1().CSINodes().Get(string(nim.nodeName), metav1.GetOptions{})
 | 
						nodeInfo, err := csiKubeClient.StorageV1().CSINodes().Get(string(nim.nodeName), metav1.GetOptions{})
 | 
				
			||||||
	if nodeInfo == nil || errors.IsNotFound(err) {
 | 
						if nodeInfo == nil || errors.IsNotFound(err) {
 | 
				
			||||||
		nodeInfo, err = nim.CreateCSINode()
 | 
							nodeInfo, err = nim.CreateCSINode()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -412,7 +412,7 @@ func (nim *nodeInfoManager) InitializeCSINodeWithAnnotation() error {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (nim *nodeInfoManager) tryInitializeCSINodeWithAnnotation(csiKubeClient clientset.Interface) error {
 | 
					func (nim *nodeInfoManager) tryInitializeCSINodeWithAnnotation(csiKubeClient clientset.Interface) error {
 | 
				
			||||||
	nodeInfo, err := csiKubeClient.StorageV1beta1().CSINodes().Get(string(nim.nodeName), metav1.GetOptions{})
 | 
						nodeInfo, err := csiKubeClient.StorageV1().CSINodes().Get(string(nim.nodeName), metav1.GetOptions{})
 | 
				
			||||||
	if nodeInfo == nil || errors.IsNotFound(err) {
 | 
						if nodeInfo == nil || errors.IsNotFound(err) {
 | 
				
			||||||
		// CreateCSINode will set the annotation
 | 
							// CreateCSINode will set the annotation
 | 
				
			||||||
		_, err = nim.CreateCSINode()
 | 
							_, err = nim.CreateCSINode()
 | 
				
			||||||
@@ -424,14 +424,14 @@ func (nim *nodeInfoManager) tryInitializeCSINodeWithAnnotation(csiKubeClient cli
 | 
				
			|||||||
	annotationModified := setMigrationAnnotation(nim.migratedPlugins, nodeInfo)
 | 
						annotationModified := setMigrationAnnotation(nim.migratedPlugins, nodeInfo)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if annotationModified {
 | 
						if annotationModified {
 | 
				
			||||||
		_, err := csiKubeClient.StorageV1beta1().CSINodes().Update(nodeInfo)
 | 
							_, err := csiKubeClient.StorageV1().CSINodes().Update(nodeInfo)
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (nim *nodeInfoManager) CreateCSINode() (*storagev1beta1.CSINode, error) {
 | 
					func (nim *nodeInfoManager) CreateCSINode() (*storagev1.CSINode, error) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	kubeClient := nim.volumeHost.GetKubeClient()
 | 
						kubeClient := nim.volumeHost.GetKubeClient()
 | 
				
			||||||
	if kubeClient == nil {
 | 
						if kubeClient == nil {
 | 
				
			||||||
@@ -448,7 +448,7 @@ func (nim *nodeInfoManager) CreateCSINode() (*storagev1beta1.CSINode, error) {
 | 
				
			|||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nodeInfo := &storagev1beta1.CSINode{
 | 
						nodeInfo := &storagev1.CSINode{
 | 
				
			||||||
		ObjectMeta: metav1.ObjectMeta{
 | 
							ObjectMeta: metav1.ObjectMeta{
 | 
				
			||||||
			Name: string(nim.nodeName),
 | 
								Name: string(nim.nodeName),
 | 
				
			||||||
			OwnerReferences: []metav1.OwnerReference{
 | 
								OwnerReferences: []metav1.OwnerReference{
 | 
				
			||||||
@@ -460,17 +460,17 @@ func (nim *nodeInfoManager) CreateCSINode() (*storagev1beta1.CSINode, error) {
 | 
				
			|||||||
				},
 | 
									},
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		Spec: storagev1beta1.CSINodeSpec{
 | 
							Spec: storagev1.CSINodeSpec{
 | 
				
			||||||
			Drivers: []storagev1beta1.CSINodeDriver{},
 | 
								Drivers: []storagev1.CSINodeDriver{},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	setMigrationAnnotation(nim.migratedPlugins, nodeInfo)
 | 
						setMigrationAnnotation(nim.migratedPlugins, nodeInfo)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return csiKubeClient.StorageV1beta1().CSINodes().Create(nodeInfo)
 | 
						return csiKubeClient.StorageV1().CSINodes().Create(nodeInfo)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func setMigrationAnnotation(migratedPlugins map[string](func() bool), nodeInfo *storagev1beta1.CSINode) (modified bool) {
 | 
					func setMigrationAnnotation(migratedPlugins map[string](func() bool), nodeInfo *storagev1.CSINode) (modified bool) {
 | 
				
			||||||
	if migratedPlugins == nil {
 | 
						if migratedPlugins == nil {
 | 
				
			||||||
		return false
 | 
							return false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -512,7 +512,7 @@ func setMigrationAnnotation(migratedPlugins map[string](func() bool), nodeInfo *
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (nim *nodeInfoManager) installDriverToCSINode(
 | 
					func (nim *nodeInfoManager) installDriverToCSINode(
 | 
				
			||||||
	nodeInfo *storagev1beta1.CSINode,
 | 
						nodeInfo *storagev1.CSINode,
 | 
				
			||||||
	driverName string,
 | 
						driverName string,
 | 
				
			||||||
	driverNodeID string,
 | 
						driverNodeID string,
 | 
				
			||||||
	maxAttachLimit int64,
 | 
						maxAttachLimit int64,
 | 
				
			||||||
@@ -530,7 +530,7 @@ func (nim *nodeInfoManager) installDriverToCSINode(
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	specModified := true
 | 
						specModified := true
 | 
				
			||||||
	// Clone driver list, omitting the driver that matches the given driverName
 | 
						// Clone driver list, omitting the driver that matches the given driverName
 | 
				
			||||||
	newDriverSpecs := []storagev1beta1.CSINodeDriver{}
 | 
						newDriverSpecs := []storagev1.CSINodeDriver{}
 | 
				
			||||||
	for _, driverInfoSpec := range nodeInfo.Spec.Drivers {
 | 
						for _, driverInfoSpec := range nodeInfo.Spec.Drivers {
 | 
				
			||||||
		if driverInfoSpec.Name == driverName {
 | 
							if driverInfoSpec.Name == driverName {
 | 
				
			||||||
			if driverInfoSpec.NodeID == driverNodeID &&
 | 
								if driverInfoSpec.NodeID == driverNodeID &&
 | 
				
			||||||
@@ -550,7 +550,7 @@ func (nim *nodeInfoManager) installDriverToCSINode(
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Append new driver
 | 
						// Append new driver
 | 
				
			||||||
	driverSpec := storagev1beta1.CSINodeDriver{
 | 
						driverSpec := storagev1.CSINodeDriver{
 | 
				
			||||||
		Name:         driverName,
 | 
							Name:         driverName,
 | 
				
			||||||
		NodeID:       driverNodeID,
 | 
							NodeID:       driverNodeID,
 | 
				
			||||||
		TopologyKeys: topologyKeys.List(),
 | 
							TopologyKeys: topologyKeys.List(),
 | 
				
			||||||
@@ -563,7 +563,7 @@ func (nim *nodeInfoManager) installDriverToCSINode(
 | 
				
			|||||||
				maxAttachLimit = math.MaxInt32
 | 
									maxAttachLimit = math.MaxInt32
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			m := int32(maxAttachLimit)
 | 
								m := int32(maxAttachLimit)
 | 
				
			||||||
			driverSpec.Allocatable = &storagev1beta1.VolumeNodeResources{Count: &m}
 | 
								driverSpec.Allocatable = &storagev1.VolumeNodeResources{Count: &m}
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			klog.Errorf("Invalid attach limit value %d cannot be added to CSINode object for %q", maxAttachLimit, driverName)
 | 
								klog.Errorf("Invalid attach limit value %d cannot be added to CSINode object for %q", maxAttachLimit, driverName)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -572,7 +572,7 @@ func (nim *nodeInfoManager) installDriverToCSINode(
 | 
				
			|||||||
	newDriverSpecs = append(newDriverSpecs, driverSpec)
 | 
						newDriverSpecs = append(newDriverSpecs, driverSpec)
 | 
				
			||||||
	nodeInfo.Spec.Drivers = newDriverSpecs
 | 
						nodeInfo.Spec.Drivers = newDriverSpecs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_, err := csiKubeClient.StorageV1beta1().CSINodes().Update(nodeInfo)
 | 
						_, err := csiKubeClient.StorageV1().CSINodes().Update(nodeInfo)
 | 
				
			||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -602,7 +602,7 @@ func (nim *nodeInfoManager) tryUninstallDriverFromCSINode(
 | 
				
			|||||||
	csiKubeClient clientset.Interface,
 | 
						csiKubeClient clientset.Interface,
 | 
				
			||||||
	csiDriverName string) error {
 | 
						csiDriverName string) error {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nodeInfoClient := csiKubeClient.StorageV1beta1().CSINodes()
 | 
						nodeInfoClient := csiKubeClient.StorageV1().CSINodes()
 | 
				
			||||||
	nodeInfo, err := nodeInfoClient.Get(string(nim.nodeName), metav1.GetOptions{})
 | 
						nodeInfo, err := nodeInfoClient.Get(string(nim.nodeName), metav1.GetOptions{})
 | 
				
			||||||
	if err != nil && errors.IsNotFound(err) {
 | 
						if err != nil && errors.IsNotFound(err) {
 | 
				
			||||||
		return nil
 | 
							return nil
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"github.com/stretchr/testify/assert"
 | 
						"github.com/stretchr/testify/assert"
 | 
				
			||||||
	v1 "k8s.io/api/core/v1"
 | 
						v1 "k8s.io/api/core/v1"
 | 
				
			||||||
	storage "k8s.io/api/storage/v1beta1"
 | 
						storage "k8s.io/api/storage/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/api/errors"
 | 
						"k8s.io/apimachinery/pkg/api/errors"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/api/resource"
 | 
						"k8s.io/apimachinery/pkg/api/resource"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
@@ -985,7 +985,7 @@ func TestInstallCSIDriverExistingAnnotation(t *testing.T) {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Assert
 | 
							// Assert
 | 
				
			||||||
		nodeInfo, err := client.StorageV1beta1().CSINodes().Get(nodeName, metav1.GetOptions{})
 | 
							nodeInfo, err := client.StorageV1().CSINodes().Get(nodeName, metav1.GetOptions{})
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			t.Errorf("error getting CSINode: %v", err)
 | 
								t.Errorf("error getting CSINode: %v", err)
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
@@ -1074,7 +1074,7 @@ func test(t *testing.T, addNodeInfo bool, csiNodeInfoEnabled bool, testcases []t
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if csiNodeInfoEnabled {
 | 
							if csiNodeInfoEnabled {
 | 
				
			||||||
			// CSINode validation
 | 
								// CSINode validation
 | 
				
			||||||
			nodeInfo, err := client.StorageV1beta1().CSINodes().Get(nodeName, metav1.GetOptions{})
 | 
								nodeInfo, err := client.StorageV1().CSINodes().Get(nodeName, metav1.GetOptions{})
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				if !errors.IsNotFound(err) {
 | 
									if !errors.IsNotFound(err) {
 | 
				
			||||||
					t.Errorf("error getting CSINode: %v", err)
 | 
										t.Errorf("error getting CSINode: %v", err)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user