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

  1. 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).
  2. Mount the ConfigMap into the workflow pod and read it from the filesystem instead of via the resource API.
  3. If server-side resolution is needed, perform it in the controller/driver layer, not the plugin executor path.
  4. 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

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


AI-assisted analysis of argoproj/argo-workflows@35bff19146 (2026-09-03). Data as JSON: /api/errors/c8bb4714526234ba. Report an issue: GitHub.