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