func resourceArmTrafficManagerEndpoint() *schema.Resource { return &schema.Resource{ Create: resourceArmTrafficManagerEndpointCreate, Read: resourceArmTrafficManagerEndpointRead, Update: resourceArmTrafficManagerEndpointCreate, Delete: resourceArmTrafficManagerEndpointDelete, Importer: &schema.ResourceImporter{ State: schema.ImportStatePassthrough, }, Schema: map[string]*schema.Schema{ "name": { Type: schema.TypeString, Required: true, ForceNew: true, }, "type": { Type: schema.TypeString, Required: true, ForceNew: true, ValidateFunc: validation.StringInSlice([]string{"azureEndpoints", "nestedEndpoints", "externalEndpoints"}, false), }, "profile_name": { Type: schema.TypeString, Required: true, ForceNew: true, }, "target": { Type: schema.TypeString, Optional: true, // when targeting an Azure resource the FQDN of that resource will be set as the target Computed: true, }, "target_resource_id": { Type: schema.TypeString, Optional: true, }, "endpoint_status": { Type: schema.TypeString, Optional: true, Computed: true, }, "weight": { Type: schema.TypeInt, Optional: true, Computed: true, ValidateFunc: validation.IntBetween(1, 1000), }, "priority": { Type: schema.TypeInt, Optional: true, Computed: true, ValidateFunc: validation.IntBetween(1, 1000), }, "endpoint_location": { Type: schema.TypeString, Optional: true, // when targeting an Azure resource the location of that resource will be set on the endpoint Computed: true, StateFunc: azureRMNormalizeLocation, }, "min_child_endpoints": { Type: schema.TypeInt, Optional: true, }, "resource_group_name": { Type: schema.TypeString, Required: true, ForceNew: true, DiffSuppressFunc: resourceAzurermResourceGroupNameDiffSuppress, }, }, } }
func resourceArmTrafficManagerProfile() *schema.Resource { return &schema.Resource{ Create: resourceArmTrafficManagerProfileCreate, Read: resourceArmTrafficManagerProfileRead, Update: resourceArmTrafficManagerProfileCreate, Delete: resourceArmTrafficManagerProfileDelete, Importer: &schema.ResourceImporter{ State: schema.ImportStatePassthrough, }, Schema: map[string]*schema.Schema{ "name": { Type: schema.TypeString, Required: true, ForceNew: true, }, "profile_status": { Type: schema.TypeString, Optional: true, Computed: true, ValidateFunc: validation.StringInSlice([]string{"Enabled", "Disabled"}, true), }, "traffic_routing_method": { Type: schema.TypeString, Required: true, ValidateFunc: validation.StringInSlice([]string{"Performance", "Weighted", "Priority"}, false), }, "dns_config": { Type: schema.TypeSet, Required: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "relative_name": { Type: schema.TypeString, ForceNew: true, Required: true, }, "ttl": { Type: schema.TypeInt, Required: true, ValidateFunc: validation.IntBetween(30, 999999), }, }, }, Set: resourceAzureRMTrafficManagerDNSConfigHash, }, // inlined from dns_config for ease of use "fqdn": { Type: schema.TypeString, Computed: true, }, "monitor_config": { Type: schema.TypeSet, Required: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "protocol": { Type: schema.TypeString, Required: true, ValidateFunc: validation.StringInSlice([]string{"http", "https"}, false), }, "port": { Type: schema.TypeInt, Required: true, ValidateFunc: validation.IntBetween(1, 65535), }, "path": { Type: schema.TypeString, Required: true, }, }, }, Set: resourceAzureRMTrafficManagerMonitorConfigHash, }, "resource_group_name": { Type: schema.TypeString, Required: true, ForceNew: true, DiffSuppressFunc: resourceAzurermResourceGroupNameDiffSuppress, }, "tags": tagsSchema(), }, } }