kubernetes/kops · error

error parsing config: %s

Error message

error parsing config: %s

What it means

After the editor round-trip, RunEditCluster decodes the edited bytes with the kops codecs; this fires when the edited YAML/JSON no longer parses into a known kops object. The edited temp file is preserved and the error is surfaced in the next edit round's header.

Source

Thrown at cmd/kops/edit_cluster.go:204

		if bytes.Equal(stripComments(raw), stripComments(edited)) {
			try.RemoveFile(file)
			fmt.Fprintln(out, "Edit cancelled: no changes made.")
			return nil
		}

		lines, err := hasLines(bytes.NewBuffer(edited))
		if err != nil {
			return preservedFile(err, file, out)
		}
		if !lines {
			try.RemoveFile(file)
			fmt.Fprintln(out, "Edit cancelled: saved file was empty.")
			return nil
		}

		newObj, _, err := kopscodecs.Decode(edited, nil)
		if err != nil {
			return preservedFile(fmt.Errorf("error parsing config: %s", err), file, out)
		}

		newCluster, ok := newObj.(*api.Cluster)
		if !ok {
			results = editResults{
				file: file,
			}
			results.header.addError(fmt.Sprintf("object was not of expected type: %T", newObj))
			containsError = true
			continue
		}

		extraFields, err := edit.HasExtraFields(string(edited))
		if err != nil {
			results = editResults{
				file: file,
			}
			results.header.addError(fmt.Sprintf("error checking for extra fields: %v", err))

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Fix the YAML syntax or apiVersion/kind in the preserved edit file
  2. Ensure the document is a valid Cluster object
  3. Avoid changing apiVersion/kind when editing
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at cmd/kops/edit_cluster.go:204 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/1d30143cdb4ba36f. Report an issue: GitHub.