From 3145b226f0528d1330cb21bcf3bd79e393c9dbba Mon Sep 17 00:00:00 2001 From: ritesh-modi Date: Thu, 12 Nov 2020 11:21:54 +0530 Subject: [PATCH] added validation for eventgrid resources --- .../eventgrid/eventgrid_domain_resource.go | 8 ++++++++ .../eventgrid/eventgrid_domain_topic_resource.go | 16 ++++++++++++++++ .../eventgrid_event_subscription_resource.go | 15 +++++++++++---- .../eventgrid/eventgrid_system_topic_resource.go | 15 +++++++++++---- .../eventgrid/eventgrid_topic_resource.go | 15 +++++++++++---- 5 files changed, 57 insertions(+), 12 deletions(-) diff --git a/azurerm/internal/services/eventgrid/eventgrid_domain_resource.go b/azurerm/internal/services/eventgrid/eventgrid_domain_resource.go index f6aa4d9ee289..d07ac4b2d075 100644 --- a/azurerm/internal/services/eventgrid/eventgrid_domain_resource.go +++ b/azurerm/internal/services/eventgrid/eventgrid_domain_resource.go @@ -3,6 +3,7 @@ package eventgrid import ( "fmt" "log" + "regexp" "time" "github.com/Azure/azure-sdk-for-go/services/preview/eventgrid/mgmt/2020-04-01-preview/eventgrid" @@ -43,6 +44,13 @@ func resourceArmEventGridDomain() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, + ValidateFunc: validation.All( + validation.StringIsNotEmpty, + validation.StringMatch( + regexp.MustCompile("^[-a-zA-Z0-9]{3,50}$"), + "EventGrid domain name must be 3 - 50 characters long, contain only letters, numbers and hyphens.", + ), + ), }, "location": azure.SchemaLocation(), diff --git a/azurerm/internal/services/eventgrid/eventgrid_domain_topic_resource.go b/azurerm/internal/services/eventgrid/eventgrid_domain_topic_resource.go index 2268d91b5c1d..18cd92ad782c 100644 --- a/azurerm/internal/services/eventgrid/eventgrid_domain_topic_resource.go +++ b/azurerm/internal/services/eventgrid/eventgrid_domain_topic_resource.go @@ -3,10 +3,12 @@ package eventgrid import ( "fmt" "log" + "regexp" "time" "github.com/hashicorp/go-azure-helpers/response" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/helper/validation" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/tf" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients" @@ -38,12 +40,26 @@ func resourceArmEventGridDomainTopic() *schema.Resource { Type: schema.TypeString, Required: true, ForceNew: true, + ValidateFunc: validation.All( + validation.StringIsNotEmpty, + validation.StringMatch( + regexp.MustCompile("^[-a-zA-Z0-9]{3,50}$"), + "EventGrid domain name must be 3 - 50 characters long, contain only letters, numbers and hyphens.", + ), + ), }, "domain_name": { Type: schema.TypeString, Required: true, ForceNew: true, + ValidateFunc: validation.All( + validation.StringIsNotEmpty, + validation.StringMatch( + regexp.MustCompile("^[-a-zA-Z0-9]{3,50}$"), + "EventGrid domain name must be 3 - 50 characters long, contain only letters, numbers and hyphens.", + ), + ), }, "resource_group_name": azure.SchemaResourceGroupName(), diff --git a/azurerm/internal/services/eventgrid/eventgrid_event_subscription_resource.go b/azurerm/internal/services/eventgrid/eventgrid_event_subscription_resource.go index 3fac9a7d00d5..dda51470f5b8 100644 --- a/azurerm/internal/services/eventgrid/eventgrid_event_subscription_resource.go +++ b/azurerm/internal/services/eventgrid/eventgrid_event_subscription_resource.go @@ -3,6 +3,7 @@ package eventgrid import ( "fmt" "log" + "regexp" "time" "github.com/Azure/azure-sdk-for-go/services/preview/eventgrid/mgmt/2020-04-01-preview/eventgrid" @@ -54,10 +55,16 @@ func resourceArmEventGridEventSubscription() *schema.Resource { Schema: map[string]*schema.Schema{ "name": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - ValidateFunc: validation.StringIsNotEmpty, + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: validation.All( + validation.StringIsNotEmpty, + validation.StringMatch( + regexp.MustCompile("^[-a-zA-Z0-9]{3,50}$"), + "EventGrid subscription name must be 3 - 50 characters long, contain only letters, numbers and hyphens.", + ), + ), }, "scope": { diff --git a/azurerm/internal/services/eventgrid/eventgrid_system_topic_resource.go b/azurerm/internal/services/eventgrid/eventgrid_system_topic_resource.go index 4250ffb296f2..89559955d78f 100644 --- a/azurerm/internal/services/eventgrid/eventgrid_system_topic_resource.go +++ b/azurerm/internal/services/eventgrid/eventgrid_system_topic_resource.go @@ -3,6 +3,7 @@ package eventgrid import ( "fmt" "log" + "regexp" "time" "github.com/Azure/azure-sdk-for-go/services/preview/eventgrid/mgmt/2020-04-01-preview/eventgrid" @@ -40,10 +41,16 @@ func resourceArmEventGridSystemTopic() *schema.Resource { Schema: map[string]*schema.Schema{ "name": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - ValidateFunc: validation.StringIsNotEmpty, + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: validation.All( + validation.StringIsNotEmpty, + validation.StringMatch( + regexp.MustCompile("^[-a-zA-Z0-9]{3,128}$"), + "EventGrid Topics name must be 3 - 128 characters long, contain only letters, numbers and hyphens.", + ), + ), }, "location": azure.SchemaLocation(), diff --git a/azurerm/internal/services/eventgrid/eventgrid_topic_resource.go b/azurerm/internal/services/eventgrid/eventgrid_topic_resource.go index 62cb088f4cd9..1f548bd0277d 100644 --- a/azurerm/internal/services/eventgrid/eventgrid_topic_resource.go +++ b/azurerm/internal/services/eventgrid/eventgrid_topic_resource.go @@ -3,6 +3,7 @@ package eventgrid import ( "fmt" "log" + "regexp" "time" "github.com/Azure/azure-sdk-for-go/services/preview/eventgrid/mgmt/2020-04-01-preview/eventgrid" @@ -40,10 +41,16 @@ func resourceArmEventGridTopic() *schema.Resource { Schema: map[string]*schema.Schema{ "name": { - Type: schema.TypeString, - Required: true, - ForceNew: true, - ValidateFunc: validation.StringIsNotEmpty, + Type: schema.TypeString, + Required: true, + ForceNew: true, + ValidateFunc: validation.All( + validation.StringIsNotEmpty, + validation.StringMatch( + regexp.MustCompile("^[-a-zA-Z0-9]{3,50}$"), + "EventGrid topic name must be 3 - 50 characters long, contain only letters, numbers and hyphens.", + ), + ), }, "location": azure.SchemaLocation(),