Skip to content

Commit 2158dee

Browse files
authored
Merge pull request #147 from replicatedhq/jeremy/fix-analyze
Added spec support to `analyze` function in support-bundle
2 parents 26d8211 + f6a56a9 commit 2158dee

File tree

1 file changed

+51
-6
lines changed

1 file changed

+51
-6
lines changed

cmd/troubleshoot/cli/analyze.go

Lines changed: 51 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package cli
33
import (
44
"encoding/json"
55
"fmt"
6+
"io/ioutil"
7+
"net/http"
8+
"os"
69

710
analyzer "github.com/replicatedhq/troubleshoot/pkg/analyze"
811
"github.com/replicatedhq/troubleshoot/pkg/convert"
@@ -14,11 +17,12 @@ import (
1417

1518
func Analyze() *cobra.Command {
1619
cmd := &cobra.Command{
17-
Use: "analyze",
20+
Use: "analyze [url]",
21+
Args: cobra.MinimumNArgs(1),
1822
Short: "analyze a support bundle",
19-
Long: `...`,
23+
Long: `Analyze a support bundle using the Analyzer definitions provided`,
2024
PreRun: func(cmd *cobra.Command, args []string) {
21-
viper.BindPFlag("url", cmd.Flags().Lookup("url"))
25+
viper.BindPFlag("bundle", cmd.Flags().Lookup("bundle"))
2226
viper.BindPFlag("output", cmd.Flags().Lookup("output"))
2327
viper.BindPFlag("quiet", cmd.Flags().Lookup("quiet"))
2428
},
@@ -27,7 +31,13 @@ func Analyze() *cobra.Command {
2731

2832
logger.SetQuiet(v.GetBool("quiet"))
2933

30-
result, err := analyzer.DownloadAndAnalyze(v.GetString("url"), "")
34+
specPath := args[0]
35+
analyzerSpec, err := downloadAnalyzerSpec(specPath)
36+
if err != nil {
37+
return err
38+
}
39+
40+
result, err := analyzer.DownloadAndAnalyze(v.GetString("bundle"), analyzerSpec)
3141
if err != nil {
3242
return err
3343
}
@@ -59,8 +69,8 @@ func Analyze() *cobra.Command {
5969
},
6070
}
6171

62-
cmd.Flags().String("url", "", "URL of the support bundle to analyze")
63-
cmd.MarkFlagRequired("url")
72+
cmd.Flags().String("bundle", "", "filename of the support bundle to analyze")
73+
cmd.MarkFlagRequired("bundle")
6474
cmd.Flags().String("output", "", "output format: json, yaml")
6575
cmd.Flags().String("compatibility", "", "output compatibility mode: support-bundle")
6676
cmd.Flags().MarkHidden("compatibility")
@@ -70,3 +80,38 @@ func Analyze() *cobra.Command {
7080

7181
return cmd
7282
}
83+
84+
func downloadAnalyzerSpec(specPath string) (string, error) {
85+
specContent := ""
86+
if !isURL(specPath) {
87+
if _, err := os.Stat(specPath); os.IsNotExist(err) {
88+
return "", fmt.Errorf("%s was not found", specPath)
89+
}
90+
91+
b, err := ioutil.ReadFile(specPath)
92+
if err != nil {
93+
return "", err
94+
}
95+
96+
specContent = string(b)
97+
} else {
98+
req, err := http.NewRequest("GET", specPath, nil)
99+
if err != nil {
100+
return "", err
101+
}
102+
req.Header.Set("User-Agent", "Replicated_Analyzer/v1beta1")
103+
resp, err := http.DefaultClient.Do(req)
104+
if err != nil {
105+
return "", err
106+
}
107+
defer resp.Body.Close()
108+
109+
body, err := ioutil.ReadAll(resp.Body)
110+
if err != nil {
111+
return "", err
112+
}
113+
114+
specContent = string(body)
115+
}
116+
return specContent, nil
117+
}

0 commit comments

Comments
 (0)