forked from cloudfoundry/bosh-bootloader
/
gcp_delete_lbs.go
67 lines (59 loc) · 1.45 KB
/
gcp_delete_lbs.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
package commands
import (
"github.com/cloudfoundry/bosh-bootloader/helpers"
"github.com/cloudfoundry/bosh-bootloader/storage"
"github.com/cloudfoundry/bosh-bootloader/terraform"
)
type GCPDeleteLBs struct {
cloudConfigManager cloudConfigManager
stateStore stateStore
terraformManager terraformManager
}
func NewGCPDeleteLBs(stateStore stateStore,
terraformManager terraformManager, cloudConfigManager cloudConfigManager) GCPDeleteLBs {
return GCPDeleteLBs{
stateStore: stateStore,
terraformManager: terraformManager,
cloudConfigManager: cloudConfigManager,
}
}
func (g GCPDeleteLBs) Execute(state storage.State) error {
err := g.terraformManager.ValidateVersion()
if err != nil {
return err
}
state.LB.Type = ""
if !state.NoDirector {
err = g.cloudConfigManager.Update(state)
if err != nil {
return err
}
}
state, err = g.terraformManager.Apply(state)
switch err.(type) {
case terraform.ManagerError:
taErr := err.(terraform.ManagerError)
var bblStateErr error
state, bblStateErr = taErr.BBLState()
if bblStateErr != nil {
errorList := helpers.Errors{}
errorList.Add(err)
errorList.Add(bblStateErr)
return errorList
}
if setErr := g.stateStore.Set(state); setErr != nil {
errorList := helpers.Errors{}
errorList.Add(err)
errorList.Add(setErr)
return errorList
}
return err
case error:
return err
}
err = g.stateStore.Set(state)
if err != nil {
return err
}
return nil
}