Skip to content

Commit ae4425b

Browse files
Carlos RiveraMaxrovr
authored andcommitted
Added - Support for Stack Monitoring Maintenance Windows
1 parent 0ac855b commit ae4425b

20 files changed

+2555
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
variable "tenancy_ocid" {}
5+
variable "user_ocid" {}
6+
variable "fingerprint" {}
7+
variable "private_key_path" {}
8+
variable "region" {}
9+
variable "compartment_ocid" {}
10+
variable "resource_id_for_maintwin" {}
11+
12+
variable "maintenance_window_name" {
13+
default = "TestMaintenanceWindows"
14+
}
15+
16+
variable "maintenance_window_schedule_schedule_type" {
17+
default = "ONE_TIME"
18+
}
19+
20+
variable "maintenance_window_schedule_time_maintenance_window_start" {
21+
default = "2024-10-25T16:00:01.001Z"
22+
}
23+
24+
variable "maintenance_window_schedule_time_maintenance_window_end" {
25+
default = "2024-10-26T16:00:01.001Z"
26+
}
27+
28+
provider "oci" {
29+
tenancy_ocid = var.tenancy_ocid
30+
user_ocid = var.user_ocid
31+
fingerprint = var.fingerprint
32+
private_key_path = var.private_key_path
33+
region = var.region
34+
}
35+
36+
resource "oci_stack_monitoring_maintenance_window" "test_maintenance_window_example" {
37+
#Required
38+
compartment_id = var.compartment_ocid
39+
name = var.maintenance_window_name
40+
41+
resources {
42+
resource_id = var.resource_id_for_maintwin
43+
are_members_included = true
44+
}
45+
46+
schedule {
47+
schedule_type = var.maintenance_window_schedule_schedule_type
48+
time_maintenance_window_start = var.maintenance_window_schedule_time_maintenance_window_start
49+
time_maintenance_window_end = var.maintenance_window_schedule_time_maintenance_window_end
50+
}
51+
52+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
variable "tenancy_ocid" {}
5+
variable "user_ocid" {}
6+
variable "fingerprint" {}
7+
variable "private_key_path" {}
8+
variable "region" {}
9+
variable "maintenance_window_id" {}
10+
11+
12+
13+
provider "oci" {
14+
tenancy_ocid = var.tenancy_ocid
15+
user_ocid = var.user_ocid
16+
fingerprint = var.fingerprint
17+
private_key_path = var.private_key_path
18+
region = var.region
19+
}
20+
21+
resource "oci_stack_monitoring_maintenance_windows_retry_failed_operation" "test_maintenance_windows_retry_failed_operation" {
22+
#Required
23+
maintenance_window_id = var.maintenance_window_id
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
variable "tenancy_ocid" {}
5+
variable "user_ocid" {}
6+
variable "fingerprint" {}
7+
variable "private_key_path" {}
8+
variable "region" {}
9+
variable "maintenance_window_id" {}
10+
11+
12+
13+
provider "oci" {
14+
tenancy_ocid = var.tenancy_ocid
15+
user_ocid = var.user_ocid
16+
fingerprint = var.fingerprint
17+
private_key_path = var.private_key_path
18+
region = var.region
19+
}
20+
21+
resource "oci_stack_monitoring_maintenance_windows_stop" "test_maintenance_windows_stop" {
22+
#Required
23+
maintenance_window_id = var.maintenance_window_id
24+
}

internal/integrationtest/stack_monitoring_maintenance_window_test.go

Lines changed: 358 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package integrationtest
5+
6+
import (
7+
"fmt"
8+
"strconv"
9+
"testing"
10+
11+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
12+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
13+
14+
"github.com/oracle/terraform-provider-oci/httpreplay"
15+
"github.com/oracle/terraform-provider-oci/internal/acctest"
16+
17+
"github.com/oracle/terraform-provider-oci/internal/resourcediscovery"
18+
19+
"github.com/oracle/terraform-provider-oci/internal/utils"
20+
)
21+
22+
var (
23+
StackMonitoringMaintenanceWindowsRetryFailedOperationRepresentation = map[string]interface{}{
24+
"maintenance_window_id": acctest.Representation{RepType: acctest.Required, Create: `${var.mw_id_to_retry}`},
25+
}
26+
27+
StackMonitoringMaintenanceWindowsRetryFailedOperationResourceDependencies = ""
28+
)
29+
30+
// issue-routing-tag: stack_monitoring/default
31+
func TestStackMonitoringMaintenanceWindowsRetryFailedOperationResource_basic(t *testing.T) {
32+
httpreplay.SetScenario("TestStackMonitoringMaintenanceWindowsRetryFailedOperationResource_basic")
33+
defer httpreplay.SaveScenario()
34+
35+
config := acctest.ProviderTestConfig()
36+
37+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
38+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
39+
40+
mwIdToRetry := utils.GetEnvSettingWithBlankDefault("mw_id_retry")
41+
mwIdToRetryVariableStr := fmt.Sprintf("variable \"mw_id_to_retry\" { default = \"%s\" }\n", mwIdToRetry)
42+
43+
resourceName := "oci_stack_monitoring_maintenance_windows_retry_failed_operation.test_maintenance_windows_retry_failed_operation"
44+
45+
var resId string
46+
// Save TF content to Create resource with only required properties. This has to be exactly the same as the config part in the create step in the test.
47+
acctest.SaveConfigContent(config+compartmentIdVariableStr+StackMonitoringMaintenanceWindowsRetryFailedOperationResourceDependencies+
48+
acctest.GenerateResourceFromRepresentationMap("oci_stack_monitoring_maintenance_windows_retry_failed_operation", "test_maintenance_windows_retry_failed_operation", acctest.Required, acctest.Create, StackMonitoringMaintenanceWindowsRetryFailedOperationRepresentation), "stackmonitoring", "maintenanceWindowsRetryFailedOperation", t)
49+
50+
acctest.ResourceTest(t, nil, []resource.TestStep{
51+
// verify Create
52+
{
53+
Config: config + compartmentIdVariableStr + mwIdToRetryVariableStr + StackMonitoringMaintenanceWindowsRetryFailedOperationResourceDependencies +
54+
acctest.GenerateResourceFromRepresentationMap("oci_stack_monitoring_maintenance_windows_retry_failed_operation", "test_maintenance_windows_retry_failed_operation", acctest.Required, acctest.Create, StackMonitoringMaintenanceWindowsRetryFailedOperationRepresentation),
55+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
56+
resource.TestCheckResourceAttrSet(resourceName, "maintenance_window_id"),
57+
58+
func(s *terraform.State) (err error) {
59+
resId, err = acctest.FromInstanceState(s, resourceName, "id")
60+
if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment {
61+
if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil {
62+
return errExport
63+
}
64+
}
65+
return err
66+
},
67+
),
68+
},
69+
})
70+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package integrationtest
5+
6+
import (
7+
"fmt"
8+
"strconv"
9+
"testing"
10+
11+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
12+
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
13+
14+
"github.com/oracle/terraform-provider-oci/httpreplay"
15+
"github.com/oracle/terraform-provider-oci/internal/acctest"
16+
17+
"github.com/oracle/terraform-provider-oci/internal/resourcediscovery"
18+
19+
"github.com/oracle/terraform-provider-oci/internal/utils"
20+
)
21+
22+
var (
23+
StackMonitoringMaintenanceWindowsStopRepresentation = map[string]interface{}{
24+
"maintenance_window_id": acctest.Representation{RepType: acctest.Required, Create: `${var.mw_id_to_stop}`},
25+
}
26+
27+
StackMonitoringMaintenanceWindowsStopResourceDependencies = ""
28+
)
29+
30+
// issue-routing-tag: stack_monitoring/default
31+
func TestStackMonitoringMaintenanceWindowsStopResource_basic(t *testing.T) {
32+
httpreplay.SetScenario("TestStackMonitoringMaintenanceWindowsStopResource_basic")
33+
defer httpreplay.SaveScenario()
34+
35+
config := acctest.ProviderTestConfig()
36+
37+
mwIdToStop := utils.GetEnvSettingWithBlankDefault("mw_id_stop")
38+
mwIdToStopVariableStr := fmt.Sprintf("variable \"mw_id_to_stop\" { default = \"%s\" }\n", mwIdToStop)
39+
40+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
41+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
42+
43+
resourceName := "oci_stack_monitoring_maintenance_windows_stop.test_maintenance_windows_stop"
44+
45+
var resId string
46+
// Save TF content to Create resource with only required properties. This has to be exactly the same as the config part in the create step in the test.
47+
acctest.SaveConfigContent(config+compartmentIdVariableStr+StackMonitoringMaintenanceWindowsStopResourceDependencies+
48+
acctest.GenerateResourceFromRepresentationMap("oci_stack_monitoring_maintenance_windows_stop", "test_maintenance_windows_stop", acctest.Required, acctest.Create, StackMonitoringMaintenanceWindowsStopRepresentation), "stackmonitoring", "maintenanceWindowsStop", t)
49+
50+
acctest.ResourceTest(t, nil, []resource.TestStep{
51+
// verify Create
52+
{
53+
Config: config + compartmentIdVariableStr + mwIdToStopVariableStr + StackMonitoringMaintenanceWindowsStopResourceDependencies +
54+
acctest.GenerateResourceFromRepresentationMap("oci_stack_monitoring_maintenance_windows_stop", "test_maintenance_windows_stop", acctest.Required, acctest.Create, StackMonitoringMaintenanceWindowsStopRepresentation),
55+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
56+
resource.TestCheckResourceAttrSet(resourceName, "maintenance_window_id"),
57+
58+
func(s *terraform.State) (err error) {
59+
resId, err = acctest.FromInstanceState(s, resourceName, "id")
60+
if isEnableExportCompartment, _ := strconv.ParseBool(utils.GetEnvSettingWithDefault("enable_export_compartment", "true")); isEnableExportCompartment {
61+
if errExport := resourcediscovery.TestExportCompartmentWithResourceName(&resId, &compartmentId, resourceName); errExport != nil {
62+
return errExport
63+
}
64+
}
65+
return err
66+
},
67+
),
68+
},
69+
})
70+
}

internal/service/stack_monitoring/register_datasource.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ func RegisterDatasource() {
1414
tfresource.RegisterDatasource("oci_stack_monitoring_discovery_job", StackMonitoringDiscoveryJobDataSource())
1515
tfresource.RegisterDatasource("oci_stack_monitoring_discovery_job_logs", StackMonitoringDiscoveryJobLogsDataSource())
1616
tfresource.RegisterDatasource("oci_stack_monitoring_discovery_jobs", StackMonitoringDiscoveryJobsDataSource())
17+
tfresource.RegisterDatasource("oci_stack_monitoring_maintenance_window", StackMonitoringMaintenanceWindowDataSource())
18+
tfresource.RegisterDatasource("oci_stack_monitoring_maintenance_windows", StackMonitoringMaintenanceWindowsDataSource())
1719
tfresource.RegisterDatasource("oci_stack_monitoring_metric_extension", StackMonitoringMetricExtensionDataSource())
1820
tfresource.RegisterDatasource("oci_stack_monitoring_metric_extensions", StackMonitoringMetricExtensionsDataSource())
1921
tfresource.RegisterDatasource("oci_stack_monitoring_monitored_resource", StackMonitoringMonitoredResourceDataSource())

internal/service/stack_monitoring/register_resource.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ func RegisterResource() {
99
tfresource.RegisterResource("oci_stack_monitoring_baselineable_metric", StackMonitoringBaselineableMetricResource())
1010
tfresource.RegisterResource("oci_stack_monitoring_config", StackMonitoringConfigResource())
1111
tfresource.RegisterResource("oci_stack_monitoring_discovery_job", StackMonitoringDiscoveryJobResource())
12+
tfresource.RegisterResource("oci_stack_monitoring_maintenance_window", StackMonitoringMaintenanceWindowResource())
13+
tfresource.RegisterResource("oci_stack_monitoring_maintenance_windows_retry_failed_operation", StackMonitoringMaintenanceWindowsRetryFailedOperationResource())
14+
tfresource.RegisterResource("oci_stack_monitoring_maintenance_windows_stop", StackMonitoringMaintenanceWindowsStopResource())
1215
tfresource.RegisterResource("oci_stack_monitoring_metric_extension", StackMonitoringMetricExtensionResource())
1316
tfresource.RegisterResource("oci_stack_monitoring_metric_extension_metric_extension_on_given_resources_management", StackMonitoringMetricExtensionMetricExtensionOnGivenResourcesManagementResource())
1417
tfresource.RegisterResource("oci_stack_monitoring_metric_extensions_test_management", StackMonitoringMetricExtensionsTestManagementResource())

internal/service/stack_monitoring/stack_monitoring_export.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,37 @@ var exportStackMonitoringProcessSetHints = &tf_export.TerraformResourceHints{
130130
},
131131
}
132132

133+
var exportStackMonitoringMaintenanceWindowHints = &tf_export.TerraformResourceHints{
134+
ResourceClass: "oci_stack_monitoring_maintenance_window",
135+
DatasourceClass: "oci_stack_monitoring_maintenance_windows",
136+
DatasourceItemsAttr: "maintenance_window_collection",
137+
IsDatasourceCollection: true,
138+
ResourceAbbreviation: "maintenance_window",
139+
RequireResourceRefresh: true,
140+
DiscoverableLifecycleStates: []string{
141+
string(oci_stack_monitoring.MaintenanceWindowLifecycleStateActive),
142+
string(oci_stack_monitoring.MaintenanceWindowLifecycleStateNeedsAttention),
143+
},
144+
}
145+
146+
var exportStackMonitoringMaintenanceWindowsRetryFailedOperationHints = &tf_export.TerraformResourceHints{
147+
ResourceClass: "oci_stack_monitoring_maintenance_windows_retry_failed_operation",
148+
ResourceAbbreviation: "maintenance_windows_retry_failed_operation",
149+
}
150+
151+
var exportStackMonitoringMaintenanceWindowsStopHints = &tf_export.TerraformResourceHints{
152+
ResourceClass: "oci_stack_monitoring_maintenance_windows_stop",
153+
ResourceAbbreviation: "maintenance_windows_stop",
154+
}
155+
133156
var stackMonitoringResourceGraph = tf_export.TerraformResourceGraph{
134157
"oci_identity_compartment": {
135158
{TerraformResourceHints: exportStackMonitoringDiscoveryJobHints},
136159
{TerraformResourceHints: exportStackMonitoringConfigHints},
137160
{TerraformResourceHints: exportStackMonitoringMetricExtensionHints},
138161
{TerraformResourceHints: exportStackMonitoringBaselineableMetricHints},
139162
{TerraformResourceHints: exportStackMonitoringProcessSetHints},
163+
{TerraformResourceHints: exportStackMonitoringMaintenanceWindowHints},
140164
},
141165
"oci_stack_monitoring_monitored_resource": {
142166
{

0 commit comments

Comments
 (0)