-
Notifications
You must be signed in to change notification settings - Fork 11
/
group.go
76 lines (62 loc) · 1.72 KB
/
group.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package az
import (
"context"
"strings"
"get.porter.sh/porter/pkg/exec/builder"
)
var (
_ TypedCommand = &GroupCommand{}
_ builder.HasErrorHandling = &GroupCommand{}
)
// GroupCommand ensures that a group exist or not
type GroupCommand struct {
action string
Description string `yaml:"description"`
Name string `yaml:"name"`
Location string `yaml:"location"`
}
func (c *GroupCommand) HandleError(ctx context.Context, err builder.ExitError, stdout string, stderr string) error {
switch c.action {
case "uninstall":
// It's okay if we try to delete the resource group and it's already gone
if strings.Contains(stderr, "ResourceGroupNotFound") {
return nil
}
default:
// NOTE: We are treating "already exists" as an okay state and reusing the existing group,
// but the user could have requested a different location.
// We may want a feature that recreates the group to get it into the correct location.
if strings.Contains(stderr, "Resource group already exists") {
return nil
}
}
return err
}
func (c *GroupCommand) GetWorkingDir() string {
return ""
}
func (c *GroupCommand) SetAction(action string) {
c.action = action
}
func (c *GroupCommand) GetCommand() string {
return "az"
}
func (c *GroupCommand) GetArguments() []string {
switch c.action {
case "uninstall":
return []string{"group", "delete", "--yes"}
default:
return []string{"group", "create"}
}
}
func (c *GroupCommand) GetFlags() builder.Flags {
var flags builder.Flags
flags = append(flags, builder.NewFlag("name", c.Name))
if c.action != "uninstall" {
flags = append(flags, builder.NewFlag("location", c.Location))
}
return flags
}
func (c *GroupCommand) SuppressesOutput() bool {
return false
}