forked from cloudfoundry/bosh-bootloader
/
cleanup_leftovers.go
65 lines (52 loc) · 1.41 KB
/
cleanup_leftovers.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
package commands
import (
"errors"
"fmt"
"github.com/cloudfoundry/bosh-bootloader/flags"
"github.com/cloudfoundry/bosh-bootloader/storage"
)
type FilteredDeleter interface {
Delete(filter string) error
List(filter string)
}
type CleanupLeftovers struct {
deleter FilteredDeleter
}
func NewCleanupLeftovers(deleter FilteredDeleter) CleanupLeftovers {
return CleanupLeftovers{
deleter: deleter,
}
}
func (l CleanupLeftovers) CheckFastFails(subcommandFlags []string, state storage.State) error {
return nil
}
func (l CleanupLeftovers) Execute(subcommandFlags []string, state storage.State) error {
var (
filter string
dryRun bool
)
f := flags.New("cleanup-leftovers")
f.String(&filter, "filter", "")
f.Bool(&dryRun, "dry-run")
err := f.Parse(subcommandFlags)
if err != nil {
return fmt.Errorf("Parsing cleanup-leftovers args: %s", err)
}
if state.IAAS == "vsphere" && filter == "" {
// vSphere requires a filter
return errors.New("cleanup-leftovers on vSphere requires a filter.\nProvide a filter using the --filter or -f flag.")
}
if state.IAAS == "openstack" {
// we don't create network infrastructure on openstack
// and we don't tear it down either
return nil
}
if dryRun {
l.deleter.List(filter)
return nil
}
return l.deleter.Delete(filter)
}
func (l CleanupLeftovers) Usage() string {
return fmt.Sprintf("%s%s%s", CleanupLeftoversCommandUsage, requiresCredentials, Credentials)
}