github.com/hashicorp/packer@v1.14.3/internal/hcp/api/service_bucket.go (about) 1 package api 2 3 import ( 4 "context" 5 6 hcpPackerService "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/client/packer_service" 7 hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" 8 "google.golang.org/grpc/codes" 9 ) 10 11 func (c *Client) CreateBucket( 12 ctx context.Context, bucketName, bucketDescription string, bucketLabels map[string]string, 13 ) (*hcpPackerService.PackerServiceCreateBucketOK, error) { 14 15 createBktParams := hcpPackerService.NewPackerServiceCreateBucketParams() 16 createBktParams.LocationOrganizationID = c.OrganizationID 17 createBktParams.LocationProjectID = c.ProjectID 18 createBktParams.Body = &hcpPackerModels.HashicorpCloudPacker20230101CreateBucketBody{ 19 Name: bucketName, 20 Description: bucketDescription, 21 Labels: bucketLabels, 22 } 23 24 return c.Packer.PackerServiceCreateBucket(createBktParams, nil) 25 } 26 27 func (c *Client) DeleteBucket( 28 ctx context.Context, bucketName string, 29 ) (*hcpPackerService.PackerServiceDeleteBucketOK, error) { 30 31 deleteBktParams := hcpPackerService.NewPackerServiceDeleteBucketParamsWithContext(ctx) 32 deleteBktParams.LocationOrganizationID = c.OrganizationID 33 deleteBktParams.LocationProjectID = c.ProjectID 34 deleteBktParams.BucketName = bucketName 35 36 return c.Packer.PackerServiceDeleteBucket(deleteBktParams, nil) 37 } 38 39 // UpsertBucket will create or update a bucket. It calls GetBucket first, if the bucket is not found it creates that bucket 40 // If GetBucket succeeded we then call UpdateBucket description and bucket labels in case they've changed. 41 // GetBucket is used instead of CreateBucket since users with bucket level access to specific existing buckets can not create new buckets. 42 func (c *Client) UpsertBucket( 43 ctx context.Context, bucketName, bucketDescription string, bucketLabels map[string]string, 44 ) error { 45 46 getParams := hcpPackerService.NewPackerServiceGetBucketParamsWithContext(ctx) 47 getParams.LocationOrganizationID = c.OrganizationID 48 getParams.LocationProjectID = c.ProjectID 49 getParams.BucketName = bucketName 50 51 _, err := c.Packer.PackerServiceGetBucket(getParams, nil) 52 if err != nil { 53 if CheckErrorCode(err, codes.NotFound) { 54 _, err = c.CreateBucket(ctx, bucketName, bucketDescription, bucketLabels) 55 } 56 return err 57 } 58 59 params := hcpPackerService.NewPackerServiceUpdateBucketParamsWithContext(ctx) 60 params.LocationOrganizationID = c.OrganizationID 61 params.LocationProjectID = c.ProjectID 62 params.BucketName = bucketName 63 params.Body = &hcpPackerModels.HashicorpCloudPacker20230101UpdateBucketBody{ 64 Description: bucketDescription, 65 Labels: bucketLabels, 66 } 67 _, err = c.Packer.PackerServiceUpdateBucket(params, nil) 68 69 return err 70 }