1package command
2
3import (
4	"fmt"
5	"strings"
6
7	"github.com/posener/complete"
8)
9
10type NamespaceDeleteCommand struct {
11	Meta
12}
13
14func (c *NamespaceDeleteCommand) Help() string {
15	helpText := `
16Usage: nomad namespace delete [options] <namespace>
17
18  Delete is used to remove a namespace.
19
20General Options:
21
22  ` + generalOptionsUsage()
23
24	return strings.TrimSpace(helpText)
25}
26
27func (c *NamespaceDeleteCommand) AutocompleteFlags() complete.Flags {
28	return c.Meta.AutocompleteFlags(FlagSetClient)
29}
30
31func (c *NamespaceDeleteCommand) AutocompleteArgs() complete.Predictor {
32	filter := map[string]struct{}{"default": {}}
33	return NamespacePredictor(c.Meta.Client, filter)
34}
35
36func (c *NamespaceDeleteCommand) Synopsis() string {
37	return "Delete a namespace"
38}
39
40func (c *NamespaceDeleteCommand) Name() string { return "namespace delete" }
41
42func (c *NamespaceDeleteCommand) Run(args []string) int {
43	flags := c.Meta.FlagSet(c.Name(), FlagSetClient)
44	flags.Usage = func() { c.Ui.Output(c.Help()) }
45
46	if err := flags.Parse(args); err != nil {
47		return 1
48	}
49
50	// Check that we got one argument
51	args = flags.Args()
52	if l := len(args); l != 1 {
53		c.Ui.Error("This command takes one argument: <namespace>")
54		c.Ui.Error(commandErrorText(c))
55		return 1
56	}
57
58	namespace := args[0]
59
60	// Get the HTTP client
61	client, err := c.Meta.Client()
62	if err != nil {
63		c.Ui.Error(fmt.Sprintf("Error initializing client: %s", err))
64		return 1
65	}
66
67	_, err = client.Namespaces().Delete(namespace, nil)
68	if err != nil {
69		c.Ui.Error(fmt.Sprintf("Error deleting namespace: %s", err))
70		return 1
71	}
72
73	c.Ui.Output(fmt.Sprintf("Successfully deleted namespace %q!", namespace))
74	return 0
75}
76