Skip to content

Commit f733d6a

Browse files
author
Peter McAtominey
committed
provider/azurerm: expose default keys for servicebus_namespace
A default authorization rule is created by Azure which, if present is exported by the resource. TF_ACC=1 go test ./builtin/providers/azurerm -v -run TestAccAzureRMServiceBusNamespace -timeout 120m === RUN TestAccAzureRMServiceBusNamespaceCapacity_validation --- PASS: TestAccAzureRMServiceBusNamespaceCapacity_validation (0.00s) === RUN TestAccAzureRMServiceBusNamespaceSku_validation --- PASS: TestAccAzureRMServiceBusNamespaceSku_validation (0.00s) === RUN TestAccAzureRMServiceBusNamespace_basic --- PASS: TestAccAzureRMServiceBusNamespace_basic (352.03s) === RUN TestAccAzureRMServiceBusNamespace_readDefaultKeys --- PASS: TestAccAzureRMServiceBusNamespace_readDefaultKeys (349.17s) PASS ok github.com/hashicorp/terraform/builtin/providers/azurerm 701.278s
1 parent a1d944b commit f733d6a

3 files changed

Lines changed: 76 additions & 0 deletions

File tree

builtin/providers/azurerm/resource_arm_servicebus_namespace.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ import (
1010
"github.com/hashicorp/terraform/helper/schema"
1111
)
1212

13+
// Default Authorization Rule/Policy created by Azure, used to populate the
14+
// default connection strings and keys
15+
var serviceBusNamespaceDefaultAuthorizationRule = "RootManageSharedAccessKey"
16+
1317
func resourceArmServiceBusNamespace() *schema.Resource {
1418
return &schema.Resource{
1519
Create: resourceArmServiceBusNamespaceCreate,
@@ -55,6 +59,26 @@ func resourceArmServiceBusNamespace() *schema.Resource {
5559
ValidateFunc: validateServiceBusNamespaceCapacity,
5660
},
5761

62+
"default_primary_connection_string": {
63+
Type: schema.TypeString,
64+
Computed: true,
65+
},
66+
67+
"default_secondary_connection_string": {
68+
Type: schema.TypeString,
69+
Computed: true,
70+
},
71+
72+
"default_primary_key": {
73+
Type: schema.TypeString,
74+
Computed: true,
75+
},
76+
77+
"default_secondary_key": {
78+
Type: schema.TypeString,
79+
Computed: true,
80+
},
81+
5882
"tags": tagsSchema(),
5983
},
6084
}
@@ -123,6 +147,17 @@ func resourceArmServiceBusNamespaceRead(d *schema.ResourceData, meta interface{}
123147
d.Set("name", resp.Name)
124148
d.Set("sku", strings.ToLower(string(resp.Sku.Name)))
125149
d.Set("capacity", resp.Sku.Capacity)
150+
151+
keys, err := namespaceClient.ListKeys(resGroup, name, serviceBusNamespaceDefaultAuthorizationRule)
152+
if err != nil {
153+
log.Printf("[ERROR] Unable to List default keys for Namespace %s: %s", name, err)
154+
} else {
155+
d.Set("default_primary_connection_string", keys.PrimaryConnectionString)
156+
d.Set("default_secondary_connection_string", keys.SecondaryConnectionString)
157+
d.Set("default_primary_key", keys.PrimaryKey)
158+
d.Set("default_secondary_key", keys.SecondaryKey)
159+
}
160+
126161
flattenAndSetTags(d, resp.Tags)
127162

128163
return nil

builtin/providers/azurerm/resource_arm_servicebus_namespace_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package azurerm
33
import (
44
"fmt"
55
"net/http"
6+
"regexp"
67
"testing"
78

89
"github.com/hashicorp/terraform/helper/acctest"
@@ -94,6 +95,33 @@ func TestAccAzureRMServiceBusNamespace_basic(t *testing.T) {
9495
})
9596
}
9697

98+
func TestAccAzureRMServiceBusNamespace_readDefaultKeys(t *testing.T) {
99+
ri := acctest.RandInt()
100+
config := fmt.Sprintf(testAccAzureRMServiceBusNamespace_basic, ri, ri)
101+
102+
resource.Test(t, resource.TestCase{
103+
PreCheck: func() { testAccPreCheck(t) },
104+
Providers: testAccProviders,
105+
CheckDestroy: testCheckAzureRMServiceBusNamespaceDestroy,
106+
Steps: []resource.TestStep{
107+
resource.TestStep{
108+
Config: config,
109+
Check: resource.ComposeTestCheckFunc(
110+
testCheckAzureRMServiceBusNamespaceExists("azurerm_servicebus_namespace.test"),
111+
resource.TestMatchResourceAttr(
112+
"azurerm_servicebus_namespace.test", "default_primary_connection_string", regexp.MustCompile("Endpoint=.+")),
113+
resource.TestMatchResourceAttr(
114+
"azurerm_servicebus_namespace.test", "default_secondary_connection_string", regexp.MustCompile("Endpoint=.+")),
115+
resource.TestMatchResourceAttr(
116+
"azurerm_servicebus_namespace.test", "default_primary_key", regexp.MustCompile(".+")),
117+
resource.TestMatchResourceAttr(
118+
"azurerm_servicebus_namespace.test", "default_secondary_key", regexp.MustCompile(".+")),
119+
),
120+
},
121+
},
122+
})
123+
}
124+
97125
func testCheckAzureRMServiceBusNamespaceDestroy(s *terraform.State) error {
98126
conn := testAccProvider.Meta().(*ArmClient).serviceBusNamespacesClient
99127

website/source/docs/providers/azurerm/r/servicebus_namespace.html.markdown

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,16 @@ The following arguments are supported:
5353
The following attributes are exported:
5454

5555
* `id` - The ServiceBus Namespace ID.
56+
57+
The following attributes are exported only if there is an authorization rule named
58+
`RootManageSharedAccessKey` which is created automatically by Azure.
59+
60+
* `default_primary_connection_string` - The primary connection string for the authorization
61+
rule `RootManageSharedAccessKey`.
62+
63+
* `default_secondary_connection_string` - The secondary connection string for the
64+
authorization rule `RootManageSharedAccessKey`.
65+
66+
* `default_primary_key` - The primary access key for the authorization rule `RootManageSharedAccessKey`.
67+
68+
* `default_secondary_key` - The secondary access key for the authorization rule `RootManageSharedAccessKey`.

0 commit comments

Comments
 (0)