{"record":{"id":"fb0954d114454e23","repo":"kubernetes/kops","slug":"unsupported-output-format-q","errorCode":null,"errorMessage":"unsupported output format: %q","messagePattern":"unsupported output format: %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/kops/get_assets.go","lineNumber":175,"sourceCode":"\t\treturn fileOutputTable(result.Files, out)\n\tcase OutputYaml:\n\t\ty, err := yaml.Marshal(result)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to marshal YAML: %v\", err)\n\t\t}\n\t\tif _, err := out.Write(y); err != nil {\n\t\t\treturn fmt.Errorf(\"error writing to output: %v\", err)\n\t\t}\n\tcase OutputJSON:\n\t\tj, err := json.Marshal(result)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"unable to marshal JSON: %v\", err)\n\t\t}\n\t\tif _, err := out.Write(j); err != nil {\n\t\t\treturn fmt.Errorf(\"error writing to output: %v\", err)\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"unsupported output format: %q\", options.Output)\n\t}\n\n\treturn nil\n}\n\nfunc imageOutputTable(images []*Image, out io.Writer) error {\n\tfmt.Println(\"\")\n\tt := &tables.Table{}\n\tt.AddColumn(\"CANONICAL\", func(i *Image) string {\n\t\treturn i.Canonical\n\t})\n\tt.AddColumn(\"DOWNLOAD\", func(i *Image) string {\n\t\treturn i.Download\n\t})\n\n\tcolumns := []string{\"CANONICAL\", \"DOWNLOAD\"}\n\treturn t.Render(images, out, columns...)\n}","sourceCodeStart":157,"sourceCodeEnd":193,"githubUrl":"https://github.com/kubernetes/kops/blob/4c8573c808a73d578c5eadc86d410646ea0b0d73/cmd/kops/get_assets.go#L157-L193","documentation":"RunGetAssets validates options.Output against table, yaml, and json and returns this error from the default branch for any other value. Note the differing message text ('unsupported output format' vs get_all's 'unknown output format') but the same behavior.","triggerScenarios":"`kops get assets -o <invalid>`, e.g. -o wide, jsonpath, empty string, or a scripted value that isn't one of the three supported formats.","commonSituations":"Habitual kubectl flags like jsonpath/custom-columns applied to kops; automation templates passing wrong -o values; typos such as -o Yaml (case-sensitive).","solutions":["Use -o table (default), -o yaml, or -o json","Mind case: values must be lowercase yaml/json/table","Fix scripts/aliases to pass only supported values"],"exampleFix":"// before\nkops get assets -o Yaml\n// after\nkops get assets -o yaml","handlingStrategy":"validation","validationCode":"func validAssetsOutput(o string) bool {\n    switch o {\n    case \"table\", \"yaml\", \"json\":\n        return true\n    }\n    return false\n}\n// before RunGetAssets\nif !validAssetsOutput(options.Output) {\n    return fmt.Errorf(\"unsupported output format %q; use table, yaml or json\", options.Output)\n}","typeGuard":"func isSupportedOutput(o string) bool {\n    return o == \"table\" || o == \"yaml\" || o == \"json\"\n}","tryCatchPattern":"err := RunGetAssets(ctx, f, out, options)\nif err != nil && strings.Contains(err.Error(), \"unsupported output format\") {\n    fmt.Fprintln(os.Stderr, \"supported: -o table|yaml|json\")\n}","preventionTips":["Use only table, yaml, or json with kops get assets","Watch case: -o Yaml is invalid, use -o yaml","Strip kubectl-only output flags (jsonpath, custom-columns) from scripts ported to kops","Validate flags in CI wrappers before running kops"],"tags":["cli","flags","validation"],"backgroundTag":"invalid-output-format","analyzedSha":"4c8573c808a73d578c5eadc86d410646ea0b0d73","analyzedAt":"2026-09-05T04:13:19.212Z","contentChangedAt":"2026-09-05T04:13:19.212Z","schemaVersion":2},"datasetVersion":"2026-09-12T12:17:11.808Z"}