You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
packer/internal/hcp/api/service_version.go

62 lines
1.9 KiB

package api
import (
"context"
"fmt"
hcpPackerAPI "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/client/packer_service"
hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models"
)
const incompleteVersionName = "v0"
// IsVersionComplete returns if the given version is completed or not.
//
// The best way to know if the version is completed or not is from the name of the version. All version that are
// incomplete are named "v0".
func (c *Client) IsVersionComplete(version *hcpPackerModels.HashicorpCloudPacker20230101Version) bool {
return version.Name != incompleteVersionName
}
func (c *Client) CreateVersion(
ctx context.Context,
bucketName,
fingerprint string,
templateType hcpPackerModels.HashicorpCloudPacker20230101TemplateType,
) (*hcpPackerAPI.PackerServiceCreateVersionOK, error) {
params := hcpPackerAPI.NewPackerServiceCreateVersionParamsWithContext(ctx)
params.LocationOrganizationID = c.OrganizationID
params.LocationProjectID = c.ProjectID
params.BucketName = bucketName
params.Body = &hcpPackerModels.HashicorpCloudPacker20230101CreateVersionBody{
Fingerprint: fingerprint,
TemplateType: templateType.Pointer(),
}
return c.Packer.PackerServiceCreateVersion(params, nil)
}
func (c *Client) GetVersion(
ctx context.Context, bucketName string, fingerprint string,
) (*hcpPackerModels.HashicorpCloudPacker20230101Version, error) {
params := hcpPackerAPI.NewPackerServiceGetVersionParams()
params.LocationOrganizationID = c.OrganizationID
params.LocationProjectID = c.ProjectID
params.BucketName = bucketName
params.Fingerprint = fingerprint
resp, err := c.Packer.PackerServiceGetVersion(params, nil)
if err != nil {
return nil, err
}
if resp.Payload.Version != nil {
return resp.Payload.Version, nil
}
return nil, fmt.Errorf(
"something went wrong retrieving the version for bucket %s", bucketName,
)
}