hashicorp/packer · error

something went wrong retrieving the iteration for bucket %s

Error message

something went wrong retrieving the iteration for bucket %s

What it means

GetIteration (deprecated service path) fetches an iteration for a bucket slug from HCP Packer; when the API call succeeds but resp.Payload.Iteration is nil, it concludes the iteration data was missing and returns this generic failure. It indicates the bucket exists/API responds but no matching iteration was returned for the request (e.g. unknown version or lifecycle state).

Source

Thrown at internal/hcp/api/deprecated_service.go:50

	getItParams := hcpPackerDeprecatedAPI.NewPackerServiceGetIterationParams()
	getItParams.LocationOrganizationID = client.OrganizationID
	getItParams.LocationProjectID = client.ProjectID
	getItParams.BucketSlug = bucketSlug

	for _, opt := range opts {
		opt(getItParams)
	}

	resp, err := client.Packer.PackerServiceGetIteration(getItParams, nil)
	if err != nil {
		return nil, err
	}

	if resp.Payload.Iteration != nil {
		return resp.Payload.Iteration, nil
	}

	return nil, fmt.Errorf(
		"something went wrong retrieving the iteration for bucket %s", bucketSlug,
	)
}

// GetChannel loads the named channel that is associated to the bucket slug . If the
// channel does not exist in HCP Packer, GetChannel returns an error.
func (client *DeprecatedClient) GetChannel(
	ctx context.Context, bucketSlug string, channelName string,
) (*hcpPackerDeprecatedModels.HashicorpCloudPackerChannel, error) {
	params := hcpPackerDeprecatedAPI.NewPackerServiceGetChannelParamsWithContext(ctx)
	params.LocationOrganizationID = client.OrganizationID
	params.LocationProjectID = client.ProjectID
	params.BucketSlug = bucketSlug
	params.Slug = channelName

	resp, err := client.Packer.PackerServiceGetChannel(params, nil)
	if err != nil {
		return nil, err

View on GitHub (pinned to eb36e3c3e4)

Solutions

  1. Verify the bucket slug and iteration identifier (fingerprint) exist in the HCP Packer registry.
  2. Check whether the iteration was removed by HCP Packer's soft-delete/garbage collection policy.
  3. Migrate to the non-deprecated service_version.go GetVersion/GetIteration API.

Example fix

// before
iter, err := client.GetIteration(ctx, bucketSlug, fingerprint) // deprecated path, nil iteration
// after
ver, err := client.GetVersion(ctx, bucketName, fingerprint) // current service API
Defensive patterns

Strategy: try-catch

Validate before calling

// confirm the iteration fingerprint exists before use
// e.g. list versions for the bucket and check membership first
if !bucketHasIteration(registry, bucketSlug, fingerprint) {
    return fmt.Errorf("iteration %s not present in bucket %s", fingerprint, bucketSlug)
}

Try / catch

iter, err := client.GetIteration(ctx, bucketSlug, fingerprint)
if err != nil {
    if strings.Contains(err.Error(), "something went wrong retrieving the iteration") {
        return fmt.Errorf("iteration %q not found or purged in bucket %q", fingerprint, bucketSlug)
    }
    return err
}

Prevention

When it happens

Trigger: PackerServiceGetIteration succeeds but resp.Payload.Iteration == nil — e.g. the requested fingerprint/version does not exist, or the iteration was purged (soft-deleted after 90 days for non-complete iterations).

Common situations: Requesting an iteration fingerprint that was never pushed or was garbage-collected; bucket name typo leading to empty payload; deprecated code path still used by older code consuming HCP Packer metadata.

Related errors


AI-assisted analysis of hashicorp/packer@eb36e3c3e4 (2026-09-05). Data as JSON: /api/errors/30ab3c9191da034f. Report an issue: GitHub.