diff --git a/pkg/gce-cloud-provider/compute/cloud-disk.go b/pkg/gce-cloud-provider/compute/cloud-disk.go index b704c1cf4..bbd3afc1f 100644 --- a/pkg/gce-cloud-provider/compute/cloud-disk.go +++ b/pkg/gce-cloud-provider/compute/cloud-disk.go @@ -18,15 +18,13 @@ import ( "strings" "github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta" - computealpha "google.golang.org/api/compute/v0.alpha" computebeta "google.golang.org/api/compute/v0.beta" computev1 "google.golang.org/api/compute/v1" ) type CloudDisk struct { - disk *computev1.Disk - betaDisk *computebeta.Disk - alphaDisk *computealpha.Disk + disk *computev1.Disk + betaDisk *computebeta.Disk } type CloudDiskType string @@ -43,12 +41,6 @@ func CloudDiskFromBeta(disk *computebeta.Disk) *CloudDisk { } } -func CloudDiskFromAlpha(disk *computealpha.Disk) *CloudDisk { - return &CloudDisk{ - alphaDisk: disk, - } -} - func (d *CloudDisk) LocationType() meta.KeyType { var zone, region string switch { @@ -58,9 +50,6 @@ func (d *CloudDisk) LocationType() meta.KeyType { case d.betaDisk != nil: zone = d.betaDisk.Zone region = d.betaDisk.Region - case d.alphaDisk != nil: - zone = d.alphaDisk.Zone - region = d.alphaDisk.Region } switch { case zone != "": @@ -78,8 +67,6 @@ func (d *CloudDisk) GetUsers() []string { return d.disk.Users case d.betaDisk != nil: return d.betaDisk.Users - case d.alphaDisk != nil: - return d.alphaDisk.Users default: return nil } @@ -91,8 +78,6 @@ func (d *CloudDisk) GetName() string { return d.disk.Name case d.betaDisk != nil: return d.betaDisk.Name - case d.alphaDisk != nil: - return d.alphaDisk.Name default: return "" } @@ -104,8 +89,6 @@ func (d *CloudDisk) GetKind() string { return d.disk.Kind case d.betaDisk != nil: return d.betaDisk.Kind - case d.alphaDisk != nil: - return d.alphaDisk.Kind default: return "" } @@ -117,8 +100,6 @@ func (d *CloudDisk) GetStatus() string { return d.disk.Status case d.betaDisk != nil: return d.betaDisk.Status - case d.alphaDisk != nil: - return d.alphaDisk.Status default: return "Unknown" } @@ -134,8 +115,6 @@ func (d *CloudDisk) GetPDType() string { pdType = d.disk.Type case d.betaDisk != nil: pdType = d.betaDisk.Type - case d.alphaDisk != nil: - pdType = d.alphaDisk.Type default: return "" } @@ -149,8 +128,6 @@ func (d *CloudDisk) GetSelfLink() string { return d.disk.SelfLink case d.betaDisk != nil: return d.betaDisk.SelfLink - case d.alphaDisk != nil: - return d.alphaDisk.SelfLink default: return "" } @@ -162,8 +139,6 @@ func (d *CloudDisk) GetSizeGb() int64 { return d.disk.SizeGb case d.betaDisk != nil: return d.betaDisk.SizeGb - case d.alphaDisk != nil: - return d.alphaDisk.SizeGb default: return -1 } @@ -177,8 +152,6 @@ func (d *CloudDisk) setSizeGb(size int64) { d.disk.SizeGb = size case d.betaDisk != nil: d.betaDisk.SizeGb = size - case d.alphaDisk != nil: - d.alphaDisk.SizeGb = size } } @@ -188,8 +161,6 @@ func (d *CloudDisk) GetZone() string { return d.disk.Zone case d.betaDisk != nil: return d.betaDisk.Zone - case d.alphaDisk != nil: - return d.alphaDisk.Zone default: return "" } @@ -201,8 +172,6 @@ func (d *CloudDisk) GetSnapshotId() string { return d.disk.SourceSnapshotId case d.betaDisk != nil: return d.betaDisk.SourceSnapshotId - case d.alphaDisk != nil: - return d.alphaDisk.SourceSnapshotId default: return "" } @@ -214,8 +183,6 @@ func (d *CloudDisk) GetSourceDiskId() string { return d.disk.SourceDiskId case d.betaDisk != nil: return d.betaDisk.SourceDiskId - case d.alphaDisk != nil: - return d.alphaDisk.SourceDiskId default: return "" } @@ -227,8 +194,6 @@ func (d *CloudDisk) GetImageId() string { return d.disk.SourceImageId case d.betaDisk != nil: return d.betaDisk.SourceImageId - case d.alphaDisk != nil: - return d.alphaDisk.SourceImageId default: return "" } @@ -244,10 +209,6 @@ func (d *CloudDisk) GetKMSKeyName() string { if dek := d.betaDisk.DiskEncryptionKey; dek != nil { return dek.KmsKeyName } - case d.alphaDisk != nil: - if dek := d.alphaDisk.DiskEncryptionKey; dek != nil { - return dek.KmsKeyName - } } return "" } @@ -258,8 +219,6 @@ func (d *CloudDisk) GetMultiWriter() bool { return false case d.betaDisk != nil: return d.betaDisk.MultiWriter - case d.alphaDisk != nil: - return d.alphaDisk.MultiWriter default: return false } @@ -268,11 +227,9 @@ func (d *CloudDisk) GetMultiWriter() bool { func (d *CloudDisk) GetEnableConfidentialCompute() bool { switch { case d.disk != nil: - return false + return d.disk.EnableConfidentialCompute case d.betaDisk != nil: return d.betaDisk.EnableConfidentialCompute - case d.alphaDisk != nil: - return d.alphaDisk.EnableConfidentialCompute default: return false } @@ -281,11 +238,9 @@ func (d *CloudDisk) GetEnableConfidentialCompute() bool { func (d *CloudDisk) GetEnableStoragePools() bool { switch { case d.disk != nil: - return false + return d.disk.StoragePool != "" case d.betaDisk != nil: - return false - case d.alphaDisk != nil: - return d.alphaDisk.StoragePool != "" + return d.betaDisk.StoragePool != "" default: return false } @@ -297,8 +252,6 @@ func (d *CloudDisk) GetLabels() map[string]string { return d.disk.Labels case d.betaDisk != nil: return d.betaDisk.Labels - case d.alphaDisk != nil: - return d.alphaDisk.Labels default: return nil } diff --git a/pkg/gce-cloud-provider/compute/cloud-disk_test.go b/pkg/gce-cloud-provider/compute/cloud-disk_test.go index 0efa1062b..d391212ac 100644 --- a/pkg/gce-cloud-provider/compute/cloud-disk_test.go +++ b/pkg/gce-cloud-provider/compute/cloud-disk_test.go @@ -21,7 +21,6 @@ import ( "testing" "github.com/google/go-cmp/cmp" - computealpha "google.golang.org/api/compute/v0.alpha" computebeta "google.golang.org/api/compute/v0.beta" computev1 "google.golang.org/api/compute/v1" ) @@ -100,22 +99,6 @@ func TestGetEnableStoragePools(t *testing.T) { }, expectedEnableStoragePools: false, }, - { - name: "alpha disk without storage pool returns false", - cloudDisk: &CloudDisk{ - alphaDisk: &computealpha.Disk{}, - }, - expectedEnableStoragePools: false, - }, - { - name: "alpha disk with storage pool returns true", - cloudDisk: &CloudDisk{ - alphaDisk: &computealpha.Disk{ - StoragePool: "projects/my-project/zones/us-central1-a/storagePools/storagePool-1", - }, - }, - expectedEnableStoragePools: true, - }, } for _, tc := range testCases { @@ -155,15 +138,6 @@ func TestGetLabels(t *testing.T) { }, wantLabels: map[string]string{"bar": "beta", "goog-gke-multi-zone": "true"}, }, - { - name: "alpha disk without storage pool returns false", - cloudDisk: &CloudDisk{ - alphaDisk: &computealpha.Disk{ - Labels: map[string]string{"baz": "alpha", "goog-gke-multi-zone": "true"}, - }, - }, - wantLabels: map[string]string{"baz": "alpha", "goog-gke-multi-zone": "true"}, - }, } for _, tc := range testCases { diff --git a/pkg/gce-cloud-provider/compute/gce-compute.go b/pkg/gce-cloud-provider/compute/gce-compute.go index 6391090b5..7da5de7ec 100644 --- a/pkg/gce-cloud-provider/compute/gce-compute.go +++ b/pkg/gce-cloud-provider/compute/gce-compute.go @@ -24,7 +24,6 @@ import ( "github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta" csi "github.com/container-storage-interface/spec/lib/go/csi" - computealpha "google.golang.org/api/compute/v0.alpha" computebeta "google.golang.org/api/compute/v0.beta" computev1 "google.golang.org/api/compute/v1" "google.golang.org/grpc/codes" @@ -54,8 +53,6 @@ const ( GCEAPIVersionV1 GCEAPIVersion = "v1" // Beta key type GCEAPIVersionBeta GCEAPIVersion = "beta" - // Alpha key type - GCEAPIVersionAlpha GCEAPIVersion = "alpha" ) // AttachDiskBackoff is backoff used to wait for AttachDisk to complete. @@ -269,9 +266,6 @@ func (cloud *CloudProvider) GetDisk(ctx context.Context, project string, key *me if gceAPIVersion == GCEAPIVersionBeta { disk, err := cloud.getZonalBetaDiskOrError(ctx, project, key.Zone, key.Name) return CloudDiskFromBeta(disk), err - } else if gceAPIVersion == GCEAPIVersionAlpha { - disk, err := cloud.getZonalAlphaDiskOrError(ctx, project, key.Zone, key.Name) - return CloudDiskFromAlpha(disk), err } else { disk, err := cloud.getZonalDiskOrError(ctx, project, key.Zone, key.Name) return CloudDiskFromV1(disk), err @@ -305,14 +299,6 @@ func (cloud *CloudProvider) getRegionalDiskOrError(ctx context.Context, project, return disk, nil } -func (cloud *CloudProvider) getZonalAlphaDiskOrError(ctx context.Context, project, volumeZone, volumeName string) (*computealpha.Disk, error) { - disk, err := cloud.alphaService.Disks.Get(project, volumeZone, volumeName).Context(ctx).Do() - if err != nil { - return nil, err - } - return disk, nil -} - func (cloud *CloudProvider) getZonalBetaDiskOrError(ctx context.Context, project, volumeZone, volumeName string) (*computebeta.Disk, error) { disk, err := cloud.betaService.Disks.Get(project, volumeZone, volumeName).Context(ctx).Do() if err != nil { @@ -459,37 +445,6 @@ func convertV1DiskToBetaDisk(v1Disk *computev1.Disk) *computebeta.Disk { return betaDisk } -func convertV1DiskToAlphaDisk(v1Disk *computev1.Disk, provisionedThroughputOnCreate int64, storagePool *common.StoragePool) *computealpha.Disk { - // Note: this is an incomplete list. It only includes the fields we use for disk creation. - alphaDisk := &computealpha.Disk{ - Name: v1Disk.Name, - SizeGb: v1Disk.SizeGb, - Description: v1Disk.Description, - Type: v1Disk.Type, - SourceSnapshot: v1Disk.SourceSnapshot, - SourceImage: v1Disk.SourceImage, - SourceImageId: v1Disk.SourceImageId, - SourceSnapshotId: v1Disk.SourceSnapshotId, - SourceDisk: v1Disk.SourceDisk, - ReplicaZones: v1Disk.ReplicaZones, - Zone: v1Disk.Zone, - Region: v1Disk.Region, - Status: v1Disk.Status, - SelfLink: v1Disk.SelfLink, - } - if v1Disk.ProvisionedIops > 0 { - alphaDisk.ProvisionedIops = v1Disk.ProvisionedIops - } - if provisionedThroughputOnCreate > 0 { - alphaDisk.ProvisionedThroughput = provisionedThroughputOnCreate - } - if storagePool != nil { - alphaDisk.StoragePool = storagePool.ResourceName - } - - return alphaDisk -} - func (cloud *CloudProvider) insertRegionalDisk( ctx context.Context, project string, @@ -684,22 +639,6 @@ func (cloud *CloudProvider) insertZonalDisk( if insertOp != nil { opName = insertOp.Name } - } else if gceAPIVersion == GCEAPIVersionAlpha { - var insertOp *computealpha.Operation - var storagePool *common.StoragePool - if params.StoragePools != nil { - storagePool = common.StoragePoolInZone(params.StoragePools, volKey.Zone) - if storagePool == nil { - return status.Errorf(codes.InvalidArgument, "cannot create disk in zone %q: no Storage Pools exist in zone", volKey.Zone) - } - } - alphaDiskToCreate := convertV1DiskToAlphaDisk(diskToCreate, params.ProvisionedThroughputOnCreate, storagePool) - alphaDiskToCreate.MultiWriter = multiWriter - alphaDiskToCreate.EnableConfidentialCompute = params.EnableConfidentialCompute - insertOp, err = cloud.alphaService.Disks.Insert(project, volKey.Zone, alphaDiskToCreate).Context(ctx).Do() - if insertOp != nil { - opName = insertOp.Name - } } else { var insertOp *computev1.Operation insertOp, err = cloud.service.Disks.Insert(project, volKey.Zone, diskToCreate).Context(ctx).Do() diff --git a/pkg/gce-cloud-provider/compute/gce.go b/pkg/gce-cloud-provider/compute/gce.go index 10494385d..661627efc 100644 --- a/pkg/gce-cloud-provider/compute/gce.go +++ b/pkg/gce-cloud-provider/compute/gce.go @@ -30,7 +30,6 @@ import ( "cloud.google.com/go/compute/metadata" "golang.org/x/oauth2" - computealpha "google.golang.org/api/compute/v0.alpha" computebeta "google.golang.org/api/compute/v0.beta" "google.golang.org/api/compute/v1" "google.golang.org/api/googleapi" @@ -54,17 +53,18 @@ const ( replicaZoneURITemplateSingleZone = "projects/%s/zones/%s" // {gce.projectID}/zones/{disk.Zone} versionV1 Version = "v1" versionBeta Version = "beta" - versionAlpha Version = "alpha" EnvironmentStaging Environment = "staging" EnvironmentProduction Environment = "production" ) +// CloudProvider only supports GCE v1/beta Disk APIs. See +// https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver/pull/1524 +// for how to add GCE alpha Disk support. type CloudProvider struct { - service *compute.Service - betaService *computebeta.Service - alphaService *computealpha.Service - project string - zone string + service *compute.Service + betaService *computebeta.Service + project string + zone string zonesCache map[string][]string @@ -122,12 +122,6 @@ func CreateCloudProvider(ctx context.Context, vendorVersion string, configPath s } klog.Infof("Compute endpoint for Beta version: %s", betasvc.BasePath) - alphasvc, err := createAlphaCloudService(ctx, vendorVersion, tokenSource, computeEndpoint, computeEnvironment) - if err != nil { - return nil, err - } - klog.Infof("Compute endpoint for Alpha version: %s", alphasvc.BasePath) - project, zone, err := getProjectAndZone(configFile) if err != nil { return nil, fmt.Errorf("Failed getting Project and Zone: %w", err) @@ -136,7 +130,6 @@ func CreateCloudProvider(ctx context.Context, vendorVersion string, configPath s return &CloudProvider{ service: svc, betaService: betasvc, - alphaService: alphasvc, project: project, zone: zone, zonesCache: make(map[string]([]string)), @@ -191,19 +184,6 @@ func readConfig(configPath string) (*ConfigFile, error) { return cfg, nil } -func createAlphaCloudService(ctx context.Context, vendorVersion string, tokenSource oauth2.TokenSource, computeEndpoint *url.URL, computeEnvironment Environment) (*computealpha.Service, error) { - computeOpts, err := getComputeVersion(ctx, tokenSource, computeEndpoint, computeEnvironment, versionAlpha) - if err != nil { - klog.Errorf("Failed to get compute endpoint: %s", err) - } - service, err := computealpha.NewService(ctx, computeOpts...) - if err != nil { - return nil, err - } - service.UserAgent = fmt.Sprintf("GCE CSI Driver/%s (%s %s)", vendorVersion, runtime.GOOS, runtime.GOARCH) - return service, nil -} - func createBetaCloudService(ctx context.Context, vendorVersion string, tokenSource oauth2.TokenSource, computeEndpoint *url.URL, computeEnvironment Environment) (*computebeta.Service, error) { computeOpts, err := getComputeVersion(ctx, tokenSource, computeEndpoint, computeEnvironment, versionBeta) if err != nil { diff --git a/pkg/metrics/metrics_test.go b/pkg/metrics/metrics_test.go index 238e02d8d..919cb8388 100644 --- a/pkg/metrics/metrics_test.go +++ b/pkg/metrics/metrics_test.go @@ -20,8 +20,6 @@ package metrics import ( "testing" - computealpha "google.golang.org/api/compute/v0.alpha" - computebeta "google.golang.org/api/compute/v0.beta" "google.golang.org/api/compute/v1" gce "sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/pkg/gce-cloud-provider/compute" ) @@ -30,20 +28,15 @@ const ( hyperdiskBalanced = "hyperdisk-balanced" ) -func CreateDiskWithConfidentialCompute(betaVersion bool, confidentialCompute bool, diskType string) *gce.CloudDisk { - if betaVersion { - return gce.CloudDiskFromBeta(&computebeta.Disk{ - EnableConfidentialCompute: confidentialCompute, - Type: diskType, - }) - } +func CreateDiskWithConfidentialCompute(confidentialCompute bool, diskType string) *gce.CloudDisk { return gce.CloudDiskFromV1(&compute.Disk{ - Type: diskType, + EnableConfidentialCompute: confidentialCompute, + Type: diskType, }) } func CreateDiskWithStoragePool(storagePool string, diskType string) *gce.CloudDisk { - return gce.CloudDiskFromAlpha(&computealpha.Disk{ + return gce.CloudDiskFromV1(&compute.Disk{ StoragePool: storagePool, Type: diskType, }) @@ -58,35 +51,28 @@ func TestGetMetricParameters(t *testing.T) { expectedEnableStoragePools string }{ { - name: "test betaDisk with enableConfidentialCompute=false", - disk: CreateDiskWithConfidentialCompute(true, false, hyperdiskBalanced), + name: "test disk with enableConfidentialCompute=false", + disk: CreateDiskWithConfidentialCompute(false, hyperdiskBalanced), expectedEnableConfidentialCompute: "false", expectedDiskType: hyperdiskBalanced, expectedEnableStoragePools: "false", }, { - name: "test betaDisk with enableConfidentialCompute=true", - disk: CreateDiskWithConfidentialCompute(true, true, hyperdiskBalanced), + name: "test disk with enableConfidentialCompute=true", + disk: CreateDiskWithConfidentialCompute(true, hyperdiskBalanced), expectedEnableConfidentialCompute: "true", expectedDiskType: hyperdiskBalanced, expectedEnableStoragePools: "false", }, { - name: "test disk without enableConfidentialCompute", - disk: CreateDiskWithConfidentialCompute(false, false, hyperdiskBalanced), - expectedEnableConfidentialCompute: "false", - expectedDiskType: hyperdiskBalanced, - expectedEnableStoragePools: "false", - }, - { - name: "test alphaDisk with storage pool projects/my-project/zone/us-central1-a/storagePools/sp1", + name: "test disk with storage pool projects/my-project/zone/us-central1-a/storagePools/sp1", disk: CreateDiskWithStoragePool("projects/my-project/zone/us-central1-a/storagePools/sp1", hyperdiskBalanced), expectedEnableConfidentialCompute: "false", expectedDiskType: hyperdiskBalanced, expectedEnableStoragePools: "true", }, { - name: "test alphaDisk with no storage pool", + name: "test disk with no storage pool", disk: CreateDiskWithStoragePool("", hyperdiskBalanced), expectedEnableConfidentialCompute: "false", expectedDiskType: hyperdiskBalanced,