Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .changelog/2335.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
```release-note:new-datasource
tencentcloud_antiddos_basic_device_status
```

```release-note:new-datasource
tencentcloud_antiddos_bgp_biz_trend
```

```release-note:new-datasource
tencentcloud_antiddos_list_listener
```

```release-note:new-datasource
tencentcloud_antiddos_overview_attack_trend
```
26 changes: 26 additions & 0 deletions examples/tencentcloud-antiddos/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
data "tencentcloud_antiddos_basic_device_status" "basic_device_status" {
ip_list = [
"127.0.0.1"
]
filter_region = 1
}

data "tencentcloud_antiddos_bgp_biz_trend" "bgp_biz_trend" {
business = "bgp-multip"
start_time = "2023-11-22 09:25:00"
end_time = "2023-11-22 10:25:00"
metric_name = "intraffic"
instance_id = "bgp-00000ry7"
flag = 0
}

data "tencentcloud_antiddos_list_listener" "list_listener" {
}

data "tencentcloud_antiddos_overview_attack_trend" "overview_attack_trend" {
type = "ddos"
dimension = "attackcount"
period = 86400
start_time = "2023-11-21 10:28:31"
end_time = "2023-11-22 10:28:31"
}
Empty file.
3 changes: 3 additions & 0 deletions examples/tencentcloud-antiddos/version.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
terraform {
required_version = ">= 0.12"
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ require (
github.com/pkg/errors v0.9.1
github.com/stretchr/testify v1.8.2
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.646+incompatible
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.358
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.799
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/api v1.0.285
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/apigateway v1.0.763
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/apm v1.0.624
Expand Down
5 changes: 5 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -776,6 +776,8 @@ github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.646+incompatible h1:C6k
github.com/tencentcloud/tencentcloud-sdk-go-intl-en v3.0.646+incompatible/go.mod h1:72Wo6Gt6F8d8V+njrAmduVoT9QjPwCyXktpqCWr7PUc=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.358 h1:U/3fxCDsKPEFRM7uYtSiIuR/PxeuuY4w2VkP892G+5Q=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.358/go.mod h1:oTPWRp1MbE4umgAHAUCogWxTdE6Uu50rL4b8HKIO1d8=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.799 h1:u49r1bGFDY0CeAF46iotNnLtc5yplPf9XXa7W7zJ4fE=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos v1.0.799/go.mod h1:JQa/Ess7Kkn/BuAugq0Tt5GJR7ZQAY47ypP9LjEn/DE=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/api v1.0.285 h1:gFmukRGLtYiXVBVvg/5DP/0fM1+dKpwDjT+khtDVLmc=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/api v1.0.285/go.mod h1:aGlXSWjtSnE6kuqcaRy/NKj1CLiB8NlMSHGsDn+k7Ag=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/apigateway v1.0.763 h1:jNjM/+MU2HplNZpCxDBIBKXZzumIDFJ4ztYHob0thow=
Expand Down Expand Up @@ -869,7 +871,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.775/go.mod
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.777/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.779/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.781/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.788 h1:H3OCwvAHQSgphJNjAM6JhlKT1x83WF4uu6qahWTR1dE=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.788/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.792/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.794 h1:UZNzwFi22p+MPZNPcYMFniQcG0H05fFCXHyqsmx904U=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.794/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.797/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.798/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
Expand Down
179 changes: 179 additions & 0 deletions tencentcloud/data_source_tc_antiddos_basic_device_status.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
/*
Use this data source to query detailed information of antiddos basic_device_status

Example Usage

```hcl
data "tencentcloud_antiddos_basic_device_status" "basic_device_status" {
ip_list = [
"127.0.0.1"
]
filter_region = 1
}
```
*/
package tencentcloud

import (
"context"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
antiddos "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/antiddos/v20200309"
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
)

func dataSourceTencentCloudAntiddosBasicDeviceStatus() *schema.Resource {
return &schema.Resource{
Read: dataSourceTencentCloudAntiddosBasicDeviceStatusRead,
Schema: map[string]*schema.Schema{
"ip_list": {
Optional: true,
Type: schema.TypeSet,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Description: "Ip resource list.",
},

"id_list": {
Optional: true,
Type: schema.TypeSet,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Description: "Named resource transfer ID.",
},

"filter_region": {
Optional: true,
Type: schema.TypeInt,
Description: "Region Id.",
},

"data": {
Computed: true,
Type: schema.TypeList,
Description: "Return resources and status, status code: 1- Blocking status 2- Normal status 3- Attack status.",
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"key": {
Type: schema.TypeString,
Computed: true,
Description: "Properties name.",
},
"value": {
Type: schema.TypeString,
Computed: true,
Description: "Properties value.",
},
},
},
},

"clb_data": {
Computed: true,
Type: schema.TypeList,
Description: "Note: This field may return null, indicating that a valid value cannot be obtained.",
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"key": {
Type: schema.TypeString,
Computed: true,
Description: "Properties name.",
},
"value": {
Type: schema.TypeString,
Computed: true,
Description: "Properties value.",
},
},
},
},

"result_output_file": {
Type: schema.TypeString,
Optional: true,
Description: "Used to save results.",
},
},
}
}

