From 4aeacdfa44b471577f754974d4f7561e12072f96 Mon Sep 17 00:00:00 2001 From: Harvey Chen <30464227+HarveyLink@users.noreply.github.com> Date: Tue, 27 Jul 2021 17:26:30 +0800 Subject: [PATCH 1/4] Update to support scope --- .../Redesign/ManagementRecordedTestBase.cs | 9 +++-- .../Azure.ResourceManager/src/ArmClient.cs | 38 ++++++++++++++----- .../Resources/GenericResourceOperations.cs | 2 +- .../tests/Scenario/ArmClientTests.cs | 4 +- 4 files changed, 37 insertions(+), 16 deletions(-) diff --git a/common/ManagementTestShared/Redesign/ManagementRecordedTestBase.cs b/common/ManagementTestShared/Redesign/ManagementRecordedTestBase.cs index 49c4eb021ea8..720805614e75 100644 --- a/common/ManagementTestShared/Redesign/ManagementRecordedTestBase.cs +++ b/common/ManagementTestShared/Redesign/ManagementRecordedTestBase.cs @@ -64,7 +64,8 @@ private ArmClient GetCleanupClient() TestEnvironment.SubscriptionId, GetUri(TestEnvironment.ResourceManagerUrl), TestEnvironment.Credential, - new ArmClientOptions()); + new ArmClientOptions(), + null); } return null; } @@ -81,7 +82,8 @@ protected ArmClient GetArmClient(ArmClientOptions clientOptions = default) TestEnvironment.SubscriptionId, GetUri(TestEnvironment.ResourceManagerUrl), TestEnvironment.Credential, - options); + options, + null); } private Uri GetUri(string endpoint) @@ -168,7 +170,8 @@ public void OneTimeSetUp() SessionEnvironment.SubscriptionId, GetUri(SessionEnvironment.ResourceManagerUrl), SessionEnvironment.Credential, - options); + options, + null); } private bool HasOneTimeSetup() diff --git a/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs b/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs index 8b86462c1c72..f7095a2e32cf 100644 --- a/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs +++ b/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs @@ -25,6 +25,7 @@ public class ArmClient /// The base URI of the service. /// internal const string DefaultUri = "https://management.azure.com"; + internal const string Scope = "https://management.core.windows.net/.default"; private TenantOperations _tenant; /// @@ -39,8 +40,10 @@ protected ArmClient() /// /// A credential used to authenticate to an Azure Service. /// If is null. +#pragma warning disable AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. public ArmClient(TokenCredential credential) - : this(null, new Uri(DefaultUri), credential, null) +#pragma warning restore AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. + : this(null, new Uri(DefaultUri), credential, null, null) { } @@ -49,9 +52,12 @@ public ArmClient(TokenCredential credential) /// /// A credential used to authenticate to an Azure Service. /// The client parameters to use in these operations. + /// The scope to be included in acquired tokens. /// If is null. - public ArmClient(TokenCredential credential, ArmClientOptions options) - : this(null, new Uri(DefaultUri), credential, options) +#pragma warning disable AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. + public ArmClient(TokenCredential credential, ArmClientOptions options, string scope = default) +#pragma warning restore AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. + : this(null, new Uri(DefaultUri), credential, options, scope) { } @@ -61,12 +67,16 @@ public ArmClient(TokenCredential credential, ArmClientOptions options) /// The id of the default Azure subscription. /// A credential used to authenticate to an Azure Service. /// The client parameters to use in these operations. + /// The scope to be included in acquired tokens. /// If is null. +#pragma warning disable AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. public ArmClient( +#pragma warning restore AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. string defaultSubscriptionId, TokenCredential credential, - ArmClientOptions options = default) - : this(defaultSubscriptionId, new Uri(DefaultUri), credential, options) + ArmClientOptions options = default, + string scope = default) + : this(defaultSubscriptionId, new Uri(DefaultUri), credential, options, scope) { } @@ -76,12 +86,16 @@ public ArmClient( /// The base URI of the Azure management endpoint. /// A credential used to authenticate to an Azure Service. /// The client parameters to use in these operations. + /// The scope to be included in acquired tokens. /// If is null. +#pragma warning disable AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. public ArmClient( +#pragma warning restore AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. Uri baseUri, TokenCredential credential, - ArmClientOptions options = default) - : this(null, baseUri, credential, options) + ArmClientOptions options = default, + string scope = default) + : this(null, baseUri, credential, options, scope) { } @@ -92,19 +106,23 @@ public ArmClient( /// The base URI of the service. /// A credential used to authenticate to an Azure Service. /// The client parameters to use in these operations. + /// The scope to be included in acquired tokens. +#pragma warning disable AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. public ArmClient( +#pragma warning restore AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. string defaultSubscriptionId, Uri baseUri, TokenCredential credential, - ArmClientOptions options = default) + ArmClientOptions options, + string scope) { if (credential is null) throw new ArgumentNullException(nameof(credential)); Credential = credential; BaseUri = baseUri ?? new Uri(DefaultUri); - ClientOptions = options?.Clone() ?? new ArmClientOptions(); - Pipeline = ManagementPipelineBuilder.Build(Credential, BaseUri, options ?? ClientOptions); + ClientOptions = options ?? new ArmClientOptions(); + Pipeline = ManagementPipelineBuilder.Build(Credential, scope ?? Scope, ClientOptions); _tenant = new TenantOperations(ClientOptions, Credential, BaseUri, Pipeline); DefaultSubscription = string.IsNullOrWhiteSpace(defaultSubscriptionId) diff --git a/sdk/resourcemanager/Azure.ResourceManager/src/Generated/Resources/GenericResourceOperations.cs b/sdk/resourcemanager/Azure.ResourceManager/src/Generated/Resources/GenericResourceOperations.cs index 8e53d5f4d875..f9a883d3c7e6 100644 --- a/sdk/resourcemanager/Azure.ResourceManager/src/Generated/Resources/GenericResourceOperations.cs +++ b/sdk/resourcemanager/Azure.ResourceManager/src/Generated/Resources/GenericResourceOperations.cs @@ -48,7 +48,7 @@ private ResourcesRestOperations RestClient return new ResourcesRestOperations( new Azure.Core.Pipeline.ClientDiagnostics(ClientOptions), - ManagementPipelineBuilder.Build(Credential, BaseUri, ClientOptions), + Pipeline, subscription, BaseUri); } diff --git a/sdk/resourcemanager/Azure.ResourceManager/tests/Scenario/ArmClientTests.cs b/sdk/resourcemanager/Azure.ResourceManager/tests/Scenario/ArmClientTests.cs index 1a70af56f0c3..ed8fec4db96c 100644 --- a/sdk/resourcemanager/Azure.ResourceManager/tests/Scenario/ArmClientTests.cs +++ b/sdk/resourcemanager/Azure.ResourceManager/tests/Scenario/ArmClientTests.cs @@ -37,9 +37,9 @@ public void CreateResourceFromId() [TestCase] public void TestArmClientParamCheck() { - Assert.Throws(() => { new ArmClient(null, null); }); + Assert.Throws(() => { new ArmClient(null, null, null); }); Assert.Throws(() => { new ArmClient(baseUri: null, null, null); }); - Assert.Throws(() => { new ArmClient(defaultSubscriptionId: null, null, null); }); + Assert.Throws(() => { new ArmClient(defaultSubscriptionId: null, null, null, null); }); } [TestCase] From 524c3e9a3feb33bf7185440d8ae132b0ac55a5b9 Mon Sep 17 00:00:00 2001 From: Harvey Chen <30464227+HarveyLink@users.noreply.github.com> Date: Wed, 28 Jul 2021 09:17:43 +0800 Subject: [PATCH 2/4] Revert "Update to support scope" This reverts commit 4aeacdfa44b471577f754974d4f7561e12072f96. --- .../Redesign/ManagementRecordedTestBase.cs | 9 ++--- .../Azure.ResourceManager/src/ArmClient.cs | 38 +++++-------------- .../Resources/GenericResourceOperations.cs | 2 +- .../tests/Scenario/ArmClientTests.cs | 4 +- 4 files changed, 16 insertions(+), 37 deletions(-) diff --git a/common/ManagementTestShared/Redesign/ManagementRecordedTestBase.cs b/common/ManagementTestShared/Redesign/ManagementRecordedTestBase.cs index 720805614e75..49c4eb021ea8 100644 --- a/common/ManagementTestShared/Redesign/ManagementRecordedTestBase.cs +++ b/common/ManagementTestShared/Redesign/ManagementRecordedTestBase.cs @@ -64,8 +64,7 @@ private ArmClient GetCleanupClient() TestEnvironment.SubscriptionId, GetUri(TestEnvironment.ResourceManagerUrl), TestEnvironment.Credential, - new ArmClientOptions(), - null); + new ArmClientOptions()); } return null; } @@ -82,8 +81,7 @@ protected ArmClient GetArmClient(ArmClientOptions clientOptions = default) TestEnvironment.SubscriptionId, GetUri(TestEnvironment.ResourceManagerUrl), TestEnvironment.Credential, - options, - null); + options); } private Uri GetUri(string endpoint) @@ -170,8 +168,7 @@ public void OneTimeSetUp() SessionEnvironment.SubscriptionId, GetUri(SessionEnvironment.ResourceManagerUrl), SessionEnvironment.Credential, - options, - null); + options); } private bool HasOneTimeSetup() diff --git a/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs b/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs index f7095a2e32cf..8b86462c1c72 100644 --- a/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs +++ b/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs @@ -25,7 +25,6 @@ public class ArmClient /// The base URI of the service. /// internal const string DefaultUri = "https://management.azure.com"; - internal const string Scope = "https://management.core.windows.net/.default"; private TenantOperations _tenant; /// @@ -40,10 +39,8 @@ protected ArmClient() /// /// A credential used to authenticate to an Azure Service. /// If is null. -#pragma warning disable AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. public ArmClient(TokenCredential credential) -#pragma warning restore AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. - : this(null, new Uri(DefaultUri), credential, null, null) + : this(null, new Uri(DefaultUri), credential, null) { } @@ -52,12 +49,9 @@ public ArmClient(TokenCredential credential) /// /// A credential used to authenticate to an Azure Service. /// The client parameters to use in these operations. - /// The scope to be included in acquired tokens. /// If is null. -#pragma warning disable AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. - public ArmClient(TokenCredential credential, ArmClientOptions options, string scope = default) -#pragma warning restore AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. - : this(null, new Uri(DefaultUri), credential, options, scope) + public ArmClient(TokenCredential credential, ArmClientOptions options) + : this(null, new Uri(DefaultUri), credential, options) { } @@ -67,16 +61,12 @@ public ArmClient(TokenCredential credential, ArmClientOptions options, string sc /// The id of the default Azure subscription. /// A credential used to authenticate to an Azure Service. /// The client parameters to use in these operations. - /// The scope to be included in acquired tokens. /// If is null. -#pragma warning disable AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. public ArmClient( -#pragma warning restore AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. string defaultSubscriptionId, TokenCredential credential, - ArmClientOptions options = default, - string scope = default) - : this(defaultSubscriptionId, new Uri(DefaultUri), credential, options, scope) + ArmClientOptions options = default) + : this(defaultSubscriptionId, new Uri(DefaultUri), credential, options) { } @@ -86,16 +76,12 @@ public ArmClient( /// The base URI of the Azure management endpoint. /// A credential used to authenticate to an Azure Service. /// The client parameters to use in these operations. - /// The scope to be included in acquired tokens. /// If is null. -#pragma warning disable AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. public ArmClient( -#pragma warning restore AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. Uri baseUri, TokenCredential credential, - ArmClientOptions options = default, - string scope = default) - : this(null, baseUri, credential, options, scope) + ArmClientOptions options = default) + : this(null, baseUri, credential, options) { } @@ -106,23 +92,19 @@ public ArmClient( /// The base URI of the service. /// A credential used to authenticate to an Azure Service. /// The client parameters to use in these operations. - /// The scope to be included in acquired tokens. -#pragma warning disable AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. public ArmClient( -#pragma warning restore AZC0007 // DO provide a minimal constructor that takes only the parameters required to connect to the service. string defaultSubscriptionId, Uri baseUri, TokenCredential credential, - ArmClientOptions options, - string scope) + ArmClientOptions options = default) { if (credential is null) throw new ArgumentNullException(nameof(credential)); Credential = credential; BaseUri = baseUri ?? new Uri(DefaultUri); - ClientOptions = options ?? new ArmClientOptions(); - Pipeline = ManagementPipelineBuilder.Build(Credential, scope ?? Scope, ClientOptions); + ClientOptions = options?.Clone() ?? new ArmClientOptions(); + Pipeline = ManagementPipelineBuilder.Build(Credential, BaseUri, options ?? ClientOptions); _tenant = new TenantOperations(ClientOptions, Credential, BaseUri, Pipeline); DefaultSubscription = string.IsNullOrWhiteSpace(defaultSubscriptionId) diff --git a/sdk/resourcemanager/Azure.ResourceManager/src/Generated/Resources/GenericResourceOperations.cs b/sdk/resourcemanager/Azure.ResourceManager/src/Generated/Resources/GenericResourceOperations.cs index f9a883d3c7e6..8e53d5f4d875 100644 --- a/sdk/resourcemanager/Azure.ResourceManager/src/Generated/Resources/GenericResourceOperations.cs +++ b/sdk/resourcemanager/Azure.ResourceManager/src/Generated/Resources/GenericResourceOperations.cs @@ -48,7 +48,7 @@ private ResourcesRestOperations RestClient return new ResourcesRestOperations( new Azure.Core.Pipeline.ClientDiagnostics(ClientOptions), - Pipeline, + ManagementPipelineBuilder.Build(Credential, BaseUri, ClientOptions), subscription, BaseUri); } diff --git a/sdk/resourcemanager/Azure.ResourceManager/tests/Scenario/ArmClientTests.cs b/sdk/resourcemanager/Azure.ResourceManager/tests/Scenario/ArmClientTests.cs index ed8fec4db96c..1a70af56f0c3 100644 --- a/sdk/resourcemanager/Azure.ResourceManager/tests/Scenario/ArmClientTests.cs +++ b/sdk/resourcemanager/Azure.ResourceManager/tests/Scenario/ArmClientTests.cs @@ -37,9 +37,9 @@ public void CreateResourceFromId() [TestCase] public void TestArmClientParamCheck() { - Assert.Throws(() => { new ArmClient(null, null, null); }); + Assert.Throws(() => { new ArmClient(null, null); }); Assert.Throws(() => { new ArmClient(baseUri: null, null, null); }); - Assert.Throws(() => { new ArmClient(defaultSubscriptionId: null, null, null, null); }); + Assert.Throws(() => { new ArmClient(defaultSubscriptionId: null, null, null); }); } [TestCase] From efa96170cd936cb283b813bdde04eca53456d305 Mon Sep 17 00:00:00 2001 From: Harvey Chen <30464227+HarveyLink@users.noreply.github.com> Date: Wed, 28 Jul 2021 12:07:38 +0800 Subject: [PATCH 3/4] Update in ArmClientOption --- sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs | 2 +- .../Azure.ResourceManager/src/ArmClientOptions.cs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs b/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs index 8b86462c1c72..e034dc0d72c5 100644 --- a/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs +++ b/sdk/resourcemanager/Azure.ResourceManager/src/ArmClient.cs @@ -104,7 +104,7 @@ public ArmClient( Credential = credential; BaseUri = baseUri ?? new Uri(DefaultUri); ClientOptions = options?.Clone() ?? new ArmClientOptions(); - Pipeline = ManagementPipelineBuilder.Build(Credential, BaseUri, options ?? ClientOptions); + Pipeline = ManagementPipelineBuilder.Build(Credential, options.Scope, options ?? ClientOptions); _tenant = new TenantOperations(ClientOptions, Credential, BaseUri, Pipeline); DefaultSubscription = string.IsNullOrWhiteSpace(defaultSubscriptionId) diff --git a/sdk/resourcemanager/Azure.ResourceManager/src/ArmClientOptions.cs b/sdk/resourcemanager/Azure.ResourceManager/src/ArmClientOptions.cs index afb7cf1ec106..71c5af843b87 100644 --- a/sdk/resourcemanager/Azure.ResourceManager/src/ArmClientOptions.cs +++ b/sdk/resourcemanager/Azure.ResourceManager/src/ArmClientOptions.cs @@ -20,6 +20,11 @@ public sealed class ArmClientOptions : ClientOptions /// public ApiVersions ApiVersions { get; private set; } + /// + /// Gets the ApiVersions object + /// + public string Scope { get; set; } = "https://management.core.windows.net/.default"; + /// /// Initializes a new instance of the class. /// From 6b3346cf325c6e7150c76dd675935f003982984a Mon Sep 17 00:00:00 2001 From: Harvey Chen <30464227+HarveyLink@users.noreply.github.com> Date: Wed, 28 Jul 2021 12:32:30 +0800 Subject: [PATCH 4/4] Update Azure.ResourceManager.netstandard2.0.cs --- .../api/Azure.ResourceManager.netstandard2.0.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/sdk/resourcemanager/Azure.ResourceManager/api/Azure.ResourceManager.netstandard2.0.cs b/sdk/resourcemanager/Azure.ResourceManager/api/Azure.ResourceManager.netstandard2.0.cs index 2fa796f9d053..309081e5d049 100644 --- a/sdk/resourcemanager/Azure.ResourceManager/api/Azure.ResourceManager.netstandard2.0.cs +++ b/sdk/resourcemanager/Azure.ResourceManager/api/Azure.ResourceManager.netstandard2.0.cs @@ -40,6 +40,7 @@ public sealed partial class ArmClientOptions : Azure.Core.ClientOptions { public ArmClientOptions() { } public Azure.ResourceManager.ApiVersions ApiVersions { get { throw null; } } + public string Scope { get { throw null; } set { } } [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)] public object GetOverrideObject(System.Func objectConstructor) { throw null; } }