Skip to content

Commit 5fbad31

Browse files
authored
feat/oceanus (#2442)
* feat/oceanus * feat/oceanus * feat/oceanus * feat/oceanus
1 parent dd04712 commit 5fbad31

File tree

18 files changed

+699
-19
lines changed

18 files changed

+699
-19
lines changed

.changelog/2442.txt

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

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.693
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.711
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.825
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.829
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
@@ -109,7 +109,7 @@ require (
109109
github.com/hashicorp/go-uuid v1.0.3
110110
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwpg v1.0.772
111111
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dasb v1.0.798
112-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.810
112+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.829
113113
github.com/wI2L/jsondiff v0.3.0
114114
k8s.io/apimachinery v0.22.4
115115
)

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.824 h1:jRLj
933933
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.824/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
934934
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.825 h1:ijG2TLksawrFMdBpfFa5N/HjBZLGRPwmCgg0JFfFl6E=
935935
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.825/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
936+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.829 h1:5Wx+X/EmjEU6T9WHjc/vBPvW97OUe3Bi8BGdQBD8pJM=
937+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.829/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
936938
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
937939
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624/go.mod h1:+TXSVyeKwt1IhZRqKPbTREteBcP+K07Q846/ilNzLWA=
938940
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762 h1:2egy69SP/wPsmnfozcQVZ6tUY6F6N/TpEe/7xtXrc/8=
@@ -981,6 +983,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.777 h1:SoH/Kkq
981983
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.777/go.mod h1:sBmwqD3GkczHFiArdYpHPp9QriIbzNtO99DueYVyGwE=
982984
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.810 h1:P9eQ4I/cFcLnNGH8tjZsFVNTpJ4iizI5RBEkNfyKbDg=
983985
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.810/go.mod h1:jWIMZDz6D+bwcfc1n4idP3S1581bOqRPaXjU4wllnZ8=
986+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.829 h1:+7Qwa1c6sgbBreu18IDYGmGGaoFwQVen3hmPQlALR4E=
987+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.829/go.mod h1:ftIGeNWJScZOiWWEmJWRww65CMxsj26Vscc8A0yAObM=
984988
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.770 h1:Ksu947uY/fafnlILemfMuyKqL/RxHh9dfVowWX8paeQ=
985989
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.770/go.mod h1:Ew8jug2Kq03q9Kkjzov7IMYgugGLEw3FGYPofuRqzKw=
986990
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.814 h1:1XlGrQHRBJv419m64yWRNRWVUTvqBi3Go4ahndnZz9w=

tencentcloud/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@ func Provider() *schema.Provider {
311311
"tencentcloud_oceanus_tree_resources": oceanus.DataSourceTencentCloudOceanusTreeResources(),
312312
"tencentcloud_oceanus_job_submission_log": oceanus.DataSourceTencentCloudOceanusJobSubmissionLog(),
313313
"tencentcloud_oceanus_check_savepoint": oceanus.DataSourceTencentCloudOceanusCheckSavepoint(),
314+
"tencentcloud_oceanus_job_events": oceanus.DataSourceTencentCloudOceanusJobEvents(),
314315
"tencentcloud_vpn_customer_gateways": vpn.DataSourceTencentCloudVpnCustomerGateways(),
315316
"tencentcloud_vpn_gateways": vpn.DataSourceTencentCloudVpnGateways(),
316317
"tencentcloud_vpn_gateway_routes": vpn.DataSourceTencentCloudVpnGatewayRoutes(),
Lines changed: 201 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,201 @@
1+
package oceanus
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
oceanus "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus/v20190422"
10+
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
11+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
12+
)
13+
14+
func DataSourceTencentCloudOceanusJobEvents() *schema.Resource {
15+
return &schema.Resource{
16+
Read: dataSourceTencentCloudOceanusJobEventsRead,
17+
Schema: map[string]*schema.Schema{
18+
"job_id": {
19+
Required: true,
20+
Type: schema.TypeString,
21+
Description: "Job ID.",
22+
},
23+
"start_timestamp": {
24+
Required: true,
25+
Type: schema.TypeInt,
26+
Description: "Filter condition:Start Unix timestamp (seconds).",
27+
},
28+
"end_timestamp": {
29+
Required: true,
30+
Type: schema.TypeInt,
31+
Description: "Filter condition:End Unix timestamp (seconds).",
32+
},
33+
"types": {
34+
Optional: true,
35+
Type: schema.TypeSet,
36+
Elem: &schema.Schema{Type: schema.TypeString},
37+
Description: "Event types. If not passed, data of all types will be returned.",
38+
},
39+
"work_space_id": {
40+
Required: true,
41+
Type: schema.TypeString,
42+
Description: "Workspace SerialId.",
43+
},
44+
// Computed
45+
"running_order_ids": {
46+
Computed: true,
47+
Type: schema.TypeSet,
48+
Elem: &schema.Schema{Type: schema.TypeInt},
49+
Description: "Array of running instance IDs.",
50+
},
51+
"events": {
52+
Computed: true,
53+
Type: schema.TypeList,
54+
Description: "List of events within the specified range for this jobNote: This field may return null, indicating that no valid values can be obtained.",
55+
Elem: &schema.Resource{
56+
Schema: map[string]*schema.Schema{
57+
"type": {
58+
Type: schema.TypeString,
59+
Computed: true,
60+
Description: "Internally defined event type.",
61+
},
62+
"description": {
63+
Type: schema.TypeString,
64+
Computed: true,
65+
Description: "Description text of the event type.",
66+
},
67+
"timestamp": {
68+
Type: schema.TypeInt,
69+
Computed: true,
70+
Description: "Unix timestamp (seconds) when the event occurred.",
71+
},
72+
"running_order_id": {
73+
Type: schema.TypeInt,
74+
Computed: true,
75+
Description: "Running ID when the event occurredNote: This field may return null, indicating that no valid values can be obtained.",
76+
},
77+
"message": {
78+
Type: schema.TypeString,
79+
Computed: true,
80+
Description: "Some optional explanations of the eventNote: This field may return null, indicating that no valid values can be obtained.",
81+
},
82+
"solution_link": {
83+
Type: schema.TypeString,
84+
Computed: true,
85+
Description: "Troubleshooting manual link for the abnormal eventNote: This field may return null, indicating that no valid values can be obtained.",
86+
},
87+
},
88+
},
89+
},
90+
"result_output_file": {
91+
Type: schema.TypeString,
92+
Optional: true,
93+
Description: "Used to save results.",
94+
},
95+
},
96+
}
97+
}
98+
99+
func dataSourceTencentCloudOceanusJobEventsRead(d *schema.ResourceData, meta interface{}) error {
100+
defer tccommon.LogElapsed("data_source.tencentcloud_oceanus_job_events.read")()
101+
defer tccommon.InconsistentCheck(d, meta)()
102+
103+
var (
104+
logId = tccommon.GetLogId(tccommon.ContextNil)
105+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
106+
service = OceanusService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
107+
JobEvents *oceanus.DescribeJobEventsResponseParams
108+
jobId string
109+
)
110+
111+
paramMap := make(map[string]interface{})
112+
if v, ok := d.GetOk("job_id"); ok {
113+
paramMap["JobId"] = helper.String(v.(string))
114+
}
115+
116+
if v, ok := d.GetOkExists("start_timestamp"); ok {
117+
paramMap["StartTimestamp"] = helper.IntUint64(v.(int))
118+
}
119+
120+
if v, ok := d.GetOkExists("end_timestamp"); ok {
121+
paramMap["EndTimestamp"] = helper.IntUint64(v.(int))
122+
}
123+
124+
if v, ok := d.GetOk("types"); ok {
125+
typesSet := v.(*schema.Set).List()
126+
paramMap["Types"] = helper.InterfacesStringsPoint(typesSet)
127+
}
128+
129+
if v, ok := d.GetOk("work_space_id"); ok {
130+
paramMap["WorkSpaceId"] = helper.String(v.(string))
131+
}
132+
133+
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
134+
result, e := service.DescribeOceanusJobEventsByFilter(ctx, paramMap)
135+
if e != nil {
136+
return tccommon.RetryError(e)
137+
}
138+
139+
if result == nil {
140+
e = fmt.Errorf("oceanus Job events not exists")
141+
return resource.NonRetryableError(e)
142+
}
143+
144+
JobEvents = result
145+
return nil
146+
})
147+
148+
if err != nil {
149+
return err
150+
}
151+
152+
if JobEvents.RunningOrderIds != nil {
153+
_ = d.Set("running_order_ids", JobEvents.RunningOrderIds)
154+
}
155+
156+
if JobEvents.Events != nil {
157+
tmpList := make([]map[string]interface{}, 0, len(JobEvents.Events))
158+
159+
for _, jobEvent := range JobEvents.Events {
160+
jobEventMap := map[string]interface{}{}
161+
162+
if jobEvent.Type != nil {
163+
jobEventMap["type"] = jobEvent.Type
164+
}
165+
166+
if jobEvent.Description != nil {
167+
jobEventMap["description"] = jobEvent.Description
168+
}
169+
170+
if jobEvent.Timestamp != nil {
171+
jobEventMap["timestamp"] = jobEvent.Timestamp
172+
}
173+
174+
if jobEvent.RunningOrderId != nil {
175+
jobEventMap["running_order_id"] = jobEvent.RunningOrderId
176+
}
177+
178+
if jobEvent.Message != nil {
179+
jobEventMap["message"] = jobEvent.Message
180+
}
181+
182+
if jobEvent.SolutionLink != nil {
183+
jobEventMap["solution_link"] = jobEvent.SolutionLink
184+
}
185+
186+
tmpList = append(tmpList, jobEventMap)
187+
}
188+
189+
_ = d.Set("events", tmpList)
190+
}
191+
192+
d.SetId(jobId)
193+
output, ok := d.GetOk("result_output_file")
194+
if ok && output.(string) != "" {
195+
if e := tccommon.WriteToFile(output.(string), d); e != nil {
196+
return e
197+
}
198+
}
199+
200+
return nil
201+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Use this data source to query detailed information of oceanus job_events
2+
3+
Example Usage
4+
5+
```hcl
6+
data "tencentcloud_oceanus_job_events" "example" {
7+
job_id = "cql-6w8eab6f"
8+
start_timestamp = 1630932161
9+
end_timestamp = 1631232466
10+
types = ["1", "2"]
11+
work_space_id = "space-6w8eab6f"
12+
}
13+
```
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package oceanus
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
8+
)
9+
10+
// go test -i; go test -test.run TestAccTencentCloudNeedFixOceanusJobEventsDataSource_basic -v
11+
func TestAccTencentCloudNeedFixOceanusJobEventsDataSource_basic(t *testing.T) {
12+
t.Parallel()
13+
resource.Test(t, resource.TestCase{
14+
PreCheck: func() {
15+
tcacctest.AccPreCheck(t)
16+
},
17+
Providers: tcacctest.AccProviders,
18+
Steps: []resource.TestStep{
19+
{
20+
Config: testAccOceanusJobEventsDataSource,
21+
Check: resource.ComposeTestCheckFunc(
22+
tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_oceanus_job_events.example"),
23+
resource.TestCheckResourceAttr("data.tencentcloud_oceanus_job_events.example", "job_id", "cql-6w8eab6f"),
24+
resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_job_events.example", "start_timestamp"),
25+
resource.TestCheckResourceAttrSet("data.tencentcloud_oceanus_job_events.example", "end_timestamp"),
26+
resource.TestCheckResourceAttr("data.tencentcloud_oceanus_job_events.example", "work_space_id", "space-6w8eab6f"),
27+
),
28+
},
29+
},
30+
})
31+
}
32+
33+
const testAccOceanusJobEventsDataSource = `
34+
data "tencentcloud_oceanus_job_events" "example" {
35+
job_id = "cql-6w8eab6f"
36+
start_timestamp = 1630932161
37+
end_timestamp = 1631232466
38+
types = ["1", "2"]
39+
work_space_id = "space-6w8eab6f"
40+
}
41+
`

