GCP: accept context from the caller in all methods

Modify all relevant methods in the internal GCP library to accept
context from the caller.

Modify all places which call the internal GCP library methods to pass
the context.

Signed-off-by: Tomas Hozza <thozza@redhat.com>
This commit is contained in:
Tomas Hozza 2021-03-12 16:45:26 +01:00 committed by Tomas Hozza
parent 4c3a30f035
commit 6d51d285cf
5 changed files with 49 additions and 38 deletions

View file

@ -3,6 +3,7 @@
package main
import (
"context"
"crypto/sha256"
"fmt"
"log"
@ -59,10 +60,12 @@ func cleanupGCP(testID string, wg *sync.WaitGroup) {
return
}
ctx := context.Background()
// Try to delete potentially running instance
log.Printf("[GCP] 🧹 Deleting VM instance %s in %s. "+
"This should fail if the test succedded.", GCPInstance, GCPZone)
err = g.ComputeInstanceDelete(GCPZone, GCPInstance)
err = g.ComputeInstanceDelete(ctx, GCPZone, GCPInstance)
if err != nil {
log.Printf("[GCP] Error: %v", err)
}
@ -70,7 +73,7 @@ func cleanupGCP(testID string, wg *sync.WaitGroup) {
// Try to clean up storage of cache objects after image import job
log.Println("[GCP] 🧹 Cleaning up cache objects from storage after image " +
"import. This should fail if the test succedded.")
cacheObjects, errs := g.StorageImageImportCleanup(GCPImage)
cacheObjects, errs := g.StorageImageImportCleanup(ctx, GCPImage)
for _, err = range errs {
log.Printf("[GCP] Error: %v", err)
}
@ -79,12 +82,12 @@ func cleanupGCP(testID string, wg *sync.WaitGroup) {
}
// Try to find the potentially uploaded Storage objects using custom metadata
objects, err := g.StorageListObjectsByMetadata(GCPBucket, map[string]string{gcp.MetadataKeyImageName: GCPImage})
objects, err := g.StorageListObjectsByMetadata(ctx, GCPBucket, map[string]string{gcp.MetadataKeyImageName: GCPImage})
if err != nil {
log.Printf("[GCP] Error: %v", err)
}
for _, obj := range objects {
if err = g.StorageObjectDelete(obj.Bucket, obj.Name); err != nil {
if err = g.StorageObjectDelete(ctx, obj.Bucket, obj.Name); err != nil {
log.Printf("[GCP] Error: %v", err)
}
log.Printf("[GCP] 🧹 Deleted object %s/%s related to build of image %s", obj.Bucket, obj.Name, GCPImage)
@ -92,7 +95,7 @@ func cleanupGCP(testID string, wg *sync.WaitGroup) {
// Try to delete the imported image
log.Printf("[GCP] 🧹 Deleting image %s. This should fail if the test succedded.", GCPImage)
err = g.ComputeImageDelete(GCPImage)
err = g.ComputeImageDelete(ctx, GCPImage)
if err != nil {
log.Printf("[GCP] Error: %v", err)
}

View file

@ -1,6 +1,7 @@
package main
import (
"context"
"flag"
"fmt"
"io/ioutil"
@ -60,10 +61,12 @@ func main() {
log.Fatalf("[GCP] Failed to create new GCP object: %v", err)
}
ctx := context.Background()
// Upload image to the Storage
if !skipUpload {
log.Printf("[GCP] 🚀 Uploading image to: %s/%s", bucketName, objectName)
_, err := g.StorageObjectUpload(imageFile, bucketName, objectName,
_, err := g.StorageObjectUpload(ctx, imageFile, bucketName, objectName,
map[string]string{gcp.MetadataKeyImageName: imageName})
if err != nil {
log.Fatalf("[GCP] Uploading image failed: %v", err)
@ -73,7 +76,7 @@ func main() {
// Import Image to Compute Node
if !skipImport {
log.Printf("[GCP] 📥 Importing image into Compute Node as '%s'", imageName)
imageBuild, importErr := g.ComputeImageImport(bucketName, objectName, imageName, osFamily, region)
imageBuild, importErr := g.ComputeImageImport(ctx, bucketName, objectName, imageName, osFamily, region)
if imageBuild != nil {
log.Printf("[GCP] 📜 Image import log URL: %s", imageBuild.LogUrl)
log.Printf("[GCP] 🎉 Image import finished with status: %s", imageBuild.Status)
@ -81,11 +84,11 @@ func main() {
// Cleanup storage before checking for errors
log.Printf("[GCP] 🧹 Deleting uploaded image file: %s/%s", bucketName, objectName)
if err = g.StorageObjectDelete(bucketName, objectName); err != nil {
if err = g.StorageObjectDelete(ctx, bucketName, objectName); err != nil {
log.Printf("[GCP] Encountered error while deleting object: %v", err)
}
deleted, errs := g.StorageImageImportCleanup(imageName)
deleted, errs := g.StorageImageImportCleanup(ctx, imageName)
for _, d := range deleted {
log.Printf("[GCP] 🧹 Deleted image import job file '%s'", d)
}
@ -103,7 +106,7 @@ func main() {
// Share the imported Image with specified accounts using IAM policy
if len(shareWith) > 0 {
log.Printf("[GCP] 🔗 Sharing the image with: %+v", shareWith)
err = g.ComputeImageShare(imageName, []string(shareWith))
err = g.ComputeImageShare(ctx, imageName, []string(shareWith))
if err != nil {
log.Fatalf("[GCP] Sharing image failed: %s", err)
}

View file

@ -271,6 +271,8 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
osbuildJobResult.Success = true
osbuildJobResult.UploadStatus = "success"
case *target.GCPTargetOptions:
ctx := context.Background()
g, err := gcp.New(impl.GCPCreds)
if err != nil {
appendTargetError(osbuildJobResult, err)
@ -278,7 +280,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
}
log.Printf("[GCP] 🚀 Uploading image to: %s/%s", options.Bucket, options.Object)
_, err = g.StorageObjectUpload(path.Join(outputDirectory, options.Filename),
_, err = g.StorageObjectUpload(ctx, path.Join(outputDirectory, options.Filename),
options.Bucket, options.Object, map[string]string{gcp.MetadataKeyImageName: args.Targets[0].ImageName})
if err != nil {
appendTargetError(osbuildJobResult, err)
@ -286,7 +288,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
}
log.Printf("[GCP] 📥 Importing image into Compute Node as '%s'", args.Targets[0].ImageName)
imageBuild, importErr := g.ComputeImageImport(options.Bucket, options.Object, args.Targets[0].ImageName, options.Os, options.Region)
imageBuild, importErr := g.ComputeImageImport(ctx, options.Bucket, options.Object, args.Targets[0].ImageName, options.Os, options.Region)
if imageBuild != nil {
log.Printf("[GCP] 📜 Image import log URL: %s", imageBuild.LogUrl)
log.Printf("[GCP] 🎉 Image import finished with status: %s", imageBuild.Status)
@ -294,11 +296,11 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
// Cleanup storage before checking for errors
log.Printf("[GCP] 🧹 Deleting uploaded image file: %s/%s", options.Bucket, options.Object)
if err = g.StorageObjectDelete(options.Bucket, options.Object); err != nil {
if err = g.StorageObjectDelete(ctx, options.Bucket, options.Object); err != nil {
log.Printf("[GCP] Encountered error while deleting object: %v", err)
}
deleted, errs := g.StorageImageImportCleanup(args.Targets[0].ImageName)
deleted, errs := g.StorageImageImportCleanup(ctx, args.Targets[0].ImageName)
for _, d := range deleted {
log.Printf("[GCP] 🧹 Deleted image import job file '%s'", d)
}
@ -315,7 +317,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
if len(options.ShareWithAccounts) > 0 {
log.Printf("[GCP] 🔗 Sharing the image with: %+v", options.ShareWithAccounts)
err = g.ComputeImageShare(args.Targets[0].ImageName, options.ShareWithAccounts)
err = g.ComputeImageShare(ctx, args.Targets[0].ImageName, options.ShareWithAccounts)
if err != nil {
appendTargetError(osbuildJobResult, err)
return nil