mirror of
https://github.com/outbackdingo/matchbox.git
synced 2026-03-21 06:43:20 +00:00
58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
package cli
|
|
|
|
import (
|
|
"io/ioutil"
|
|
|
|
"github.com/spf13/cobra"
|
|
"golang.org/x/net/context"
|
|
|
|
pb "github.com/coreos/coreos-baremetal/bootcfg/server/serverpb"
|
|
"github.com/coreos/coreos-baremetal/bootcfg/storage/storagepb"
|
|
)
|
|
|
|
// groupPutCmd creates and updates Groups.
|
|
var (
|
|
groupPutCmd = &cobra.Command{
|
|
Use: "create --file FILENAME",
|
|
Short: "Create a machine group",
|
|
Long: `Create a machine group`,
|
|
Run: runGroupPutCmd,
|
|
}
|
|
)
|
|
|
|
func init() {
|
|
groupCmd.AddCommand(groupPutCmd)
|
|
groupPutCmd.Flags().StringVarP(&flagFilename, "filename", "f", "", "filename to use to create a Group")
|
|
groupPutCmd.MarkFlagRequired("filename")
|
|
groupPutCmd.MarkFlagFilename("filename", "json")
|
|
}
|
|
|
|
func runGroupPutCmd(cmd *cobra.Command, args []string) {
|
|
if len(flagFilename) == 0 {
|
|
cmd.Help()
|
|
return
|
|
}
|
|
if err := validateArgs(cmd, args); err != nil {
|
|
return
|
|
}
|
|
|
|
client := mustClientFromCmd(cmd)
|
|
group, err := loadGroup(flagFilename)
|
|
if err != nil {
|
|
exitWithError(ExitError, err)
|
|
}
|
|
req := &pb.GroupPutRequest{Group: group}
|
|
_, err = client.Groups.GroupPut(context.TODO(), req)
|
|
if err != nil {
|
|
exitWithError(ExitError, err)
|
|
}
|
|
}
|
|
|
|
func loadGroup(filename string) (*storagepb.Group, error) {
|
|
data, err := ioutil.ReadFile(filename)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return storagepb.ParseGroup(data)
|
|
}
|