Skip to content

Commit 2b46b50

Browse files
authored
Add hidden command to destroy runners (#691)
* Add hidden command to destroy runners * Add missing `sudo` to install commands * Use `cmd.Context()`
1 parent c2f4837 commit 2b46b50

10 files changed

+117
-47
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package destroyrunner
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
7+
"github.com/mitchellh/go-testing-interface"
8+
"github.com/spf13/cobra"
9+
10+
"terraform-provider-iterative/iterative/aws"
11+
"terraform-provider-iterative/iterative/azure"
12+
"terraform-provider-iterative/iterative/gcp"
13+
"terraform-provider-iterative/iterative/kubernetes"
14+
15+
"terraform-provider-iterative/task/common"
16+
)
17+
18+
type Options struct {
19+
Name string
20+
}
21+
22+
func New(cloud *common.Cloud) *cobra.Command {
23+
o := Options{}
24+
25+
cmd := &cobra.Command{
26+
Use: "destroy-runner <identifier>",
27+
Short: "Destroy a CML runner",
28+
Long: ``,
29+
Hidden: true,
30+
Args: cobra.ExactArgs(1),
31+
RunE: func(cmd *cobra.Command, args []string) error {
32+
return o.Run(cmd, args, cloud)
33+
},
34+
}
35+
36+
cmd.Flags().StringVar(&o.Name, "name", "", "needed for Google Cloud runners") // FIXME: it shouldn't
37+
38+
return cmd
39+
}
40+
41+
func (o *Options) Run(cmd *cobra.Command, args []string, cloud *common.Cloud) error {
42+
r := map[string]interface{}{
43+
"region": string(cloud.Region),
44+
"name": o.Name,
45+
}
46+
s := map[string]*schema.Schema{
47+
"region": {Type: schema.TypeString},
48+
"name": {Type: schema.TypeString},
49+
}
50+
51+
d := schema.TestResourceDataRaw(&testing.RuntimeT{}, s, r)
52+
d.SetId(args[0])
53+
54+
switch cloud.Provider {
55+
case common.ProviderAWS:
56+
return aws.ResourceMachineDelete(cmd.Context(), d, nil)
57+
case common.ProviderGCP:
58+
return gcp.ResourceMachineDelete(cmd.Context(), d, nil)
59+
case common.ProviderAZ:
60+
return azure.ResourceMachineDelete(cmd.Context(), d, nil)
61+
case common.ProviderK8S:
62+
return kubernetes.ResourceMachineDelete(cmd.Context(), d, nil)
63+
}
64+
65+
return fmt.Errorf("unknown provider: %#v", cloud.Provider)
66+
}

cmd/leo/root.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313

