diff --git a/app/vmbackup/main.go b/app/vmbackup/main.go index ed31c75f51..e7daa43b68 100644 --- a/app/vmbackup/main.go +++ b/app/vmbackup/main.go @@ -3,6 +3,7 @@ package main import ( "flag" "fmt" + "net/url" "os" "path/filepath" "strings" @@ -41,25 +42,36 @@ func main() { // Write flags and help message to stdout, since it is easier to grep or pipe. flag.CommandLine.SetOutput(os.Stdout) flag.Usage = usage + flagutil.RegisterSecretFlag("snapshot.createURL") + flagutil.RegisterSecretFlag("snapshot.deleteURL") envflag.Parse() buildinfo.Init() logger.Init() pushmetrics.Init() if len(*snapshotCreateURL) > 0 { + // create net/url object + createUrl, err := url.Parse(*snapshotCreateURL) + if err != nil { + logger.Fatalf("cannot parse snapshotCreateURL: %s", err) + } if len(*snapshotName) > 0 { logger.Fatalf("-snapshotName shouldn't be set if -snapshot.createURL is set, since snapshots are created automatically in this case") } - logger.Infof("Snapshot create url %s", *snapshotCreateURL) + logger.Infof("Snapshot create url %s", createUrl.Redacted()) if len(*snapshotDeleteURL) <= 0 { err := flag.Set("snapshot.deleteURL", strings.Replace(*snapshotCreateURL, "/create", "/delete", 1)) if err != nil { logger.Fatalf("Failed to set snapshot.deleteURL flag: %v", err) } } - logger.Infof("Snapshot delete url %s", *snapshotDeleteURL) + deleteUrl, err := url.Parse(*snapshotCreateURL) + if err != nil { + logger.Fatalf("cannot parse snapshotDeleteURL: %s", err) + } + logger.Infof("Snapshot delete url %s", deleteUrl.Redacted()) - name, err := snapshot.Create(*snapshotCreateURL) + name, err := snapshot.Create(createUrl.String()) if err != nil { logger.Fatalf("cannot create snapshot: %s", err) } @@ -69,7 +81,7 @@ func main() { } defer func() { - err := snapshot.Delete(*snapshotDeleteURL, name) + err := snapshot.Delete(deleteUrl.String(), name) if err != nil { logger.Fatalf("cannot delete snapshot: %s", err) } diff --git a/lib/snapshot/snapshot.go b/lib/snapshot/snapshot.go index c356d31277..a3b321224a 100644 --- a/lib/snapshot/snapshot.go +++ b/lib/snapshot/snapshot.go @@ -39,13 +39,13 @@ func Create(createSnapshotURL string) (string, error) { return "", err } if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("unexpected status code returned from %q: %d; expecting %d; response body: %q", createSnapshotURL, resp.StatusCode, http.StatusOK, body) + return "", fmt.Errorf("unexpected status code returned from %q: %d; expecting %d; response body: %q", u.Redacted(), resp.StatusCode, http.StatusOK, body) } snap := snapshot{} err = json.Unmarshal(body, &snap) if err != nil { - return "", fmt.Errorf("cannot parse JSON response from %q: %w; response body: %q", createSnapshotURL, err, body) + return "", fmt.Errorf("cannot parse JSON response from %q: %w; response body: %q", u.Redacted(), err, body) } if snap.Status == "ok" { @@ -77,13 +77,13 @@ func Delete(deleteSnapshotURL string, snapshotName string) error { return err } if resp.StatusCode != http.StatusOK { - return fmt.Errorf("unexpected status code returned from %q: %d; expecting %d; response body: %q", deleteSnapshotURL, resp.StatusCode, http.StatusOK, body) + return fmt.Errorf("unexpected status code returned from %q: %d; expecting %d; response body: %q", u.Redacted(), resp.StatusCode, http.StatusOK, body) } snap := snapshot{} err = json.Unmarshal(body, &snap) if err != nil { - return fmt.Errorf("cannot parse JSON response from %q: %w; response body: %q", deleteSnapshotURL, err, body) + return fmt.Errorf("cannot parse JSON response from %q: %w; response body: %q", u.Redacted(), err, body) } if snap.Status == "ok" {