This repository has been archived by the owner on Oct 27, 2022. It is now read-only.
/
expand_aws_spec.go
94 lines (81 loc) · 2.31 KB
/
expand_aws_spec.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package expand
import (
"encoding/json"
awsAlpha1 "github.com/gardener/gardener-extension-provider-aws/pkg/apis/aws/v1alpha1"
corev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
"github.com/hashicorp/terraform/helper/schema"
)
func AwsControlPlaneConfig() *corev1beta1.ProviderConfig {
awsConfig := `
apiVersion: aws.provider.extensions.gardener.cloud/v1alpha1
kind: ControlPlaneConfig`
obj := corev1beta1.ProviderConfig{}
obj.Raw = []byte(awsConfig)
return &obj
}
func awsConfig(aws []interface{}) *corev1beta1.ProviderConfig {
awsConfigObj := awsAlpha1.InfrastructureConfig{}
obj := corev1beta1.ProviderConfig{}
if len(aws) == 0 && aws[0] == nil {
return &obj
}
in := aws[0].(map[string]interface{})
awsConfigObj.APIVersion = "aws.provider.extensions.gardener.cloud/v1alpha1"
awsConfigObj.Kind = "InfrastructureConfig"
if v, ok := in["enableecraccess"].(bool); ok {
awsConfigObj.EnableECRAccess = &v
}
if v, ok := in["networks"].([]interface{}); ok && len(v) > 0 {
awsConfigObj.Networks = awsNetworks(v)
}
obj.Raw, _ = json.Marshal(awsConfigObj)
return &obj
}
func awsNetworks(networks []interface{}) awsAlpha1.Networks {
obj := awsAlpha1.Networks{}
if networks == nil {
return obj
}
in := networks[0].(map[string]interface{})
if v, ok := in["vpc"].([]interface{}); ok {
obj.VPC = vpc(v)
}
if v, ok := in["zones"].(*schema.Set); ok {
obj.Zones = expandAwsZones(v)
}
return obj
}
func expandAwsZones(set *schema.Set) []awsAlpha1.Zone {
result := make([]awsAlpha1.Zone, set.Len())
for i, k := range set.List() {
z := awsAlpha1.Zone{}
if v, ok := k.(map[string]interface{})["name"].(string); ok && len(v) > 0 {
z.Name = v
}
if v, ok := k.(map[string]interface{})["internal"].(string); ok && len(v) > 0 {
z.Internal = v
}
if v, ok := k.(map[string]interface{})["public"].(string); ok && len(v) > 0 {
z.Public = v
}
if v, ok := k.(map[string]interface{})["workers"].(string); ok && len(v) > 0 {
z.Workers = v
}
result[i] = z
}
return result
}
func vpc(vpc []interface{}) awsAlpha1.VPC {
obj := awsAlpha1.VPC{}
if len(vpc) == 0 && vpc[0] == nil {
return obj
}
in := vpc[0].(map[string]interface{})
if v, ok := in["id"].(string); ok && len(v) > 0 {
obj.ID = &v
}
if v, ok := in["cidr"].(string); ok && len(v) > 0 {
obj.CIDR = &v
}
return obj
}