Skip to content

Commit aa6e760

Browse files
committed
add
1 parent 764e18f commit aa6e760

30 files changed

+5034
-274
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ require (
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.860
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.952
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.960
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.964
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692
@@ -96,7 +96,7 @@ require (
9696
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tse v1.0.857
9797
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tsf v1.0.674
9898
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860
99-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.960
99+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.964
100100
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.833
101101
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792
102102
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199

go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -946,6 +946,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.958 h1:WoN2
946946
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.958/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
947947
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.960 h1:hde8uWA3624nGUvC8QPf9njcyBZ7A9weqscRrqyM1Rk=
948948
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.960/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
949+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.963 h1:lUVCMP5eiSHc2HGfSVc07Tytn4p6DklJkKldObRvJrU=
950+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.963/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
951+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.964 h1:ET3EulYQvWrdD5FNwOP+196w5Vbniy/uRGucM5ILExQ=
952+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.964/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
949953
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
950954
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860/go.mod h1:NZo1WplQcC314kMlCRUoy8NQju2BnolIJj7NAWgsuhY=
951955
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
@@ -1076,6 +1080,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.958 h1:PbvPRXd
10761080
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.958/go.mod h1:EzkGUZh/Tjzu1ZMsxsC3F0JqXc4GAvpXwsSdd15/xOM=
10771081
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.960 h1:5huPVKrsLOrhBms2cz8w3w3v0uQmdHnwGCwRn1UTds0=
10781082
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.960/go.mod h1:WX06bRa+EC/wiBsn3dHuDK8et1sx1FPkSRIBYL89g+w=
1083+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.963 h1:6Hl5u9jnDY3xzH6cWV4DV0hkaHkHjZaKRgKxwrgsne8=
1084+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.963/go.mod h1:I/v4TeM6kXoYesJ67MpDqJMRLDEypA4c0QjZBYwaka8=
1085+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.964 h1:+HsB7iMFYfDAYD0Xoj1tBsqLT1R6h/94DiooYJnorr8=
1086+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.964/go.mod h1:ohfNiTUrMTR50FAUe4wALZVYa1404YQvYB57pvVVADM=
10791087
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.833 h1:avaBlZ+Qqv7bfMg/u0jlRsbEBbE18CfqKWbfGc84PLg=
10801088
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.833/go.mod h1:fUWG217b//46Oa3VXxC5mgeYeewVAbF+lc81uET89EM=
10811089
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792 h1:NLgKNOIHWa38AmW7dyfI9Jlcp2Kr9VRD94f48pPNmxM=

tencentcloud/connectivity/client.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package connectivity
22

33
import (
44
"fmt"
5+
"log"
56
"net/http"
67
"net/url"
78
"os"
@@ -359,6 +360,19 @@ func (me *TencentCloudClient) UseVpcClient(iacExtInfo ...IacExtInfo) *vpc.Client
359360
return me.vpcConn
360361
}
361362

363+
func (me *TencentCloudClient) UseVpcOmitNilClient() *common.Client {
364+
secretId := me.Credential.SecretId
365+
secretKey := me.Credential.SecretKey
366+
region := me.Region
367+
credential := common.NewCredential(secretId, secretKey)
368+
cpf := profile.NewClientProfile()
369+
cpf.HttpProfile.Endpoint = "vpc.tencentcloudapi.com"
370+
cpf.HttpProfile.ReqMethod = "POST"
371+
client := common.NewCommonClient(credential, region, cpf).WithLogger(log.Default())
372+
373+
return client
374+
}
375+
362376
// UseCbsClient returns cbs client for service
363377
func (me *TencentCloudClient) UseCbsClient(iacExtInfo ...IacExtInfo) *cbs.Client {
364378
var logRoundTripper LogRoundTripper

tencentcloud/provider.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,7 @@ func Provider() *schema.Provider {
325325
"tencentcloud_ha_vips": vpc.DataSourceTencentCloudHaVips(),
326326
"tencentcloud_ha_vip_eip_attachments": vpc.DataSourceTencentCloudHaVipEipAttachments(),
327327
"tencentcloud_ccn_instances": ccn.DataSourceTencentCloudCcnInstances(),
328+
"tencentcloud_ccn_routes": ccn.DataSourceTencentCloudCcnRoutes(),
328329
"tencentcloud_ccn_bandwidth_limits": ccn.DataSourceTencentCloudCcnBandwidthLimits(),
329330
"tencentcloud_ccn_cross_border_compliance": ccn.DataSourceTencentCloudCcnCrossBorderCompliance(),
330331
"tencentcloud_ccn_tenant_instances": ccn.DataSourceTencentCloudCcnTenantInstance(),
@@ -1061,7 +1062,12 @@ func Provider() *schema.Provider {
10611062
"tencentcloud_ccn": ccn.ResourceTencentCloudCcn(),
10621063
"tencentcloud_ccn_attachment": ccn.ResourceTencentCloudCcnAttachment(),
10631064
"tencentcloud_ccn_bandwidth_limit": ccn.ResourceTencentCloudCcnBandwidthLimit(),
1065+
"tencentcloud_ccn_route_table": ccn.ResourceTencentCloudCcnRouteTable(),
1066+
"tencentcloud_ccn_route_table_input_policies": ccn.ResourceTencentCloudCcnRouteTableInputPolicies(),
1067+
"tencentcloud_ccn_route_table_broadcast_policies": ccn.ResourceTencentCloudCcnRouteTableBroadcastPolicies(),
1068+
"tencentcloud_ccn_route_table_selection_policies": ccn.ResourceTencentCloudCcnRouteTableSelectionPolicies(),
10641069
"tencentcloud_ccn_routes": ccn.ResourceTencentCloudCcnRoutes(),
1070+
"tencentcloud_ccn_route_table_associate_instance_config": ccn.ResourceTencentCloudCcnRouteTableAssociateInstanceConfig(),
10651071
"tencentcloud_ccn_instances_accept_attach": ccn.ResourceTencentCloudCcnInstancesAcceptAttach(),
10661072
"tencentcloud_ccn_instances_reject_attach": ccn.ResourceTencentCloudCcnInstancesRejectAttach(),
10671073
"tencentcloud_ccn_instances_reset_attach": ccn.ResourceTencentCloudCcnInstancesResetAttach(),
Lines changed: 250 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
package ccn
2+
3+
import (
4+
"context"
5+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
7+
vpc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312"
8+
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
9+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
10+
)
11+
12+
func DataSourceTencentCloudCcnRoutes() *schema.Resource {
13+
return &schema.Resource{
14+
Read: dataSourceTencentCloudCcnRoutesRead,
15+
16+
Schema: map[string]*schema.Schema{
17+
"ccn_id": {
18+
Type: schema.TypeString,
19+
Required: true,
20+
Description: "ID of the CCN to be queried.",
21+
},
22+
"filters": {
23+
Optional: true,
24+
Type: schema.TypeList,
25+
Description: "Filter conditions.",
26+
Elem: &schema.Resource{
27+
Schema: map[string]*schema.Schema{
28+
"name": {
29+
Type: schema.TypeString,
30+
Required: true,
31+
Description: "Field to be filtered. Support `route-id`, `cidr-block`, `instance-type`, `instance-region`, `instance-id`, `route-table-id`.",
32+
},
33+
"values": {
34+
Type: schema.TypeSet,
35+
Elem: &schema.Schema{Type: schema.TypeString},
36+
Required: true,
37+
Description: "Filter value of the field.",
38+
},
39+
},
40+
},
41+
},
42+
// Computed
43+
"route_list": {
44+
Computed: true,
45+
Type: schema.TypeList,
46+
Description: "CCN route list.",
47+
Elem: &schema.Resource{
48+
Schema: map[string]*schema.Schema{
49+
"route_id": {
50+
Type: schema.TypeString,
51+
Computed: true,
52+
Description: "route ID.",
53+
},
54+
"destination_cidr_block": {
55+
Type: schema.TypeString,
56+
Computed: true,
57+
Description: "Destination.",
58+
},
59+
"instance_type": {
60+
Type: schema.TypeString,
61+
Computed: true,
62+
Description: "Next hop type (associated instance type), all types: VPC, DIRECTCONNECT.",
63+
},
64+
"instance_id": {
65+
Type: schema.TypeString,
66+
Computed: true,
67+
Description: "Next jump (associated instance ID).",
68+
},
69+
"instance_name": {
70+
Type: schema.TypeString,
71+
Computed: true,
72+
Description: "Next jump (associated instance name).",
73+
},
74+
"instance_region": {
75+
Type: schema.TypeString,
76+
Computed: true,
77+
Description: "Next jump (associated instance region).",
78+
},
79+
"update_time": {
80+
Type: schema.TypeString,
81+
Computed: true,
82+
Description: "update time.",
83+
},
84+
"enabled": {
85+
Type: schema.TypeBool,
86+
Computed: true,
87+
Description: "Is routing enabled.",
88+
},
89+
"instance_uin": {
90+
Type: schema.TypeString,
91+
Computed: true,
92+
Description: "The UIN (root account) to which the associated instance belongs.",
93+
},
94+
"extra_state": {
95+
Type: schema.TypeString,
96+
Computed: true,
97+
Description: "Extension status of routing.",
98+
},
99+
"is_bgp": {
100+
Type: schema.TypeBool,
101+
Computed: true,
102+
Description: "Is it dynamic routing.",
103+
},
104+
"route_priority": {
105+
Type: schema.TypeInt,
106+
Computed: true,
107+
Description: "Routing priority.",
108+
},
109+
"instance_extra_name": {
110+
Type: schema.TypeString,
111+
Computed: true,
112+
Description: "Next hop extension name (associated instance extension name).",
113+
},
114+
},
115+
},
116+
},
117+
"result_output_file": {
118+
Type: schema.TypeString,
119+
Optional: true,
120+
Description: "Used to save results.",
121+
},
122+
},
123+
}
124+
}
125+
126+
func dataSourceTencentCloudCcnRoutesRead(d *schema.ResourceData, meta interface{}) error {
127+
defer tccommon.LogElapsed("data_source.tencentcloud_ccn_routes.read")()
128+
129+
var (
130+
logId = tccommon.GetLogId(tccommon.ContextNil)
131+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
132+
service = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
133+
)
134+
135+
paramMap := make(map[string]interface{})
136+
if v, ok := d.GetOk("ccn_id"); ok {
137+
paramMap["CcnId"] = helper.String(v.(string))
138+
}
139+
140+
if v, ok := d.GetOk("filters"); ok {
141+
filtersSet := v.([]interface{})
142+
tmpSet := make([]*vpc.Filter, 0, len(filtersSet))
143+
for _, item := range filtersSet {
144+
filter := vpc.Filter{}
145+
filterMap := item.(map[string]interface{})
146+
if v, ok := filterMap["name"]; ok {
147+
filter.Name = helper.String(v.(string))
148+
}
149+
150+
if v, ok := filterMap["values"]; ok {
151+
valuesSet := v.(*schema.Set).List()
152+
filter.Values = helper.InterfacesStringsPoint(valuesSet)
153+
}
154+
155+
tmpSet = append(tmpSet, &filter)
156+
}
157+
158+
paramMap["Filters"] = tmpSet
159+
}
160+
161+
var routeSet []*vpc.CcnRoute
162+
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
163+
result, e := service.DescribeVpcDescribeCcnRoutesByFilter(ctx, paramMap)
164+
if e != nil {
165+
return tccommon.RetryError(e)
166+
}
167+
168+
routeSet = result
169+
return nil
170+
})
171+
172+
if err != nil {
173+
return err
174+
}
175+
176+
ids := make([]string, 0, len(routeSet))
177+
tmpList := make([]map[string]interface{}, 0, len(routeSet))
178+
179+
if routeSet != nil {
180+
for _, route := range routeSet {
181+
tmpMap := make(map[string]interface{})
182+
if route.RouteId != nil {
183+
tmpMap["route_id"] = route.RouteId
184+
}
185+
186+
if route.DestinationCidrBlock != nil {
187+
tmpMap["destination_cidr_block"] = route.DestinationCidrBlock
188+
}
189+
190+
if route.InstanceType != nil {
191+
tmpMap["instance_type"] = route.InstanceType
192+
}
193+
194+
if route.InstanceId != nil {
195+
tmpMap["instance_id"] = route.InstanceId
196+
}
197+
198+
if route.InstanceName != nil {
199+
tmpMap["instance_name"] = route.InstanceName
200+
}
201+
202+
if route.InstanceRegion != nil {
203+
tmpMap["instance_region"] = route.InstanceRegion
204+
}
205+
206+
if route.UpdateTime != nil {
207+
tmpMap["update_time"] = route.UpdateTime
208+
}
209+
210+
if route.Enabled != nil {
211+
tmpMap["enabled"] = route.Enabled
212+
}
213+
214+
if route.InstanceUin != nil {
215+
tmpMap["instance_uin"] = route.InstanceUin
216+
}
217+
218+
if route.ExtraState != nil {
219+
tmpMap["extra_state"] = route.ExtraState
220+
}
221+
222+
if route.IsBgp != nil {
223+
tmpMap["is_bgp"] = route.IsBgp
224+
}
225+
226+
if route.RoutePriority != nil {
227+
tmpMap["route_priority"] = route.RoutePriority
228+
}
229+
230+
if route.InstanceExtraName != nil {
231+
tmpMap["instance_extra_name"] = route.InstanceExtraName
232+
}
233+
234+
ids = append(ids, *route.RouteId)
235+
tmpList = append(tmpList, tmpMap)
236+
}
237+
238+
_ = d.Set("route_list", tmpList)
239+
}
240+
241+
d.SetId(helper.DataResourceIdsHash(ids))
242+
output, ok := d.GetOk("result_output_file")
243+
if ok && output.(string) != "" {
244+
if e := tccommon.WriteToFile(output.(string), tmpList); e != nil {
245+
return e
246+
}
247+
}
248+
249+
return nil
250+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
Use this data source to query detailed information of CCN routes.
2+
3+
Example Usage
4+
5+
Query CCN instance all routes
6+
7+
```hcl
8+
data "tencentcloud_ccn_routes" "routes" {
9+
ccn_id = "ccn-gr7nynbd"
10+
}
11+
```
12+
13+
Query CCN instance routes by filter
14+
15+
```hcl
16+
data "tencentcloud_ccn_routes" "routes" {
17+
ccn_id = "ccn-gr7nynbd"
18+
filters {
19+
name = "route-table-id"
20+
values = ["ccnrtb-jpf7bzn3"]
21+
}
22+
}
23+
```

0 commit comments

Comments
 (0)