Skip to content

Commit 7e2a9a7

Browse files
author
Genevieve LEsperance
committed
Delete a single type of resource for gcp.
1 parent 381d174 commit 7e2a9a7

File tree

1 file changed

+89
-69
lines changed

1 file changed

+89
-69
lines changed

gcp/leftovers.go

Lines changed: 89 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -36,75 +36,6 @@ type Leftovers struct {
3636
resources []resource
3737
}
3838

39-
func (l Leftovers) List(filter string) {
40-
l.logger.NoConfirm()
41-
42-
var deletables []common.Deletable
43-
44-
for _, r := range l.resources {
45-
list, err := r.List(filter)
46-
if err != nil {
47-
l.logger.Println(color.YellowString(err.Error()))
48-
}
49-
50-
deletables = append(deletables, list...)
51-
}
52-
53-
for _, d := range deletables {
54-
l.logger.Println(fmt.Sprintf("[%s: %s]", d.Type(), d.Name()))
55-
}
56-
}
57-
58-
// Types will print all of the resource types that can be deleted.
59-
func (l Leftovers) Types() {
60-
l.logger.NoConfirm()
61-
62-
for _, r := range l.resources {
63-
l.logger.Println(r.Type())
64-
}
65-
}
66-
67-
func (l Leftovers) Delete(filter string) error {
68-
deletables := [][]common.Deletable{}
69-
70-
for _, r := range l.resources {
71-
list, err := r.List(filter)
72-
if err != nil {
73-
l.logger.Println(color.YellowString(err.Error()))
74-
}
75-
76-
deletables = append(deletables, list)
77-
}
78-
79-
var wg sync.WaitGroup
80-
81-
for _, list := range deletables {
82-
for _, d := range list {
83-
wg.Add(1)
84-
85-
go func(d common.Deletable) {
86-
defer wg.Done()
87-
88-
l.logger.Println(fmt.Sprintf("[%s: %s] Deleting...", d.Type(), d.Name()))
89-
90-
if err := d.Delete(); err != nil {
91-
l.logger.Println(fmt.Sprintf("[%s: %s] %s", d.Type(), d.Name(), color.YellowString(err.Error())))
92-
} else {
93-
l.logger.Println(fmt.Sprintf("[%s: %s] %s", d.Type(), d.Name(), color.GreenString("Deleted!")))
94-
}
95-
}(d)
96-
}
97-
98-
wg.Wait()
99-
}
100-
101-
return nil
102-
}
103-
104-
func (l Leftovers) DeleteType(filter, rType string) error {
105-
return l.Delete(filter)
106-
}
107-
10839
func NewLeftovers(logger logger, keyPath string) (Leftovers, error) {
10940
if keyPath == "" {
11041
return Leftovers{}, errors.New("Missing service account key path.")
@@ -210,3 +141,92 @@ func NewLeftovers(logger logger, keyPath string) (Leftovers, error) {
210141
},
211142
}, nil
212143
}
144+
145+
// List will print all of the resources that match the provided filter.
146+
func (l Leftovers) List(filter string) {
147+
l.logger.NoConfirm()
148+
149+
var deletables []common.Deletable
150+
151+
for _, r := range l.resources {
152+
list, err := r.List(filter)
153+
if err != nil {
154+
l.logger.Println(color.YellowString(err.Error()))
155+
}
156+
157+
deletables = append(deletables, list...)
158+
}
159+
160+
for _, d := range deletables {
161+
l.logger.Println(fmt.Sprintf("[%s: %s]", d.Type(), d.Name()))
162+
}
163+
}
164+
165+
// Types will print all of the resource types that can be deleted.
166+
func (l Leftovers) Types() {
167+
l.logger.NoConfirm()
168+
169+
for _, r := range l.resources {
170+
l.logger.Println(r.Type())
171+
}
172+
}
173+
174+
func (l Leftovers) Delete(filter string) error {
175+
deletables := [][]common.Deletable{}
176+
177+
for _, r := range l.resources {
178+
list, err := r.List(filter)
179+
if err != nil {
180+
l.logger.Println(color.YellowString(err.Error()))
181+
}
182+
183+
deletables = append(deletables, list)
184+
}
185+
186+
l.asyncDelete(deletables)
187+
188+
return nil
189+
}
190+
191+
func (l Leftovers) DeleteType(filter, rType string) error {
192+
deletables := [][]common.Deletable{}
193+
194+
for _, r := range l.resources {
195+
if r.Type() == rType {
196+
list, err := r.List(filter)
197+
if err != nil {
198+
l.logger.Println(color.YellowString(err.Error()))
199+
}
200+
201+
deletables = append(deletables, list)
202+
}
203+
}
204+
205+
l.asyncDelete(deletables)
206+
207+
return nil
208+
}
209+
210+
func (l Leftovers) asyncDelete(deletables [][]common.Deletable) {
211+
var wg sync.WaitGroup
212+
213+
for _, list := range deletables {
214+
for _, d := range list {
215+
wg.Add(1)
216+
217+
go func(d common.Deletable) {
218+
defer wg.Done()
219+
220+
l.logger.Println(fmt.Sprintf("[%s: %s] Deleting...", d.Type(), d.Name()))
221+
222+
if err := d.Delete(); err != nil {
223+
l.logger.Println(fmt.Sprintf("[%s: %s] %s", d.Type(), d.Name(), color.YellowString(err.Error())))
224+
} else {
225+
l.logger.Println(fmt.Sprintf("[%s: %s] %s", d.Type(), d.Name(), color.GreenString("Deleted!")))
226+
}
227+
}(d)
228+
}
229+
230+
wg.Wait()
231+
}
232+
}

0 commit comments

Comments
 (0)