id = "sonobuoy"
name = "Sonobuoy"
homepage = "https://sonobuoy.io/"
description = "Sonobuoy is a diagnostic tool that makes it easier to understand the state of a Kubernetes cluster."
executables = ["sonobuoy"]
[dotfiles]
paths = ["~/.sonobuoy/"]
secret = []
[commands]
format = 1
label = "Sonobuoy"
description = "Start a Sonobuoy run (Kubernetes conformance and diagnostics plugins) with sonobuoy run. Other subcommands such as status, results and delete are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.subcommand]]
path = ["run"]
label = "Run plugins"
description = "Launch the Sonobuoy aggregator and plugin pods against the current cluster."
[[commands.subcommand.source]]
id = "help"
kind = "help"
url = "https://github.com/vmware-tanzu/sonobuoy/blob/main/site/content/docs/main/cli/sonobuoy_run.md"
evidence = """sonobuoy run [flags]
--context string Context in the kubeconfig to use.
--kubeconfig Kubeconfig Path to explicit kubeconfig file.
-m, --mode Mode What mode to run the e2e plugin in. Valid modes are [certified-conformance conformance-lite non-disruptive-conformance quick]. (default non-disruptive-conformance)
-n, --namespace string The namespace to run Sonobuoy in. Only one Sonobuoy run can exist per namespace simultaneously. (default "sonobuoy")
-p, --plugin pluginList Which plugins to run. Can either point to a URL, local file/directory, or be one of the known plugins (e2e or systemd-logs). Can be specified multiple times to run multiple plugins.
--wait int[=1440] How long (in minutes) for the CLI to wait for sonobuoy run to be completed or fail, where 0 indicates do not wait.
--e2e-focus envModifier Specify the E2E_FOCUS value for the e2e plugin, specifying which tests to run.
--e2e-skip envModifier Specify the E2E_SKIP value for the e2e plugin, specifying which tests to skip.
--timeout int How long (in seconds) Sonobuoy aggregator will wait for plugins to complete before exiting. 0 indicates no timeout. (default 21600)
--dns-namespace string The namespace to check for DNS pods during preflight checks.
--level level Log level. One of {panic, fatal, error, warn, info, debug, trace} (default info)"""
[[commands.subcommand.field]]
id = "mode"
label = "E2E mode"
type = "enum"
option = ["--mode", "-m"]
choices = [{ value = "certified-conformance", label = "Certified conformance" }, { value = "conformance-lite", label = "Conformance lite" }, { value = "non-disruptive-conformance", label = "Non-disruptive conformance" }, { value = "quick", label = "Quick" }]
sources = ["help"]
[[commands.subcommand.field]]
id = "plugin"
label = "Plugins"
description = "Known plugin (e2e, systemd-logs), URL, or local file or directory."
type = "string"
option = ["--plugin", "-p"]
multiple = true
suggestions = [{ value = "e2e", label = "e2e" }, { value = "systemd-logs", label = "systemd-logs" }]
sources = ["help"]
[[commands.subcommand.field]]
id = "namespace"
label = "Namespace"
type = "string"
option = ["--namespace", "-n"]
sources = ["help"]
[[commands.subcommand.field]]
id = "kubeconfig"
label = "Kubeconfig"
type = "path"
option = ["--kubeconfig"]
path = { kind = "file", role = "input" }
sources = ["help"]
[[commands.subcommand.field]]
id = "context"
label = "Kube context"
type = "string"
option = ["--context"]
sources = ["help"]
[[commands.subcommand.field]]
id = "e2e_focus"
label = "E2E focus"
type = "string"
option = ["--e2e-focus"]
sources = ["help"]
[[commands.subcommand.field]]
id = "e2e_skip"
label = "E2E skip"
type = "string"
option = ["--e2e-skip"]
sources = ["help"]
[[commands.subcommand.field]]
id = "wait"
label = "Wait (minutes)"
description = "Block until the run completes or fails; 0 means do not wait."
type = "integer"
option = ["--wait"]
sources = ["help"]
[[commands.subcommand.field]]
id = "timeout"
label = "Aggregator timeout (seconds)"
type = "integer"
option = ["--timeout"]
sources = ["help"]
[[commands.subcommand.task]]
id = "quick"
label = "Quick smoke run"
set = { mode = ["quick"] }
lock = ["mode"]
fields = ["mode", "namespace", "kubeconfig", "context", "wait"]
[[commands.subcommand.task]]
id = "conformance"
label = "Non-disruptive conformance"
set = { mode = ["non-disruptive-conformance"] }
fields = ["mode", "namespace", "kubeconfig", "context", "wait"]
[[commands.subcommand.task]]
id = "plugins"
label = "Choose plugins"
fields = ["plugin", "namespace", "kubeconfig", "context", "wait"]
required = ["plugin"]
[[commands.subcommand.group]]
id = "basic"
label = "Basic"
fields = ["mode", "plugin", "namespace", "kubeconfig", "context", "wait"]
[[commands.subcommand.group]]
id = "advanced"
label = "Advanced"
fields = ["e2e_focus", "e2e_skip", "timeout"]