diff --git a/pkg/volume/csi/nodeinfomanager/nodeinfomanager.go b/pkg/volume/csi/nodeinfomanager/nodeinfomanager.go index 1bff173c5fe..2e5e8bc26e7 100644 --- a/pkg/volume/csi/nodeinfomanager/nodeinfomanager.go +++ b/pkg/volume/csi/nodeinfomanager/nodeinfomanager.go @@ -41,7 +41,6 @@ import ( nodeutil "k8s.io/component-helpers/node/util" "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/volume" - "k8s.io/kubernetes/pkg/volume/util" ) const ( @@ -115,7 +114,6 @@ func (nim *nodeInfoManager) InstallCSIDriver(driverName string, driverNodeID str } nodeUpdateFuncs := []nodeUpdateFunc{ - removeMaxAttachLimit(driverName), // remove in 1.35 due to the version skew policy, we have to keep it for 3 releases updateNodeIDInNode(driverName, driverNodeID), updateTopologyLabels(topology), } @@ -153,7 +151,6 @@ func (nim *nodeInfoManager) UninstallCSIDriver(driverName string) error { } err = nim.updateNode( - removeMaxAttachLimit(driverName), // remove it when this function is removed from nodeUpdateFuncs removeNodeIDFromNode(driverName), ) if err != nil { @@ -655,35 +652,3 @@ func (nim *nodeInfoManager) tryUninstallDriverFromCSINode( return err // do not wrap error } - -func removeMaxAttachLimit(driverName string) nodeUpdateFunc { - return func(node *v1.Node) (*v1.Node, bool, error) { - limitKey := v1.ResourceName(util.GetCSIAttachLimitKey(driverName)) - - capacityExists := false - if node.Status.Capacity != nil { - _, capacityExists = node.Status.Capacity[limitKey] - } - - allocatableExists := false - if node.Status.Allocatable != nil { - _, allocatableExists = node.Status.Allocatable[limitKey] - } - - if !capacityExists && !allocatableExists { - return node, false, nil - } - - delete(node.Status.Capacity, limitKey) - if len(node.Status.Capacity) == 0 { - node.Status.Capacity = nil - } - - delete(node.Status.Allocatable, limitKey) - if len(node.Status.Allocatable) == 0 { - node.Status.Allocatable = nil - } - - return node, true, nil - } -} diff --git a/pkg/volume/csi/nodeinfomanager/nodeinfomanager_test.go b/pkg/volume/csi/nodeinfomanager/nodeinfomanager_test.go index 7b414223c75..c71f1552fd9 100644 --- a/pkg/volume/csi/nodeinfomanager/nodeinfomanager_test.go +++ b/pkg/volume/csi/nodeinfomanager/nodeinfomanager_test.go @@ -40,7 +40,6 @@ import ( utiltesting "k8s.io/client-go/util/testing" "k8s.io/kubernetes/pkg/apis/core/helper" volumetest "k8s.io/kubernetes/pkg/volume/testing" - "k8s.io/kubernetes/pkg/volume/util" "k8s.io/utils/ptr" ) @@ -734,39 +733,6 @@ func TestUninstallCSIDriver(t *testing.T) { Spec: storage.CSINodeSpec{}, }, }, - { - name: "new node with valid max limit", - driverName: "com.example.csi.driver1", - existingNode: generateNode( - nil, /*nodeIDs*/ - nil, /*labels*/ - map[v1.ResourceName]resource.Quantity{ - v1.ResourceCPU: *resource.NewScaledQuantity(4, -3), - v1.ResourceName(util.GetCSIAttachLimitKey("com.example.csi/driver1")): *resource.NewQuantity(10, resource.DecimalSI), - }, - ), - expectedNode: &v1.Node{ - ObjectMeta: metav1.ObjectMeta{ - Name: "node1", - }, - Status: v1.NodeStatus{ - Capacity: v1.ResourceList{ - v1.ResourceCPU: *resource.NewScaledQuantity(4, -3), - v1.ResourceName(util.GetCSIAttachLimitKey("com.example.csi/driver1")): *resource.NewQuantity(10, resource.DecimalSI), - }, - Allocatable: v1.ResourceList{ - v1.ResourceCPU: *resource.NewScaledQuantity(4, -3), - v1.ResourceName(util.GetCSIAttachLimitKey("com.example.csi/driver1")): *resource.NewQuantity(10, resource.DecimalSI), - }, - }, - }, - expectedCSINode: &storage.CSINode{ - ObjectMeta: getCSINodeObjectMeta(), - Spec: storage.CSINodeSpec{}, - }, - inputTopology: nil, - inputNodeID: "com.example.csi/csi-node1", - }, } test(t, false /* addNodeInfo */, testcases) diff --git a/pkg/volume/util/attach_limit.go b/pkg/volume/util/attach_limit.go deleted file mode 100644 index 4249a6be4f8..00000000000 --- a/pkg/volume/util/attach_limit.go +++ /dev/null @@ -1,48 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package util - -import ( - "crypto/sha1" - "encoding/hex" -) - -// This file is a common place holder for volume limit utility constants -// shared between volume package and scheduler - -const ( - // CSIAttachLimitPrefix defines prefix used for CSI volumes - CSIAttachLimitPrefix = "attachable-volumes-csi-" - - // ResourceNameLengthLimit stores maximum allowed Length for a ResourceName - ResourceNameLengthLimit = 63 -) - -// GetCSIAttachLimitKey returns limit key used for CSI volumes -func GetCSIAttachLimitKey(driverName string) string { - csiPrefixLength := len(CSIAttachLimitPrefix) - totalkeyLength := csiPrefixLength + len(driverName) - if totalkeyLength >= ResourceNameLengthLimit { - charsFromDriverName := driverName[:23] - hash := sha1.New() - hash.Write([]byte(driverName)) - hashed := hex.EncodeToString(hash.Sum(nil)) - hashed = hashed[:16] - return CSIAttachLimitPrefix + charsFromDriverName + hashed - } - return CSIAttachLimitPrefix + driverName -} diff --git a/pkg/volume/util/attach_limit_test.go b/pkg/volume/util/attach_limit_test.go deleted file mode 100644 index e298f197bf4..00000000000 --- a/pkg/volume/util/attach_limit_test.go +++ /dev/null @@ -1,55 +0,0 @@ -/* -Copyright 2018 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package util - -import ( - "crypto/sha1" - "encoding/hex" - "testing" - - "k8s.io/api/core/v1" - v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper" -) - -func TestGetCSIAttachLimitKey(t *testing.T) { - // When driverName is less than 39 characters - csiLimitKey := GetCSIAttachLimitKey("com.amazon.ebs") - if csiLimitKey != "attachable-volumes-csi-com.amazon.ebs" { - t.Errorf("Expected com.amazon.ebs got %s", csiLimitKey) - } - - // When driver is longer than 39 chars - longDriverName := "com.amazon.kubernetes.eks.ec2.ebs/csi-driver" - csiLimitKeyLonger := GetCSIAttachLimitKey(longDriverName) - if !v1helper.IsAttachableVolumeResourceName(v1.ResourceName(csiLimitKeyLonger)) { - t.Errorf("Expected %s to have attachable prefix", csiLimitKeyLonger) - } - - expectedCSIKey := getDriverHash(longDriverName) - if csiLimitKeyLonger != expectedCSIKey { - t.Errorf("Expected limit to be %s got %s", expectedCSIKey, csiLimitKeyLonger) - } -} - -func getDriverHash(driverName string) string { - charsFromDriverName := driverName[:23] - hash := sha1.New() - hash.Write([]byte(driverName)) - hashed := hex.EncodeToString(hash.Sum(nil)) - hashed = hashed[:16] - return CSIAttachLimitPrefix + charsFromDriverName + hashed -}