MCPcopy Create free account
hub / github.com/cloudnative-pg/cloudnative-pg / NewCmd

Function NewCmd

internal/cmd/manager/backup/cmd.go:36–89  ·  view source on GitHub ↗

NewCmd create a new cobra command

()

Source from the content-addressed store, hash-verified

34
35// NewCmd create a new cobra command
36func NewCmd() *cobra.Command {
37 cmd := cobra.Command{
38 Use: "backup [backup_name]",
39 RunE: func(cmd *cobra.Command, args []string) error {
40 contextLogger := log.FromContext(cmd.Context())
41 backupURL := url.Local(url.PathPgBackup, url.LocalPort)
42 resp, err := http.Get(backupURL + "?name=" + args[0])
43 if err != nil {
44 contextLogger.Error(err, "Error while requesting backup")
45 return err
46 }
47
48 defer func() {
49 err := resp.Body.Close()
50 if err != nil {
51 contextLogger.Error(err, "Can't close the connection",
52 "backupURL", backupURL,
53 "statusCode", resp.StatusCode,
54 )
55 }
56 }()
57
58 body, err := io.ReadAll(resp.Body)
59 if err != nil {
60 contextLogger.Error(err, "Error while reading backup response body",
61 "backupURL", backupURL,
62 "statusCode", resp.StatusCode,
63 )
64 return err
65 }
66
67 if resp.StatusCode != http.StatusOK {
68 contextLogger.Info(
69 "Error while requesting backup",
70 "backupURL", backupURL,
71 "statusCode", resp.StatusCode,
72 "body", string(body),
73 )
74 return fmt.Errorf("invalid status code: %v", resp.StatusCode)
75 }
76
77 _, err = os.Stderr.Write(body)
78 if err != nil {
79 contextLogger.Error(err, "Error while starting a backup")
80 return err
81 }
82
83 return nil
84 },
85 Args: cobra.ExactArgs(1),
86 }
87
88 return &cmd
89}

Callers 1

mainFunction · 0.92

Calls 6

LocalFunction · 0.92
InfoMethod · 0.80
CloseMethod · 0.65
WriteMethod · 0.65
GetMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected