{"record":{"id":"19daf246cf4b9ac4","repo":"hashicorp/packer","slug":"q-not-implemented-19daf2","errorCode":null,"errorMessage":"%q not implemented","messagePattern":"%q not implemented","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packer/plugin-getter/release/getter.go","lineNumber":108,"sourceCode":"\t\t// https://releases.hashicorp.com/packer-plugin-docker/index.json\n\t\turl := filepath.ToSlash(officialReleaseURL + ghURI.PluginType() + \"/index.json\")\n\t\treq, err = http.NewRequest(\"GET\", url, nil)\n\t\ttransform = transformReleasesVersionStream\n\tcase \"sha256\":\n\t\t// https://releases.hashicorp.com/packer-plugin-docker/8.0.0/packer-plugin-docker_1.1.1_SHA256SUMS\n\t\turl := filepath.ToSlash(officialReleaseURL + ghURI.PluginType() + \"/\" + opts.VersionString() + \"/\" + ghURI.PluginType() + \"_\" + opts.VersionString() + \"_SHA256SUMS\")\n\t\ttransform = gh.TransformChecksumStream()\n\t\treq, err = http.NewRequest(\"GET\", url, nil)\n\tcase \"meta\":\n\t\t// https://releases.hashicorp.com/packer-plugin-docker/8.0.0/packer-plugin-docker_1.1.1_manifest.json\n\t\turl := filepath.ToSlash(officialReleaseURL + ghURI.PluginType() + \"/\" + opts.VersionString() + \"/\" + ghURI.PluginType() + \"_\" + opts.VersionString() + \"_manifest.json\")\n\t\treq, err = http.NewRequest(\"GET\", url, nil)\n\tcase \"zip\":\n\t\t// https://releases.hashicorp.com/packer-plugin-docker/1.1.1/packer-plugin-docker_1.1.1_darwin_arm64.zip\n\t\turl := filepath.ToSlash(officialReleaseURL + ghURI.PluginType() + \"/\" + opts.VersionString() + \"/\" + opts.ExpectedZipFilename())\n\t\treq, err = http.NewRequest(\"GET\", url, nil)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"%q not implemented\", what)\n\t}\n\n\tif err != nil {\n\t\tlog.Printf(\"[ERROR] http-getter: error creating request for %q: %s\", what, err)\n\t\treturn nil, err\n\t}\n\n\tresp, err := g.HttpClient.Do(req)\n\tif err != nil || resp.StatusCode >= 400 {\n\t\tlog.Printf(\"[ERROR] Got error while trying getting data from releases.hashicorp.com, %v\", err)\n\t\treturn nil, plugingetter.HTTPFailure\n\t}\n\n\tdefer func(Body io.ReadCloser) {\n\t\terr = Body.Close()\n\t\tif err != nil {\n\t\t\tlog.Printf(\"[ERROR] http-getter: error closing response body: %s\", err)\n\t\t}","sourceCodeStart":90,"sourceCodeEnd":126,"githubUrl":"https://github.com/hashicorp/packer/blob/eb36e3c3e48a036f3e8cc94087636ee72e1303c9/packer/plugin-getter/release/getter.go#L90-L126","documentation":"packer/plugin-getter/release/getter.go's http Getter supports only the download kinds \"checksum\", \"meta\", and \"zip\". Get switches on the `what` argument to build the appropriate releases.hashicorp.com URL; anything else falls into the default case and is rejected. This is a programming/API-misuse guard, not a runtime condition.","triggerScenarios":"Calling Getter.Get (directly or via plugingetter plumbing) with a `what` value other than \"checksum\", \"meta\", or \"zip\", e.g. Get(\"sha256\", opts) or a typo like Get(\"ziip\", opts).","commonSituations":"Custom tooling reusing the release Getter to fetch other release assets; a newly added download kind in upstream Packer not yet handled by this switch; mistyping the kind string.","solutions":["Use one of the supported kinds: \"checksum\", \"meta\", or \"zip\".","Check the spelling/casing of the `what` argument against the switch in Get.","If you need a new asset type, add a case to the switch in release/getter.go Get rather than passing an arbitrary string."],"exampleFix":"// before\nf, err := g.Get(\"sha256sum\", opts)\n// after\nf, err := g.Get(\"checksum\", opts)","handlingStrategy":"validation","validationCode":"var supported = map[string]bool{\"checksum\": true, \"meta\": true, \"zip\": true}\nif !supported[what] {\n    return fmt.Errorf(\"unsupported download kind %q; want checksum|meta|zip\", what)\n}","typeGuard":null,"tryCatchPattern":"if _, err := g.Get(\"checksum\", opts); err != nil {\n    if strings.Contains(err.Error(), \"not implemented\") {\n        // fix the kind argument in code, not retryable\n    }\n}","preventionTips":["Define the download kind as a typed constant/enum instead of a raw string.","Grep the switch in release/getter.go before adding new callers."],"tags":["packer","plugin-getter","unsupported-operation","argument-validation"],"backgroundTag":"unsupported-operation","analyzedSha":"eb36e3c3e48a036f3e8cc94087636ee72e1303c9","analyzedAt":"2026-09-05T13:20:43.127Z","contentChangedAt":"2026-09-05T13:20:43.127Z","schemaVersion":2},"datasetVersion":"2026-09-12T17:17:11.597Z"}