Add add/remove/set hosts functions to host-sets command (#316)

This commit is contained in:
Jeff Mitchell authored and GitHub committed 2020-08-31 10:06:21 -04:00
1 parent 09112d1e96
commit a4c20164f3
2 files changed
+114 -2

No files matched your search

+18
View File
@@ -310,6 +310,24 @@ func initCommands(ui, serverCmdUi cli.Ui, runOpts *RunOptions) {
Func: "update",
}, nil
},
"host-sets add-hosts": func() (cli.Command, error) {
return &hostsets.Command{
Command: base.NewCommand(ui),
Func: "add-hosts",
}, nil
},
"host-sets remove-hosts": func() (cli.Command, error) {
return &hostsets.Command{
Command: base.NewCommand(ui),
Func: "remove-hosts",
}, nil
},
"host-sets set-hosts": func() (cli.Command, error) {
return &hostsets.Command{
Command: base.NewCommand(ui),
Func: "set-hosts",
}, nil
},
"hosts create": func() (cli.Command, error) {
return &hosts.CreateCommand{
+96 -2
View File
@@ -23,6 +23,7 @@ type Command struct {
Func string
flagHostCatalogId string
flagHosts []string
}
func (c *Command) Synopsis() string {
@@ -31,14 +32,23 @@ func (c *Command) Synopsis() string {
return "Create host-set resources within Boundary"
case "update":
return "Update host-set resources within Boundary"
case "add-hosts":
return "Add hosts to the specified host-set"
case "remove-hosts":
return "Remove hosts from the specified host-set"
case "set-hosts":
return "Set the full contents of the hosts on the specified host-set"
default:
return common.SynopsisFunc(c.Func, "host-set")
}
}
var flagsMap = map[string][]string{
"read": {"id"},
"delete": {"id"},
"read": {"id"},
"delete": {"id"},
"add-hosts": {"id", "host", "version"},
"set-hosts": {"id", "host", "version"},
"remove-hosts": {"id", "host", "version"},
}
func (c *Command) Help() string {
@@ -80,6 +90,36 @@ func (c *Command) Help() string {
"",
" Please see the typed subcommand help for detailed usage information.",
})
case "add-hosts":
return base.WrapForHelpText([]string{
"Usage: boundary host-sets add-hosts [sub command] [options] [args]",
"",
" This command allows adding hosts to host-set resources, if the types match and the operation is allowed by the given host-set type. Example:",
"",
" Add static-type hosts to a static-type host-set:",
"",
` $ boundary host-sets add-hosts -id hsst_1234567890 -host hst_1234567890 -host hst_0987654321`,
})
case "remove-hosts":
return base.WrapForHelpText([]string{
"Usage: boundary host-sets remove-hosts [sub command] [options] [args]",
"",
" This command allows removing hosts from host-set resources, if the types match and the operation is allowed by the given host-set type. Example:",
"",
" Remove static-type hosts from a static-type host-set:",
"",
` $ boundary host-sets remove-hosts -id hsst_1234567890 -host hst_0987654321`,
})
case "set-hosts":
return base.WrapForHelpText([]string{
"Usage: boundary host-sets set-hosts [sub command] [options] [args]",
"",
" This command allows setting the complete set of hosts on host-set resources, if the types match and the operation is allowed by the given host-set type. Example:",
"",
" Set the complete set of static-type hosts on a static-type host-set:",
"",
` $ boundary host-sets remove-hosts -id hsst_1234567890 -host hst_1234567890`,
})
default:
return helpMap[c.Func]() + c.Flags().Help()
}
@@ -100,6 +140,17 @@ func (c *Command) Flags() *base.FlagSets {
Usage: "The host-catalog resource in which to create or update the host-set resource",
})
for _, name := range flagsMap[c.Func] {
switch name {
case "host":
f.StringSliceVar(&base.StringSliceVar{
Name: "host",
Target: &c.flagHosts,
Usage: "The hosts to add, remove, or set. May be specified multiple times.",
})
}
}
return set
}
@@ -153,6 +204,43 @@ func (c *Command) Run(args []string) int {
opts = append(opts, hostsets.WithDescription(c.FlagDescription))
}
hosts := c.flagHosts
switch c.Func {
case "add-hosts", "remove-hosts":
if len(c.flagHosts) == 0 {
c.UI.Error("No hosts supplied via -host")
return 1
}
case "set-hosts":
switch len(c.flagHosts) {
case 0:
case 1:
if c.flagHosts[0] == "null" {
hosts = []string{}
}
}
if hosts == nil {
c.UI.Error("No hosts supplied via -host")
return 1
}
}
// Perform check-and-set when needed
var version uint32
switch c.Func {
case "add-hosts", "remove-hosts", "set-hosts":
switch c.FlagVersion {
case 0:
opts = append(opts, hostsets.WithAutomaticVersioning())
default:
version = uint32(c.FlagVersion)
}
default:
// The only other one that needs it is update, handled by the static
// file
}
hostsetClient := hostsets.NewClient(client)
var existed bool
@@ -167,6 +255,12 @@ func (c *Command) Run(args []string) int {
existed, apiErr, err = hostsetClient.Delete(c.Context, c.flagHostCatalogId, c.FlagId, opts...)
case "list":
listedSets, apiErr, err = hostsetClient.List(c.Context, c.flagHostCatalogId, opts...)
case "add-hosts":
set, apiErr, err = hostsetClient.AddHosts(c.Context, c.flagHostCatalogId, c.FlagId, version, c.flagHosts, opts...)
case "remove-hosts":
set, apiErr, err = hostsetClient.RemoveHosts(c.Context, c.flagHostCatalogId, c.FlagId, version, c.flagHosts, opts...)
case "set-hosts":
set, apiErr, err = hostsetClient.SetHosts(c.Context, c.flagHostCatalogId, c.FlagId, version, c.flagHosts, opts...)
}
plural := "host set"