forked from cloudfoundry/bosh-bootloader
/
ops_generator.go
36 lines (31 loc) · 980 Bytes
/
ops_generator.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
package cloudconfig
import (
"errors"
"github.com/cloudfoundry/bosh-bootloader/storage"
)
type OpsGenerator struct {
awsCloudFormationOpsGenerator opsGenerator
awsTerraformOpsGenerator opsGenerator
gcpOpsGenerator opsGenerator
}
func NewOpsGenerator(awsCloudFormationOpsGenerator opsGenerator, awsTerraformOpsGenerator opsGenerator, gcpOpsGenerator opsGenerator) OpsGenerator {
return OpsGenerator{
awsCloudFormationOpsGenerator: awsCloudFormationOpsGenerator,
awsTerraformOpsGenerator: awsTerraformOpsGenerator,
gcpOpsGenerator: gcpOpsGenerator,
}
}
func (o OpsGenerator) Generate(state storage.State) (string, error) {
switch state.IAAS {
case "gcp":
return o.gcpOpsGenerator.Generate(state)
case "aws":
if state.TFState != "" {
return o.awsTerraformOpsGenerator.Generate(state)
} else {
return o.awsCloudFormationOpsGenerator.Generate(state)
}
default:
return "", errors.New("invalid iaas type")
}
}