tencentcloud/services/oceanus/service_tencentcloud_oceanus.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -849,3 +849,55 @@ func (me *OceanusService) DeleteOceanusFolderById(ctx context.Context, workSpace
849849

850850
return
851851
}
852+
853+
func (me *OceanusService) DescribeOceanusJobEventsByFilter(ctx context.Context, param map[string]interface{}) (JobEvents *oceanus.DescribeJobEventsResponseParams, errRet error) {
854+
var (
855+
logId = tccommon.GetLogId(ctx)
856+
request = oceanus.NewDescribeJobEventsRequest()
857+
)
858+
859+
defer func() {
860+
if errRet != nil {
861+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error())
862+
}
863+
}()
864+
865+
for k, v := range param {
866+
if k == "JobId" {
867+
request.JobId = v.(*string)
868+
}
869+
870+
if k == "StartTimestamp" {
871+
request.StartTimestamp = v.(*uint64)
872+
}
873+
874+
if k == "EndTimestamp" {
875+
request.EndTimestamp = v.(*uint64)
876+
}
877+
878+
if k == "Types" {
879+
request.Types = v.([]*string)
880+
}
881+
882+
if k == "WorkSpaceId" {
883+
request.WorkSpaceId = v.(*string)
884+
}
885+
}
886+
887+
ratelimit.Check(request.GetAction())
888+
889+
response, err := me.client.UseOceanusClient().DescribeJobEvents(request)
890+
if err != nil {
891+
errRet = err
892+
return
893+
}
894+
895+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
896+
897+
if response == nil {
898+
return
899+
}
900+
901+
JobEvents = response.Response
902+
return
903+
}

vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/client.go

Lines changed: 5 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)