-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
servicebus.go
370 lines (293 loc) · 13 KB
/
servicebus.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
package azure
import (
"context"
"testing"
"github.com/Azure/azure-sdk-for-go/services/servicebus/mgmt/2017-04-01/servicebus"
"github.com/stretchr/testify/require"
)
func serviceBusNamespaceClientE(subscriptionID string) (*servicebus.NamespacesClient, error) {
authorizer, err := NewAuthorizer()
if err != nil {
return nil, err
}
nsClient := servicebus.NewNamespacesClient(subscriptionID)
nsClient.Authorizer = *authorizer
return &nsClient, nil
}
func serviceBusTopicClientE(subscriptionID string) (*servicebus.TopicsClient, error) {
authorizer, err := NewAuthorizer()
if err != nil {
return nil, err
}
tClient := servicebus.NewTopicsClient(subscriptionID)
tClient.Authorizer = *authorizer
return &tClient, nil
}
func serviceBusSubscriptionsClientE(subscriptionID string) (*servicebus.SubscriptionsClient, error) {
authorizer, err := NewAuthorizer()
if err != nil {
return nil, err
}
sClient := servicebus.NewSubscriptionsClient(subscriptionID)
sClient.Authorizer = *authorizer
return &sClient, nil
}
// ListServiceBusNamespaceE list all SB namespaces in all resource groups in the given subscription ID.
func ListServiceBusNamespaceE(subscriptionID string) ([]servicebus.SBNamespace, error) {
nsClient, err := serviceBusNamespaceClientE(subscriptionID)
if err != nil {
return nil, err
}
iteratorSBNamespace, err := nsClient.ListComplete(context.Background())
if err != nil {
return nil, err
}
results := make([]servicebus.SBNamespace, 0)
for iteratorSBNamespace.NotDone() {
results = append(results, iteratorSBNamespace.Value())
if err := iteratorSBNamespace.Next(); err != nil {
return nil, err
}
}
return results, nil
}
// ListServiceBusNamespace - list all SB namespaces in all resource groups in the given subscription ID. This function would fail the test if there is an error.
func ListServiceBusNamespace(t *testing.T, subscriptionID string) []servicebus.SBNamespace {
results, err := ListServiceBusNamespaceE(subscriptionID)
require.NoError(t, err)
return results
}
// ListServiceBusNamespaceNamesE list names of all SB namespaces in all resource groups in the given subscription ID.
func ListServiceBusNamespaceNamesE(subscriptionID string) ([]string, error) {
sbNamespace, err := ListServiceBusNamespaceE(subscriptionID)
if err != nil {
return nil, err
}
results := BuildNamespaceNamesList(sbNamespace)
return results, nil
}
// BuildNamespaceNamesList helper method to build namespace name list
func BuildNamespaceNamesList(sbNamespace []servicebus.SBNamespace) []string {
results := []string{}
for _, namespace := range sbNamespace {
results = append(results, *namespace.Name)
}
return results
}
// BuildNamespaceIdsList helper method to build namespace id list
func BuildNamespaceIdsList(sbNamespace []servicebus.SBNamespace) []string {
results := []string{}
for _, namespace := range sbNamespace {
results = append(results, *namespace.ID)
}
return results
}
// ListServiceBusNamespaceNames list names of all SB namespaces in all resource groups in the given subscription ID. This function would fail the test if there is an error.
func ListServiceBusNamespaceNames(t *testing.T, subscriptionID string) []string {
results, err := ListServiceBusNamespaceNamesE(subscriptionID)
require.NoError(t, err)
return results
}
// ListServiceBusNamespaceIDsE list IDs of all SB namespaces in all resource groups in the given subscription ID.
func ListServiceBusNamespaceIDsE(subscriptionID string) ([]string, error) {
sbNamespace, err := ListServiceBusNamespaceE(subscriptionID)
if err != nil {
return nil, err
}
results := BuildNamespaceIdsList(sbNamespace)
return results, nil
}
// ListServiceBusNamespaceIDs list IDs of all SB namespaces in all resource groups in the given subscription ID. This function would fail the test if there is an error.
func ListServiceBusNamespaceIDs(t *testing.T, subscriptionID string) []string {
results, err := ListServiceBusNamespaceIDsE(subscriptionID)
require.NoError(t, err)
return results
}
// ListServiceBusNamespaceByResourceGroupE list all SB namespaces in the given resource group.
func ListServiceBusNamespaceByResourceGroupE(subscriptionID string, resourceGroup string) ([]servicebus.SBNamespace, error) {
nsClient, err := serviceBusNamespaceClientE(subscriptionID)
if err != nil {
return nil, err
}
iteratorSBNamespace, err := nsClient.ListByResourceGroupComplete(context.Background(), resourceGroup)
if err != nil {
return nil, err
}
results := make([]servicebus.SBNamespace, 0)
for iteratorSBNamespace.NotDone() {
results = append(results, iteratorSBNamespace.Value())
if err := iteratorSBNamespace.Next(); err != nil {
return nil, err
}
}
return results, nil
}
// ListServiceBusNamespaceByResourceGroup list all SB namespaces in the given resource group. This function would fail the test if there is an error.
func ListServiceBusNamespaceByResourceGroup(t *testing.T, subscriptionID string, resourceGroup string) []servicebus.SBNamespace {
results, err := ListServiceBusNamespaceByResourceGroupE(subscriptionID, resourceGroup)
require.NoError(t, err)
return results
}
// ListServiceBusNamespaceNamesByResourceGroupE list names of all SB namespaces in the given resource group. This function would fail the test if there is an error.
func ListServiceBusNamespaceNamesByResourceGroupE(subscriptionID string, resourceGroup string) ([]string, error) {
sbNamespace, err := ListServiceBusNamespaceByResourceGroupE(subscriptionID, resourceGroup)
if err != nil {
return nil, err
}
results := BuildNamespaceNamesList(sbNamespace)
return results, nil
}
// ListServiceBusNamespaceNamesByResourceGroup list names of all SB namespaces in the given resource group.
func ListServiceBusNamespaceNamesByResourceGroup(t *testing.T, subscriptionID string, resourceGroup string) []string {
results, err := ListServiceBusNamespaceNamesByResourceGroupE(subscriptionID, resourceGroup)
require.NoError(t, err)
return results
}
// ListServiceBusNamespaceIDsByResourceGroupE list IDs of all SB namespaces in the given resource group.
func ListServiceBusNamespaceIDsByResourceGroupE(subscriptionID string, resourceGroup string) ([]string, error) {
sbNamespace, err := ListServiceBusNamespaceByResourceGroupE(subscriptionID, resourceGroup)
if err != nil {
return nil, err
}
results := BuildNamespaceIdsList(sbNamespace)
return results, nil
}
// ListServiceBusNamespaceIDsByResourceGroup list IDs of all SB namespaces in the given resource group. This function would fail the test if there is an error.
func ListServiceBusNamespaceIDsByResourceGroup(t *testing.T, subscriptionID string, resourceGroup string) []string {
results, err := ListServiceBusNamespaceIDsByResourceGroupE(subscriptionID, resourceGroup)
require.NoError(t, err)
return results
}
// ListNamespaceAuthRulesE - authenticate namespace client and enumerates all values to get list of authorization rules for the given namespace name,
// automatically crossing page boundaries as required.
func ListNamespaceAuthRulesE(subscriptionID string, namespace string, resourceGroup string) ([]string, error) {
nsClient, err := serviceBusNamespaceClientE(subscriptionID)
if err != nil {
return nil, err
}
iteratorNamespaceRules, err := nsClient.ListAuthorizationRulesComplete(
context.Background(), resourceGroup, namespace)
if err != nil {
return nil, err
}
results := []string{}
for iteratorNamespaceRules.NotDone() {
results = append(results, *(iteratorNamespaceRules.Value()).Name)
if err := iteratorNamespaceRules.Next(); err != nil {
return nil, err
}
}
return results, nil
}
// ListNamespaceAuthRules - authenticate namespace client and enumerates all values to get list of authorization rules for the given namespace name,
// automatically crossing page boundaries as required. This function would fail the test if there is an error.
func ListNamespaceAuthRules(t *testing.T, subscriptionID string, namespace string, resourceGroup string) []string {
results, err := ListNamespaceAuthRulesE(subscriptionID, namespace, resourceGroup)
require.NoError(t, err)
return results
}
// ListNamespaceTopicsE - authenticate topic client and enumerates all values, automatically crossing page boundaries as required.
func ListNamespaceTopicsE(subscriptionID string, namespace string, resourceGroup string) ([]servicebus.SBTopic, error) {
tClient, err := serviceBusTopicClientE(subscriptionID)
if err != nil {
return nil, err
}
iteratorTopics, err := tClient.ListByNamespaceComplete(context.Background(), resourceGroup, namespace, nil, nil)
if err != nil {
return nil, err
}
results := make([]servicebus.SBTopic, 0)
for iteratorTopics.NotDone() {
results = append(results, iteratorTopics.Value())
if err := iteratorTopics.Next(); err != nil {
return nil, err
}
}
return results, nil
}
// ListNamespaceTopics - authenticate topic client and enumerates all values, automatically crossing page boundaries as required. This function would fail the test if there is an error.
func ListNamespaceTopics(t *testing.T, subscriptionID string, namespace string, resourceGroup string) []servicebus.SBTopic {
results, err := ListNamespaceTopicsE(subscriptionID, namespace, resourceGroup)
require.NoError(t, err)
return results
}
// ListTopicSubscriptionsE - authenticate subscriptions client and enumerates all values, automatically crossing page boundaries as required.
func ListTopicSubscriptionsE(subscriptionID string, namespace string, resourceGroup string, topicName string) ([]servicebus.SBSubscription, error) {
sClient, err := serviceBusSubscriptionsClientE(subscriptionID)
if err != nil {
return nil, err
}
iteratorSubscription, err := sClient.ListByTopicComplete(context.Background(), resourceGroup, namespace, topicName, nil, nil)
if err != nil {
return nil, err
}
results := make([]servicebus.SBSubscription, 0)
for iteratorSubscription.NotDone() {
results = append(results, iteratorSubscription.Value())
if err := iteratorSubscription.Next(); err != nil {
return nil, err
}
}
return results, nil
}
// ListTopicSubscriptions - authenticate subscriptions client and enumerates all values, automatically crossing page boundaries as required. This function would fail the test if there is an error.
func ListTopicSubscriptions(t *testing.T, subscriptionID string, namespace string, resourceGroup string, topicName string) []servicebus.SBSubscription {
results, err := ListTopicSubscriptionsE(subscriptionID, namespace, resourceGroup, topicName)
require.NoError(t, err)
return results
}
// ListTopicSubscriptionsNameE - authenticate subscriptions client and enumerates all values to get list of subscriptions for the given topic name,
// automatically crossing page boundaries as required.
func ListTopicSubscriptionsNameE(subscriptionID string, namespace string, resourceGroup string, topicName string) ([]string, error) {
sClient, err := serviceBusSubscriptionsClientE(subscriptionID)
if err != nil {
return nil, err
}
iteratorSubscription, err := sClient.ListByTopicComplete(context.Background(), resourceGroup, namespace, topicName, nil, nil)
if err != nil {
return nil, err
}
results := []string{}
for iteratorSubscription.NotDone() {
results = append(results, *(iteratorSubscription.Value()).Name)
if err := iteratorSubscription.Next(); err != nil {
return nil, err
}
}
return results, nil
}
// ListTopicSubscriptionsName - authenticate subscriptions client and enumerates all values to get list of subscriptions for the given topic name,
// automatically crossing page boundaries as required. This function would fail the test if there is an error.
func ListTopicSubscriptionsName(t *testing.T, subscriptionID string, namespace string, resourceGroup string, topicName string) []string {
results, err := ListTopicSubscriptionsNameE(subscriptionID, namespace, resourceGroup, topicName)
require.NoError(t, err)
return results
}
// ListTopicAuthRulesE - authenticate topic client and enumerates all values to get list of authorization rules for the given topic name,
// automatically crossing page boundaries as required.
func ListTopicAuthRulesE(subscriptionID string, namespace string, resourceGroup string, topicName string) ([]string, error) {
tClient, err := serviceBusTopicClientE(subscriptionID)
if err != nil {
return nil, err
}
iteratorTopicsRules, err := tClient.ListAuthorizationRulesComplete(
context.Background(), resourceGroup, namespace, topicName)
if err != nil {
return nil, err
}
results := []string{}
for iteratorTopicsRules.NotDone() {
results = append(results, *(iteratorTopicsRules.Value()).Name)
if err := iteratorTopicsRules.Next(); err != nil {
return nil, err
}
}
return results, nil
}
// ListTopicAuthRules - authenticate topic client and enumerates all values to get list of authorization rules for the given topic name,
// automatically crossing page boundaries as required. This function would fail the test if there is an error.
func ListTopicAuthRules(t *testing.T, subscriptionID string, namespace string, resourceGroup string, topicName string) []string {
results, err := ListTopicAuthRulesE(subscriptionID, namespace, resourceGroup, topicName)
require.NoError(t, err)
return results
}