@@ -19,6 +19,21 @@ import (
1919func init () {
2020 clusterCmd .PersistentFlags ().String ("server" , "http://localhost:8077" , "The DB factory server whose API will be queried." )
2121
22+ clusterDeleteCmd .Flags ().String ("vpc-id" , "" , "The VPC id to provision a RDS Aurora Cluster" )
23+ clusterDeleteCmd .Flags ().String ("cluster-id" , "" , "A random 8 character identifier of the Aurora cluster" )
24+ clusterDeleteCmd .Flags ().String ("environment" , "dev" , "The environment used for the deployment. Can be dev, test, staging or prod" )
25+ clusterDeleteCmd .Flags ().String ("state-store" , "terraform-database-factory-state-bucket-dev" , "The s3 bucket to store the terraform state" )
26+ clusterDeleteCmd .Flags ().Bool ("apply" , false , "If disabled, only a Terraform plan will run instead of Terraform apply" )
27+ clusterDeleteCmd .Flags ().String ("instance-type" , "db.r5.large" , "The instance type used for Aurora cluster replicas" )
28+ clusterDeleteCmd .Flags ().String ("backup-retention-period" , "15" , "The retention period for the DB instance backups" )
29+ clusterDeleteCmd .Flags ().String ("db-engine" , "postgres" , "The database engine. Can be mysql or postgres" )
30+ clusterDeleteCmd .Flags ().String ("replicas" , "3" , "The total number of write/read replicas." )
31+ clusterDeleteCmd .Flags ().Bool ("dbproxy" , true , "If enabled the multitenant DB cluster will be used with a DB proxy." )
32+ clusterDeleteCmd .Flags ().String ("creation-snapshot-arn" , "" , "The ARN of the snapshot to use for the DB cluster (default \" \" )" )
33+ clusterDeleteCmd .Flags ().Bool ("devops-guru" , false , "Enable the AWS service Devops Guru to all database instances within a cluster." )
34+ clusterDeleteCmd .Flags ().Bool ("allow-major-version-upgrade" , false , "Enable to allow major engine version upgrades when changing engine versions." )
35+ clusterDeleteCmd .Flags ().String ("kms-key-id" , "" , "The ARN key to encrypt the storage and performance insights" )
36+
2237 clusterProvisionCmd .Flags ().String ("vpc-id" , "" , "The VPC id to provision a RDS Aurora Cluster" )
2338 clusterProvisionCmd .Flags ().String ("cluster-id" , "" , "A random 8 character identifier of the Aurora cluster" )
2439 clusterProvisionCmd .Flags ().String ("environment" , "dev" , "The environment used for the deployment. Can be dev, test, staging or prod" )
@@ -33,8 +48,10 @@ func init() {
3348 clusterProvisionCmd .Flags ().Bool ("devops-guru" , false , "Enable the AWS service Devops Guru to all database instances within a cluster." )
3449 clusterProvisionCmd .Flags ().Bool ("allow-major-version-upgrade" , false , "Enable to allow major engine version upgrades when changing engine versions." )
3550 clusterProvisionCmd .Flags ().String ("kms-key-id" , "" , "The ARN key to encrypt the storage and performance insights" )
51+ clusterProvisionCmd .Flags ().Bool ("deletion-protection" , true , "Disable to allow cluster deletion." )
3652
3753 clusterCmd .AddCommand (clusterProvisionCmd )
54+ clusterCmd .AddCommand (clusterDeleteCmd )
3855
3956 sess , err := session .NewSession ()
4057 if err != nil {
@@ -71,6 +88,7 @@ var clusterProvisionCmd = &cobra.Command{
7188 enableDevopsGuru , _ := command .Flags ().GetBool ("devops-guru" )
7289 allowMajorVersionUpgrade , _ := command .Flags ().GetBool ("allow-major-version-upgrade" )
7390 kmsKeyID , _ := command .Flags ().GetString ("kms-key-id" )
91+ deletionProtection , _ := command .Flags ().GetBool ("deletion-protection" )
7492
7593 cluster , err := client .ProvisionCluster (& model.ProvisionClusterRequest {
7694 VPCID : vpcID ,
@@ -87,6 +105,7 @@ var clusterProvisionCmd = &cobra.Command{
87105 EnableDevopsGuru : enableDevopsGuru ,
88106 AllowMajorVersionUpgrade : allowMajorVersionUpgrade ,
89107 KMSKeyID : kmsKeyID ,
108+ DeletionProtection : deletionProtection ,
90109 })
91110 if err != nil {
92111 return errors .Wrap (err , "failed to provision RDS cluster" )
@@ -100,6 +119,57 @@ var clusterProvisionCmd = &cobra.Command{
100119 },
101120}
102121
122+ var clusterDeleteCmd = & cobra.Command {
123+ Use : "delete" ,
124+ Short : "Delete a RDS Aurora cluster." ,
125+ RunE : func (command * cobra.Command , args []string ) error {
126+ command .SilenceUsage = true
127+ serverAddress , _ := command .Flags ().GetString ("server" )
128+ client := model .NewClient (serverAddress )
129+
130+ vpcID , _ := command .Flags ().GetString ("vpc-id" )
131+ clusterID , _ := command .Flags ().GetString ("cluster-id" )
132+ environment , _ := command .Flags ().GetString ("environment" )
133+ stateStore , _ := command .Flags ().GetString ("state-store" )
134+ apply , _ := command .Flags ().GetBool ("apply" )
135+ instanceType , _ := command .Flags ().GetString ("instance-type" )
136+ backupRetentionPeriod , _ := command .Flags ().GetString ("backup-retention-period" )
137+ dbEngine , _ := command .Flags ().GetString ("db-engine" )
138+ replicas , _ := command .Flags ().GetString ("replicas" )
139+ dbProxy , _ := command .Flags ().GetBool ("dbproxy" )
140+ creationSnapshotARN , _ := command .Flags ().GetString ("creation-snapshot-arn" )
141+ enableDevopsGuru , _ := command .Flags ().GetBool ("devops-guru" )
142+ allowMajorVersionUpgrade , _ := command .Flags ().GetBool ("allow-major-version-upgrade" )
143+ kmsKeyID , _ := command .Flags ().GetString ("kms-key-id" )
144+
145+ cluster , err := client .DeleteCluster (& model.ProvisionClusterRequest {
146+ VPCID : vpcID ,
147+ ClusterID : clusterID ,
148+ Environment : environment ,
149+ StateStore : stateStore ,
150+ Apply : apply ,
151+ InstanceType : instanceType ,
152+ BackupRetentionPeriod : backupRetentionPeriod ,
153+ DBEngine : dbEngine ,
154+ Replicas : replicas ,
155+ DBProxy : dbProxy ,
156+ CreationSnapshotARN : creationSnapshotARN ,
157+ EnableDevopsGuru : enableDevopsGuru ,
158+ AllowMajorVersionUpgrade : allowMajorVersionUpgrade ,
159+ KMSKeyID : kmsKeyID ,
160+ })
161+ if err != nil {
162+ return errors .Wrap (err , "failed to delete RDS cluster" )
163+ }
164+ err = printJSON (cluster )
165+ if err != nil {
166+ return err
167+ }
168+
169+ return nil
170+ },
171+ }
172+
103173func printJSON (data interface {}) error {
104174 encoder := json .NewEncoder (os .Stdout )
105175 encoder .SetIndent ("" , " " )
0 commit comments