Skip to content

Commit 41ed3db

Browse files
authored
mgmt servicebus, support chained declaration of authorizationrule's listen/send/manage (#45772)
* code * recording * format
1 parent 71d8642 commit 41ed3db

8 files changed

Lines changed: 82 additions & 12 deletions

File tree

sdk/resourcemanager/azure-resourcemanager-servicebus/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
### Features Added
66

7+
- Supported disabling SAS authentication for `ServiceBusNamespace`.
8+
- Supported chained declaration of `withListeningEnabled`, `withSendingEnabled` and `withManagingEnabled` during creation of `NamespaceAuthorizationRule`, `QueueAuthorizationRule` and `TopicAuthorizationRule`.
9+
710
### Breaking Changes
811

912
### Bugs Fixed

sdk/resourcemanager/azure-resourcemanager-servicebus/assets.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"AssetsRepo": "Azure/azure-sdk-assets",
33
"AssetsRepoPrefixPath": "java",
44
"TagPrefix": "java/resourcemanager/azure-resourcemanager-servicebus",
5-
"Tag": "java/resourcemanager/azure-resourcemanager-servicebus_da8c52136e"
5+
"Tag": "java/resourcemanager/azure-resourcemanager-servicebus_e9f2926d84"
66
}

sdk/resourcemanager/azure-resourcemanager-servicebus/src/main/java/com/azure/resourcemanager/servicebus/implementation/ServiceBusNamespaceImpl.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import com.azure.resourcemanager.resources.fluentcore.arm.models.implementation.GroupableResourceImpl;
77
import com.azure.resourcemanager.resources.fluentcore.model.Creatable;
8+
import com.azure.resourcemanager.resources.fluentcore.utils.ResourceManagerUtils;
89
import com.azure.resourcemanager.servicebus.ServiceBusManager;
910
import com.azure.resourcemanager.servicebus.fluent.models.SBNamespaceInner;
1011
import com.azure.resourcemanager.servicebus.models.NamespaceAuthorizationRule;
@@ -78,6 +79,11 @@ public NamespaceAuthorizationRulesImpl authorizationRules() {
7879
return new NamespaceAuthorizationRulesImpl(this.resourceGroupName(), this.name(), this.region(), manager());
7980
}
8081

