This repository has been archived by the owner on Jan 14, 2020. It is now read-only.
/
RDS-DBInstance.go
137 lines (122 loc) · 5.28 KB
/
RDS-DBInstance.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package resources
// Code generated by go generate; DO NOT EDIT.
// It's generated by "github.com/KablamoOSS/kombustion/generate"
import (
"fmt"
"github.com/KablamoOSS/kombustion/types"
yaml "github.com/KablamoOSS/yaml"
)
// RDSDBInstance Documentation: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-rds-database-instance.html
type RDSDBInstance struct {
Type string `yaml:"Type"`
Properties RDSDBInstanceProperties `yaml:"Properties"`
Condition interface{} `yaml:"Condition,omitempty"`
Metadata interface{} `yaml:"Metadata,omitempty"`
DependsOn interface{} `yaml:"DependsOn,omitempty"`
}
// RDSDBInstance Properties
type RDSDBInstanceProperties struct {
AllocatedStorage interface{} `yaml:"AllocatedStorage,omitempty"`
AllowMajorVersionUpgrade interface{} `yaml:"AllowMajorVersionUpgrade,omitempty"`
AutoMinorVersionUpgrade interface{} `yaml:"AutoMinorVersionUpgrade,omitempty"`
AvailabilityZone interface{} `yaml:"AvailabilityZone,omitempty"`
BackupRetentionPeriod interface{} `yaml:"BackupRetentionPeriod,omitempty"`
CharacterSetName interface{} `yaml:"CharacterSetName,omitempty"`
CopyTagsToSnapshot interface{} `yaml:"CopyTagsToSnapshot,omitempty"`
DBClusterIdentifier interface{} `yaml:"DBClusterIdentifier,omitempty"`
DBInstanceClass interface{} `yaml:"DBInstanceClass"`
DBInstanceIdentifier interface{} `yaml:"DBInstanceIdentifier,omitempty"`
DBName interface{} `yaml:"DBName,omitempty"`
DBParameterGroupName interface{} `yaml:"DBParameterGroupName,omitempty"`
DBSnapshotIdentifier interface{} `yaml:"DBSnapshotIdentifier,omitempty"`
DBSubnetGroupName interface{} `yaml:"DBSubnetGroupName,omitempty"`
Domain interface{} `yaml:"Domain,omitempty"`
DomainIAMRoleName interface{} `yaml:"DomainIAMRoleName,omitempty"`
Engine interface{} `yaml:"Engine,omitempty"`
EngineVersion interface{} `yaml:"EngineVersion,omitempty"`
Iops interface{} `yaml:"Iops,omitempty"`
KmsKeyId interface{} `yaml:"KmsKeyId,omitempty"`
LicenseModel interface{} `yaml:"LicenseModel,omitempty"`
MasterUserPassword interface{} `yaml:"MasterUserPassword,omitempty"`
MasterUsername interface{} `yaml:"MasterUsername,omitempty"`
MonitoringInterval interface{} `yaml:"MonitoringInterval,omitempty"`
MonitoringRoleArn interface{} `yaml:"MonitoringRoleArn,omitempty"`
MultiAZ interface{} `yaml:"MultiAZ,omitempty"`
OptionGroupName interface{} `yaml:"OptionGroupName,omitempty"`
Port interface{} `yaml:"Port,omitempty"`
PreferredBackupWindow interface{} `yaml:"PreferredBackupWindow,omitempty"`
PreferredMaintenanceWindow interface{} `yaml:"PreferredMaintenanceWindow,omitempty"`
PubliclyAccessible interface{} `yaml:"PubliclyAccessible,omitempty"`
SourceDBInstanceIdentifier interface{} `yaml:"SourceDBInstanceIdentifier,omitempty"`
SourceRegion interface{} `yaml:"SourceRegion,omitempty"`
StorageEncrypted interface{} `yaml:"StorageEncrypted,omitempty"`
StorageType interface{} `yaml:"StorageType,omitempty"`
Timezone interface{} `yaml:"Timezone,omitempty"`
DBSecurityGroups interface{} `yaml:"DBSecurityGroups,omitempty"`
Tags interface{} `yaml:"Tags,omitempty"`
VPCSecurityGroups interface{} `yaml:"VPCSecurityGroups,omitempty"`
}
// NewRDSDBInstance constructor creates a new RDSDBInstance
func NewRDSDBInstance(properties RDSDBInstanceProperties, deps ...interface{}) RDSDBInstance {
return RDSDBInstance{
Type: "AWS::RDS::DBInstance",
Properties: properties,
DependsOn: deps,
}
}
// ParseRDSDBInstance parses RDSDBInstance
func ParseRDSDBInstance(
name string,
data string,
) (
source string,
conditions types.TemplateObject,
metadata types.TemplateObject,
mappings types.TemplateObject,
outputs types.TemplateObject,
parameters types.TemplateObject,
resources types.TemplateObject,
transform types.TemplateObject,
errors []error,
) {
source = "kombustion-core-resources"
// Resources
var resource RDSDBInstance
err := yaml.Unmarshal([]byte(data), &resource)
if err != nil {
errors = append(errors, err)
return
}
if validateErrs := resource.Properties.Validate(); len(errors) > 0 {
errors = append(errors, validateErrs...)
return
}
resources = types.TemplateObject{name: resource}
// Outputs
outputs = types.TemplateObject{
name: types.TemplateObject{
"Description": name + " Object",
"Value": map[string]interface{}{
"Ref": name,
},
"Export": map[string]interface{}{
"Name": map[string]interface{}{
"Fn::Sub": "${AWS::StackName}-RDSDBInstance-" + name,
},
},
},
}
return
}
// ParseRDSDBInstance validator
func (resource RDSDBInstance) Validate() []error {
return resource.Properties.Validate()
}
// ParseRDSDBInstanceProperties validator
func (resource RDSDBInstanceProperties) Validate() []error {
errors := []error{}
if resource.DBInstanceClass == nil {
errors = append(errors, fmt.Errorf("Missing required field 'DBInstanceClass'"))
}
return errors
}