@@ -73,7 +73,7 @@ type GCECompute interface {
7373 ListZones (ctx context.Context , region string ) ([]string , error )
7474 ListSnapshots (ctx context.Context , filter string , maxEntries int64 , pageToken string ) ([]* computev1.Snapshot , string , error )
7575 GetSnapshot (ctx context.Context , project , snapshotName string ) (* computev1.Snapshot , error )
76- CreateSnapshot (ctx context.Context , project string , volKey * meta.Key , snapshotName string ) (* computev1.Snapshot , error )
76+ CreateSnapshot (ctx context.Context , project string , volKey * meta.Key , snapshotName string , snapshotParams common. SnapshotParameters ) (* computev1.Snapshot , error )
7777 DeleteSnapshot (ctx context.Context , project , snapshotName string ) error
7878}
7979
@@ -787,13 +787,13 @@ func (cloud *CloudProvider) DeleteSnapshot(ctx context.Context, project, snapsho
787787 return nil
788788}
789789
790- func (cloud * CloudProvider ) CreateSnapshot (ctx context.Context , project string , volKey * meta.Key , snapshotName string ) (* computev1.Snapshot , error ) {
790+ func (cloud * CloudProvider ) CreateSnapshot (ctx context.Context , project string , volKey * meta.Key , snapshotName string , snapshotParams common. SnapshotParameters ) (* computev1.Snapshot , error ) {
791791 klog .V (5 ).Infof ("Creating snapshot %s for volume %v" , snapshotName , volKey )
792792 switch volKey .Type () {
793793 case meta .Zonal :
794- return cloud .createZonalDiskSnapshot (ctx , project , volKey , snapshotName )
794+ return cloud .createZonalDiskSnapshot (ctx , project , volKey , snapshotName , snapshotParams )
795795 case meta .Regional :
796- return cloud .createRegionalDiskSnapshot (ctx , project , volKey , snapshotName )
796+ return cloud .createRegionalDiskSnapshot (ctx , project , volKey , snapshotName , snapshotParams )
797797 default :
798798 return nil , fmt .Errorf ("could not create snapshot, key was neither zonal nor regional, instead got: %v" , volKey .String ())
799799 }
@@ -864,9 +864,10 @@ func (cloud *CloudProvider) resizeRegionalDisk(ctx context.Context, project stri
864864 return requestGb , nil
865865}
866866
867- func (cloud * CloudProvider ) createZonalDiskSnapshot (ctx context.Context , project string , volKey * meta.Key , snapshotName string ) (* computev1.Snapshot , error ) {
867+ func (cloud * CloudProvider ) createZonalDiskSnapshot (ctx context.Context , project string , volKey * meta.Key , snapshotName string , snapshotParams common. SnapshotParameters ) (* computev1.Snapshot , error ) {
868868 snapshotToCreate := & computev1.Snapshot {
869- Name : snapshotName ,
869+ Name : snapshotName ,
870+ StorageLocations : snapshotParams .StorageLocations ,
870871 }
871872
872873 _ , err := cloud .service .Disks .CreateSnapshot (project , volKey .Zone , volKey .Name , snapshotToCreate ).Context (ctx ).Do ()
@@ -878,9 +879,10 @@ func (cloud *CloudProvider) createZonalDiskSnapshot(ctx context.Context, project
878879 return cloud .waitForSnapshotCreation (ctx , project , snapshotName )
879880}
880881
881- func (cloud * CloudProvider ) createRegionalDiskSnapshot (ctx context.Context , project string , volKey * meta.Key , snapshotName string ) (* computev1.Snapshot , error ) {
882+ func (cloud * CloudProvider ) createRegionalDiskSnapshot (ctx context.Context , project string , volKey * meta.Key , snapshotName string , snapshotParams common. SnapshotParameters ) (* computev1.Snapshot , error ) {
882883 snapshotToCreate := & computev1.Snapshot {
883- Name : snapshotName ,
884+ Name : snapshotName ,
885+ StorageLocations : snapshotParams .StorageLocations ,
884886 }
885887
886888 _ , err := cloud .service .RegionDisks .CreateSnapshot (project , volKey .Region , volKey .Name , snapshotToCreate ).Context (ctx ).Do ()
0 commit comments