Skip to content

Commit 33d0bc9

Browse files
Terraform Team Automationvsin12
authored andcommitted
Bug Fix - Fix APM Synthetic service vantage points schema
1 parent ddabc52 commit 33d0bc9

File tree

6 files changed

+85
-29
lines changed

6 files changed

+85
-29
lines changed

examples/apm/apm_synthetics/monitors/monitor.tf

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,12 @@ variable "monitor_maintenance_window_schedule_time_started" {
148148
default = "2024-12-18T22:47:12.654Z"
149149
}
150150

151-
variable "vantage_points" {
152-
default = ["OraclePublic-us-ashburn-1"]
151+
variable "monitor_vantage_points_name" {
152+
default = "OraclePublic-us-ashburn-1"
153+
}
154+
155+
variable "monitor_vantage_points_param_display_name" {
156+
default = "US East (Ashburn)"
153157
}
154158

155159
provider "oci" {
@@ -166,7 +170,12 @@ resource "oci_apm_synthetics_monitor" "test_monitor" {
166170
display_name = var.monitor_display_name
167171
monitor_type = var.monitor_monitor_type
168172
repeat_interval_in_seconds = var.monitor_repeat_interval_in_seconds
169-
vantage_points = var.vantage_points
173+
vantage_points {
174+
#Required
175+
name = var.monitor_vantage_points_name
176+
#Optional
177+
display_name = var.monitor_vantage_points_param_display_name
178+
}
170179

171180
#Optional
172181
configuration {
@@ -264,7 +273,7 @@ variable "script_parameters_param_name" {
264273
}
265274

266275
variable "script_parameters_param_value" {
267-
default = "myTest1"
276+
default = ""
268277
}
269278

270279

internal/integrationtest/apm_synthetics_monitor_test.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,12 @@ var (
3939
}
4040

4141
ApmSyntheticsApmSyntheticsmonitorDataSourceRepresentation = map[string]interface{}{
42-
"apm_domain_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_apm_apm_domain.test_apm_domain.id}`},
43-
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `displayName`, Update: `displayName2`},
44-
"is_maintenance_window_active": acctest.Representation{RepType: acctest.Optional, Create: `false`},
45-
"is_maintenance_window_set": acctest.Representation{RepType: acctest.Optional, Create: `false`},
46-
"monitor_type": acctest.Representation{RepType: acctest.Optional, Create: `SCRIPTED_BROWSER`},
47-
"script_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_apm_synthetics_script.test_script.id}`},
48-
"status": acctest.Representation{RepType: acctest.Optional, Create: `ENABLED`, Update: `DISABLED`},
49-
"filter": acctest.RepresentationGroup{RepType: acctest.Required, Group: ApmSyntheticsmonitorDataSourceFilterRepresentation}}
42+
"apm_domain_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_apm_apm_domain.test_apm_domain.id}`},
43+
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `displayName`, Update: `displayName2`},
44+
"monitor_type": acctest.Representation{RepType: acctest.Optional, Create: `SCRIPTED_BROWSER`},
45+
"script_id": acctest.Representation{RepType: acctest.Optional, Create: `${oci_apm_synthetics_script.test_script.id}`},
46+
"status": acctest.Representation{RepType: acctest.Optional, Create: `ENABLED`, Update: `DISABLED`},
47+
"filter": acctest.RepresentationGroup{RepType: acctest.Required, Group: ApmSyntheticsmonitorDataSourceFilterRepresentation}}
5048
ApmSyntheticsmonitorDataSourceFilterRepresentation = map[string]interface{}{
5149
"name": acctest.Representation{RepType: acctest.Required, Create: `display_name`},
5250
"values": acctest.Representation{RepType: acctest.Required, Create: []string{`${oci_apm_synthetics_monitor.test_monitor.display_name}`}},
@@ -57,7 +55,7 @@ var (
5755
"display_name": acctest.Representation{RepType: acctest.Required, Create: `displayName`, Update: `displayName2`},
5856
"monitor_type": acctest.Representation{RepType: acctest.Required, Create: `SCRIPTED_BROWSER`},
5957
"repeat_interval_in_seconds": acctest.Representation{RepType: acctest.Required, Create: `600`, Update: `1200`},
60-
"vantage_points": acctest.Representation{RepType: acctest.Required, Create: []string{`OraclePublic-us-ashburn-1`}},
58+
"vantage_points": acctest.RepresentationGroup{RepType: acctest.Required, Group: monitorVantagePointsRepresentation},
6159
"availability_configuration": acctest.RepresentationGroup{RepType: acctest.Optional, Group: ApmSyntheticsMonitorAvailabilityConfigurationRepresentation},
6260
"defined_tags": acctest.Representation{RepType: acctest.Optional, Create: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "value")}`, Update: `${map("${oci_identity_tag_namespace.tag-namespace1.name}.${oci_identity_tag.tag1.name}", "updatedValue")}`},
6361
"freeform_tags": acctest.Representation{RepType: acctest.Optional, Create: map[string]string{"bar-key": "value"}, Update: map[string]string{"Department": "Accounting"}},
@@ -72,6 +70,10 @@ var (
7270
"configuration": acctest.RepresentationGroup{RepType: acctest.Optional, Group: ApmSyntheticsmonitorConfigurationRepresentation},
7371
"script_parameters": acctest.RepresentationGroup{RepType: acctest.Optional, Group: ApmSyntheticsmonitorScriptParametersRepresentation},
7472
}
73+
monitorVantagePointsRepresentation = map[string]interface{}{
74+
"name": acctest.Representation{RepType: acctest.Required, Create: `OraclePublic-us-ashburn-1`},
75+
"display_name": acctest.Representation{RepType: acctest.Optional, Create: `US East (Ashburn)`},
76+
}
7577

7678
ApmSyntheticsmonitorConfigurationRepresentation = map[string]interface{}{
7779
"dns_configuration": acctest.RepresentationGroup{RepType: acctest.Optional, Group: ApmSyntheticsmonitorConfigurationDnsConfigurationRepresentation},
@@ -182,7 +184,7 @@ func TestApmSyntheticsMonitorResource_basic(t *testing.T) {
182184
resource.TestCheckResourceAttr(resourceName, "timeout_in_seconds", "60"),
183185
resource.TestCheckResourceAttrSet(resourceName, "vantage_point_count"),
184186
resource.TestCheckResourceAttr(resourceName, "vantage_points.#", "1"),
185-
resource.TestCheckResourceAttrSet(resourceName, "vantage_points.0"),
187+
resource.TestCheckResourceAttrSet(resourceName, "vantage_points.0.name"),
186188

187189
func(s *terraform.State) (err error) {
188190
resId, err = acctest.FromInstanceState(s, resourceName, "id")
@@ -242,7 +244,7 @@ func TestApmSyntheticsMonitorResource_basic(t *testing.T) {
242244
resource.TestCheckResourceAttr(resourceName, "timeout_in_seconds", "120"),
243245
resource.TestCheckResourceAttrSet(resourceName, "vantage_point_count"),
244246
resource.TestCheckResourceAttr(resourceName, "vantage_points.#", "1"),
245-
resource.TestCheckResourceAttrSet(resourceName, "vantage_points.0"),
247+
resource.TestCheckResourceAttrSet(resourceName, "vantage_points.0.name"),
246248

247249
func(s *terraform.State) (err error) {
248250
resId2, err = acctest.FromInstanceState(s, resourceName, "id")
@@ -262,8 +264,6 @@ func TestApmSyntheticsMonitorResource_basic(t *testing.T) {
262264
Check: resource.ComposeAggregateTestCheckFunc(
263265
resource.TestCheckResourceAttrSet(datasourceName, "apm_domain_id"),
264266
resource.TestCheckResourceAttr(datasourceName, "display_name", "displayName2"),
265-
resource.TestCheckResourceAttr(datasourceName, "is_maintenance_window_active", "false"),
266-
resource.TestCheckResourceAttr(datasourceName, "is_maintenance_window_set", "false"),
267267
resource.TestCheckResourceAttr(datasourceName, "monitor_type", "SCRIPTED_BROWSER"),
268268
resource.TestCheckResourceAttrSet(datasourceName, "script_id"),
269269
resource.TestCheckResourceAttr(datasourceName, "status", "DISABLED"),
@@ -320,7 +320,7 @@ func TestApmSyntheticsMonitorResource_basic(t *testing.T) {
320320
resource.TestCheckResourceAttr(singularDatasourceName, "timeout_in_seconds", "120"),
321321
resource.TestCheckResourceAttrSet(singularDatasourceName, "vantage_point_count"),
322322
resource.TestCheckResourceAttr(singularDatasourceName, "vantage_points.#", "1"),
323-
resource.TestCheckResourceAttrSet(singularDatasourceName, "vantage_points.0"),
323+
resource.TestCheckResourceAttrSet(singularDatasourceName, "vantage_points.0.name"),
324324
),
325325
},
326326
// verify resource import

internal/service/apm_synthetics/apm_synthetics_monitor_data_source.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ func (s *ApmSyntheticsMonitorDataSourceCrud) SetData() error {
173173

174174
vantagePoints := []interface{}{}
175175
for _, item := range s.Res.VantagePoints {
176-
vantagePoints = append(vantagePoints, item.Name)
176+
vantagePoints = append(vantagePoints, VantagePointInfoToMap(item))
177177
}
178178
s.D.Set("vantage_points", vantagePoints)
179179

internal/service/apm_synthetics/apm_synthetics_monitor_resource.go

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,20 @@ func ApmSyntheticsMonitorResource() *schema.Resource {
5656
Required: true,
5757
MaxItems: 50,
5858
MinItems: 1,
59-
Elem: &schema.Schema{
60-
Type: schema.TypeString,
59+
Elem: &schema.Resource{
60+
Schema: map[string]*schema.Schema{
61+
// Required
62+
"name": {
63+
Type: schema.TypeString,
64+
Required: true,
65+
},
66+
67+
// Optional
68+
"display_name": {
69+
Type: schema.TypeString,
70+
Optional: true,
71+
},
72+
},
6173
},
6274
},
6375

@@ -701,9 +713,14 @@ func (s *ApmSyntheticsMonitorResourceCrud) Create() error {
701713
interfaces := vantagePoints.([]interface{})
702714
tmp := make([]string, len(interfaces))
703715
for i := range interfaces {
704-
if interfaces[i] != nil {
705-
tmp[i] = interfaces[i].(string)
716+
stateDataIndex := i
717+
fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "vantage_points", stateDataIndex)
718+
converted, err := s.mapToVantagePointInfo(fieldKeyFormat)
719+
if err != nil {
720+
return err
706721
}
722+
name := converted.Name
723+
tmp[i] = *name
707724
}
708725
if len(tmp) != 0 || s.D.HasChange("vantage_points") {
709726
request.VantagePoints = tmp
@@ -879,9 +896,14 @@ func (s *ApmSyntheticsMonitorResourceCrud) Update() error {
879896
interfaces := vantagePoints.([]interface{})
880897
tmp := make([]string, len(interfaces))
881898
for i := range interfaces {
882-
if interfaces[i] != nil {
883-
tmp[i] = interfaces[i].(string)
899+
stateDataIndex := i
900+
fieldKeyFormat := fmt.Sprintf("%s.%d.%%s", "vantage_points", stateDataIndex)
901+
converted, err := s.mapToVantagePointInfo(fieldKeyFormat)
902+
if err != nil {
903+
return err
884904
}
905+
name := converted.Name
906+
tmp[i] = *name
885907
}
886908
if len(tmp) != 0 || s.D.HasChange("vantage_points") {
887909
request.VantagePoints = tmp
@@ -1021,7 +1043,7 @@ func (s *ApmSyntheticsMonitorResourceCrud) SetData() error {
10211043

10221044
vantagePoints := []interface{}{}
10231045
for _, item := range s.Res.VantagePoints {
1024-
vantagePoints = append(vantagePoints, item.Name)
1046+
vantagePoints = append(vantagePoints, VantagePointInfoToMap(item))
10251047
}
10261048
s.D.Set("vantage_points", vantagePoints)
10271049

@@ -1606,7 +1628,7 @@ func MonitorSummaryToMap(obj oci_apm_synthetics.MonitorSummary) map[string]inter
16061628

16071629
vantagePoints := []interface{}{}
16081630
for _, item := range obj.VantagePoints {
1609-
vantagePoints = append(vantagePoints, item.Name)
1631+
vantagePoints = append(vantagePoints, VantagePointInfoToMap(item))
16101632
}
16111633
result["vantage_points"] = vantagePoints
16121634

@@ -1859,3 +1881,19 @@ func MonitorScriptParameterInfoToMap(obj oci_apm_synthetics.MonitorScriptParamet
18591881

18601882
return result
18611883
}
1884+
1885+
func (s *ApmSyntheticsMonitorResourceCrud) mapToVantagePointInfo(fieldKeyFormat string) (oci_apm_synthetics.VantagePointInfo, error) {
1886+
result := oci_apm_synthetics.VantagePointInfo{}
1887+
1888+
if name, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "name")); ok {
1889+
tmp := name.(string)
1890+
result.Name = &tmp
1891+
}
1892+
1893+
if displayName, ok := s.D.GetOkExists(fmt.Sprintf(fieldKeyFormat, "display_name")); ok {
1894+
tmp := displayName.(string)
1895+
result.DisplayName = &tmp
1896+
}
1897+
1898+
return result, nil
1899+
}

internal/service/apm_synthetics/apm_synthetics_script_resource.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,9 @@ func ScriptParameterInfoToMap(obj oci_apm_synthetics.ScriptParameterInfo) map[st
590590
result["script_parameter"] = ScriptParameters
591591
result["is_secret"] = bool(*obj.ScriptParameter.IsSecret)
592592
result["param_name"] = string(*obj.ScriptParameter.ParamName)
593-
result["param_value"] = string(*obj.ScriptParameter.ParamValue)
593+
if obj.ScriptParameter.ParamValue != nil {
594+
result["param_value"] = string(*obj.ScriptParameter.ParamValue)
595+
}
594596

595597
}
596598

website/docs/r/apm_synthetics_monitor.html.markdown

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,12 @@ resource "oci_apm_synthetics_monitor" "test_monitor" {
2222
display_name = var.monitor_display_name
2323
monitor_type = var.monitor_monitor_type
2424
repeat_interval_in_seconds = var.monitor_repeat_interval_in_seconds
25-
vantage_points = var.vantage_points
25+
vantage_points {
26+
#Required
27+
name = var.monitor_vantage_points_name
28+
#Optional
29+
display_name = var.monitor_vantage_points_param_display_name
30+
}
2631
2732
#Optional
2833
availability_configuration {
@@ -131,6 +136,8 @@ The following arguments are supported:
131136
* `monitor_type` - (Required) Type of monitor.
132137
* `repeat_interval_in_seconds` - (Required) (Updatable) Interval in seconds after the start time when the job should be repeated. Minimum repeatIntervalInSeconds should be 300 seconds.
133138
* `vantage_points` - (Required) (Updatable) A list of vantage points from which to execute the monitor. Use /publicVantagePoints to fetch public vantage points.
139+
* `display_name` - Unique name that can be edited. The name should not contain any confidential information.
140+
* `name` - Name of the vantage point.
134141
* `configuration` - (Optional) (Updatable) Details of monitor configuration.
135142
* `config_type` - (Optional) (Updatable) Type of configuration.
136143
* `dns_configuration` - (Optional) (Updatable) Dns settings.

0 commit comments

Comments
 (0)