mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	move GCERegionalPersistentDisk feature to k8s.io/cloud-provider
This commit is contained in:
		@@ -47,7 +47,6 @@ go_library(
 | 
			
		||||
    importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/gce",
 | 
			
		||||
    deps = [
 | 
			
		||||
        "//pkg/api/v1/service:go_default_library",
 | 
			
		||||
        "//pkg/features:go_default_library",
 | 
			
		||||
        "//pkg/kubelet/apis:go_default_library",
 | 
			
		||||
        "//pkg/master/ports:go_default_library",
 | 
			
		||||
        "//pkg/util/net/sets:go_default_library",
 | 
			
		||||
@@ -74,6 +73,7 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/client-go/tools/record:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/client-go/util/flowcontrol:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/features:go_default_library",
 | 
			
		||||
        "//vendor/cloud.google.com/go/compute/metadata:go_default_library",
 | 
			
		||||
        "//vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud:go_default_library",
 | 
			
		||||
        "//vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/filter:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -38,8 +38,8 @@ import (
 | 
			
		||||
	compute "google.golang.org/api/compute/v1"
 | 
			
		||||
	"google.golang.org/api/googleapi"
 | 
			
		||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
			
		||||
	cloudfeatures "k8s.io/cloud-provider/features"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/features"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// DiskType defines a specific type for holding disk types (eg. pd-ssd)
 | 
			
		||||
@@ -146,8 +146,8 @@ func (manager *gceServiceManager) CreateRegionalDiskOnCloudProvider(
 | 
			
		||||
	diskType string,
 | 
			
		||||
	replicaZones sets.String) error {
 | 
			
		||||
 | 
			
		||||
	if !utilfeature.DefaultFeatureGate.Enabled(features.GCERegionalPersistentDisk) {
 | 
			
		||||
		return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", features.GCERegionalPersistentDisk)
 | 
			
		||||
	if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
 | 
			
		||||
		return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	diskTypeURI, err := manager.getDiskTypeURI(
 | 
			
		||||
@@ -247,8 +247,8 @@ func (manager *gceServiceManager) GetDiskFromCloudProvider(
 | 
			
		||||
func (manager *gceServiceManager) GetRegionalDiskFromCloudProvider(
 | 
			
		||||
	diskName string) (*Disk, error) {
 | 
			
		||||
 | 
			
		||||
	if !utilfeature.DefaultFeatureGate.Enabled(features.GCERegionalPersistentDisk) {
 | 
			
		||||
		return nil, fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", features.GCERegionalPersistentDisk)
 | 
			
		||||
	if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
 | 
			
		||||
		return nil, fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ctx, cancel := cloud.ContextWithCallTimeout()
 | 
			
		||||
@@ -284,8 +284,8 @@ func (manager *gceServiceManager) DeleteDiskOnCloudProvider(
 | 
			
		||||
func (manager *gceServiceManager) DeleteRegionalDiskOnCloudProvider(
 | 
			
		||||
	diskName string) error {
 | 
			
		||||
 | 
			
		||||
	if !utilfeature.DefaultFeatureGate.Enabled(features.GCERegionalPersistentDisk) {
 | 
			
		||||
		return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", features.GCERegionalPersistentDisk)
 | 
			
		||||
	if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
 | 
			
		||||
		return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ctx, cancel := cloud.ContextWithCallTimeout()
 | 
			
		||||
@@ -411,8 +411,8 @@ func (manager *gceServiceManager) ResizeDiskOnCloudProvider(disk *Disk, sizeGb i
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (manager *gceServiceManager) RegionalResizeDiskOnCloudProvider(disk *Disk, sizeGb int64) error {
 | 
			
		||||
	if !utilfeature.DefaultFeatureGate.Enabled(features.GCERegionalPersistentDisk) {
 | 
			
		||||
		return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", features.GCERegionalPersistentDisk)
 | 
			
		||||
	if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
 | 
			
		||||
		return fmt.Errorf("the regional PD feature is only available with the %s Kubernetes feature gate enabled", cloudfeatures.GCERegionalPersistentDisk)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	resizeServiceRequest := &compute.RegionDisksResizeRequest{
 | 
			
		||||
@@ -532,7 +532,7 @@ func (g *Cloud) AttachDisk(diskName string, nodeName types.NodeName, readOnly bo
 | 
			
		||||
	// Try fetching as regional PD
 | 
			
		||||
	var disk *Disk
 | 
			
		||||
	var mc *metricContext
 | 
			
		||||
	if regional && utilfeature.DefaultFeatureGate.Enabled(features.GCERegionalPersistentDisk) {
 | 
			
		||||
	if regional && utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
 | 
			
		||||
		disk, err = g.getRegionalDiskByName(diskName)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
@@ -768,7 +768,7 @@ func (g *Cloud) ResizeDisk(diskToResize string, oldSize resource.Quantity, newSi
 | 
			
		||||
		}
 | 
			
		||||
		return newSizeQuant, mc.Observe(err)
 | 
			
		||||
	case multiZone:
 | 
			
		||||
		if !utilfeature.DefaultFeatureGate.Enabled(features.GCERegionalPersistentDisk) {
 | 
			
		||||
		if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
 | 
			
		||||
			return oldSize, fmt.Errorf("disk.ZoneInfo has unexpected type %T", zoneInfo)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -811,7 +811,7 @@ func (g *Cloud) GetAutoLabelsForPD(name string, zone string) (map[string]string,
 | 
			
		||||
		// We could assume the disks exists; we have all the information we need
 | 
			
		||||
		// However it is more consistent to ensure the disk exists,
 | 
			
		||||
		// and in future we may gather addition information (e.g. disk type, IOPS etc)
 | 
			
		||||
		if utilfeature.DefaultFeatureGate.Enabled(features.GCERegionalPersistentDisk) {
 | 
			
		||||
		if utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
 | 
			
		||||
			zoneSet, err := volumeutil.LabelZonesToSet(zone)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				klog.Warningf("Failed to parse zone field: %q. Will use raw field.", zone)
 | 
			
		||||
@@ -916,7 +916,7 @@ func (g *Cloud) getRegionalDiskByName(diskName string) (*Disk, error) {
 | 
			
		||||
// Prefer getDiskByName, if the zone can be established
 | 
			
		||||
// Return cloudprovider.DiskNotFound if the given disk cannot be found in any zone
 | 
			
		||||
func (g *Cloud) GetDiskByNameUnknownZone(diskName string) (*Disk, error) {
 | 
			
		||||
	if utilfeature.DefaultFeatureGate.Enabled(features.GCERegionalPersistentDisk) {
 | 
			
		||||
	if utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
 | 
			
		||||
		regionalDisk, err := g.getRegionalDiskByName(diskName)
 | 
			
		||||
		if err == nil {
 | 
			
		||||
			return regionalDisk, err
 | 
			
		||||
@@ -996,7 +996,7 @@ func (g *Cloud) doDeleteDisk(diskToDelete string) error {
 | 
			
		||||
		mc = newDiskMetricContextZonal("delete", disk.Region, zoneInfo.zone)
 | 
			
		||||
		return mc.Observe(g.manager.DeleteDiskOnCloudProvider(zoneInfo.zone, disk.Name))
 | 
			
		||||
	case multiZone:
 | 
			
		||||
		if !utilfeature.DefaultFeatureGate.Enabled(features.GCERegionalPersistentDisk) {
 | 
			
		||||
		if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
 | 
			
		||||
			return fmt.Errorf("disk.ZoneInfo has unexpected type %T", zoneInfo)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,6 +13,7 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/apiextensions-apiserver/pkg/features:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apiserver/pkg/features:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/features:go_default_library",
 | 
			
		||||
    ],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,7 @@ import (
 | 
			
		||||
	apiextensionsfeatures "k8s.io/apiextensions-apiserver/pkg/features"
 | 
			
		||||
	genericfeatures "k8s.io/apiserver/pkg/features"
 | 
			
		||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
			
		||||
	cloudfeatures "k8s.io/cloud-provider/features"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
@@ -282,12 +283,6 @@ const (
 | 
			
		||||
	// Enable container log rotation for cri container runtime
 | 
			
		||||
	CRIContainerLogRotation utilfeature.Feature = "CRIContainerLogRotation"
 | 
			
		||||
 | 
			
		||||
	// owner: @verult
 | 
			
		||||
	// GA: v1.13
 | 
			
		||||
	//
 | 
			
		||||
	// Enables the regional PD feature on GCE.
 | 
			
		||||
	GCERegionalPersistentDisk utilfeature.Feature = "GCERegionalPersistentDisk"
 | 
			
		||||
 | 
			
		||||
	// owner: @krmayankk
 | 
			
		||||
	// alpha: v1.10
 | 
			
		||||
	//
 | 
			
		||||
@@ -460,7 +455,7 @@ var defaultKubernetesFeatureGates = map[utilfeature.Feature]utilfeature.FeatureS
 | 
			
		||||
	TokenRequestProjection:                      {Default: true, PreRelease: utilfeature.Beta},
 | 
			
		||||
	BoundServiceAccountTokenVolume:              {Default: false, PreRelease: utilfeature.Alpha},
 | 
			
		||||
	CRIContainerLogRotation:                     {Default: true, PreRelease: utilfeature.Beta},
 | 
			
		||||
	GCERegionalPersistentDisk:                   {Default: true, PreRelease: utilfeature.GA},
 | 
			
		||||
	cloudfeatures.GCERegionalPersistentDisk:     {Default: true, PreRelease: utilfeature.GA},
 | 
			
		||||
	CSIMigration:                                {Default: false, PreRelease: utilfeature.Alpha},
 | 
			
		||||
	CSIMigrationGCE:                             {Default: false, PreRelease: utilfeature.Alpha},
 | 
			
		||||
	CSIMigrationAWS:                             {Default: false, PreRelease: utilfeature.Alpha},
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,7 @@ go_library(
 | 
			
		||||
        "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider:go_default_library",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/features:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/klog:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/exec:go_default_library",
 | 
			
		||||
        "//vendor/k8s.io/utils/path:go_default_library",
 | 
			
		||||
 
 | 
			
		||||
@@ -28,9 +28,9 @@ import (
 | 
			
		||||
	"k8s.io/apimachinery/pkg/util/sets"
 | 
			
		||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
			
		||||
	cloudprovider "k8s.io/cloud-provider"
 | 
			
		||||
	cloudfeatures "k8s.io/cloud-provider/features"
 | 
			
		||||
	"k8s.io/klog"
 | 
			
		||||
	gcecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/features"
 | 
			
		||||
	kubeletapis "k8s.io/kubernetes/pkg/kubelet/apis"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/util/mount"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/volume"
 | 
			
		||||
@@ -127,10 +127,10 @@ func (util *GCEDiskUtil) CreateVolume(c *gcePersistentDiskProvisioner, node *v1.
 | 
			
		||||
				return "", 0, nil, "", err
 | 
			
		||||
			}
 | 
			
		||||
		case "replication-type":
 | 
			
		||||
			if !utilfeature.DefaultFeatureGate.Enabled(features.GCERegionalPersistentDisk) {
 | 
			
		||||
			if !utilfeature.DefaultFeatureGate.Enabled(cloudfeatures.GCERegionalPersistentDisk) {
 | 
			
		||||
				return "", 0, nil, "",
 | 
			
		||||
					fmt.Errorf("the %q option for volume plugin %v is only supported with the %q Kubernetes feature gate enabled",
 | 
			
		||||
						k, c.plugin.GetPluginName(), features.GCERegionalPersistentDisk)
 | 
			
		||||
						k, c.plugin.GetPluginName(), cloudfeatures.GCERegionalPersistentDisk)
 | 
			
		||||
			}
 | 
			
		||||
			replicationType = strings.ToLower(v)
 | 
			
		||||
		case volume.VolumeParameterFSType:
 | 
			
		||||
 
 | 
			
		||||
@@ -188,6 +188,7 @@
 | 
			
		||||
  allowedImports:
 | 
			
		||||
  - k8s.io/api
 | 
			
		||||
  - k8s.io/apimachinery
 | 
			
		||||
  - k8s.io/apiserver
 | 
			
		||||
  - k8s.io/client-go
 | 
			
		||||
  - k8s.io/klog
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -35,6 +35,7 @@ filegroup(
 | 
			
		||||
    name = "all-srcs",
 | 
			
		||||
    srcs = [
 | 
			
		||||
        ":package-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/features:all-srcs",
 | 
			
		||||
        "//staging/src/k8s.io/cloud-provider/node:all-srcs",
 | 
			
		||||
    ],
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
 
 | 
			
		||||
@@ -90,6 +90,10 @@
 | 
			
		||||
			"ImportPath": "github.com/peterbourgon/diskv",
 | 
			
		||||
			"Rev": "5f041e8faa004a95c88a202771f4cc3e991971e6"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "github.com/spf13/pflag",
 | 
			
		||||
			"Rev": "583c0c0531f06d5278b7d917446061adc344b5cd"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "golang.org/x/crypto/ssh/terminal",
 | 
			
		||||
			"Rev": "de0752318171da717af4ce24d0a2e8626afaeb11"
 | 
			
		||||
@@ -458,6 +462,10 @@
 | 
			
		||||
			"ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect",
 | 
			
		||||
			"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/apiserver/pkg/util/feature",
 | 
			
		||||
			"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/client-go/discovery",
 | 
			
		||||
			"Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								staging/src/k8s.io/cloud-provider/features/BUILD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								staging/src/k8s.io/cloud-provider/features/BUILD
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
 | 
			
		||||
 | 
			
		||||
go_library(
 | 
			
		||||
    name = "go_default_library",
 | 
			
		||||
    srcs = ["gce.go"],
 | 
			
		||||
    importmap = "k8s.io/kubernetes/vendor/k8s.io/cloud-provider/features",
 | 
			
		||||
    importpath = "k8s.io/cloud-provider/features",
 | 
			
		||||
    visibility = ["//visibility:public"],
 | 
			
		||||
    deps = ["//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library"],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
filegroup(
 | 
			
		||||
    name = "package-srcs",
 | 
			
		||||
    srcs = glob(["**"]),
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
    visibility = ["//visibility:private"],
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
filegroup(
 | 
			
		||||
    name = "all-srcs",
 | 
			
		||||
    srcs = [":package-srcs"],
 | 
			
		||||
    tags = ["automanaged"],
 | 
			
		||||
    visibility = ["//visibility:public"],
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										33
									
								
								staging/src/k8s.io/cloud-provider/features/gce.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								staging/src/k8s.io/cloud-provider/features/gce.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
/*
 | 
			
		||||
Copyright 2019 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 features
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// TODO: this file should ideally live in k8s.io/cloud-provider-gcp, but it is
 | 
			
		||||
// temporarily placed here to remove dependencies to k8s.io/kubernetes in the
 | 
			
		||||
// in-tree GCE cloud provider. Move this to k8s.io/cloud-provider-gcp as soon
 | 
			
		||||
// as it's ready to be used
 | 
			
		||||
const (
 | 
			
		||||
	// owner: @verult
 | 
			
		||||
	// GA: v1.13
 | 
			
		||||
	//
 | 
			
		||||
	// Enables the regional PD feature on GCE.
 | 
			
		||||
	GCERegionalPersistentDisk utilfeature.Feature = "GCERegionalPersistentDisk"
 | 
			
		||||
)
 | 
			
		||||
		Reference in New Issue
	
	Block a user