diff --git a/newrelic/structures_newrelic_synthetics_all_monitors_validation_helpers.go b/newrelic/structures_newrelic_synthetics_all_monitors_validation_helpers.go
index 254635ffa..08031b8a2 100644
--- a/newrelic/structures_newrelic_synthetics_all_monitors_validation_helpers.go
+++ b/newrelic/structures_newrelic_synthetics_all_monitors_validation_helpers.go
@@ -4,8 +4,9 @@ import (
"context"
"errors"
"fmt"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"strings"
+
+ "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func validateSyntheticMonitorAttributes(ctx context.Context, d *schema.ResourceDiff, meta interface{}) error {
@@ -43,8 +44,6 @@ func validateSyntheticMonitorAttributes(ctx context.Context, d *schema.ResourceD
func validateSyntheticMonitorLegacyRuntimeAttributesOnCreate(d *schema.ResourceDiff) []error {
var runtimeAttributesValidationErrors []error
- isSyntheticMonitorCreated := d.Id() != ""
-
_, runtimeTypeInConfig := d.GetChange(SyntheticsRuntimeTypeAttrLabel)
isRuntimeTypeNil := runtimeTypeInConfig == ""
@@ -59,7 +58,7 @@ func validateSyntheticMonitorLegacyRuntimeAttributesOnCreate(d *schema.ResourceD
// in this first condition, we're trying to make sure 'use_unsupported_legacy_runtime' is only being used with the legacy runtime
// and not with any sort of runtime values which signify the new runtime (since the intent of using this attribute
- // is to skip Terraform validation to create monitors in the legacy runtime after the August 26 EOL if exempt by the API)
+ // is to skip Terraform validation to use new/existing monitors in the legacy runtime after the October 22 '24 EOL if exempt by the API)
if useLegacyRuntime {
if !syntheticMonitorConfigHasObsoleteRuntime(runtimeTypeInConfig, runtimeTypeVersionInConfig) &&
(!isRuntimeTypeNil || !isRuntimeTypeVersionNil) {
@@ -80,12 +79,14 @@ Please use '%s' only with runtime attributes with values corresponding to the le
}
// apply further validation to block usage of the legacy runtime with monitors owing to the EOL, ONLY if 'use_unsupported_legacy_runtime' is false
- // (which it is, by default, unless made true by the customer) AND ONLY for a new monitor and not an existing one, as the August 26
- // Legacy Runtime EOL (the first phase) only applies to new monitors. Validation would include checking if runtime attribute are nil or if they
- // are not nil and comprise values corresponding to the legacy runtime; as they would lead to creating monitors in the legacy runtime either way,
- // and both of these cases in create requests of monitors would be blocked by the API via an error; which we're trying to reflect in Terraform.
+ // (which it is, by default, unless made true by the customer) and for both new and existing monitors, as the October 22 '24 EOL disallows usage
+ // of the Legacy Runtime by all kinds of monitors.
+
+ // Validation would include checking if runtime attribute values are nil or if they are not nil and comprise values corresponding to the legacy runtime;
+ // as they would lead to creating/updating monitors in the legacy runtime either way, and in both of these cases, create/update requests of monitors
+ // would be blocked by the API via an error; which we're trying to reflect in Terraform.
// also, this error scenario should not apply to SIMPLE Synthetic Monitors, as they do not support using runtime attributes.
- if !isSyntheticMonitorCreated && !useLegacyRuntime && !isSimpleMonitor {
+ if !useLegacyRuntime && !isSimpleMonitor {
// if 'use_unsupported_legacy_runtime' is false (which it is, by default), check if 'runtime_type' and 'runtime_type_version' are nil
// if either of these two runtime attributes are nil, throw a relevant error to explain that this is no longer allowed
@@ -156,9 +157,9 @@ func buildSyntheticsLegacyObsoleteRuntimeError(
}
func buildSyntheticsLegacyRuntimeValidationError() string {
- return `with new monitors starting August 26, 2024;
-creating new monitors with the legacy runtime/without the new runtime is no longer supported.
-This is in relation with the upcoming Synthetics Legacy Runtime EOL on October 22, 2024; see this for more details:
+ return `with new and existing monitors starting October 22, 2024;
+creating and updating monitors comprising legacy runtime values/without the new runtime is *no longer supported*.
+This is in relation with the Synthetics Legacy Runtime EOL which has taken effect on October 22, 2024; see the following for more details:
https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm
https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide
`
diff --git a/newrelic/structures_newrelic_synthetics_all_monitors_validation_helpers_test.go b/newrelic/structures_newrelic_synthetics_all_monitors_validation_helpers_test.go
deleted file mode 100644
index cb6a2f1ac..000000000
--- a/newrelic/structures_newrelic_synthetics_all_monitors_validation_helpers_test.go
+++ /dev/null
@@ -1,1040 +0,0 @@
-//go:build integration
-
-package newrelic
-
-import (
- "fmt"
- "regexp"
- "testing"
-
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
-)
-
-func TestAccNewRelicSyntheticsStepMonitor_CreateWithLegacyRuntimeAttributes_Errors(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Step Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsStepMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Step Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsStepMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Step Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsStepMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyObsoleteRuntimeError(
- SyntheticsRuntimeTypeAttrLabel,
- SyntheticsRuntimeTypeVersionAttrLabel,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- ).Error(),
- ),
- },
- },
- })
-}
-
-func TestAccNewRelicSyntheticsStepMonitor_CreateWithLegacyRuntimeAttributes_ErrorsSkippedByUseLegacyRuntime(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
- newRuntimeVersion := "100"
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Step Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsStepMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Step Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsStepMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Step Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsStepMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Step Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime (the version though, is not of the legacy runtime)
- // the expected outcome is to see an error as use_unsupported_legacy_runtime is now added to the config with the value 'true' and we're trying to use runtime_type_version with the new runtime
- {
- Config: testAccNewRelicSyntheticsStepMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- newRuntimeVersion,
- true,
- true,
- ),
- ExpectError: regexp.MustCompile(
- fmt.Sprintf(`Please use '%s' only with runtime attributes with values corresponding to the legacy runtime.`,
- SyntheticsUseLegacyRuntimeAttrLabel,
- ),
- ),
- },
- },
- })
-}
-
-func TestAccNewRelicSyntheticsSimpleBrowserMonitor_CreateWithLegacyRuntimeAttributes_Errors(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Simple Browser Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsSimpleBrowserMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Simple Browser Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsSimpleBrowserMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Simple Browser Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsSimpleBrowserMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyObsoleteRuntimeError(
- SyntheticsRuntimeTypeAttrLabel,
- SyntheticsRuntimeTypeVersionAttrLabel,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- ).Error(),
- ),
- },
- },
- })
-}
-
-func TestAccNewRelicSyntheticsSimpleBrowserMonitor_CreateWithLegacyRuntimeAttributes_ErrorsSkippedByUseLegacyRuntime(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
- newRuntimeVersion := "100"
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Simple Browser Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsSimpleBrowserMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Simple Browser Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsSimpleBrowserMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Simple Browser Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsSimpleBrowserMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Simple Browser Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime (the version though, is not of the legacy runtime)
- // the expected outcome is to see an error as use_unsupported_legacy_runtime is now added to the config with the value 'true' and we're trying to use runtime_type_version with the new runtime
- {
- Config: testAccNewRelicSyntheticsSimpleBrowserMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- newRuntimeVersion,
- true,
- true,
- ),
- ExpectError: regexp.MustCompile(
- fmt.Sprintf(`Please use '%s' only with runtime attributes with values corresponding to the legacy runtime.`,
- SyntheticsUseLegacyRuntimeAttrLabel,
- ),
- ),
- },
- },
- })
-}
-
-func TestAccNewRelicSyntheticsScriptedBrowserMonitor_CreateWithLegacyRuntimeAttributes_Errors(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Scripted Browser Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- false,
- "SCRIPT_BROWSER",
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Scripted Browser Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- false,
- "SCRIPT_BROWSER",
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Scripted Browser Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- false,
- "SCRIPT_BROWSER",
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyObsoleteRuntimeError(
- SyntheticsRuntimeTypeAttrLabel,
- SyntheticsRuntimeTypeVersionAttrLabel,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- ).Error(),
- ),
- },
- },
- })
-}
-
-func TestAccNewRelicSyntheticsScriptedBrowserMonitor_CreateWithLegacyRuntimeAttributes_ErrorsSkippedByUseLegacyRuntime(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
- newRuntimeVersion := "100"
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Scripted Browser Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- true,
- "SCRIPT_BROWSER",
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Scripted Browser Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- true,
- "SCRIPT_BROWSER",
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Scripted Browser Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- true,
- "SCRIPT_BROWSER",
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Scripted Browser Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime (the version though, is not of the legacy runtime)
- // the expected outcome is to see an error as use_unsupported_legacy_runtime is now added to the config with the value 'true' and we're trying to use runtime_type_version with the new runtime
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- newRuntimeVersion,
- true,
- true,
- "SCRIPT_BROWSER",
- ),
- ExpectError: regexp.MustCompile(
- fmt.Sprintf(`Please use '%s' only with runtime attributes with values corresponding to the legacy runtime.`,
- SyntheticsUseLegacyRuntimeAttrLabel,
- ),
- ),
- },
- },
- })
-}
-
-func TestAccNewRelicSyntheticsScriptedAPIMonitor_CreateWithLegacyRuntimeAttributes_Errors(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Scripted API Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- false,
- "SCRIPT_API",
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Scripted API Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- false,
- "SCRIPT_API",
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Scripted API Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- false,
- "SCRIPT_API",
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyObsoleteRuntimeError(
- SyntheticsRuntimeTypeAttrLabel,
- SyntheticsRuntimeTypeVersionAttrLabel,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- ).Error(),
- ),
- },
- },
- })
-}
-
-func TestAccNewRelicSyntheticsScriptedAPIMonitor_CreateWithLegacyRuntimeAttributes_ErrorsSkippedByUseLegacyRuntime(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
- newRuntimeVersion := "10"
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Scripted API Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- true,
- "SCRIPT_API",
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Scripted API Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- true,
- "SCRIPT_API",
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Scripted API Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- true,
- "SCRIPT_API",
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Scripted API Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime (the version though, is not of the legacy runtime)
- // the expected outcome is to see an error as use_unsupported_legacy_runtime is now added to the config with the value 'true' and we're trying to use runtime_type_version with the new runtime
- {
- Config: testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- newRuntimeVersion,
- true,
- true,
- "SCRIPT_API",
- ),
- ExpectError: regexp.MustCompile(
- fmt.Sprintf(`Please use '%s' only with runtime attributes with values corresponding to the legacy runtime.`,
- SyntheticsUseLegacyRuntimeAttrLabel,
- ),
- ),
- },
- },
- })
-}
-
-func TestAccNewRelicSyntheticsBrokenLinksMonitor_CreateWithLegacyRuntimeAttributes_Errors(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Broken Links Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsBrokenLinksMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Broken Links Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsBrokenLinksMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Broken Links Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsBrokenLinksMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyObsoleteRuntimeError(
- SyntheticsRuntimeTypeAttrLabel,
- SyntheticsRuntimeTypeVersionAttrLabel,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- ).Error(),
- ),
- },
- },
- })
-}
-
-func TestAccNewRelicSyntheticsBrokenLinksMonitor_CreateWithLegacyRuntimeAttributes_ErrorsSkippedByUseLegacyRuntime(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
- newRuntimeVersion := "10"
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Broken Links Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsBrokenLinksMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Broken Links Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsBrokenLinksMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Broken Links Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsBrokenLinksMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Broken Links Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime (the version though, is not of the legacy runtime)
- // the expected outcome is to see an error as use_unsupported_legacy_runtime is now added to the config with the value 'true' and we're trying to use runtime_type_version with the new runtime
- {
- Config: testAccNewRelicSyntheticsBrokenLinksMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- newRuntimeVersion,
- true,
- true,
- ),
- ExpectError: regexp.MustCompile(
- fmt.Sprintf(`Please use '%s' only with runtime attributes with values corresponding to the legacy runtime.`,
- SyntheticsUseLegacyRuntimeAttrLabel,
- ),
- ),
- },
- },
- })
-}
-
-func TestAccNewRelicSyntheticsCertCheckMonitor_CreateWithLegacyRuntimeAttributes_Errors(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Cert Check Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsCertCheckMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Cert Check Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsCertCheckMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyEmptyRuntimeError(SyntheticsRuntimeTypeAttrLabel).Error(),
- ),
- },
-
- // create a Cert Check Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see an error as there exists no use_unsupported_legacy_runtime in the configuration
- {
- Config: testAccNewRelicSyntheticsCertCheckMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- false,
- ),
- ExpectError: regexp.MustCompile(
- buildSyntheticsLegacyObsoleteRuntimeError(
- SyntheticsRuntimeTypeAttrLabel,
- SyntheticsRuntimeTypeVersionAttrLabel,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- ).Error(),
- ),
- },
- },
- })
-}
-
-func TestAccNewRelicSyntheticsCertCheckMonitor_CreateWithLegacyRuntimeAttributes_ErrorsSkippedByUseLegacyRuntime(t *testing.T) {
- rName := generateNameForIntegrationTestResource()
- newRuntimeVersion := "10"
-
- resource.ParallelTest(t, resource.TestCase{
- PreCheck: func() { testAccPreCheckEnvVars(t) },
- Providers: testAccProviders,
- CheckDestroy: testAccCheckNewRelicSyntheticsMonitorResourceDestroy,
- Steps: []resource.TestStep{
-
- // create a Cert Check Monitor with runtime attributes in the configuration as empty strings (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsCertCheckMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- true,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Cert Check Monitor with no runtime attributes in the configuration at all (i.e. Legacy Runtime)
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsCertCheckMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- "",
- "",
- false,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Cert Check Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime
- // the expected outcome is to see NO error as use_unsupported_legacy_runtime is now added to the config with the value 'true'
- {
- Config: testAccNewRelicSyntheticsCertCheckMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- SyntheticsChromeBrowserLegacyRuntimeTypeVersion,
- true,
- true,
- ),
- ExpectError: nil,
- ExpectNonEmptyPlan: true,
- PlanOnly: true,
- },
-
- // create a Cert Check Monitor with runtime attributes comprising non nil values, but corresponding to the legacy runtime (the version though, is not of the legacy runtime)
- // the expected outcome is to see an error as use_unsupported_legacy_runtime is now added to the config with the value 'true' and we're trying to use runtime_type_version with the new runtime
- {
- Config: testAccNewRelicSyntheticsCertCheckMonitor_CreateWithLegacyRuntimeAttributesConfig(
- rName,
- SyntheticsChromeBrowserRuntimeType,
- newRuntimeVersion,
- true,
- true,
- ),
- ExpectError: regexp.MustCompile(
- fmt.Sprintf(`Please use '%s' only with runtime attributes with values corresponding to the legacy runtime.`,
- SyntheticsUseLegacyRuntimeAttrLabel,
- ),
- ),
- },
- },
- })
-}
-
-func testAccNewRelicSyntheticsStepMonitor_CreateWithLegacyRuntimeAttributesConfig(
- name string,
- runtimeType string,
- runtimeTypeVersion string,
- runtimeAttributesExistInConfig bool,
- useLegacyRuntimeUnsupportedInConfig bool,
-) string {
- return fmt.Sprintf(`
- resource "newrelic_synthetics_step_monitor" "legacy_synthetics_step_monitor" {
- name = "%[1]s"
- period = "EVERY_DAY"
- status = "ENABLED"
- locations_public = ["US_WEST_2"]
- enable_screenshot_on_failure_and_script = true
- steps {
- ordinal = 0
- type = "NAVIGATE"
- values = ["https://google.com"]
- }
- `+testAccNewRelicSyntheticsAllMonitors_ConfigureRuntimeAttributesInConfig(
- runtimeType,
- runtimeTypeVersion,
- runtimeAttributesExistInConfig,
- useLegacyRuntimeUnsupportedInConfig,
- )+
- `
- }
-`,
- name,
- )
-}
-
-func testAccNewRelicSyntheticsSimpleBrowserMonitor_CreateWithLegacyRuntimeAttributesConfig(
- name string,
- runtimeType string,
- runtimeTypeVersion string,
- runtimeAttributesExistInConfig bool,
- useLegacyRuntimeUnsupportedInConfig bool,
-) string {
- return fmt.Sprintf(`
- resource "newrelic_synthetics_monitor" "legacy_synthetics_monitor" {
- name = "%[1]s"
- period = "EVERY_DAY"
- type = "BROWSER"
- status = "ENABLED"
- locations_public = ["US_WEST_2"]
- enable_screenshot_on_failure_and_script = true
- `+testAccNewRelicSyntheticsAllMonitors_ConfigureRuntimeAttributesInConfig(
- runtimeType,
- runtimeTypeVersion,
- runtimeAttributesExistInConfig,
- useLegacyRuntimeUnsupportedInConfig,
- )+
- `
- }
-`,
- name,
- )
-}
-
-func testAccNewRelicSyntheticsScriptedMonitor_CreateWithLegacyRuntimeAttributesConfig(
- name string,
- runtimeType string,
- runtimeTypeVersion string,
- runtimeAttributesExistInConfig bool,
- useLegacyRuntimeUnsupportedInConfig bool,
- scriptType string,
-) string {
- return fmt.Sprintf(`
- resource "newrelic_synthetics_script_monitor" "legacy_synthetics_script_monitor" {
- name = "%[1]s"
- period = "EVERY_DAY"
- type = "%[2]s"
- status = "ENABLED"
- locations_public = ["US_WEST_2"]
- enable_screenshot_on_failure_and_script = true
- script = "console.log('');"
- `+testAccNewRelicSyntheticsAllMonitors_ConfigureRuntimeAttributesInConfig(
- runtimeType,
- runtimeTypeVersion,
- runtimeAttributesExistInConfig,
- useLegacyRuntimeUnsupportedInConfig,
- )+
- `
- }
-`,
- name,
- scriptType,
- )
-}
-
-func testAccNewRelicSyntheticsBrokenLinksMonitor_CreateWithLegacyRuntimeAttributesConfig(
- name string,
- runtimeType string,
- runtimeTypeVersion string,
- runtimeAttributesExistInConfig bool,
- useLegacyRuntimeUnsupportedInConfig bool,
-) string {
- return fmt.Sprintf(`
- resource "newrelic_synthetics_broken_links_monitor" "legacy_synthetics_broken_links_monitor" {
- name = "%[1]s"
- uri = "https://www.one.example.com"
- locations_public = ["AP_SOUTH_1"]
- period = "EVERY_6_HOURS"
- status = "ENABLED"
- tag {
- key = "some_key"
- values = ["some_value"]
- }
- `+testAccNewRelicSyntheticsAllMonitors_ConfigureRuntimeAttributesInConfig(
- runtimeType,
- runtimeTypeVersion,
- runtimeAttributesExistInConfig,
- useLegacyRuntimeUnsupportedInConfig,
- )+
- `
- }
-`,
- name,
- )
-}
-
-func testAccNewRelicSyntheticsCertCheckMonitor_CreateWithLegacyRuntimeAttributesConfig(
- name string,
- runtimeType string,
- runtimeTypeVersion string,
- runtimeAttributesExistInConfig bool,
- useLegacyRuntimeUnsupportedInConfig bool,
-) string {
- return fmt.Sprintf(`
- resource "newrelic_synthetics_cert_check_monitor" "legacy_synthetics_cert_check_monitor" {
- name = "%[1]s"
- domain = "www.example.com"
- locations_public = ["AP_SOUTH_1"]
- certificate_expiration = "10"
- period = "EVERY_6_HOURS"
- status = "ENABLED"
- tag {
- key = "some_key"
- values = ["some_value"]
- }
- `+testAccNewRelicSyntheticsAllMonitors_ConfigureRuntimeAttributesInConfig(
- runtimeType,
- runtimeTypeVersion,
- runtimeAttributesExistInConfig,
- useLegacyRuntimeUnsupportedInConfig,
- )+
- `
- }
-`,
- name,
- )
-}
-
-func testAccNewRelicSyntheticsAllMonitors_ConfigureRuntimeAttributesInConfig(
- runtimeType string,
- runtimeTypeVersion string,
- runtimeAttributesExistInConfig bool,
- useLegacyRuntimeUnsupportedInConfig bool,
-) string {
- if runtimeAttributesExistInConfig && !useLegacyRuntimeUnsupportedInConfig {
- return fmt.Sprintf(`
- runtime_type = "%s"
- runtime_type_version = "%s"
-
-`,
- runtimeType,
- runtimeTypeVersion)
- } else if !runtimeAttributesExistInConfig && useLegacyRuntimeUnsupportedInConfig {
- return fmt.Sprintf(`
- %s = true
-`,
- SyntheticsUseLegacyRuntimeAttrLabel)
- } else if runtimeAttributesExistInConfig && useLegacyRuntimeUnsupportedInConfig {
- runtimeAttributesString := fmt.Sprintf(`
- runtime_type = "%s"
- runtime_type_version = "%s"
-
-`,
- runtimeType,
- runtimeTypeVersion)
-
- useLegacyRuntimeUnsupportedString := fmt.Sprintf(`
- %s = true
-`,
- SyntheticsUseLegacyRuntimeAttrLabel)
- return runtimeAttributesString + useLegacyRuntimeUnsupportedString
- } else {
- return ""
- }
-
-}
diff --git a/website/docs/guides/migration_guide_v3.html.markdown b/website/docs/guides/migration_guide_v3.html.markdown
index 2814cd5e7..758f94515 100644
--- a/website/docs/guides/migration_guide_v3.html.markdown
+++ b/website/docs/guides/migration_guide_v3.html.markdown
@@ -98,9 +98,9 @@ resource "newrelic_synthetics_script_monitor" "monitor" {
}
name = "test-monitor"
period = "EVERY_HOUR"
- runtime_type_version = ""
- runtime_type = ""
- script_language = ""
+ runtime_type = "CHROME_BROWSER"
+ runtime_type_version = "100"
+ script_language = "JAVASCRIPT"
status = "ENABLED"
type = "SCRIPT_BROWSER"
script = "console.log('hello, world')"
diff --git a/website/docs/guides/synthetics_legacy_runtime_eol_migration_guide.html.markdown b/website/docs/guides/synthetics_legacy_runtime_eol_migration_guide.html.markdown
index bafb20c2b..bff3cb525 100644
--- a/website/docs/guides/synthetics_legacy_runtime_eol_migration_guide.html.markdown
+++ b/website/docs/guides/synthetics_legacy_runtime_eol_migration_guide.html.markdown
@@ -5,39 +5,45 @@ sidebar_current: "synthetics-legacy-runtime-eol-migration-guide"
description: |-
Use this guide to find details on the end-of-life of the Legacy Runtime of Synthetic Monitors, implications seen by customers maintaining Synthetic Monitor resources via the New Relic Terraform Provider (running on the legacy runtime), and actions to be taken prior to the EOL to avoid consequences.
---
-## Synthetic Legacy Runtime EOL (Upcoming): Implications and Actions Needed 📢
+## Synthetic Legacy Runtime EOL: Implications and Actions Needed 🚨
-New Relic Synthetics announced earlier this year **the end of life (EOL) of the Synthetics Legacy Runtime** (along with Containerized Private Minions - CPMs), **which is scheduled to occur on** October 22, 2024. After this date, **all monitors running on the legacy runtime will be transitioned to the new runtime**, potentially resulting in interruptions of Synthetic checks from those monitors if their configurations are not compatible with the new runtime. Additionally, changes to **no longer permit *new* Synthetic Monitors to be created without the new runtime have taken effect in the Synthetics API on August 26, 2024**; these changes have also been reflected in the New Relic Terraform Provider starting v3.43.0 to disallow the creation of new monitors without the new runtime (in the legacy runtime).
+As announced by New Relic Synthetics earlier this year, the end-of-life of the **Synthetics Legacy Runtime** and Containerized Private Minions took effect on October 22, 2024, implying that support for using the deprecated Synthetics Legacy Runtime with **new and existing** Synthetic monitors officially ended as of October 22, 2024. As a consequence of this API change, all requests associated with Synthetic Monitors (except Ping Monitors) going out of the New Relic Terraform Provider will be blocked by an API error if they include values corresponding to the legacy runtime or blank runtime values.
-These timelines and implications [have been communicated](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) by New Relic Synthetics (also via customer communications) and via the New Relic Terraform Provider, including [the GitHub repository of the provider](https://github.com/newrelic/terraform-provider-newrelic/issues/2673) and the documentation for all Synthetic Monitor resources starting with [v3.36.1](https://registry.terraform.io/providers/newrelic/newrelic/3.36.1/docs/resources/synthetics_script_monitor) of the provider. In light of this, customers are required to update any monitors running on the legacy runtime to the new runtime as soon as possible (prior to the EOL) to avoid any potential interruptions of Synthetic checks.
+Following these changes, starting with v3.51.0 of the New Relic Terraform Provider, configuration of **new and existing** Synthetic monitors without runtime attributes (or) comprising runtime attributes signifying the legacy runtime will be deemed invalid (this applies to all Synthetic monitor resources, except `newrelic_synthetics_monitor` with type `SIMPLE`). If your monitors' configuration is not updated with new runtime values, you will see the consequences stated here.
-From the perspective of a customer who has configured Synthetic monitors running on the legacy runtime via the New Relic Terraform Provider, the actions needed to prevent the aforementioned implications are somewhat more specific to the provider. This specificity arises from the fact that any monitors maintained via Terraform that continue to run on the legacy runtime after the EOL will experience a drift at the EOL, indicating that runtime attributes with values corresponding to the new runtime are absent from the monitor's configuration (or are present with legacy runtime values), as Synthetics will have migrated all legacy runtime monitors to the new runtime. In addition to this, at the EOL, if a `terraform apply` is performed on such monitors (which do not include runtime attributes with values corresponding to the new runtime), an error would be thrown by the API, disallowing the operation performed on the monitor.
+These timelines and implications [were communicated](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) by New Relic Synthetics (also via customer communications) and via the New Relic Terraform Provider, including [the GitHub repository of the provider](https://github.com/newrelic/terraform-provider-newrelic/issues/2673), the documentation for all Synthetic Monitor resources starting with [v3.36.1](https://registry.terraform.io/providers/newrelic/newrelic/3.36.1/docs/resources/synthetics_script_monitor) of the provider and this guide. New Synthetic monitors created after August 26, 2024 already adhere to these restrictions, as part of the first phase of the EOL.
-To ensure a smooth transition, the following guide outlines the actions to be taken by customers who continue to maintain monitors running on the legacy runtime via Terraform, in order to avoid such drift, errors and similar unforeseen repercussions after the EOL.
+We kindly recommend that you upgrade your Synthetic Monitors to the new runtime as soon as possible if they are still using the legacy runtime, to avoid seeing the aforementioned consequences and potential interruptions to Synthetic checks. Please refer to this guide for more Terraform-specific details of the impact, changes needed to Terraform configuration of monitors not using the new runtime, and more information.
+
+You would not be affected by the EOL if your Synthetic monitors' Terraform configuration comprises new runtime values.
+
+## Navigating through this Guide
+
+For a customer who previously configured Synthetic monitors running on the legacy runtime via the New Relic Terraform Provider (and has not yet shifted monitors to the new runtime), the actions needed to prevent the aforementioned implications are somewhat more specific to the provider. This specificity arises from the fact that any monitors maintained via Terraform that continue to run on the legacy runtime will experience a drift, indicating that runtime attributes with values corresponding to the new runtime are absent from the monitor's configuration (or are present with legacy runtime values), as Synthetics has migrated all legacy runtime monitors to the new runtime, in accordance with the EOL. Running a `terraform apply` on such monitors (which do not include runtime attributes with values corresponding to the new runtime) would also result in an error thrown by the API, disallowing the operation performed on the monitor.
+
+Since the end-of-life has already taken place on October 22, 2024; the following guide outlines the actions to be taken by customers who continue to maintain monitors running on the legacy runtime via Terraform, to ensure a smooth transition and avoid such drift, errors and similar unforeseen repercussions.
A quick summary to help you navigate through this document is as follows -
-- TL;DR - if you're already aware of the consequences of the EOL and would like to find values of runtime attributes to add/replace in your configuration to upgrade your monitors to the new runtime, see the table in the following section.
- - After the EOL, monitors running on the legacy runtime would be moved to the new runtime and would experience consequences briefly stated in the paragraph above - interruption of Synthetic checks, drift in Terraform and errors upon trying to use monitors without the new runtime, if these monitors are Terraform-maintained. See **Implications, Action Needed** below for more details on the exact implications.
- - In order to prevent this, one would need to move all monitors running on the the legacy runtime to the new runtime, prior to the EOL. How does one confirm which of their monitors are still running on the legacy runtime? See the **How do I Identify the Runtime of My Monitor?** section below.
- - Given these monitors are Terraform maintained, how does one move their monitors to the new runtime while also making use of the Runtime Upgrades UI in New Relic to validate if their legacy runtime monitors are fit to run in the new runtime? See the **Syncing Updates made to Monitors in the Legacy Runtime made via the Runtime Upgrades UI with Terraform Configuration** section below.
+- TL;DR - if you're already aware of the consequences of the EOL and would like to find values of runtime attributes to add/replace in your configuration to upgrade your monitors to the new runtime, see the table in [this section](#1-identifying-the-change-via-the-runtime-upgrades-ui-making-the-change-via-the-terraform-configuration-of-the-monitor).
+ - After the EOL has occurred on October 22, 2024, monitors running on the legacy runtime have been moved to the new runtime. This would lead to consequences briefly stated in the paragraph above - interruption of Synthetic checks, drift in Terraform and errors upon trying to use monitors without the new runtime, if these monitors are Terraform-maintained. See [**Implications, Action Needed**](#implications-action-needed) below for more details on the exact implications.
+ - In order to avoid these consequences, one would need to move all monitors running on the legacy runtime to the new runtime. How does one confirm which of their monitors are still running on the legacy runtime? See the [**How do I Identify the Runtime of My Monitor?**](#how-do-i-identify-the-runtime-of-my-monitor) section below.
+ - Given these monitors are Terraform maintained, how does one move their monitors to the new runtime while also making use of the Runtime Upgrades UI in New Relic to validate if their legacy runtime monitors are fit to run in the new runtime? See the [**Syncing Updates made to Monitors in the Legacy Runtime made via the Runtime Upgrades UI with Terraform Configuration**](#syncing-updates-made-to-monitors-in-the-legacy-runtime-made-via-the-runtime-upgrades-ui-with-terraform-configuration) section below.
## Implications, Action Needed
--> **NOTE** Please note that these (upcoming) consequences apply to any **existing monitors** (monitors already created) **which are still running on the Legacy Runtime**. Changes to **restrict new monitors from using the legacy runtime have *already* taken effect in the Synthetics API** on August 26, 2024. Changes to reflect the same behaviour in the New Relic Terraform Provider have been released with **v3.43.0**, implying that starting v3.43.0, operations to create new monitors in the legacy runtime (i.e. without runtime attributes comprising values corresponding to the _new_ runtime; see table below) would be disallowed by the provider. Using any older versions of the New Relic Terraform Provider (< 3.43.0) to create monitors in the legacy runtime would result in a failure of `terraform apply`, caused by a similar error thrown by the GraphQL mutation, disallowing creation of monitors in the legacy runtime.
-
-- If your monitor continues to use the legacy runtime and is not upgraded to the new runtime prior to the end of life (EOL) on October 22, 2024, your monitor will not be able to run checks after the EOL if the configuration of your monitors is not compatible with the new runtime. For example, with scripted monitors, if the script is not compatible with the new runtime, Synthetic checks on your monitor will no longer function. New monitors are no longer allowed to use the legacy runtime, starting August 26, 2024.
-- As New Relic Synthetics will move all monitors running on the legacy runtime to the new runtime at the EOL, with the API consequently updating parameters of the monitors to signify the new runtime, if your monitor is maintained via Terraform and its Terraform configuration does not include runtime attributes with values corresponding to the new runtime (i.e., continues to use the legacy runtime) at the EOL,
+- If your monitor continues to use the legacy runtime, since the Legacy Runtime EOL has taken effect on October 22, 2024; your monitor will not be able to run Synthetic checks, if the configuration of your monitors is not compatible with the new runtime. For example, with scripted monitors, if the script is not compatible with the new runtime, Synthetic checks on your monitor will no longer function. These restrictions apply to both new and existing monitors, as a consequence of the EOL.
+- As New Relic Synthetics has moved all monitors running on the legacy runtime to the new runtime at the EOL, with the API consequently having had updated parameters of the monitors to signify the new runtime, if your monitor is maintained via Terraform and its Terraform configuration does not (yet) include runtime attributes with values corresponding to the new runtime (i.e., continues to use the legacy runtime) at the EOL,
- Upon trying to perform a `terraform plan`, you will see a drift, indicating that your monitor has been moved to the new runtime.
- - Upon trying to perform a `terraform apply` on this monitor without updates to include runtime attributes with new runtime values, an error will be thrown by the Synthetics API, disallowing customers from using the legacy runtime.
-- In addition to the above, two releases of the New Relic Terraform Provider will be made, coinciding with the two phases of the EOL (stated in the first section of this page), to reflect runtime attribute validation to be performed by the API. Specifically,
- - A release has been performed on August 26, 2024, (**v3.43.0**) which includes changes to display an error (only for new monitors, and not existing ones) if the Terraform configuration of the monitor to be created does not include runtime attributes with new runtime values, as new monitors will no longer be allowed to use the legacy runtime starting August 26, 2024.
- - A similar release will occur on October 22, 2024 (at the EOL) to include similar changes for all types of monitors (new and existing), as all monitors will not be allowed to use the legacy runtime after the EOL.
- - As customers upgrade to these versions of the provider (and subsequent versions), the changes stated above will apply to the configuration of their Synthetic monitors. For all other preceding versions of the provider, using monitors without runtime attributes would lead to an error thrown by the API instead, as stated in the second point above.
+ - Upon trying to perform a `terraform apply` on this monitor without updates to include runtime attributes with new runtime values, an error will be thrown by the Synthetics API, stating that usage of the legacy runtime is no longer supported.
+- In addition to the above, two releases of the New Relic Terraform Provider have been made, coinciding with the two phases of the EOL (stated in the first section of this page), to reflect runtime attribute validation to be performed by the API. Specifically,
+ - A release was performed on August 26, 2024, (**v3.43.0**) which includes changes to display an error (only for new monitors, and not existing ones) if the Terraform configuration of the monitor to be created does not include runtime attributes with new runtime values, as support for allowing new monitors to be created in the legacy runtime was discontinued on August 26, 2024.
+ - A subsequent release was performed on October 22, 2024 (**v3.51.0**) to coincide with the final phase of the EOL and display a similar error for both new and existing monitors, in alignment with the changes made to Synthetics APIs at the EOL.
+ - As customers upgrade to these versions of the provider (and subsequent versions), the changes stated above will apply to the configuration of their Synthetic monitors. For all other preceding versions of the provider, using monitors without runtime attributes/with the legacy runtime would still lead to an error thrown by the API instead, as stated in the second point above.
-In order to prevent these consequences, kindly upgrade your monitors to the new runtime as soon as possible, before the EOL.
+To prevent these consequences, kindly upgrade your monitors to the new runtime as soon as possible, if they are still using the legacy runtime.
-As required by the changes leading up to the Legacy Runtime EOL, in order to upgrade a monitor to the new runtime, one would need to ensure any private locations running jobs of the monitor operate on Synthetic Job Managers (SJMs) and not Containerized Private Minions (CPMs), as the EOL of the Legacy Runtime of Synthetic Monitors is also paired with the EOL of CPMs. Additionally, regardless of the locations monitors run in, with all kinds of scripted monitors in the legacy runtime, one would need to confirm that the script/other configuration of the monitor (which has been working in the legacy runtime) can also work in the new runtime with no changes needed. With these steps requiring manual intervention, i.e., customers needing to ensure from the Runtime Upgrades UI that these monitors are fit to run in the new runtime, if these monitors are managed via Terraform, changes are needed to the Terraform configuration as well, as a follow-up action. These changes include adding runtime attributes with values corresponding to the new runtime, or updating values of any existing runtime attributes to the new runtime.
+In order to upgrade a monitor to the new runtime, one would need to ensure any private locations running jobs of the monitor operate on Synthetic Job Managers (SJMs) and not Containerized Private Minions (CPMs), as the EOL of the Legacy Runtime of Synthetic Monitors is also paired with the EOL of CPMs. Additionally, regardless of the locations monitors run in, with all kinds of scripted monitors in the legacy runtime, one would need to confirm that the script/other configuration of the monitor (which has been working in the legacy runtime) can also work in the new runtime with no changes needed. With these steps requiring manual intervention, i.e., customers needing to ensure from the Runtime Upgrades UI that these monitors are fit to run in the new runtime, if these monitors are managed via Terraform, changes are needed to the Terraform configuration as well, as a follow-up action. These changes include adding runtime attributes with values corresponding to the new runtime, or updating values of any existing runtime attributes to the new runtime.
## How do I Identify the Runtime of My Monitor?
The following methods may be adopted to identify if your monitor(s) is/are running on the legacy runtime -
diff --git a/website/docs/index.html.markdown b/website/docs/index.html.markdown
index 3aa26751a..549dc580e 100644
--- a/website/docs/index.html.markdown
+++ b/website/docs/index.html.markdown
@@ -85,8 +85,10 @@ resources compared to which endpoint is in use.
| `newrelic_data_partition_rule` | NerdGraph | `api_key` |
| `newrelic_entity_tags` | NerdGraph | `api_key` |
| `newrelic_events_to_metrics_rule` | NerdGraph | `api_key` |
+| `newrelic_group` | NerdGraph | `api_key` |
| `newrelic_infra_alert_condition` | Infrastructure REST API | `api_key` |
| `newrelic_insights_event` | Insights API | `insights_insert_key` |
+| `newrelic_key_transaction` | NerdGraph | `api_key` |
| `newrelic_log_parsing_rule` | NerdGraph | `api_key` |
| `newrelic_notification_channel` | NerdGraph | `api_key` |
| `newrelic_notification_destination` | NerdGraph | `api_key` |
@@ -107,6 +109,7 @@ resources compared to which endpoint is in use.
| `newrelic_synthetics_script_monitor` | NerdGraph | `api_key` |
| `newrelic_synthetics_secure_credential` | NerdGraph | `api_key` |
| `newrelic_synthetics_step_monitor` | NerdGraph | `api_key` |
+| `newrelic_user` | NerdGraph | `api_key` |
| `newrelic_workflow` | NerdGraph | `api_key` |
| `newrelic_workload` | NerdGraph | `api_key` |
@@ -120,7 +123,7 @@ resources compared to which endpoint is in use.
| `newrelic_application` | RESTv2 | `api_key` |
| `newrelic_cloud_account` | NerdGraph | `api_key` |
| `newrelic_entity` | NerdGraph | `api_key` |
-| `newrelic_key_transaction` | RESTv2 | `api_key` |
+| `newrelic_key_transaction` | NerdGraph | `api_key` |
| `newrelic_notification_destination` | NerdGraph | `api_key` |
| `newrelic_obfuscation_expression` | NerdGraph | `api_key` |
| `newrelic_synthetics_private_location` | NerdGraph | `api_key` |
diff --git a/website/docs/r/synthetics_broken_links_monitor.html.markdown b/website/docs/r/synthetics_broken_links_monitor.html.markdown
index ebbd60123..fb9756660 100644
--- a/website/docs/r/synthetics_broken_links_monitor.html.markdown
+++ b/website/docs/r/synthetics_broken_links_monitor.html.markdown
@@ -8,10 +8,12 @@ description: |-
# Resource: newrelic\_synthetics\_broken\_links\_monitor
--> **WARNING:** Support for using the Synthetics Legacy Runtime (deprecated) with **new** Synthetic monitors **has officially ended as of August 26, 2024**. As a consequence, starting with v3.43.0 of the New Relic Terraform Provider, **new** Synthetic monitors **will no longer be allowed to use the legacy runtime** (this applies to all Synthetic monitor resources). Additionally, as previously communicated by New Relic, the Synthetics Legacy Runtime **will reach its end-of-life (EOL) on October 22, 2024**. In light of the above, we kindly recommend that you upgrade your Synthetic Monitors to the new runtime at the earliest, if they are still using the legacy runtime. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, action needed, relevant resources, and more.
-
Use this resource to create, update, and delete a Synthetics Broken Links monitor in New Relic.
+-> **IMPORTANT:** The **Synthetics Legacy Runtime** has reached its end-of-life on October 22, 2024. As a consequence, using the legacy runtime or blank runtime values with Synthetic monitor requests from the New Relic Terraform Provider will result in API errors. Starting with **v3.51.0** of the New Relic Terraform Provider, configurations of Synthetic monitors without runtime attributes or comprising legacy runtime values will be deemed invalid.
+
+If your Synthetic monitors' configuration is not updated already with new runtime values, upgrade as soon as possible to avoid these consequences. For more details and instructions, please see the detailed warning against `runtime_type` and `runtime_type_version` in the [**Argument Reference**](#runtime_type) section.
+
## Example Usage
```hcl
@@ -42,16 +44,17 @@ The following are the arguments supported by this resource.
* `locations_private` - (Required) The location the monitor will run from. Accepts a list of private location GUIDs. At least one of either `locations_public` or `locations_private` is required.
* `period` - (Required) The interval at which this monitor should run. Valid values are `EVERY_MINUTE`, `EVERY_5_MINUTES`, `EVERY_10_MINUTES`, `EVERY_15_MINUTES`, `EVERY_30_MINUTES`, `EVERY_HOUR`, `EVERY_6_HOURS`, `EVERY_12_HOURS`, or `EVERY_DAY`.
* `status` - (Required) The run state of the monitor. (`ENABLED` or `DISABLED`).
-
--> **WARNING:** As of February 29, 2024, Synthetic Monitors no longer support the `MUTED` status. Version **3.33.0** of the New Relic Terraform Provider is released to coincide with the `MUTED` status end-of-life. Consequently, the only valid values for `status` for all types of Synthetic Monitors are mentioned above. For additional information on alternatives to the `MUTED` status of Synthetic Monitors that can be managed via Terraform, please refer to [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/upcoming_synthetics_muted_status_eol_guide).
-* `runtime_type` - (Optional) The runtime that the monitor will use to run jobs.
-* `runtime_type_version` - (Optional) The specific version of the runtime type selected.
-
--> **NOTE:** Currently, the values of `runtime_type` and `runtime_type_version` supported by this resource are `NODE_API` and `16.10` respectively. In order to run the monitor in the new runtime, both `runtime_type` and `runtime_type_version` need to be specified; however, specifying neither of these attributes would set this monitor to use the legacy runtime. It may also be noted that the runtime opted for would only be effective with private locations. For public locations, all traffic has been shifted to the new runtime, irrespective of the selection made.
-
--> **WARNING:** Support for using the Synthetics Legacy Runtime (deprecated) with **new** Synthetic monitors **has officially ended as of August 26, 2024**. As a consequence, starting with v3.43.0 of the New Relic Terraform Provider, **new** Synthetic monitors **will no longer be allowed to use the legacy runtime** (this applies to all Synthetic monitor resources). Additionally, as previously communicated by New Relic, the Synthetics Legacy Runtime **will reach its end-of-life (EOL) on October 22, 2024**. In light of the above, we kindly recommend that you upgrade your Synthetic Monitors to the new runtime at the earliest, if they are still using the legacy runtime. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, action needed, relevant resources, and more.
-
* `tag` - (Optional) The tags that will be associated with the monitor. See [Nested tag blocks](#nested-tag-blocks) below for details
+* `runtime_type` - (Optional) The runtime that the monitor will use to run jobs (`NODE_API`).
+* `runtime_type_version` - (Optional) The specific version of the runtime type selected (`16.10`).
+
+-> **WARNING:** The end-of-life of the **Synthetics Legacy Runtime** took effect on October 22, 2024, implying that support for using the deprecated Synthetics Legacy Runtime with **new and existing** Synthetic monitors officially ended as of October 22, 2024. As a consequence of this API change, all requests associated with Synthetic Monitors (except Ping Monitors) going out of the New Relic Terraform Provider will be blocked by an API error if they include values corresponding to the legacy runtime or blank runtime values.
+
+Following these changes, starting with v3.51.0 of the New Relic Terraform Provider, configuration of **new and existing** Synthetic monitors without runtime attributes (or) comprising runtime attributes signifying the legacy runtime will be deemed invalid (this applies to all Synthetic monitor resources, except `newrelic_synthetics_monitor` with type `SIMPLE`). If your monitors' configuration is not updated with new runtime values, you will see the consequences stated here. New Synthetic monitors created after August 26, 2024 already adhere to these restrictions, as part of the first phase of the EOL.
+
+We kindly recommend that you upgrade your Synthetic Monitors to the new runtime as soon as possible if they are still using the legacy runtime, to avoid seeing the aforementioned consequences. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider (specifically, the table at the bottom of the guide, if you're looking for updates to be made to the configuration of Synthetic monitors) and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, actions needed, relevant resources, and more.
+
+You would not be affected by the EOL if your Synthetic monitors' Terraform configuration comprises new runtime values.
### Nested `tag` blocks
diff --git a/website/docs/r/synthetics_cert_check_monitor.html.markdown b/website/docs/r/synthetics_cert_check_monitor.html.markdown
index 39ab5a6c7..6677d261b 100644
--- a/website/docs/r/synthetics_cert_check_monitor.html.markdown
+++ b/website/docs/r/synthetics_cert_check_monitor.html.markdown
@@ -8,10 +8,13 @@ description: |-
# Resource: newrelic\_synthetics\_cert\_check\_monitor
--> **WARNING:** Support for using the Synthetics Legacy Runtime (deprecated) with **new** Synthetic monitors **has officially ended as of August 26, 2024**. As a consequence, starting with v3.43.0 of the New Relic Terraform Provider, **new** Synthetic monitors **will no longer be allowed to use the legacy runtime** (this applies to all Synthetic monitor resources). Additionally, as previously communicated by New Relic, the Synthetics Legacy Runtime **will reach its end-of-life (EOL) on October 22, 2024**. In light of the above, we kindly recommend that you upgrade your Synthetic Monitors to the new runtime at the earliest, if they are still using the legacy runtime. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, action needed, relevant resources, and more.
-
Use this resource to create, update, and delete a Synthetics Certificate Check monitor in New Relic.
+-> **IMPORTANT:** The **Synthetics Legacy Runtime** has reached its end-of-life on October 22, 2024. As a consequence, using the legacy runtime or blank runtime values with Synthetic monitor requests from the New Relic Terraform Provider will result in API errors. Starting with **v3.51.0** of the New Relic Terraform Provider, configurations of Synthetic monitors without runtime attributes or comprising legacy runtime values will be deemed invalid.
+
+If your Synthetic monitors' configuration is not updated already with new runtime values, upgrade as soon as possible to avoid these consequences. For more details and instructions, please see the detailed warning against `runtime_type` and `runtime_type_version` in the [**Argument Reference**](#runtime_type) section.
+
+
## Example Usage
```hcl
@@ -44,17 +47,17 @@ The following are the arguments supported by this resource.
* `certificate_expiration` - (Required) The desired number of remaining days until the certificate expires to trigger a monitor failure.
* `period` - (Required) The interval at which this monitor should run. Valid values are `EVERY_MINUTE`, `EVERY_5_MINUTES`, `EVERY_10_MINUTES`, `EVERY_15_MINUTES`, `EVERY_30_MINUTES`, `EVERY_HOUR`, `EVERY_6_HOURS`, `EVERY_12_HOURS`, or `EVERY_DAY`.
* `status` - (Required) The run state of the monitor. (`ENABLED` or `DISABLED`).
-
--> **WARNING:** Support for using the Synthetics Legacy Runtime (deprecated) with **new** Synthetic monitors **has officially ended as of August 26, 2024**. As a consequence, starting with v3.43.0 of the New Relic Terraform Provider, **new** Synthetic monitors **will no longer be allowed to use the legacy runtime** (this applies to all Synthetic monitor resources). Additionally, as previously communicated by New Relic, the Synthetics Legacy Runtime **will reach its end-of-life (EOL) on October 22, 2024**. In light of the above, we kindly recommend that you upgrade your Synthetic Monitors to the new runtime at the earliest, if they are still using the legacy runtime. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, action needed, relevant resources, and more.
-
-* `runtime_type` - (Optional) The runtime that the monitor will use to run jobs.
-* `runtime_type_version` - (Optional) The specific version of the runtime type selected.
-
--> **NOTE:** Currently, the values of `runtime_type` and `runtime_type_version` supported by this resource are `NODE_API` and `16.10` respectively. In order to run the monitor in the new runtime, both `runtime_type` and `runtime_type_version` need to be specified; however, specifying neither of these attributes would set this monitor to use the legacy runtime. It may also be noted that the runtime opted for would only be effective with private locations. For public locations, all traffic has been shifted to the new runtime, irrespective of the selection made.
-
--> **WARNING:** Support for using the Synthetics Legacy Runtime (deprecated) with **new** Synthetic monitors **has officially ended as of August 26, 2024**. As a consequence, starting with v3.43.0 of the New Relic Terraform Provider, **new** Synthetic monitors **will no longer be allowed to use the legacy runtime** (this applies to all Synthetic monitor resources). Additionally, as previously communicated by New Relic, the Synthetics Legacy Runtime **will reach its end-of-life (EOL) on October 22, 2024**. In light of the above, we kindly recommend that you upgrade your Synthetic Monitors to the new runtime at the earliest, if they are still using the legacy runtime. For more details on the EOL, action needed (specific to monitors using public and private locations), relevant resources, and more, please check out [this page](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm).
-
* `tag` - (Optional) The tags that will be associated with the monitor. See [Nested tag blocks](#nested-tag-blocks) below for details
+* `runtime_type` - (Optional) The runtime that the monitor will use to run jobs (`NODE_API`).
+* `runtime_type_version` - (Optional) The specific version of the runtime type selected (`16.10`).
+
+-> **WARNING:** The end-of-life of the **Synthetics Legacy Runtime** took effect on October 22, 2024, implying that support for using the deprecated Synthetics Legacy Runtime with **new and existing** Synthetic monitors officially ended as of October 22, 2024. As a consequence of this API change, all requests associated with Synthetic Monitors (except Ping Monitors) going out of the New Relic Terraform Provider will be blocked by an API error if they include values corresponding to the legacy runtime or blank runtime values.
+
+Following these changes, starting with v3.51.0 of the New Relic Terraform Provider, configuration of **new and existing** Synthetic monitors without runtime attributes (or) comprising runtime attributes signifying the legacy runtime will be deemed invalid (this applies to all Synthetic monitor resources, except `newrelic_synthetics_monitor` with type `SIMPLE`). If your monitors' configuration is not updated with new runtime values, you will see the consequences stated here. New Synthetic monitors created after August 26, 2024 already adhere to these restrictions, as part of the first phase of the EOL.
+
+We kindly recommend that you upgrade your Synthetic Monitors to the new runtime as soon as possible if they are still using the legacy runtime, to avoid seeing the aforementioned consequences. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider (specifically, the table at the bottom of the guide, if you're looking for updates to be made to the configuration of Synthetic monitors) and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, actions needed, relevant resources, and more.
+
+You would not be affected by the EOL if your Synthetic monitors' Terraform configuration comprises new runtime values.
### Nested `tag` blocks
diff --git a/website/docs/r/synthetics_monitor.html.markdown b/website/docs/r/synthetics_monitor.html.markdown
index e2219e800..668e085fe 100644
--- a/website/docs/r/synthetics_monitor.html.markdown
+++ b/website/docs/r/synthetics_monitor.html.markdown
@@ -8,10 +8,13 @@ description: |-
# Resource: newrelic\_synthetics\_monitor
--> **WARNING:** Support for using the Synthetics Legacy Runtime (deprecated) with **new** Synthetic monitors **has officially ended as of August 26, 2024**. As a consequence, starting with v3.43.0 of the New Relic Terraform Provider, **new** Synthetic monitors **will no longer be allowed to use the legacy runtime** (this applies to all Synthetic monitor resources). Additionally, as previously communicated by New Relic, the Synthetics Legacy Runtime **will reach its end-of-life (EOL) on October 22, 2024**. In light of the above, we kindly recommend that you upgrade your Synthetic Monitors to the new runtime at the earliest, if they are still using the legacy runtime. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, action needed, relevant resources, and more.
-
Use this resource to create, update, and delete a Simple or Browser Synthetics Monitor in New Relic.
+-> **IMPORTANT:** The **Synthetics Legacy Runtime** has reached its end-of-life on October 22, 2024. As a consequence, using the legacy runtime or blank runtime values with Synthetic monitor requests from the New Relic Terraform Provider will result in API errors. Starting with **v3.51.0** of the New Relic Terraform Provider, configurations of Synthetic monitors without runtime attributes or comprising legacy runtime values will be deemed invalid.
+
+If your Synthetic monitors' configuration is not updated already with new runtime values, upgrade as soon as possible to avoid these consequences. For more details and instructions, please see the detailed warning against `runtime_type` and `runtime_type_version` in the [**Argument Reference**](#runtime_type) section.
+
+
## Example Usage
```hcl
resource "newrelic_synthetics_monitor" "monitor" {
@@ -74,8 +77,6 @@ The following are the common arguments supported for `SIMPLE` and `BROWSER` moni
* `account_id`- (Optional) The account in which the Synthetics monitor will be created.
* `status` - (Required) The run state of the monitor. (`ENABLED` or `DISABLED`).
-
--> **WARNING:** As of February 29, 2024, Synthetic Monitors no longer support the `MUTED` status. Version **3.33.0** of the New Relic Terraform Provider is released to coincide with the `MUTED` status end-of-life. Consequently, the only valid values for `status` for all types of Synthetic Monitors are mentioned above. For additional information on alternatives to the `MUTED` status of Synthetic Monitors that can be managed via Terraform, please refer to [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/upcoming_synthetics_muted_status_eol_guide).
* `name` - (Required) The human-readable identifier for the monitor.
* `period` - (Required) The interval at which this monitor should run. Valid values are `EVERY_MINUTE`, `EVERY_5_MINUTES`, `EVERY_10_MINUTES`, `EVERY_15_MINUTES`, `EVERY_30_MINUTES`, `EVERY_HOUR`, `EVERY_6_HOURS`, `EVERY_12_HOURS`, or `EVERY_DAY`.
* `uri` - (Required) The URI the monitor runs against.
@@ -95,17 +96,25 @@ The `SIMPLE` monitor type supports the following additional arguments:
The `BROWSER` monitor type supports the following additional arguments:
* `enable_screenshot_on_failure_and_script` - (Optional) Capture a screenshot during job execution.
-* `runtime_type_version` - (Optional) The runtime type that the monitor will run. Valid value is `100`.
-* `runtime_type` - (Optional) The runtime type that the monitor will run. Valid value is `CHROME_BROWSER`
* `script_language` - (Optional) The programing language that should execute the script.
* `browsers` - (Optional) The multiple browsers list on which synthetic monitors will run. Valid values are `CHROME` and `FIREFOX`.
* `devices` - (Optional) The multiple devices list on which synthetic monitors will run. Valid values are `DESKTOP`, `MOBILE_LANDSCAPE`, `MOBILE_PORTRAIT`, `TABLET_LANDSCAPE` and `TABLET_PORTRAIT`.
-* `device_orientation` - (Optional) Device emulation orientation field. Valid values are `LANDSCAPE` and `PORTRAIT`. We recommend you to use `devices` field instead of `device_type`,`device_orientation` fields, as it allows you to select multiple combinations of device types and orientations.
-* `device_type` - (Optional) Device emulation type field. Valid values are `MOBILE` and `TABLET`. We recommend you to use `devices` field instead of `device_type`,`device_orientation` fields, as it allows you to select multiple combinations of device types and orientations.
+* `device_orientation` - (Optional) Device emulation orientation field. Valid values are `LANDSCAPE` and `PORTRAIT`.
+ * We recommend you to use `devices` field instead of `device_type`,`device_orientation` fields, as it allows you to select multiple combinations of device types and orientations.
+* `device_type` - (Optional) Device emulation type field. Valid values are `MOBILE` and `TABLET`.
+ * We recommend you to use `devices` field instead of `device_type`,`device_orientation` fields, as it allows you to select multiple combinations of device types and orientations.
+* `runtime_type` - (Optional) The runtime that the monitor will use to run jobs (`CHROME_BROWSER`).
+* `runtime_type_version` - (Optional) The specific version of the runtime type selected (`100`).
#### Deprecated Runtime
--> **WARNING:** Support for using the Synthetics Legacy Runtime (deprecated) with **new** Synthetic monitors **has officially ended as of August 26, 2024**. As a consequence, starting with v3.43.0 of the New Relic Terraform Provider, **new** Synthetic monitors **will no longer be allowed to use the legacy runtime** (this applies to all Synthetic monitor resources). Additionally, as previously communicated by New Relic, the Synthetics Legacy Runtime **will reach its end-of-life (EOL) on October 22, 2024**. In light of the above, we kindly recommend that you upgrade your Synthetic Monitors to the new runtime at the earliest, if they are still using the legacy runtime. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, action needed, relevant resources, and more.
+-> **WARNING:** The end-of-life of the **Synthetics Legacy Runtime** took effect on October 22, 2024, implying that support for using the deprecated Synthetics Legacy Runtime with **new and existing** Synthetic monitors officially ended as of October 22, 2024. As a consequence of this API change, all requests associated with Synthetic Monitors (except Ping Monitors) going out of the New Relic Terraform Provider will be blocked by an API error if they include values corresponding to the legacy runtime or blank runtime values.
+
+Following these changes, starting with v3.51.0 of the New Relic Terraform Provider, configuration of **new and existing** Synthetic monitors without runtime attributes (or) comprising runtime attributes signifying the legacy runtime will be deemed invalid (this applies to all Synthetic monitor resources, except `newrelic_synthetics_monitor` with type `SIMPLE`). If your monitors' configuration is not updated with new runtime values, you will see the consequences stated here. New Synthetic monitors created after August 26, 2024 already adhere to these restrictions, as part of the first phase of the EOL.
+
+We kindly recommend that you upgrade your Synthetic Monitors to the new runtime as soon as possible if they are still using the legacy runtime, to avoid seeing the aforementioned consequences. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider (specifically, the table at the bottom of the guide, if you're looking for updates to be made to the configuration of Synthetic monitors) and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, actions needed, relevant resources, and more.
+
+You would not be affected by the EOL if your Synthetic monitors' Terraform configuration comprises new runtime values.
### Example Usage
diff --git a/website/docs/r/synthetics_script_monitor.html.markdown b/website/docs/r/synthetics_script_monitor.html.markdown
index a8310ba6c..1fc193425 100644
--- a/website/docs/r/synthetics_script_monitor.html.markdown
+++ b/website/docs/r/synthetics_script_monitor.html.markdown
@@ -8,10 +8,13 @@ description: |-
# Resource: newrelic\_synthetics\_script\_monitor
--> **WARNING:** Support for using the Synthetics Legacy Runtime (deprecated) with **new** Synthetic monitors **has officially ended as of August 26, 2024**. As a consequence, starting with v3.43.0 of the New Relic Terraform Provider, **new** Synthetic monitors **will no longer be allowed to use the legacy runtime** (this applies to all Synthetic monitor resources). Additionally, as previously communicated by New Relic, the Synthetics Legacy Runtime **will reach its end-of-life (EOL) on October 22, 2024**. In light of the above, we kindly recommend that you upgrade your Synthetic Monitors to the new runtime at the earliest, if they are still using the legacy runtime. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, action needed, relevant resources, and more.
-
Use this resource to create update, and delete a Script API or Script Browser Synthetics Monitor in New Relic.
+-> **IMPORTANT:** The **Synthetics Legacy Runtime** has reached its end-of-life on October 22, 2024. As a consequence, using the legacy runtime or blank runtime values with Synthetic monitor requests from the New Relic Terraform Provider will result in API errors. Starting with **v3.51.0** of the New Relic Terraform Provider, configurations of Synthetic monitors without runtime attributes or comprising legacy runtime values will be deemed invalid.
+
+If your Synthetic monitors' configuration is not updated already with new runtime values, upgrade as soon as possible to avoid these consequences. For more details and instructions, please see the detailed warning in the [**Deprecated Runtime**](#deprecated-runtime) section.
+
+
## Example Usage
##### Type: `SCRIPT_API`
@@ -66,8 +69,6 @@ The following are the common arguments supported for `SCRIPT_API` and `SCRIPT_BR
* `account_id`- (Optional) The account in which the Synthetics monitor will be created.
* `status` - (Required) The run state of the monitor. (`ENABLED` or `DISABLED`).
-
--> **WARNING:** As of February 29, 2024, Synthetic Monitors no longer support the `MUTED` status. Version **3.33.0** of the New Relic Terraform Provider is released to coincide with the `MUTED` status end-of-life. Consequently, the only valid values for `status` for all types of Synthetic Monitors are mentioned above. For additional information on alternatives to the `MUTED` status of Synthetic Monitors that can be managed via Terraform, please refer to [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/upcoming_synthetics_muted_status_eol_guide).
* `name` - (Required) The name for the monitor.
* `type` - (Required) The plaintext representing the monitor script. Valid values are SCRIPT_BROWSER or SCRIPT_API
* `locations_public` - (Optional) The location the monitor will run from. Check out [this page](https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/administration/synthetic-public-minion-ips/) for a list of valid public locations. The `AWS_` prefix is not needed, as the provider uses NerdGraph. **At least one of either** `locations_public` **or** `location_private` **is required**.
@@ -79,7 +80,7 @@ The following are the common arguments supported for `SCRIPT_API` and `SCRIPT_BR
* `script_language` - (Optional) The programing language that should execute the script.
* `tag` - (Optional) The tags that will be associated with the monitor. See [Nested tag blocks](#nested-tag-blocks) below for details.
-The `SCRIPTED_BROWSER` monitor type supports the following additional argument:
+The `SCRIPTED_BROWSER` monitor type supports the following additional arguments:
* `enable_screenshot_on_failure_and_script` - (Optional) Capture a screenshot during job execution.
* `browsers` - (Optional) The multiple browsers list on which synthetic monitors will run. Valid values are `CHROME` and `FIREFOX`.
@@ -87,11 +88,17 @@ The `SCRIPTED_BROWSER` monitor type supports the following additional argument:
* `device_orientation` - (Optional) Device emulation orientation field. Valid values are `LANDSCAPE` and `PORTRAIT`. We recommend you to use `devices` field instead of `device_type`,`device_orientation` fields, as it allows you to select multiple combinations of device types and orientations.
* `device_type` - (Optional) Device emulation type field. Valid values are `MOBILE` and `TABLET`. We recommend you to use `devices` field instead of `device_type`,`device_orientation` fields, as it allows you to select multiple combinations of device types and orientations.
-#### Deprecated runtime
+#### Deprecated Runtime
-If you want to use a legacy runtime (Node 10 or Chrome 72) you can set the `runtime_type`, `runtime_type_version` and `script_language` to empty string `""`.
+~~If you want to use a legacy runtime (Node 10 or Chrome 72) you can set the `runtime_type`, `runtime_type_version` and `script_language` to empty string `""`.~~
--> **WARNING:** Support for using the Synthetics Legacy Runtime (deprecated) with **new** Synthetic monitors **has officially ended as of August 26, 2024**. As a consequence, starting with v3.43.0 of the New Relic Terraform Provider, **new** Synthetic monitors **will no longer be allowed to use the legacy runtime** (this applies to all Synthetic monitor resources). Additionally, as previously communicated by New Relic, the Synthetics Legacy Runtime **will reach its end-of-life (EOL) on October 22, 2024**. In light of the above, we kindly recommend that you upgrade your Synthetic Monitors to the new runtime at the earliest, if they are still using the legacy runtime. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, action needed, relevant resources, and more.
+-> **WARNING:** The end-of-life of the **Synthetics Legacy Runtime** took effect on October 22, 2024, implying that support for using the deprecated Synthetics Legacy Runtime with **new and existing** Synthetic monitors officially ended as of October 22, 2024. As a consequence of this API change, all requests associated with Synthetic Monitors (except Ping Monitors) going out of the New Relic Terraform Provider will be blocked by an API error if they include values corresponding to the legacy runtime or blank runtime values.
+
+Following these changes, starting with v3.51.0 of the New Relic Terraform Provider, configuration of **new and existing** Synthetic monitors without runtime attributes (or) comprising runtime attributes signifying the legacy runtime will be deemed invalid (this applies to all Synthetic monitor resources, except `newrelic_synthetics_monitor` with type `SIMPLE`). If your monitors' configuration is not updated with new runtime values, you will see the consequences stated here. New Synthetic monitors created after August 26, 2024 already adhere to these restrictions, as part of the first phase of the EOL.
+
+We kindly recommend that you upgrade your Synthetic Monitors to the new runtime as soon as possible if they are still using the legacy runtime, to avoid seeing the aforementioned consequences. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider (specifically, the table at the bottom of the guide, if you're looking for updates to be made to the configuration of Synthetic monitors) and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, actions needed, relevant resources, and more.
+
+You would not be affected by the EOL if your Synthetic monitors' Terraform configuration comprises new runtime values.
### Nested `tag` blocks
diff --git a/website/docs/r/synthetics_step_monitor.html.markdown b/website/docs/r/synthetics_step_monitor.html.markdown
index e015a4f31..59e2cb19e 100644
--- a/website/docs/r/synthetics_step_monitor.html.markdown
+++ b/website/docs/r/synthetics_step_monitor.html.markdown
@@ -8,10 +8,12 @@ description: |-
# Resource: newrelic\_synthetics\_step\_monitor
--> **WARNING:** Support for using the Synthetics Legacy Runtime (deprecated) with **new** Synthetic monitors **has officially ended as of August 26, 2024**. As a consequence, starting with v3.43.0 of the New Relic Terraform Provider, **new** Synthetic monitors **will no longer be allowed to use the legacy runtime** (this applies to all Synthetic monitor resources). Additionally, as previously communicated by New Relic, the Synthetics Legacy Runtime **will reach its end-of-life (EOL) on October 22, 2024**. In light of the above, we kindly recommend that you upgrade your Synthetic Monitors to the new runtime at the earliest, if they are still using the legacy runtime. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, action needed, relevant resources, and more.
-
Use this resource to create, update, and delete a Synthetics Step monitor in New Relic.
+-> **IMPORTANT:** The **Synthetics Legacy Runtime** has reached its end-of-life on October 22, 2024. As a consequence, using the legacy runtime or blank runtime values with Synthetic monitor requests from the New Relic Terraform Provider will result in API errors. Starting with **v3.51.0** of the New Relic Terraform Provider, configurations of Synthetic monitors without runtime attributes or comprising legacy runtime values will be deemed invalid.
+
+If your Synthetic monitors' configuration is not updated already with new runtime values, upgrade as soon as possible to avoid these consequences. For more details and instructions, please see the detailed warning against `runtime_type` and `runtime_type_version` in the [**Argument Reference**](#runtime_type) section.
+
## Example Usage
```hcl
@@ -48,20 +50,20 @@ The following are the common arguments supported for `STEP` monitor:
* `location_private` - (Required) The location the monitor will run from. At least one of `locations_public` or `location_private` is required. See [Nested locations_private blocks](#nested-locations-private-blocks) below for details.
* `period` - (Required) The interval at which this monitor should run. Valid values are `EVERY_MINUTE`, `EVERY_5_MINUTES`, `EVERY_10_MINUTES`, `EVERY_15_MINUTES`, `EVERY_30_MINUTES`, `EVERY_HOUR`, `EVERY_6_HOURS`, `EVERY_12_HOURS`, or `EVERY_DAY`.
* `status` - (Required) The run state of the monitor. (`ENABLED` or `DISABLED`).
-
--> **WARNING:** As of February 29, 2024, Synthetic Monitors no longer support the `MUTED` status. Version **3.33.0** of the New Relic Terraform Provider is released to coincide with the `MUTED` status end-of-life. Consequently, the only valid values for `status` for all types of Synthetic Monitors are mentioned above. For additional information on alternatives to the `MUTED` status of Synthetic Monitors that can be managed via Terraform, please refer to [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/upcoming_synthetics_muted_status_eol_guide).
-
-* `runtime_type` - (Optional) The runtime that the monitor will use to run jobs.
-* `runtime_type_version` - (Optional) The specific version of the runtime type selected.
* `browsers` - (Optional) The multiple browsers list on which synthetic monitors will run. Valid values are `CHROME` and `FIREFOX`.
* `devices` - (Optional) The multiple devices list on which synthetic monitors will run. Valid values are `DESKTOP`, `MOBILE_LANDSCAPE`, `MOBILE_PORTRAIT`, `TABLET_LANDSCAPE` and `TABLET_PORTRAIT`.
-
--> **NOTE:** Currently, the values of `runtime_type` and `runtime_type_version` supported by this resource are `CHROME_BROWSER` and `100` respectively. In order to run the monitor in the new runtime, both `runtime_type` and `runtime_type_version` need to be specified; however, specifying neither of these attributes would set this monitor to use the legacy runtime. It may also be noted that the runtime opted for would only be effective with private locations. For public locations, all traffic has been shifted to the new runtime, irrespective of the selection made.
-
--> **WARNING:** Support for using the Synthetics Legacy Runtime (deprecated) with **new** Synthetic monitors **has officially ended as of August 26, 2024**. As a consequence, starting with v3.43.0 of the New Relic Terraform Provider, **new** Synthetic monitors **will no longer be allowed to use the legacy runtime** (this applies to all Synthetic monitor resources). Additionally, as previously communicated by New Relic, the Synthetics Legacy Runtime **will reach its end-of-life (EOL) on October 22, 2024**. In light of the above, we kindly recommend that you upgrade your Synthetic Monitors to the new runtime at the earliest, if they are still using the legacy runtime. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, action needed, relevant resources, and more.
-
* `steps` - (Required) The steps that make up the script the monitor will run. See [Nested steps blocks](#nested-steps-blocks) below for details.
* `tag` - (Optional) The tags that will be associated with the monitor. See [Nested tag blocks](#nested-tag-blocks) below for details.
+* `runtime_type` - (Optional) The runtime that the monitor will use to run jobs (`CHROME_BROWSER`).
+* `runtime_type_version` - (Optional) The specific version of the runtime type selected (`100`).
+
+-> **WARNING:** The end-of-life of the **Synthetics Legacy Runtime** took effect on October 22, 2024, implying that support for using the deprecated Synthetics Legacy Runtime with **new and existing** Synthetic monitors officially ended as of October 22, 2024. As a consequence of this API change, all requests associated with Synthetic Monitors (except Ping Monitors) going out of the New Relic Terraform Provider will be blocked by an API error if they include values corresponding to the legacy runtime or blank runtime values.
+
+Following these changes, starting with v3.51.0 of the New Relic Terraform Provider, configuration of **new and existing** Synthetic monitors without runtime attributes (or) comprising runtime attributes signifying the legacy runtime will be deemed invalid (this applies to all Synthetic monitor resources, except `newrelic_synthetics_monitor` with type `SIMPLE`). If your monitors' configuration is not updated with new runtime values, you will see the consequences stated here. New Synthetic monitors created after August 26, 2024 already adhere to these restrictions, as part of the first phase of the EOL.
+
+We kindly recommend that you upgrade your Synthetic Monitors to the new runtime as soon as possible if they are still using the legacy runtime, to avoid seeing the aforementioned consequences. Please check out [this guide](https://registry.terraform.io/providers/newrelic/newrelic/latest/docs/guides/synthetics_legacy_runtime_eol_migration_guide) in the documentation of the Terraform Provider (specifically, the table at the bottom of the guide, if you're looking for updates to be made to the configuration of Synthetic monitors) and [this announcement](https://forum.newrelic.com/s/hubtopic/aAXPh0000001brxOAA/upcoming-endoflife-legacy-synthetics-runtimes-and-cpm) for more details on the EOL, actions needed, relevant resources, and more.
+
+You would not be affected by the EOL if your Synthetic monitors' Terraform configuration comprises new runtime values.
### Nested `location private` blocks