Add consul snapshot decode
command
#20824
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Often in debugging Consul, users want to be able to see what is in a snapshot. The snapshot data itself is encoded in a non-human readable format. This PR introduces a
consul snapshot decode
command. This command reads in a snapshot and outputs a stream of line delimited JSON objects. The expectation is that the user can then post-process the stream with some other tool likejq
to find/display some relevant data.Each object at the top level has the form:
{"Type": "<type name>", "Data": <JSON encoded data value>}
. The<type name>
comes from the string form of the request type. In addition to all the various request types specified in thestructs
package, aSnapshotHeader
type is also used to pass back the snapshot header metadata to the user within the JSON object stream.For forwards compatibility and for a CE binary operating on an enterprise snapshot, if the request type byte isn't known to the CLI then the
<type name>
will beUnknown(<type byte integer value>)
.Testing & Reproduction steps