82+
@Override
83+
public boolean localAuthDisabled() {
84+
return ResourceManagerUtils.toPrimitiveBoolean(this.innerModel().disableLocalAuth());
85+
}
86+
8187
@Override
8288
public ServiceBusNamespaceImpl withSku(NamespaceSku namespaceSku) {
8389
this.innerModel()
@@ -161,6 +167,12 @@ public Mono<ServiceBusNamespace> createResourceAsync() {
161167
.then(Mono.just(self));
162168
}
163169

170+
@Override
171+
public ServiceBusNamespaceImpl disableLocalAuth() {
172+
this.innerModel().withDisableLocalAuth(true);
173+
return this;
174+
}
175+
164176
private void initChildrenOperationsCache() {
165177
this.queuesToCreate = new ArrayList<>();
166178
this.topicsToCreate = new ArrayList<>();

sdk/resourcemanager/azure-resourcemanager-servicebus/src/main/java/com/azure/resourcemanager/servicebus/models/NamespaceAuthorizationRule.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ interface Blank extends AuthorizationRule.DefinitionStages.WithListenOrSendOrMan
3636
* the resource to be created (via {@link WithCreate#create()}), but also allows
3737
* for any other optional settings to be specified.
3838
*/
39-
interface WithCreate extends Creatable<NamespaceAuthorizationRule> {
39+
interface WithCreate extends AuthorizationRule.DefinitionStages.WithListenOrSendOrManage<WithCreate>,
40+
Creatable<NamespaceAuthorizationRule> {
4041
}
4142
}
4243

sdk/resourcemanager/azure-resourcemanager-servicebus/src/main/java/com/azure/resourcemanager/servicebus/models/QueueAuthorizationRule.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ interface Blank extends
4444
* the resource to be created (via {@link WithCreate#create()}), but also allows
4545
* for any other optional settings to be specified.
4646
*/
47-
interface WithCreate extends Creatable<QueueAuthorizationRule> {
47+
interface WithCreate extends Creatable<QueueAuthorizationRule>,
48+
AuthorizationRule.DefinitionStages.WithListenOrSendOrManage<QueueAuthorizationRule.DefinitionStages.WithCreate> {
4849
}
4950
}
5051

sdk/resourcemanager/azure-resourcemanager-servicebus/src/main/java/com/azure/resourcemanager/servicebus/models/ServiceBusNamespace.java

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,15 @@ public interface ServiceBusNamespace extends GroupableResource<ServiceBusManager
7777
*/
7878
NamespaceAuthorizationRules authorizationRules();
7979

80+
/**
81+
* Checks whether local auth is disabled.
82+
*
83+
* @return whether local auth is disabled
84+
*/
85+
default boolean localAuthDisabled() {
86+
throw new UnsupportedOperationException("[localAuthDisabled] is not supported in " + getClass());
87+
}
88+
8089
/**
8190
* The entirety of the Service Bus namespace definition.
8291
*/
@@ -171,14 +180,29 @@ interface WithAuthorizationRule {
171180
WithCreate withNewManageRule(String name);
172181
}
173182

183+
/**
184+
* The stage of Service Bus namespace definition allowing to disable local auth.
185+
*/
186+
interface WithLocalAuth {
187+
/**
188+
* Disables SAS authentication for the Service Bus namespace.
189+
*
190+
* @return next stage of the Service Bus namespace definition
191+
*/
192+
default WithCreate disableLocalAuth() {
193+
throw new UnsupportedOperationException("[disableLocalAuth] is not supported in " + getClass());
194+
}
195+
}
196+
174197
/**
175198
* The stage of the definition which contains all the minimum required inputs for
176199
* the resource to be created (via {@link WithCreate#create()}), but also allows
177200
* for any other optional settings to be specified.
178201
*/
179202
interface WithCreate extends Creatable<ServiceBusNamespace>, Resource.DefinitionWithTags<WithCreate>,
180203
ServiceBusNamespace.DefinitionStages.WithSku, ServiceBusNamespace.DefinitionStages.WithQueue,
181-
ServiceBusNamespace.DefinitionStages.WithTopic, ServiceBusNamespace.DefinitionStages.WithAuthorizationRule {
204+
ServiceBusNamespace.DefinitionStages.WithTopic, ServiceBusNamespace.DefinitionStages.WithAuthorizationRule,
205+
ServiceBusNamespace.DefinitionStages.WithLocalAuth {
182206
}
183207
}
184208

@@ -187,7 +211,8 @@ interface WithCreate extends Creatable<ServiceBusNamespace>, Resource.Definition
187211
*/
188212
interface Update extends Appliable<ServiceBusNamespace>, Resource.UpdateWithTags<Update>,
189213
ServiceBusNamespace.UpdateStages.WithSku, ServiceBusNamespace.UpdateStages.WithQueue,
190-
ServiceBusNamespace.UpdateStages.WithTopic, ServiceBusNamespace.UpdateStages.WithAuthorizationRule {
214+
ServiceBusNamespace.UpdateStages.WithTopic, ServiceBusNamespace.UpdateStages.WithAuthorizationRule,
215+
ServiceBusNamespace.UpdateStages.WithLocalAuth {
191216
}
192217

193218
/**
@@ -288,6 +313,20 @@ interface WithAuthorizationRule {
288313
*/
289314
Update withoutAuthorizationRule(String name);
290315
}
316+
317+
/**
318+
* The stage of Service Bus namespace update allowing to disable local auth.
319+
*/
320+
interface WithLocalAuth {
321+
/**
322+
* Disables SAS authentication for the Service Bus namespace.
323+
*
324+
* @return next stage of the Service Bus namespace update
325+
*/
326+
default Update disableLocalAuth() {
327+
throw new UnsupportedOperationException("[disableLocalAuth] is not supported in " + getClass());
328+
}
329+
}
291330
}
292331

293332
}

sdk/resourcemanager/azure-resourcemanager-servicebus/src/main/java/com/azure/resourcemanager/servicebus/models/TopicAuthorizationRule.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ interface Blank extends
4444
* the resource to be created (via {@link WithCreate#create()}), but also allows
4545
* for any other optional settings to be specified.
4646
*/
47-
interface WithCreate extends Creatable<TopicAuthorizationRule> {
47+
interface WithCreate extends Creatable<TopicAuthorizationRule>,
48+
AuthorizationRule.DefinitionStages.WithListenOrSendOrManage<TopicAuthorizationRule.DefinitionStages.WithCreate> {
4849
}
4950
}
5051

sdk/resourcemanager/azure-resourcemanager-servicebus/src/test/java/com/azure/resourcemanager/servicebus/ServiceBusOperationsTests.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,10 @@ public void canOperateOnAuthorizationRules() {
356356
.withNewQueue(queueName, 1024)
357357
.withNewTopic(topicName, 1024)
358358
.withNewManageRule(nsRuleName)
359+
.disableLocalAuth()
359360
.create();
361+
362+
Assertions.assertTrue(namespace.localAuthDisabled());
360363
// Lookup ns authorization rule
361364
//
362365
PagedIterable<NamespaceAuthorizationRule> rulesInNamespace = namespace.authorizationRules().list();
@@ -383,6 +386,12 @@ public void canOperateOnAuthorizationRules() {
383386
if (!isPlaybackMode()) {
384387
Assertions.assertNotEquals(nsRuleKeys.primaryKey(), primaryKey);
385388
}
389+
390+
NamespaceAuthorizationRule nsRule2
391+
= namespace.authorizationRules().define("rule2").withListeningEnabled().withSendingEnabled().create();
392+
Assertions.assertNotNull(nsRule2.rights());
393+
Assertions.assertTrue(nsRule2.rights().contains(AccessRights.LISTEN));
394+
Assertions.assertTrue(nsRule2.rights().contains(AccessRights.SEND));
386395
// Lookup queue & operate on auth rules
387396
//
388397
PagedIterable<Queue> queuesInNamespace = namespace.queues().list();
@@ -392,11 +401,13 @@ public void canOperateOnAuthorizationRules() {
392401
Assertions.assertNotNull(queue);
393402
Assertions.assertNotNull(queue.innerModel());
394403

395-
QueueAuthorizationRule qRule = queue.authorizationRules().define("rule1").withListeningEnabled().create();
404+
QueueAuthorizationRule qRule
405+
= queue.authorizationRules().define("rule1").withListeningEnabled().withSendingEnabled().create();
396406
Assertions.assertNotNull(qRule);
397-
Assertions.assertNotNull(qRule.rights().contains(AccessRights.LISTEN));
407+
Assertions.assertTrue(qRule.rights().contains(AccessRights.LISTEN));
408+
Assertions.assertTrue(qRule.rights().contains(AccessRights.SEND));
398409
qRule = qRule.update().withManagementEnabled().apply();
399-
Assertions.assertNotNull(qRule.rights().contains(AccessRights.MANAGE));
410+
Assertions.assertTrue(qRule.rights().contains(AccessRights.MANAGE));
400411
PagedIterable<QueueAuthorizationRule> rulesInQueue = queue.authorizationRules().list();
401412
Assertions.assertTrue(TestUtilities.getSize(rulesInQueue) > 0);
402413
boolean foundQRule = false;
@@ -416,11 +427,13 @@ public void canOperateOnAuthorizationRules() {
416427
Topic topic = topicsInNamespace.iterator().next();
417428
Assertions.assertNotNull(topic);
418429
Assertions.assertNotNull(topic.innerModel());
419-
TopicAuthorizationRule tRule = topic.authorizationRules().define("rule2").withSendingEnabled().create();
430+
TopicAuthorizationRule tRule
431+
= topic.authorizationRules().define("rule2").withListeningEnabled().withSendingEnabled().create();
420432
Assertions.assertNotNull(tRule);
421-
Assertions.assertNotNull(tRule.rights().contains(AccessRights.SEND));
433+
Assertions.assertTrue(tRule.rights().contains(AccessRights.LISTEN));
434+
Assertions.assertTrue(tRule.rights().contains(AccessRights.SEND));
422435
tRule = tRule.update().withManagementEnabled().apply();
423-
Assertions.assertNotNull(tRule.rights().contains(AccessRights.MANAGE));
436+
Assertions.assertTrue(tRule.rights().contains(AccessRights.MANAGE));
424437
PagedIterable<TopicAuthorizationRule> rulesInTopic = topic.authorizationRules().list();
425438
Assertions.assertTrue(TestUtilities.getSize(rulesInTopic) > 0);
426439
boolean foundTRule = false;

0 commit comments

Comments
 (0)