diff --git a/azurerm/resource_arm_signalr_service.go b/azurerm/resource_arm_signalr_service.go index 10e86fb0e3f1..f3af9a04dbc8 100644 --- a/azurerm/resource_arm_signalr_service.go +++ b/azurerm/resource_arm_signalr_service.go @@ -79,6 +79,30 @@ func resourceArmSignalRService() *schema.Resource { Computed: true, }, + "primary_access_key": { + Type: schema.TypeString, + Computed: true, + Sensitive: true, + }, + + "primary_connection_string": { + Type: schema.TypeString, + Computed: true, + Sensitive: true, + }, + + "secondary_access_key": { + Type: schema.TypeString, + Computed: true, + Sensitive: true, + }, + + "secondary_connection_string": { + Type: schema.TypeString, + Computed: true, + Sensitive: true, + }, + "tags": tagsSchema(), }, } @@ -143,6 +167,11 @@ func resourceArmSignalRServiceRead(d *schema.ResourceData, meta interface{}) err return fmt.Errorf("Error getting SignalR %q (Resource Group %q): %+v", name, resourceGroup, err) } + keys, err := client.ListKeys(ctx, resourceGroup, name) + if err != nil { + return fmt.Errorf("Error getting keys of SignalR %q (Resource Group %q): %+v", name, resourceGroup, err) + } + d.Set("name", name) d.Set("resource_group_name", resourceGroup) if location := resp.Location; location != nil { @@ -160,6 +189,11 @@ func resourceArmSignalRServiceRead(d *schema.ResourceData, meta interface{}) err d.Set("server_port", properties.ServerPort) } + d.Set("primary_access_key", keys.PrimaryKey) + d.Set("primary_connection_string", keys.PrimaryConnectionString) + d.Set("secondary_access_key", keys.SecondaryKey) + d.Set("secondary_connection_string", keys.SecondaryConnectionString) + flattenAndSetTags(d, resp.Tags) return nil diff --git a/azurerm/resource_arm_signalr_service_test.go b/azurerm/resource_arm_signalr_service_test.go index de8a06aecb18..c33c203d1872 100644 --- a/azurerm/resource_arm_signalr_service_test.go +++ b/azurerm/resource_arm_signalr_service_test.go @@ -30,6 +30,10 @@ func TestAccAzureRMSignalRService_basic(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, { @@ -61,6 +65,10 @@ func TestAccAzureRMSignalRService_standard(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, { @@ -92,6 +100,10 @@ func TestAccAzureRMSignalRService_standardWithCap2(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, { @@ -125,6 +137,10 @@ func TestAccAzureRMSignalRService_skuUpdate(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, { @@ -137,6 +153,10 @@ func TestAccAzureRMSignalRService_skuUpdate(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, { @@ -149,6 +169,10 @@ func TestAccAzureRMSignalRService_skuUpdate(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, }, @@ -177,6 +201,10 @@ func TestAccAzureRMSignalRService_capacityUpdate(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, { @@ -189,6 +217,10 @@ func TestAccAzureRMSignalRService_capacityUpdate(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, { @@ -201,6 +233,10 @@ func TestAccAzureRMSignalRService_capacityUpdate(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, }, @@ -229,6 +265,10 @@ func TestAccAzureRMSignalRService_skuAndCapacityUpdate(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, { @@ -241,6 +281,10 @@ func TestAccAzureRMSignalRService_skuAndCapacityUpdate(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, { @@ -253,6 +297,10 @@ func TestAccAzureRMSignalRService_skuAndCapacityUpdate(t *testing.T) { resource.TestCheckResourceAttrSet(resourceName, "ip_address"), resource.TestCheckResourceAttrSet(resourceName, "public_port"), resource.TestCheckResourceAttrSet(resourceName, "server_port"), + resource.TestCheckResourceAttrSet(resourceName, "primary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "primary_connection_string"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_access_key"), + resource.TestCheckResourceAttrSet(resourceName, "secondary_connection_string"), ), }, }, diff --git a/website/docs/r/signalr_service.html.markdown b/website/docs/r/signalr_service.html.markdown index 67cb53d9523c..66d45215482f 100644 --- a/website/docs/r/signalr_service.html.markdown +++ b/website/docs/r/signalr_service.html.markdown @@ -1,18 +1,18 @@ ---- -layout: "azurerm" -page_title: "Azure Resource Manager: azurerm_signalr_service" -sidebar_current: "docs-azurerm-resource-messaging-signalr-service" -description: |- - Manages an Azure SignalR service. ---- - -# azurerm_signalr_service - -Manages an Azure SignalR service. - -## Example Usage - -```hcl +--- +layout: "azurerm" +page_title: "Azure Resource Manager: azurerm_signalr_service" +sidebar_current: "docs-azurerm-resource-messaging-signalr-service" +description: |- + Manages an Azure SignalR service. +--- + +# azurerm_signalr_service + +Manages an Azure SignalR service. + +## Example Usage + +```hcl resource "azurerm_resource_group" "example" { name = "terraform-signalr" location = "West US" @@ -28,48 +28,56 @@ resource "azurerm_signalr_service" "example" { capacity = 1 } } -``` - -## Argument Reference - -The following arguments are supported: - -* `name` - (Required) The name of the SignalR service. Changing this forces a new resource to be created. - -* `resource_group_name` - (Required) The name of the resource group in which to create the SignalR service. Changing this forces a new resource to be created. - -* `location` - (Required) Specifies the supported Azure location where the SignalR service exists. Changing this forces a new resource to be created. - -* `sku` - A `sku` block as documented below. - -* `tags` - (Optional) A mapping of tags to assign to the resource. - ---- - -A `sku` block supports the following: - -* `name` - (Required) Specifies which tier to use. Valid values are `Free_F1` and `Standard_S1`. - -* `capacity` - (Required) Specifies the number of units associated with this SignalR service. Valid values are `1`, `2`, `5`, `10`, `20`, `50` and `100`. - -## Attributes Reference - -The following attributes are exported: - -* `id` - The ID of the SignalR service. - -* `hostname` - The FQDN of the SignalR service. - -* `ip_address` - The publicly accessible IP of the SignalR service. - -* `public_port` - The publicly accessible port of the SignalR service which is designed for browser/client use. - -* `server_port` - The publicly accessible port of the SignalR service which is designed for customer server side use. - -## Import - -SignalR services can be imported using the `resource id`, e.g. - -```shell -terraform import azurerm_signalr_service.example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/terraform-signalr/providers/Microsoft.SignalRService/SignalR/tfex-signalr -``` +``` + +## Argument Reference + +The following arguments are supported: + +* `name` - (Required) The name of the SignalR service. Changing this forces a new resource to be created. + +* `resource_group_name` - (Required) The name of the resource group in which to create the SignalR service. Changing this forces a new resource to be created. + +* `location` - (Required) Specifies the supported Azure location where the SignalR service exists. Changing this forces a new resource to be created. + +* `sku` - A `sku` block as documented below. + +* `tags` - (Optional) A mapping of tags to assign to the resource. + +--- + +A `sku` block supports the following: + +* `name` - (Required) Specifies which tier to use. Valid values are `Free_F1` and `Standard_S1`. + +* `capacity` - (Required) Specifies the number of units associated with this SignalR service. Valid values are `1`, `2`, `5`, `10`, `20`, `50` and `100`. + +## Attributes Reference + +The following attributes are exported: + +* `id` - The ID of the SignalR service. + +* `hostname` - The FQDN of the SignalR service. + +* `ip_address` - The publicly accessible IP of the SignalR service. + +* `public_port` - The publicly accessible port of the SignalR service which is designed for browser/client use. + +* `server_port` - The publicly accessible port of the SignalR service which is designed for customer server side use. + +* `primary_access_key` - The primary access key for the SignalR service. + +* `primary_connection_string` - The primary connection string for the SignalR service. + +* `secondary_access_key` - The secondary access key for the SignalR service. + +* `secondary_connection_string` - The secondary connection string for the SignalR service. + +## Import + +SignalR services can be imported using the `resource id`, e.g. + +```shell +terraform import azurerm_signalr_service.example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/terraform-signalr/providers/Microsoft.SignalRService/SignalR/tfex-signalr +```