func dataSourceTencentCloudAntiddosBasicDeviceStatusRead(d *schema.ResourceData, meta interface{}) error {
defer logElapsed("data_source.tencentcloud_antiddos_basic_device_status.read")()
defer inconsistentCheck(d, meta)()

logId := getLogId(contextNil)

ctx := context.WithValue(context.TODO(), logIdKey, logId)

paramMap := make(map[string]interface{})
if v, ok := d.GetOk("ip_list"); ok {
ipListSet := v.(*schema.Set).List()
paramMap["IpList"] = helper.InterfacesStringsPoint(ipListSet)
}

if v, ok := d.GetOk("id_list"); ok {
idListSet := v.(*schema.Set).List()
paramMap["IdList"] = helper.InterfacesStringsPoint(idListSet)
}

if v, ok := d.GetOkExists("filter_region"); ok {
paramMap["FilterRegion"] = helper.IntUint64(v.(int))
}

service := AntiddosService{client: meta.(*TencentCloudClient).apiV3Conn}

var basicDeviceStatus *antiddos.DescribeBasicDeviceStatusResponseParams
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
result, e := service.DescribeAntiddosBasicDeviceStatusByFilter(ctx, paramMap)
if e != nil {
return retryError(e)
}
basicDeviceStatus = result
return nil
})
if err != nil {
return err
}

tmpList := make([]map[string]interface{}, 0)

if basicDeviceStatus.Data != nil {
for _, keyValue := range basicDeviceStatus.Data {
keyValueMap := map[string]interface{}{}
if keyValue.Key != nil {
keyValueMap["key"] = keyValue.Key
}
if keyValue.Value != nil {
keyValueMap["value"] = keyValue.Value
}
tmpList = append(tmpList, keyValueMap)
}
_ = d.Set("data", tmpList)
}

if basicDeviceStatus.CLBData != nil {
for _, keyValue := range basicDeviceStatus.CLBData {
keyValueMap := map[string]interface{}{}
if keyValue.Key != nil {
keyValueMap["key"] = keyValue.Key
}
if keyValue.Value != nil {
keyValueMap["value"] = keyValue.Value
}
tmpList = append(tmpList, keyValueMap)
}
_ = d.Set("clb_data", tmpList)
}

d.SetId(helper.BuildToken())
output, ok := d.GetOk("result_output_file")
if ok && output.(string) != "" {
if e := writeToFile(output.(string), tmpList); e != nil {
return e
}
}
return nil
}
39 changes: 39 additions & 0 deletions tencentcloud/data_source_tc_antiddos_basic_device_status_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package tencentcloud

import (
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)

func TestAccTencentCloudAntiddosBasicDeviceStatusDataSource_basic(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
PreCheck: func() {
testAccPreCheck(t)
},
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccAntiddosBasicDeviceStatusDataSource,
Check: resource.ComposeTestCheckFunc(
testAccCheckTencentCloudDataSourceID("data.tencentcloud_antiddos_basic_device_status.basic_device_status"),
resource.TestCheckResourceAttrSet("data.tencentcloud_antiddos_basic_device_status.basic_device_status", "data.#"),
resource.TestCheckResourceAttrSet("data.tencentcloud_antiddos_basic_device_status.basic_device_status", "clb_data.#"),
resource.TestCheckResourceAttr("data.tencentcloud_antiddos_basic_device_status.basic_device_status", "data.0.key", "127.0.0.1"),
),
},
},
})
}

const testAccAntiddosBasicDeviceStatusDataSource = `
data "tencentcloud_antiddos_basic_device_status" "basic_device_status" {
ip_list = [
"127.0.0.1"
]
filter_region = 1
}
`
Loading