@@ -68,17 +68,32 @@ func resourceTencentCloudVpnSslClientCreate(d *schema.ResourceData, meta interfa
6868 ctx := context .WithValue (context .TODO (), logIdKey , logId )
6969
7070 var (
71- vpcService = VpcService {client : meta .(* TencentCloudClient ).apiV3Conn }
72- request = vpc .NewCreateVpnGatewaySslClientRequest ()
73- sslVpnServerId string
71+ vpcService = VpcService {client : meta .(* TencentCloudClient ).apiV3Conn }
72+ request = vpc .NewCreateVpnGatewaySslClientRequest ()
73+ sslVpnServerId string
74+ sslVpnClientName string
7475 )
7576
7677 if v , ok := d .GetOk ("ssl_vpn_server_id" ); ok {
7778 sslVpnServerId = v .(string )
7879 request .SslVpnServerId = helper .String (sslVpnServerId )
7980 }
8081 if v , ok := d .GetOk ("ssl_vpn_client_name" ); ok {
81- request .SslVpnClientName = helper .String (v .(string ))
82+ sslVpnClientName = v .(string )
83+ request .SslVpnClientName = helper .String (sslVpnClientName )
84+ }
85+
86+ // make sure client name is unique
87+ filter := make (map [string ]string )
88+ filter ["ssl-vpn-server-id" ] = sslVpnServerId
89+ filter ["ssl-vpn-client-name" ] = sslVpnClientName
90+
91+ existIns , err := vpcService .DescribeVpnGwSslClientByFilter (ctx , filter )
92+ if err != nil {
93+ return fmt .Errorf ("get instance list error: %s" , err .Error ())
94+ }
95+ if len (existIns ) > 0 {
96+ return fmt .Errorf ("ssl client with same name already exist." )
8297 }
8398
8499 var taskId * uint64
@@ -98,24 +113,22 @@ func resourceTencentCloudVpnSslClientCreate(d *schema.ResourceData, meta interfa
98113 return err
99114 }
100115
101- err : = vpcService .DescribeTaskResult (ctx , helper .Uint64 (* taskId ))
116+ err = vpcService .DescribeTaskResult (ctx , helper .Uint64 (* taskId ))
102117 if err != nil {
103118 return err
104119 }
105-
106120 // add protect
107121 time .Sleep (3 )
108122
109- filter := make (map [string ]string )
110- filter ["ssl-vpn-server-id" ] = sslVpnServerId
111-
112- instances , err := vpcService .DescribeVpnGwSslClientByFilter (ctx , filter )
113-
123+ newIns , err := vpcService .DescribeVpnGwSslClientByFilter (ctx , filter )
114124 if err != nil {
115125 return fmt .Errorf ("get instance list error: %s" , err .Error ())
116126 }
127+ if len (newIns ) != 1 {
128+ return fmt .Errorf ("create ssl client error" )
129+ }
117130
118- sslClient := instances [0 ]
131+ sslClient := newIns [0 ]
119132 d .SetId (* sslClient .SslVpnClientId )
120133
121134 return resourceTencentCloudVpnSslClientRead (d , meta )
0 commit comments