Files
troubleshoot/cmd/preflight/cli/upload_results.go
Pavan Sokke Nagaraj 942234da80 Add strict flag to Analyzers and ResultAnalyzers (#539)
* add strict flag to Analyzer/AnalyzerMeta

and regenerate schemas and controller-gen code

* map analyzer strict to result

* Update stdout for human and json format

* fix review comment

* update interactive result

* update interactive results

* Update types.go

* Update upload_results.go

* print strict when only true
2022-02-23 15:07:51 -05:00

77 lines
1.9 KiB
Go

package cli
import (
"bytes"
"encoding/json"
"net/http"
"github.com/pkg/errors"
analyzerunner "github.com/replicatedhq/troubleshoot/pkg/analyze"
"github.com/replicatedhq/troubleshoot/pkg/collect"
"github.com/replicatedhq/troubleshoot/pkg/preflight"
)
func uploadResults(uri string, analyzeResults []*analyzerunner.AnalyzeResult) error {
uploadPreflightResults := &preflight.UploadPreflightResults{
Results: []*preflight.UploadPreflightResult{},
}
for _, analyzeResult := range analyzeResults {
uploadPreflightResult := &preflight.UploadPreflightResult{
Strict: analyzeResult.Strict,
IsFail: analyzeResult.IsFail,
IsWarn: analyzeResult.IsWarn,
IsPass: analyzeResult.IsPass,
Title: analyzeResult.Title,
Message: analyzeResult.Message,
URI: analyzeResult.URI,
}
uploadPreflightResults.Results = append(uploadPreflightResults.Results, uploadPreflightResult)
}
return upload(uri, uploadPreflightResults)
}
func uploadErrors(uri string, collectors collect.Collectors) error {
errors := []*preflight.UploadPreflightError{}
for _, collector := range collectors {
for _, e := range collector.RBACErrors {
errors = append(errors, &preflight.UploadPreflightError{
Error: e.Error(),
})
}
}
results := &preflight.UploadPreflightResults{
Errors: errors,
}
return upload(uri, results)
}
func upload(uri string, payload *preflight.UploadPreflightResults) error {
b, err := json.Marshal(payload)
if err != nil {
return errors.Wrap(err, "failed to marshal payload")
}
req, err := http.NewRequest("POST", uri, bytes.NewBuffer(b))
if err != nil {
return errors.Wrap(err, "failed to create request")
}
req.Header.Set("Content-Type", "application/json")
client := http.DefaultClient
resp, err := client.Do(req)
if err != nil {
return errors.Wrap(err, "failed to execute request")
}
if resp.StatusCode > 290 {
return errors.Errorf("unexpected status code: %d", resp.StatusCode)
}
return nil
}