Skip to content

Commit 075c0f6

Browse files
authored
Merge pull request #69 from replicatedhq/analyze-kotsadm
Wraping errors, no synlink in kotsadm
2 parents 2455f87 + a4c482c commit 075c0f6

File tree

1 file changed

+25
-15
lines changed

1 file changed

+25
-15
lines changed

pkg/analyze/download.go

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"path/filepath"
1313

1414
getter "github.com/hashicorp/go-getter"
15+
"github.com/pkg/errors"
1516
troubleshootv1beta1 "github.com/replicatedhq/troubleshoot/pkg/apis/troubleshoot/v1beta1"
1617
"github.com/replicatedhq/troubleshoot/pkg/logger"
1718
"gopkg.in/yaml.v2"
@@ -24,22 +25,22 @@ type fileContentProvider struct {
2425
func DownloadAndAnalyze(ctx context.Context, bundleURL string) ([]*AnalyzeResult, error) {
2526
tmpDir, err := ioutil.TempDir("", "troubleshoot-k8s")
2627
if err != nil {
27-
return nil, err
28+
return nil, errors.Wrap(err, "failed to create temp dir")
2829
}
2930
defer os.RemoveAll(tmpDir)
3031

31-
if err := downLoadTroubleshootBundle(bundleURL, tmpDir); err != nil {
32-
return nil, err
32+
if err := downloadTroubleshootBundle(bundleURL, tmpDir); err != nil {
33+
return nil, errors.Wrap(err, "failed to download bundle")
3334
}
3435

3536
_, err = os.Stat(filepath.Join(tmpDir, "version.yaml"))
3637
if err != nil {
37-
return nil, err
38+
return nil, errors.Wrap(err, "failed to read version.yaml")
3839
}
3940

4041
analyzers, err := getTroubleshootAnalyzers()
4142
if err != nil {
42-
return nil, err
43+
return nil, errors.Wrap(err, "failed to get analyzers")
4344
}
4445

4546
fcp := fileContentProvider{rootDir: tmpDir}
@@ -58,15 +59,24 @@ func DownloadAndAnalyze(ctx context.Context, bundleURL string) ([]*AnalyzeResult
5859
return analyzeResults, nil
5960
}
6061

61-
func downLoadTroubleshootBundle(bundleURL, destDir string) error {
62+
func downloadTroubleshootBundle(bundleURL string, destDir string) error {
63+
if bundleURL[0] == os.PathSeparator {
64+
f, err := os.Open(bundleURL)
65+
if err != nil {
66+
return errors.Wrap(err, "failed to open support bundle")
67+
}
68+
defer f.Close()
69+
return extractTroubleshootBundle(f, destDir)
70+
}
71+
6272
pwd, err := os.Getwd()
6373
if err != nil {
64-
return err
74+
return errors.Wrap(err, "failed to get workdir")
6575
}
6676

6777
tmpDir, err := ioutil.TempDir("", "getter")
6878
if err != nil {
69-
return err
79+
return errors.Wrap(err, "failed to create tmp dir")
7080
}
7181
defer os.RemoveAll(tmpDir)
7282

@@ -77,12 +87,12 @@ func downLoadTroubleshootBundle(bundleURL, destDir string) error {
7787
return nil
7888
})
7989
if err != nil {
80-
return err
90+
return errors.Wrap(err, "failed to read support bundle file")
8191
}
8292

8393
f, err := os.Open(dst)
8494
if err != nil {
85-
return err
95+
return errors.Wrap(err, "failed to open support bundle")
8696
}
8797
defer f.Close()
8898

@@ -92,7 +102,7 @@ func downLoadTroubleshootBundle(bundleURL, destDir string) error {
92102
func extractTroubleshootBundle(reader io.Reader, destDir string) error {
93103
gzReader, err := gzip.NewReader(reader)
94104
if err != nil {
95-
return err
105+
return errors.Wrap(err, "failed to create gzip reader")
96106
}
97107

98108
tarReader := tar.NewReader(gzReader)
@@ -102,25 +112,25 @@ func extractTroubleshootBundle(reader io.Reader, destDir string) error {
102112
break
103113
}
104114
if err != nil {
105-
return err
115+
return errors.Wrap(err, "failed to read header from tar")
106116
}
107117

108118
switch header.Typeflag {
109119
case tar.TypeDir:
110120
name := filepath.Join(destDir, header.Name)
111121
if err := os.MkdirAll(name, os.FileMode(header.Mode)); err != nil {
112-
return err
122+
return errors.Wrap(err, "failed to mkdir")
113123
}
114124
case tar.TypeReg:
115125
name := filepath.Join(destDir, header.Name)
116126
file, err := os.OpenFile(name, os.O_RDWR|os.O_CREATE, os.FileMode(header.Mode))
117127
if err != nil {
118-
return err
128+
return errors.Wrap(err, "failed to open tar file")
119129
}
120130
_, err = io.Copy(file, tarReader)
121131
file.Close()
122132
if err != nil {
123-
return err
133+
return errors.Wrap(err, "failed to extract file")
124134
}
125135
}
126136
}

0 commit comments

Comments
 (0)