Issue #695 - Add --no-uri flag to support-bundle to ignore the uri field and revert back to the default spec… (#717)

Add --follow-uri flag to support-bundle to ignore the uri field when set in a spec

Implement the new CLI flag in `root.go` so we can pass it if we need to ignore the `uri` field in a spec. This also serves as a minimal documentation effort when running `support-bundle --help`.

Fixes: #695
This commit is contained in:
Edgar Lanting
2022-10-09 20:30:21 +02:00
committed by GitHub
parent b3e662c988
commit 56a68a4fef
2 changed files with 14 additions and 3 deletions

View File

@@ -58,6 +58,10 @@ from a server that can be used to assist when troubleshooting a Kubernetes clust
cmd.Flags().Bool("allow-insecure-connections", false, "when set, do not verify TLS certs when retrieving spec and reporting results")
cmd.Flags().MarkHidden("allow-insecure-connections")
// `no-uri` references the `followURI` functionality where we can use an upstream spec when creating a support bundle
// This flag makes sure we can also disable this and fall back to the default spec.
cmd.Flags().Bool("no-uri", false, "When this flag is used, Troubleshoot does not attempt to retrieve the bundle referenced by the uri: field in the spec.`")
viper.BindPFlags(cmd.Flags())
viper.SetEnvKeyReplacer(strings.NewReplacer("-", "_"))

View File

@@ -83,14 +83,21 @@ func runTroubleshoot(v *viper.Viper, arg []string) error {
troubleshootclientsetscheme.AddToScheme(scheme.Scheme)
additionalRedactors := &troubleshootv1beta2.Redactor{}
for i, v := range arg {
collectorContent, err := supportbundle.LoadSupportBundleSpec(v)
// Defining `v` below will render using `v` in reference to Viper unusable.
// Therefore refactoring `v` to `val` will make sure we can still use it.
for i, val := range arg {
collectorContent, err := supportbundle.LoadSupportBundleSpec(val)
if err != nil {
return errors.Wrap(err, "failed to load support bundle spec")
}
multidocs := strings.Split(string(collectorContent), "\n---\n")
supportBundle, err := supportbundle.ParseSupportBundleFromDoc([]byte(multidocs[0]))
// Referencing `ParseSupportBundle with a secondary arg of `no-uri`
// Will make sure we can enable or disable the use of the `Spec.uri` field for an upstream spec.
// This change will not have an impact on KOTS' usage of `ParseSupportBundle`
// As Kots uses `load.go` directly.
supportBundle, err := supportbundle.ParseSupportBundle([]byte(multidocs[0]), !v.GetBool("no-uri"))
if err != nil {
return errors.Wrap(err, "failed to parse support bundle spec")
}