1414
"terraform-provider-iterative/cmd/leo/create"
1515
"terraform-provider-iterative/cmd/leo/delete"
16+
"terraform-provider-iterative/cmd/leo/destroyrunner"
1617
"terraform-provider-iterative/cmd/leo/list"
1718
"terraform-provider-iterative/cmd/leo/read"
1819
"terraform-provider-iterative/cmd/leo/stop"
@@ -50,6 +51,7 @@ func NewCmd() *cobra.Command {
5051
cmd.AddCommand(list.New(&o.Cloud))
5152
cmd.AddCommand(read.New(&o.Cloud))
5253
cmd.AddCommand(stop.New(&o.Cloud))
54+
cmd.AddCommand(destroyrunner.New(&o.Cloud))
5355

5456
cmd.PersistentFlags().StringVar(&o.Provider, "cloud", "", "cloud provider")
5557
cmd.PersistentFlags().BoolVar(&o.Verbose, "verbose", false, "verbose output")

go.mod

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.19
44

55
require (
66
github.com/Azure/azure-sdk-for-go v58.1.0+incompatible
7-
github.com/Azure/go-autorest/autorest v0.11.18
7+
github.com/Azure/go-autorest/autorest v0.11.20
88
github.com/Azure/go-autorest/autorest/azure/auth v0.5.8
99
github.com/Azure/go-autorest/autorest/to v0.4.0
1010
github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d
@@ -27,6 +27,7 @@ require (
2727
github.com/google/go-github/v45 v45.2.0
2828
github.com/google/uuid v1.3.0
2929
github.com/hashicorp/terraform-plugin-sdk/v2 v2.8.0
30+
github.com/mitchellh/go-testing-interface v1.14.1
3031
github.com/rclone/rclone v1.57.0
3132
github.com/sebdah/goldie/v2 v2.5.3
3233
github.com/shirou/gopsutil v3.21.11+incompatible
@@ -68,8 +69,7 @@ require (
6869
github.com/StackExchange/wmi v1.2.1 // indirect
6970
github.com/aalpar/deheap v0.0.0-20200318053559-9a0c2883bd56 // indirect
7071
github.com/abbot/go-http-auth v0.4.0 // indirect
71-
github.com/agext/levenshtein v1.2.2 // indirect
72-
github.com/apparentlymart/go-textseg/v12 v12.0.0 // indirect
72+
github.com/agext/levenshtein v1.2.3 // indirect
7373
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
7474
github.com/aws/aws-sdk-go v1.44.102 // indirect
7575
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.0.0 // indirect
@@ -89,14 +89,15 @@ require (
8989
github.com/coreos/go-semver v0.3.0 // indirect
9090
github.com/davecgh/go-spew v1.1.1 // indirect
9191
github.com/dimchansky/utfbom v1.1.1 // indirect
92+
github.com/elazarl/goproxy v0.0.0-20190911111923-ecfe977594f1 // indirect
9293
github.com/evanphx/json-patch v4.11.0+incompatible // indirect
9394
github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect
9495
github.com/fatih/camelcase v1.0.0 // indirect
9596
github.com/fatih/color v1.13.0 // indirect
9697
github.com/form3tech-oss/jwt-go v3.2.5+incompatible // indirect
9798
github.com/fsnotify/fsnotify v1.5.1 // indirect
9899
github.com/fvbommel/sortorder v1.0.1 // indirect
99-
github.com/go-errors/errors v1.0.1 // indirect
100+
github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 // indirect
100101
github.com/go-logr/logr v0.4.0 // indirect
101102
github.com/go-ole/go-ole v1.2.6 // indirect
102103
github.com/go-openapi/jsonpointer v0.19.5 // indirect
@@ -105,7 +106,6 @@ require (
105106
github.com/gogo/protobuf v1.3.2 // indirect
106107
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
107108
github.com/golang/protobuf v1.5.2 // indirect
108-
github.com/golang/snappy v0.0.4 // indirect
109109
github.com/google/btree v1.0.1 // indirect
110110
github.com/google/go-cmp v0.5.9 // indirect
111111
github.com/google/go-querystring v1.1.0 // indirect
@@ -121,16 +121,16 @@ require (
121121
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect
122122
github.com/hashicorp/go-getter v1.6.2 // indirect
123123
github.com/hashicorp/go-hclog v1.2.0 // indirect
124-
github.com/hashicorp/go-multierror v1.0.0 // indirect
124+
github.com/hashicorp/go-multierror v1.1.0 // indirect
125125
github.com/hashicorp/go-plugin v1.4.1 // indirect
126126
github.com/hashicorp/go-safetemp v1.0.0 // indirect
127127
github.com/hashicorp/go-uuid v1.0.2 // indirect
128128
github.com/hashicorp/go-version v1.6.0 // indirect
129129
github.com/hashicorp/hcl v1.0.0 // indirect
130-
github.com/hashicorp/hcl/v2 v2.8.0 // indirect
130+
github.com/hashicorp/hcl/v2 v2.9.1 // indirect
131131
github.com/hashicorp/logutils v1.0.0 // indirect
132132
github.com/hashicorp/terraform-exec v0.14.0 // indirect
133-
github.com/hashicorp/terraform-json v0.12.0 // indirect
133+
github.com/hashicorp/terraform-json v0.13.0 // indirect
134134
github.com/hashicorp/terraform-plugin-go v0.4.0 // indirect
135135
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d // indirect
136136
github.com/imdario/mergo v0.3.12 // indirect
@@ -150,8 +150,7 @@ require (
150150
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
151151
github.com/mitchellh/copystructure v1.2.0 // indirect
152152
github.com/mitchellh/go-homedir v1.1.0 // indirect
153-
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
154-
github.com/mitchellh/go-wordwrap v1.0.0 // indirect
153+
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
155154
github.com/mitchellh/mapstructure v1.4.3 // indirect
156155
github.com/mitchellh/reflectwalk v1.0.2 // indirect
157156
github.com/moby/spdystream v0.2.0 // indirect
@@ -185,7 +184,7 @@ require (
185184
github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
186185
github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca // indirect
187186
github.com/yusufpapurcu/wmi v1.2.2 // indirect
188-
github.com/zclconf/go-cty v1.8.4 // indirect
187+
github.com/zclconf/go-cty v1.9.1 // indirect
189188
go.opencensus.io v0.23.0 // indirect
190189
go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect
191190
golang.org/x/net v0.0.0-20220920203100-d0c6ba3f52d9 // indirect

0 commit comments

Comments
 (0)