troubleshoot
troubleshoot copied to clipboard
Is there a better way to give hints about parse/format errors?
Describe the rationale for the suggested feature.
Right now, simple YAML errors like missing an indent result in nonexistent analyzer errors.
Describe the feature
I picked up some code and ran support-bundle, only to find that It output nonexistent analyzer
The code in the file is
- distribution:
outcomes:
- pass:
when: "== kurl"
message: kurl is a supported platform
- pass:
when: "== gke"
message: GKE is a supported platform
but should be
- distribution:
outcomes:
- pass:
when: "== kurl"
message: kurl is a supported platform
- pass:
when: "== gke"
message: GKE is a supported platform
Proposal: Detect likely format errors To whatever extent we can, which may be "not much", try to hint that this may be a yaml/parse error when the body of an analyzer evaluates to null.
A proposed error message might look like
Could not parse an analyzer at index $N. Please ensure the object key is a valid analyzer type and parameters are indented as children of the analyzer type name. See $DOCS_LINK for more information.
Proposal: Strict format requirements it seems like the YAML parser that consumes the list element evaluates to distribution = nil and then just drops the outcomes block on the floor since it can't be unmarshalled onto any known struct field of type Analyze. Y'all could consider failing or warning whenever unrecognized fields are provided, but this has some backwards-compatibility issues and probably needs some kind of strict-parsing opt-in. For example in the actual failed analyzer UI, could show something like
Parse error at index $N (or line: $N) -- one or more unknown object fields will be ignored: [
outcomes].
Describe alternatives you've considered
I suppose I could make fewer yaml mistakes 😅
Additional context
I believe this is related to https://github.com/replicatedhq/troubleshoot/issues/1312