argoproj/argo-workflows · error
not supported
Error message
not supported
What it means
The artifact plugin resources type implements the plugin API's resource interface used by artifact drivers. Its GetConfigMapKey method is intentionally unimplemented and always returns the literal error `not supported`, meaning this plugin runtime cannot read ConfigMap contents.
Source
Thrown at cmd/argoexec/commands/artifact/delete.go:147
Files map[string][]byte
}
func (r resources) GetSecret(ctx context.Context, name, key string) (string, error) {
path := filepath.Join(common.SecretVolMountPath, name, key)
if file, ok := r.Files[path]; ok {
return string(file), nil
}
file, err := os.ReadFile(path)
if err != nil {
return "", err
}
r.Files[path] = file
return string(file), nil
}
func (r resources) GetConfigMapKey(ctx context.Context, name, key string) (string, error) {
return "", fmt.Errorf("not supported")
}
View on GitHub (pinned to 35bff19146)
Solutions
- Do not call GetConfigMapKey from artifact plugin code; refactor the plugin to receive needed values directly in its spec (inline data, env, or artifact inputs).
- Mount the ConfigMap into the workflow pod and read it from the filesystem instead of via the resource API.
- If server-side resolution is needed, perform it in the controller/driver layer, not the plugin executor path.
- Check the artifact plugin docs for which resource methods are supported in the plugin context.
Example fix
// before
val, err := resources.GetConfigMapKey(ctx, "my-cm", "key")
// after
val, err := os.ReadFile("/config/my-cm/key") // ConfigMap mounted as volume Defensive patterns
Strategy: fallback
Try / catch
val, err := res.GetConfigMapKey(ctx, name, key)
if err != nil && err.Error() == "not supported" {
// fallback: read from mounted volume instead
val, err = os.ReadFile(filepath.Join(mountPath, name, key))
} Prevention
- Never call GetConfigMapKey in artifact plugin code — it is intentionally unsupported
- Pass needed configuration inline in the plugin spec or via mounted volumes
- Review the plugin resource API surface before writing plugin logic
When it happens
Trigger: An artifact plugin (loaded via argoexec's artifact plugin mechanism) invoking GetConfigMapKey on the executor-side resources implementation; plugin logic that resolves a ConfigMap-based source or input at plugin runtime.
Common situations: Developing an artifact plugin that assumes full resource access parity with the server-side implementation; a plugin spec/reconciliation path that tries to read a ConfigMap (e.g. for a config-driven source) inside the argoexec plugin process.
Related errors
- %w
- %w
- failed to create ctr directory: %w
- failed to create dependency dir: %w
- dependency %q exited with non-zero code: %d
AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03).
Data as JSON: /api/errors/c8bb4714526234ba.
Report an issue: GitHub.