SECURITY FIXES:
- security: bump goutils version to fix security issue" [GH-230]
- security: update text package (GO-2022-1059), along with other dependencies [GH-250]
- security: upgrade all dependencies, including the (vulnerable) crypto package" [GH-231]
BREAKING CHANGES:
- Op: Change the response type from any to map[string]any. Results for every runner are now stored under a key. This change enables Ops to return other ops, keyed by ID, and will allow runners to reference the ops from previous runners' results. [GH-226]
- output: lowercase standard output filenames: Results.json -> results.json and Manifest.json -> manifest.json [GH-261]
FEATURES:
- Runners now take timeouts, and these may be set via configuration.
- Configurable debug runners allow full customization without relying on Command or Shell runners.
- Consul updates include cli command
consul operator raft list-peers
and the API endpoint/v1/agent/members
. - Products now execute default runners in parallele, via a Do runner. Products with many file copies and network requests should see significant improvements.
- Runners that are skipped or time out are now reported appropriately in the end-of-run report.
- Sequencing runners (Do and Seq) are now available. Do is used to execute runners in parallel, while Seq runs them in guaranteed order.
- Vault now includes additional runners for troubleshooting, from the following API endpoints: sys/audit, sys/version-history?list=true, sys/license/status, sys/replication-status.
IMPROVEMENTS:
- agent: Enable context propagation from agent down through to products, as enablement for runner timeouts/cancellation support. [GH-263]
- agent: Extract summary report display from agent, and move into the command package. [GH-241]
- cli: A CLI library framework (mitchellh/cli) has been implemented in hcdiag, so that its user interface is now more consistent with other HashiCorp products. [GH-222]
- cli: A local diagnostics collection can be triggered using the
run
subcommand. [GH-222] - cli: Add a message at the end of the run to more clearly indicate where the output bundle can be located on the user's system. [GH-241]
- cli: The application version can now by found using the
version
subcommand in addition to the--version
flag. This is more consistent with other HashiCorp products. [GH-222] - consul: add runners for 'consul operator raft list-peers' and /v1/agent/members [GH-248]
- docs: Add example usage details for new Consul, Vault, and Nomad debug runners. [GH-293]
- docs: Add project contribution guidelines to the repository, in CONTRIBUTING.md. [GH-214]
- docs: Restructured readme into several doc files, improved new issue template, and added install and file-splitting docs. [GH-225]
- docs: add custom config examples, faq content [GH-233]
- go: Do not use CGO when building hcdiag binaries, so that C libraries won't be required on target machines. [GH-308]
- improvement: Add "skip" status counts to the summary output at the end of a run" [GH-229]
- manifest: manifest.json now includes environment metadata, including the command entered to run hcdiag, the username of the user who ran it, and the hostname where it was run. [GH-301]
- op: Add op statuses "Canceled" and "Timeout" to support the addition of runner cancellation/timeout. [GH-259]
- op: add op.WalkStatuses(), which recursively walks a tree of result ops to accumulate statuscounts. [GH-245]
- redact: fix the redact.ID string so that it reads correctly in results.json [GH-266]
- runner/host: EtcHosts can now timeout with a default of ten seconds. [GH-278]
- runner: Add ConsulDebug runner to wrap Consul's debug command. [GH-271]
- runner: Add NomadDebug runner to wrap Nomad's debug command. [GH-272]
- runner: Add a TFE command to collect the list of active nodes [GH-247]
- runner: Add more TFE commands for data collection [GH-227]
- runner: Add new Runner implementation.
Do
takes a slice of Runners and executes all of them concurrently. [GH-226] - runner: Add new Runner implementation:
DoSync
takes a slice of Runners and executes them in linear order. If the status is not Success, subsequent Runners do not execute. DoSync enables dependent Runner sets. [GH-226] - runner: Migrate Filecopy-related functions into runner [GH-219]
- runner: Shell now takes an optional Timeout value in Go duration form so that long-running executions can be gracefully stopped. [GH-277]
- runner: add VaultDebug runner to wrap Vault's debug command. [GH-265]
- runner: change "NewGetter" to "NewGet" for our HTTP GET runner. [GH-267]
- runner: commander now checks to see if a command exists before attempting to run it [GH-228]
- runners: Rename DoSync to Seq. [GH-299]
- runners: The Command runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-270]
- runners: The Copy runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-292]
- runners: The Docker log runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-281]
- runners: The HTTP / GET runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-274]
- runners: The Journald log runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-284]
- runners: The default runners within products now run concurrently instead of serially. [GH-255]
- runners: The host FSTab runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-298]
- runners: The host IPTables runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-288]
- runners: The host disk runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-286]
- runners: The host get runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-285]
- runners: The host info runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-289]
- runners: The host network runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-291]
- runners: The host os runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-295]
- runners: The host process runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-296]
- runners: The host procfiles runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-287]
- runners: The seq runner now takes an optional Timeout value, so that long-running executions can be gracefully stopped. [GH-299]
- runners: Update Command runner instantiation to use configuration objects, in order to simplify future feature additions. [GH-269]
- runners: Update HTTP runner instantiation to use configuration objects, in order to simplify future feature additions. [GH-273]
- runners: rename runners to drop 'er' endings. [GH-257]
- update dependencies [GH-256]
- vault: Vault now includes additional runners for troubleshooting, from the following API endpoints: sys/audit, sys/version-history?list=true, sys/license/status, sys/replication-status. [GH-302]
- vault: When a Vault token can't be found with the VAULT_TOKEN environment variable or in the ~/.vault-token file, we now log a warning without stopping the diagnostic run short. This allows users to still gather useful information about their Vault instance, while the warning indicates that the information may be incomplete due to the missing token. [GH-294]
DEPRECATIONS:
- cli: Running hcdiag without a subcommand will be deprecated going forward. Currently, running without a subcommand will execute a local diagnostics collection. However, users should begin to use the
run
subcommand instead. [GH-222] - cli: The serial flag is deprecated, as runners within products now run concurrently by default. The behavior of serial product
execution, with concurrent runner execution was deemed to be a confusing user experience for a feature that is primarily used
in development. If serial execution is required, please use HCL custom configuration with do-sync blocks instead. [GH-255] - deprecation: -debug-interval and -debug-duration flags will be removed in a future release in favor of HCL configuration for debug overrides. These flags are now marked as deprecated in CLI help output. [GH-293]
- deprecation: -includes flag will be removed in a future version of hcdiag [GH-237]
BUG FIXES:
- agent: Clean up the temporary directory even if hcdiag does not finish successfully, for example due to a failing product healthcheck. Previously, directories beginning with
hcdiag
would be left over in the working directory in the event of a failure. [GH-235] - bug: fixed extra spaces before comment text, which was breaking autogenerated documentation formatting [GH-243]
- commander: Improve handling of commander args that include spaces on Linux/Unix based systems. [GH-239]
- docker: Resolve issue where extraneous, empty Docker log files were included in results bundle when no matching container was found during the run. [GH-236]
- runner: fixed possible iptables runner nil panic and status passing [GH-228]