From d1bc04865f8c8344b6569ee59aa2a390caa5f4c2 Mon Sep 17 00:00:00 2001 From: David Allen Date: Thu, 20 Jun 2024 17:10:16 -0600 Subject: [PATCH] Added fetch command to interact with server --- cmd/fetch.go | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 cmd/fetch.go diff --git a/cmd/fetch.go b/cmd/fetch.go new file mode 100644 index 0000000..110f03c --- /dev/null +++ b/cmd/fetch.go @@ -0,0 +1,54 @@ +//go:build client || all +// +build client all + +package cmd + +import ( + "fmt" + "net/http" + + "github.com/OpenCHAMI/configurator/internal/util" + "github.com/sirupsen/logrus" + "github.com/spf13/cobra" +) + +var ( + remoteHost string + remotePort int +) + +var fetchCmd = &cobra.Command{ + Use: "fetch", + Short: "Fetch a config file from a remote instance of configurator", + Run: func(cmd *cobra.Command, args []string) { + // make sure a host is set + if remoteHost == "" { + logrus.Errorf("no '--host' argument set") + return + } + for _, target := range targets { + + // make a request for each target + url := fmt.Sprintf("%s:%d/generate?target=%s", remoteHost, remotePort, target) + res, body, err := util.MakeRequest(url, http.MethodGet, nil, nil) + if err != nil { + logrus.Errorf("failed to make request: %v", err) + return + } + if res != nil { + if res.StatusCode == http.StatusOK { + fmt.Printf("%s\n", string(body)) + } + } + } + }, +} + +func init() { + fetchCmd.Flags().StringVar(&remoteHost, "host", "", "set the remote configurator host") + fetchCmd.Flags().IntVar(&remotePort, "port", 3334, "set the remote configurator port") + fetchCmd.Flags().StringSliceVar(&targets, "target", nil, "set the target configs to make") + fetchCmd.Flags().StringVarP(&outputPath, "output", "o", "", "set the output path for config targets") + + rootCmd.AddCommand(fetchCmd) +}