@@ -8,6 +8,7 @@ resource "tencentcloud_sqlserver_publish_subscribe" "example" {
88 publish_instance_id = tencentcloud_sqlserver_instance.publish_instance.id
99 subscribe_instance_id = tencentcloud_sqlserver_instance.subscribe_instance.id
1010 publish_subscribe_name = "example"
11+ delete_subscribe_db = false
1112 database_tuples {
1213 publish_database = tencentcloud_sqlserver_db.test_publish_subscribe.name
1314 subscribe_database = tencentcloud_sqlserver_db.test_publish_subscribe.name
@@ -17,10 +18,10 @@ resource "tencentcloud_sqlserver_publish_subscribe" "example" {
1718
1819Import
1920
20- SQL Server PublishSubscribe can be imported using the id , e.g.
21+ SQL Server PublishSubscribe can be imported using the publish_sqlserver_id#subscribe_sqlserver_id , e.g.
2122
2223```
23- $ terraform import tencentcloud_sqlserver_publish_subscribe.foo mssql-3cdq7kx5#db_name
24+ $ terraform import tencentcloud_sqlserver_publish_subscribe.foo publish_sqlserver_id#subscribe_sqlserver_id
2425```
2526*/
2627package tencentcloud
@@ -63,12 +64,18 @@ func resourceTencentCloudSqlserverPublishSubscribe() *schema.Resource {
6364 Default : "default_name" ,
6465 Description : "The name of the Publish and Subscribe in the SQLServer instance. default is `default_name`." ,
6566 },
67+ "delete_subscribe_db" : {
68+ Type : schema .TypeBool ,
69+ Optional : true ,
70+ Default : false ,
71+ Description : "Whether to delete the subscriber database when deleting the Publish and Subscribe in the SQLServer instance. `true` for deletes the subscribe database, `false` for does not delete the subscribe database. default is `false`." ,
72+ },
6673 "database_tuples" : {
6774 Type : schema .TypeSet ,
6875 Required : true ,
6976 MinItems : 1 ,
7077 MaxItems : 80 ,
71- Description : "Database Publish and Publish relationship list. Modify database is not allowed." ,
78+ Description : "Database Publish and Publish relationship list. The elements inside can be deleted and added individually, but modify is not allowed." ,
7279 Elem : & schema.Resource {
7380 Schema : map [string ]* schema.Schema {
7481 "publish_database" : {
@@ -187,6 +194,7 @@ func resourceTencentCloudSqlserverPublishSubscribeUpdate(d *schema.ResourceData,
187194 sqlserverService = SqlserverService {client : meta .(* TencentCloudClient ).apiV3Conn }
188195 publishInstanceId = d .Get ("publish_instance_id" ).(string )
189196 subscribeInstanceId = d .Get ("subscribe_instance_id" ).(string )
197+ deleteSubscribeDb = d .Get ("delete_subscribe_db" ).(bool )
190198 )
191199
192200 publishSubscribe , _ , err := sqlserverService .DescribeSqlserverPublishSubscribeById (ctx , publishInstanceId , subscribeInstanceId )
@@ -202,6 +210,7 @@ func resourceTencentCloudSqlserverPublishSubscribeUpdate(d *schema.ResourceData,
202210
203211 if d .HasChange ("database_tuples" ) {
204212 var deleteDatabaseTupleSet []* sqlserver.DatabaseTuple
213+ var subscribeDatabases []* string
205214 oldSet , newSet := d .GetChange ("database_tuples" )
206215 //get new DatabaseTupleSet
207216 var newDatabaseTupleSet []* sqlserver.DatabaseTuple
@@ -230,6 +239,8 @@ func resourceTencentCloudSqlserverPublishSubscribeUpdate(d *schema.ResourceData,
230239 SubscribeDatabase : oldInstance .SubscribeDatabase ,
231240 }
232241 deleteDatabaseTupleSet = append (deleteDatabaseTupleSet , & databaseTuple )
242+ subDatabase := * oldInstance .SubscribeDatabase
243+ subscribeDatabases = append (subscribeDatabases , & subDatabase )
233244 }
234245 }
235246 if deleteDatabaseTupleSet == nil {
@@ -238,6 +249,12 @@ func resourceTencentCloudSqlserverPublishSubscribeUpdate(d *schema.ResourceData,
238249 if err := sqlserverService .DeletePublishSubscribe (ctx , publishSubscribe , deleteDatabaseTupleSet ); err != nil {
239250 return err
240251 }
252+ if deleteSubscribeDb {
253+ //delete subscribe databases
254+ if err = sqlserverService .DeleteSqlserverDB (ctx , subscribeInstanceId , subscribeDatabases ); err != nil {
255+ return err
256+ }
257+ }
241258 }
242259
243260 return resourceTencentCloudSqlserverPublishSubscribeRead (d , meta )
@@ -252,6 +269,7 @@ func resourceTencentCloudSqlserverPublishSubscribeDelete(d *schema.ResourceData,
252269 sqlserverService = SqlserverService {client : meta .(* TencentCloudClient ).apiV3Conn }
253270 publishInstanceId = d .Get ("publish_instance_id" ).(string )
254271 subscribeInstanceId = d .Get ("subscribe_instance_id" ).(string )
272+ deleteSubscribeDb = d .Get ("delete_subscribe_db" ).(bool )
255273 )
256274 publishSubscribe , has , err := sqlserverService .DescribeSqlserverPublishSubscribeById (ctx , publishInstanceId , subscribeInstanceId )
257275 if err != nil {
@@ -263,13 +281,22 @@ func resourceTencentCloudSqlserverPublishSubscribeDelete(d *schema.ResourceData,
263281
264282 oldDatabaseTuples , _ := d .GetChange ("database_tuples" )
265283 var oldDatabaseTupleSet []* sqlserver.DatabaseTuple
284+ var subscribeDatabases []* string
266285 for _ , inst_ := range oldDatabaseTuples .(* schema.Set ).List () {
267286 inst := inst_ .(map [string ]interface {})
287+ subDatabase := inst ["subscribe_database" ].(string )
268288 oldDatabaseTupleSet = append (oldDatabaseTupleSet , sqlServerNewDatabaseTuple (inst ["publish_database" ], inst ["subscribe_database" ]))
289+ subscribeDatabases = append (subscribeDatabases , & subDatabase )
269290 }
270291
271292 if err := sqlserverService .DeletePublishSubscribe (ctx , publishSubscribe , oldDatabaseTupleSet ); err != nil {
272293 return err
273294 }
295+ if deleteSubscribeDb {
296+ //delete subscribe databases
297+ if err = sqlserverService .DeleteSqlserverDB (ctx , subscribeInstanceId , subscribeDatabases ); err != nil {
298+ return err
299+ }
300+ }
274301 return nil
275302}
0 commit comments