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
- Format the asset id as '<hash>@<url>' using a supported scheme (s3://, gs://, azureblob://, file://)
- 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.