Skip to content

Commit a58310b

Browse files
committed
switch to use snapshots.insert instead of disks.createsnapshot
1 parent e3f0d26 commit a58310b

File tree

1 file changed

+23
-52
lines changed

1 file changed

+23
-52
lines changed

pkg/gce-cloud-provider/compute/gce-compute.go

+23-52
Original file line numberDiff line numberDiff line change
@@ -1264,9 +1264,8 @@ func opIsDone(op *computev1.Operation) (bool, error) {
12641264

12651265
func (cloud *CloudProvider) GetInstanceOrError(ctx context.Context, instanceZone, instanceName string) (*computev1.Instance, error) {
12661266
klog.V(5).Infof("Getting instance %v from zone %v", instanceName, instanceZone)
1267-
svc := cloud.service
12681267
project := cloud.project
1269-
instance, err := svc.Instances.Get(project, instanceZone, instanceName).Do()
1268+
instance, err := cloud.service.Instances.Get(project, instanceZone, instanceName).Do()
12701269
if err != nil {
12711270
return nil, err
12721271
}
@@ -1275,8 +1274,7 @@ func (cloud *CloudProvider) GetInstanceOrError(ctx context.Context, instanceZone
12751274

12761275
func (cloud *CloudProvider) GetSnapshot(ctx context.Context, project, snapshotName string) (*computev1.Snapshot, error) {
12771276
klog.V(5).Infof("Getting snapshot %v", snapshotName)
1278-
svc := cloud.service
1279-
snapshot, err := svc.Snapshots.Get(project, snapshotName).Context(ctx).Do()
1277+
snapshot, err := cloud.service.Snapshots.Get(project, snapshotName).Context(ctx).Do()
12801278
if err != nil {
12811279
return nil, err
12821280
}
@@ -1313,15 +1311,34 @@ func (cloud *CloudProvider) CreateSnapshot(ctx context.Context, project string,
13131311
if description == "" {
13141312
description = "Snapshot created by GCE-PD CSI Driver"
13151313
}
1316-
return cloud.createZonalDiskSnapshot(ctx, project, volKey, snapshotName, snapshotParams, description)
13171314
case meta.Regional:
13181315
if description == "" {
13191316
description = "Regional Snapshot created by GCE-PD CSI Driver"
13201317
}
1321-
return cloud.createRegionalDiskSnapshot(ctx, project, volKey, snapshotName, snapshotParams, description)
13221318
default:
13231319
return nil, fmt.Errorf("could not create snapshot, key was neither zonal nor regional, instead got: %v", volKey.String())
13241320
}
1321+
1322+
snapshotToCreate := &computev1.Snapshot{
1323+
Name: snapshotName,
1324+
StorageLocations: snapshotParams.StorageLocations,
1325+
Description: description,
1326+
Labels: snapshotParams.Labels,
1327+
SourceDisk: cloud.GetDiskSourceURI(project, volKey),
1328+
}
1329+
_, err = cloud.service.Snapshots.Insert(project, snapshotToCreate).Context(ctx).Do()
1330+
1331+
if err != nil {
1332+
return nil, err
1333+
}
1334+
1335+
snapshot, err := cloud.waitForSnapshotCreation(ctx, project, snapshotName)
1336+
1337+
if err == nil {
1338+
err = cloud.attachTagsToResource(ctx, snapshotParams.ResourceTags, project, snapshot.Id, snapshotsType, "", false, resourceManagerHostSubPath)
1339+
}
1340+
1341+
return snapshot, err
13251342
}
13261343

13271344
func (cloud *CloudProvider) CreateImage(ctx context.Context, project string, volKey *meta.Key, imageName string, snapshotParams common.SnapshotParameters) (*computev1.Image, error) {
@@ -1497,52 +1514,6 @@ func (cloud *CloudProvider) resizeRegionalDisk(ctx context.Context, project stri
14971514
return requestGb, nil
14981515
}
14991516

1500-
func (cloud *CloudProvider) createZonalDiskSnapshot(ctx context.Context, project string, volKey *meta.Key, snapshotName string, snapshotParams common.SnapshotParameters, description string) (*computev1.Snapshot, error) {
1501-
snapshotToCreate := &computev1.Snapshot{
1502-
Name: snapshotName,
1503-
StorageLocations: snapshotParams.StorageLocations,
1504-
Description: description,
1505-
Labels: snapshotParams.Labels,
1506-
}
1507-
1508-
_, err := cloud.service.Disks.CreateSnapshot(project, volKey.Zone, volKey.Name, snapshotToCreate).Context(ctx).Do()
1509-
1510-
if err != nil {
1511-
return nil, err
1512-
}
1513-
1514-
snapshot, err := cloud.waitForSnapshotCreation(ctx, project, snapshotName)
1515-
1516-
if err == nil {
1517-
err = cloud.attachTagsToResource(ctx, snapshotParams.ResourceTags, project, snapshot.Id, snapshotsType, "", false, resourceManagerHostSubPath)
1518-
}
1519-
1520-
return snapshot, err
1521-
}
1522-
1523-
func (cloud *CloudProvider) createRegionalDiskSnapshot(ctx context.Context, project string, volKey *meta.Key, snapshotName string, snapshotParams common.SnapshotParameters, description string) (*computev1.Snapshot, error) {
1524-
snapshotToCreate := &computev1.Snapshot{
1525-
Name: snapshotName,
1526-
StorageLocations: snapshotParams.StorageLocations,
1527-
Description: description,
1528-
Labels: snapshotParams.Labels,
1529-
}
1530-
1531-
_, err := cloud.service.RegionDisks.CreateSnapshot(project, volKey.Region, volKey.Name, snapshotToCreate).Context(ctx).Do()
1532-
if err != nil {
1533-
return nil, err
1534-
}
1535-
1536-
snapshot, err := cloud.waitForSnapshotCreation(ctx, project, snapshotName)
1537-
1538-
if err == nil {
1539-
err = cloud.attachTagsToResource(ctx, snapshotParams.ResourceTags, project, snapshot.Id, snapshotsType, "", false, resourceManagerHostSubPath)
1540-
}
1541-
1542-
return snapshot, err
1543-
1544-
}
1545-
15461517
func (cloud *CloudProvider) waitForSnapshotCreation(ctx context.Context, project, snapshotName string) (*computev1.Snapshot, error) {
15471518
ticker := time.NewTicker(time.Second)
15481519
defer ticker.Stop()

0 commit comments

Comments
 (0)