Skip to content

Commit 63fb3cb

Browse files
authored
feat(dasb): [122167749] add new resource (#3171)
* add * add * add
1 parent 751cca0 commit 63fb3cb

8 files changed

+200
-0
lines changed

.changelog/3171.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:new-resource
2+
tencentcloud_dasb_asset_sync_job_operation
3+
```

tencentcloud/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2185,6 +2185,7 @@ func Provider() *schema.Provider {
21852185
"tencentcloud_dasb_reset_user": bh.ResourceTencentCloudDasbResetUser(),
21862186
"tencentcloud_dasb_bind_device_account_private_key": bh.ResourceTencentCloudDasbBindDeviceAccountPrivateKey(),
21872187
"tencentcloud_dasb_bind_device_account_password": bh.ResourceTencentCloudDasbBindDeviceAccountPassword(),
2188+
"tencentcloud_dasb_asset_sync_job_operation": bh.ResourceTencentCloudDasbAssetSyncJobOperationOperation(),
21882189
"tencentcloud_ssl_check_certificate_chain_operation": ssl.ResourceTencentCloudSslCheckCertificateChainOperation(),
21892190
"tencentcloud_ssl_complete_certificate_operation": ssl.ResourceTencentCloudSslCompleteCertificateOperation(),
21902191
"tencentcloud_ssl_deploy_certificate_instance_operation": ssl.ResourceTencentCloudSslDeployCertificateInstanceOperation(),

tencentcloud/provider.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2209,6 +2209,7 @@ tencentcloud_dasb_user_group
22092209
tencentcloud_dasb_reset_user
22102210
tencentcloud_dasb_bind_device_account_private_key
22112211
tencentcloud_dasb_bind_device_account_password
2212+
tencentcloud_dasb_asset_sync_job_operation
22122213

22132214
Cwp
22142215
Data Source
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
package bh
2+
3+
import (
4+
"fmt"
5+
"log"
6+
"strconv"
7+
8+
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
9+
10+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
11+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
12+
dasb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dasb/v20191018"
13+
14+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
15+
)
16+
17+
func ResourceTencentCloudDasbAssetSyncJobOperationOperation() *schema.Resource {
18+
return &schema.Resource{
19+
Create: resourceTencentCloudDasbAssetSyncJobOperationCreate,
20+
Read: resourceTencentCloudDasbAssetSyncJobOperationRead,
21+
Delete: resourceTencentCloudDasbAssetSyncJobOperationDelete,
22+
23+
Schema: map[string]*schema.Schema{
24+
"category": {
25+
Required: true,
26+
ForceNew: true,
27+
Type: schema.TypeInt,
28+
Description: "Synchronize asset categories, 1- Host assets, 2- Database assets.",
29+
},
30+
},
31+
}
32+
}
33+
34+
func resourceTencentCloudDasbAssetSyncJobOperationCreate(d *schema.ResourceData, meta interface{}) error {
35+
defer tccommon.LogElapsed("resource.tencentcloud_dasb_asset_sync_job_operation.create")()
36+
defer tccommon.InconsistentCheck(d, meta)()
37+
38+
var (
39+
logId = tccommon.GetLogId(tccommon.ContextNil)
40+
request = dasb.NewCreateAssetSyncJobRequest()
41+
waitReq = dasb.NewDescribeAssetSyncStatusRequest()
42+
category string
43+
)
44+
45+
if v, ok := d.GetOkExists("category"); ok {
46+
request.Category = helper.IntUint64(v.(int))
47+
waitReq.Category = helper.IntUint64(v.(int))
48+
category = strconv.Itoa(v.(int))
49+
}
50+
51+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
52+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDasbClient().CreateAssetSyncJob(request)
53+
if e != nil {
54+
return tccommon.RetryError(e)
55+
} else {
56+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
57+
}
58+
59+
return nil
60+
})
61+
62+
if err != nil {
63+
log.Printf("[CRITAL]%s create dasb AssetSyncJob failed, reason:%+v", logId, err)
64+
return err
65+
}
66+
67+
d.SetId(category)
68+
69+
// wait
70+
err = resource.Retry(4*tccommon.WriteRetryTimeout, func() *resource.RetryError {
71+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseDasbClient().DescribeAssetSyncStatus(waitReq)
72+
if e != nil {
73+
return tccommon.RetryError(e)
74+
} else {
75+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, waitReq.GetAction(), waitReq.ToJsonString(), result.ToJsonString())
76+
}
77+
78+
if result == nil || result.Response == nil || result.Response.Status == nil {
79+
return resource.NonRetryableError(fmt.Errorf("Describe dasb AssetSyncJob failed, Response is nil."))
80+
}
81+
82+
if result.Response.Status.InProcess == nil {
83+
return resource.NonRetryableError(fmt.Errorf("InProcess is nil."))
84+
}
85+
86+
if !*result.Response.Status.InProcess {
87+
return nil
88+
}
89+
90+
return resource.RetryableError(fmt.Errorf("Dasb asset sync job is still running..."))
91+
})
92+
93+
if err != nil {
94+
log.Printf("[CRITAL]%s describe dasb AssetSyncJob failed, reason:%+v", logId, err)
95+
return err
96+
}
97+
98+
return resourceTencentCloudDasbAssetSyncJobOperationRead(d, meta)
99+
}
100+
101+
func resourceTencentCloudDasbAssetSyncJobOperationRead(d *schema.ResourceData, meta interface{}) error {
102+
defer tccommon.LogElapsed("resource.tencentcloud_dasb_asset_sync_job_operation.read")()
103+
defer tccommon.InconsistentCheck(d, meta)()
104+
105+
return nil
106+
}
107+
108+
func resourceTencentCloudDasbAssetSyncJobOperationDelete(d *schema.ResourceData, meta interface{}) error {
109+
defer tccommon.LogElapsed("resource.tencentcloud_dasb_asset_sync_job_operation.delete")()
110+
defer tccommon.InconsistentCheck(d, meta)()
111+
112+
return nil
113+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Provides a resource to create a dasb asset sync job
2+
3+
Example Usage
4+
5+
```hcl
6+
resource "tencentcloud_dasb_asset_sync_job_operation" "example" {
7+
category = 1
8+
}
9+
```
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package bh_test
2+
3+
import (
4+
"testing"
5+
6+
tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
)
10+
11+
// go test -i; go test -test.run TestAccTencentCloudNeedFixDasbAssetSyncJobOperationOperationResource_basic -v
12+
func TestAccTencentCloudNeedFixDasbAssetSyncJobOperationOperationResource_basic(t *testing.T) {
13+
t.Parallel()
14+
resource.Test(t, resource.TestCase{
15+
PreCheck: func() {
16+
tcacctest.AccPreCheck(t)
17+
},
18+
Providers: tcacctest.AccProviders,
19+
Steps: []resource.TestStep{
20+
{
21+
Config: testAccDasbAssetSyncJobOperationOperation,
22+
Check: resource.ComposeTestCheckFunc(
23+
resource.TestCheckResourceAttrSet("tencentcloud_dasb_asset_sync_job_operation.example", "id"),
24+
resource.TestCheckResourceAttrSet("tencentcloud_dasb_asset_sync_job_operation.example", "category"),
25+
),
26+
},
27+
},
28+
})
29+
}
30+
31+
const testAccDasbAssetSyncJobOperationOperation = `
32+
resource "tencentcloud_dasb_asset_sync_job_operation" "example" {
33+
category = 1
34+
}
35+
`
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
subcategory: "Bastion Host(BH)"
3+
layout: "tencentcloud"
4+
page_title: "TencentCloud: tencentcloud_dasb_asset_sync_job_operation"
5+
sidebar_current: "docs-tencentcloud-resource-dasb_asset_sync_job_operation"
6+
description: |-
7+
Provides a resource to create a dasb asset sync job
8+
---
9+
10+
# tencentcloud_dasb_asset_sync_job_operation
11+
12+
Provides a resource to create a dasb asset sync job
13+
14+
## Example Usage
15+
16+
```hcl
17+
resource "tencentcloud_dasb_asset_sync_job_operation" "example" {
18+
category = 1
19+
}
20+
```
21+
22+
## Argument Reference
23+
24+
The following arguments are supported:
25+
26+
* `category` - (Required, Int, ForceNew) Synchronize asset categories, 1- Host assets, 2- Database assets.
27+
28+
## Attributes Reference
29+
30+
In addition to all arguments above, the following attributes are exported:
31+
32+
* `id` - ID of the resource.
33+
34+
35+

website/tencentcloud.erb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,9 @@
438438
<li>
439439
<a href="/docs/providers/tencentcloud/r/dasb_acl.html">tencentcloud_dasb_acl</a>
440440
</li>
441+
<li>
442+
<a href="/docs/providers/tencentcloud/r/dasb_asset_sync_job_operation.html">tencentcloud_dasb_asset_sync_job_operation</a>
443+
</li>
441444
<li>
442445
<a href="/docs/providers/tencentcloud/r/dasb_bind_device_account_password.html">tencentcloud_dasb_bind_device_account_password</a>
443446
</li>

0 commit comments

Comments
 (0)