kubernetes/kops · error

unknown asset format: %q

Error message

unknown asset format: %q

What it means

AssetStore.Add only recognizes ids of the form <hash>@<scheme>://... where scheme is file, gs, s3 or azureblob; the id matched none of the recognized '@scheme://' markers and local-file support is not implemented, so the format is unknown.

Source

Thrown at upup/pkg/fi/assetstore.go:229

	if i == -1 {
		i = strings.Index(id, "@gs://")
	}
	if i == -1 {
		i = strings.Index(id, "@s3://")
	}
	if i == -1 {
		i = strings.Index(id, "@azureblob://")
	}
	if i != -1 {
		urls := strings.Split(id[i+1:], ",")
		hash, err := hashing.FromString(id[:i])
		if err != nil {
			return err
		}
		return a.addURLs(ctx, urls, hash)
	}
	// TODO: local files!
	return fmt.Errorf("unknown asset format: %q", id)
}

func (a *AssetStore) addURLs(ctx context.Context, urls []string, hash *hashing.Hash) error {
	if len(urls) == 0 {
		return fmt.Errorf("no urls were specified")
	}

	var err error
	if hash == nil {
		for _, url := range urls {
			hash, err = hashFromHTTPHeader(url)
			if err != nil {
				klog.Warningf("unable to get hash from %q: %v", url, err)
				continue
			} else {
				break
			}
		}

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Format the asset id as '<hash>@<url>' using a supported scheme (s3://, gs://, azureblob://, file://)
  2. For local files, embed the asset in the kops binary or use a URL-based source
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at upup/pkg/fi/assetstore.go:229 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/0da5477113ee83f1. Report an issue: GitHub.