Skip to content

Commit 983c98a

Browse files
varmax2511jotruon
authored andcommitted
Added - Support for scheduled job status in database management
1 parent c9f11c3 commit 983c98a

6 files changed

+558
-1
lines changed

examples/databasemanagement/main.tf

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,4 +208,14 @@ data "oci_database_management_db_management_private_endpoints" "test_db_manageme
208208
name = var.db_management_private_endpoint_name
209209
vcn_id = oci_core_vcn.test_vcn.id
210210
state = var.db_management_private_endpoint_state
211-
}
211+
}
212+
213+
data "oci_database_management_job_executions_status" "test_job_executions_status" {
214+
#Required
215+
compartment_id = var.compartment_id
216+
start_time = formatdate("YYYY-MM-DD'T'hh:mm:ss'.000'Z", timeadd(timestamp(), "-12h"))
217+
end_time = formatdate("YYYY-MM-DD'T'hh:mm:ss'.000'Z", timestamp())
218+
219+
#Optional
220+
managed_database_id = var.managed_database_id
221+
}
Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package oci
5+
6+
import (
7+
"context"
8+
9+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
10+
oci_database_management "github.com/oracle/oci-go-sdk/v48/databasemanagement"
11+
)
12+
13+
func init() {
14+
RegisterDatasource("oci_database_management_job_executions_status", DatabaseManagementJobExecutionsStatusDataSource())
15+
}
16+
17+
func DatabaseManagementJobExecutionsStatusDataSource() *schema.Resource {
18+
return &schema.Resource{
19+
Read: readSingularDatabaseManagementJobExecutionsStatus,
20+
Schema: map[string]*schema.Schema{
21+
"compartment_id": {
22+
Type: schema.TypeString,
23+
Required: true,
24+
},
25+
"end_time": {
26+
Type: schema.TypeString,
27+
Required: true,
28+
},
29+
"id": {
30+
Type: schema.TypeString,
31+
Optional: true,
32+
},
33+
"managed_database_group_id": {
34+
Type: schema.TypeString,
35+
Optional: true,
36+
},
37+
"managed_database_id": {
38+
Type: schema.TypeString,
39+
Optional: true,
40+
},
41+
"name": {
42+
Type: schema.TypeString,
43+
Optional: true,
44+
},
45+
"start_time": {
46+
Type: schema.TypeString,
47+
Required: true,
48+
},
49+
// Computed
50+
"items": {
51+
Type: schema.TypeList,
52+
Computed: true,
53+
Elem: &schema.Resource{
54+
Schema: map[string]*schema.Schema{
55+
// Required
56+
57+
// Optional
58+
59+
// Computed
60+
"count": {
61+
Type: schema.TypeInt,
62+
Computed: true,
63+
},
64+
"status": {
65+
Type: schema.TypeString,
66+
Computed: true,
67+
},
68+
},
69+
},
70+
},
71+
},
72+
}
73+
}
74+
75+
func readSingularDatabaseManagementJobExecutionsStatus(d *schema.ResourceData, m interface{}) error {
76+
sync := &DatabaseManagementJobExecutionsStatusDataSourceCrud{}
77+
sync.D = d
78+
sync.Client = m.(*OracleClients).dbManagementClient()
79+
80+
return ReadResource(sync)
81+
}
82+
83+
type DatabaseManagementJobExecutionsStatusDataSourceCrud struct {
84+
D *schema.ResourceData
85+
Client *oci_database_management.DbManagementClient
86+
Res *oci_database_management.SummarizeJobExecutionsStatusesResponse
87+
}
88+
89+
func (s *DatabaseManagementJobExecutionsStatusDataSourceCrud) VoidState() {
90+
s.D.SetId("")
91+
}
92+
93+
func (s *DatabaseManagementJobExecutionsStatusDataSourceCrud) Get() error {
94+
request := oci_database_management.SummarizeJobExecutionsStatusesRequest{}
95+
96+
if compartmentId, ok := s.D.GetOkExists("compartment_id"); ok {
97+
tmp := compartmentId.(string)
98+
request.CompartmentId = &tmp
99+
}
100+
101+
if endTime, ok := s.D.GetOkExists("end_time"); ok {
102+
tmp := endTime.(string)
103+
request.EndTime = &tmp
104+
}
105+
106+
if id, ok := s.D.GetOkExists("id"); ok {
107+
tmp := id.(string)
108+
request.Id = &tmp
109+
}
110+
111+
if managedDatabaseGroupId, ok := s.D.GetOkExists("managed_database_group_id"); ok {
112+
tmp := managedDatabaseGroupId.(string)
113+
request.ManagedDatabaseGroupId = &tmp
114+
}
115+
116+
if managedDatabaseId, ok := s.D.GetOkExists("managed_database_id"); ok {
117+
tmp := managedDatabaseId.(string)
118+
request.ManagedDatabaseId = &tmp
119+
}
120+
121+
if name, ok := s.D.GetOkExists("name"); ok {
122+
tmp := name.(string)
123+
request.Name = &tmp
124+
}
125+
126+
if startTime, ok := s.D.GetOkExists("start_time"); ok {
127+
tmp := startTime.(string)
128+
request.StartTime = &tmp
129+
}
130+
131+
request.RequestMetadata.RetryPolicy = getRetryPolicy(false, "database_management")
132+
133+
response, err := s.Client.SummarizeJobExecutionsStatuses(context.Background(), request)
134+
if err != nil {
135+
return err
136+
}
137+
138+
s.Res = &response
139+
return nil
140+
}
141+
142+
func (s *DatabaseManagementJobExecutionsStatusDataSourceCrud) SetData() error {
143+
if s.Res == nil {
144+
return nil
145+
}
146+
147+
s.D.SetId(GenerateDataSourceHashID("DatabaseManagementJobExecutionsStatusDataSource-", DatabaseManagementJobExecutionsStatusDataSource(), s.D))
148+
149+
items := []interface{}{}
150+
for _, item := range s.Res.Items {
151+
items = append(items, JobExecutionsStatusSummaryToMap(item))
152+
}
153+
s.D.Set("items", items)
154+
155+
return nil
156+
}
157+
158+
func JobExecutionsStatusSummaryToMap(obj oci_database_management.JobExecutionsStatusSummary) map[string]interface{} {
159+
result := map[string]interface{}{}
160+
161+
if obj.Count != nil {
162+
result["count"] = int(*obj.Count)
163+
}
164+
165+
result["status"] = string(obj.Status)
166+
167+
return result
168+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
// Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package oci
5+
6+
import (
7+
"fmt"
8+
"testing"
9+
10+
"time"
11+
12+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
13+
"github.com/hashicorp/terraform-plugin-sdk/terraform"
14+
15+
"github.com/terraform-providers/terraform-provider-oci/httpreplay"
16+
)
17+
18+
var (
19+
jobExecutionsStatusSingularDataSourceRepresentation = map[string]interface{}{
20+
"compartment_id": Representation{repType: Required, create: `${var.compartment_id}`},
21+
"end_time": Representation{repType: Required, create: `${var.end_time}`},
22+
"start_time": Representation{repType: Required, create: `${var.start_time}`},
23+
"managed_database_id": Representation{repType: Required, create: `${var.tenancy_ocid}testManagedDatabase0`},
24+
}
25+
26+
jobExecutionsStatusDataSourceRepresentation = map[string]interface{}{
27+
"compartment_id": Representation{repType: Required, create: `${var.compartment_id}`},
28+
"end_time": Representation{repType: Required, create: `${var.end_time}`},
29+
"start_time": Representation{repType: Required, create: `${var.start_time}`},
30+
"managed_database_id": Representation{repType: Required, create: `${var.tenancy_ocid}testManagedDatabase0`},
31+
}
32+
33+
JobExecutionsStatusResourceConfig = ""
34+
)
35+
36+
// issue-routing-tag: database_management/default
37+
func TestDatabaseManagementJobExecutionsStatusResource_basic(t *testing.T) {
38+
httpreplay.SetScenario("TestDatabaseManagementJobExecutionsStatusResource_basic")
39+
defer httpreplay.SaveScenario()
40+
41+
provider := testAccProvider
42+
config := testProviderConfig()
43+
44+
compartmentId := getEnvSettingWithBlankDefault("compartment_ocid")
45+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
46+
47+
endTime := time.Now().UTC()
48+
startTime := endTime.Add(-12 * time.Hour)
49+
endTimeVariableStr := fmt.Sprintf("variable \"end_time\" { default = \"%s\" }\n", endTime.Format("2006-01-02T15:04:05.000Z"))
50+
startTimeVariableStr := fmt.Sprintf("variable \"start_time\" { default = \"%s\" }\n", startTime.Format("2006-01-02T15:04:05.000Z"))
51+
52+
datasourceName := "data.oci_database_management_job_executions_statuses.test_job_executions_statuses"
53+
singularDatasourceName := "data.oci_database_management_job_executions_status.test_job_executions_status"
54+
55+
saveConfigContent("", "", "", t)
56+
57+
resource.Test(t, resource.TestCase{
58+
PreCheck: func() { testAccPreCheck(t) },
59+
Providers: map[string]terraform.ResourceProvider{
60+
"oci": provider,
61+
},
62+
Steps: []resource.TestStep{
63+
// verify datasource
64+
{
65+
Config: config +
66+
generateDataSourceFromRepresentationMap("oci_database_management_job_executions_statuses", "test_job_executions_statuses", Required, Create, jobExecutionsStatusDataSourceRepresentation) +
67+
compartmentIdVariableStr + JobExecutionsStatusResourceConfig + endTimeVariableStr + startTimeVariableStr,
68+
Check: ComposeAggregateTestCheckFuncWrapper(
69+
resource.TestCheckResourceAttr(datasourceName, "compartment_id", compartmentId),
70+
resource.TestCheckResourceAttrSet(datasourceName, "end_time"),
71+
resource.TestCheckResourceAttrSet(datasourceName, "managed_database_id"),
72+
resource.TestCheckResourceAttrSet(datasourceName, "start_time"),
73+
74+
resource.TestCheckResourceAttrSet(datasourceName, "job_executions_status_summary_collection.#"),
75+
),
76+
},
77+
// verify singular datasource
78+
{
79+
Config: config +
80+
generateDataSourceFromRepresentationMap("oci_database_management_job_executions_status", "test_job_executions_status", Required, Create, jobExecutionsStatusSingularDataSourceRepresentation) +
81+
compartmentIdVariableStr + JobExecutionsStatusResourceConfig + endTimeVariableStr + startTimeVariableStr,
82+
Check: ComposeAggregateTestCheckFuncWrapper(
83+
resource.TestCheckResourceAttr(singularDatasourceName, "compartment_id", compartmentId),
84+
resource.TestCheckResourceAttrSet(singularDatasourceName, "end_time"),
85+
resource.TestCheckResourceAttrSet(singularDatasourceName, "managed_database_id"),
86+
resource.TestCheckResourceAttrSet(singularDatasourceName, "start_time"),
87+
88+
resource.TestCheckResourceAttrSet(singularDatasourceName, "items.#"),
89+
),
90+
},
91+
},
92+
})
93+
}

0 commit comments

Comments
 (0)