Skip to content

Commit e32b143

Browse files
author
Maddie Clayton
authored
Merge pull request Azure#6065 from maddieclayton/constructor
Fix GetCustomArmClient
2 parents d5d4cbf + bbccb2f commit e32b143

File tree

5 files changed

+19
-25
lines changed

5 files changed

+19
-25
lines changed

src/Common/Commands.Common.Authentication/Factories/ClientFactory.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,19 +73,33 @@ public virtual TClient CreateArmClient<TClient>(IAzureContext context, string en
7373
public virtual TClient CreateCustomArmClient<TClient>(params object[] parameters) where TClient : Microsoft.Rest.ServiceClient<TClient>
7474
{
7575
List<Type> types = new List<Type>();
76+
var containsDelegatingHandler = false;
7677
foreach (object obj in parameters)
7778
{
79+
if (obj.GetType().Name.Equals("DelegatingHandler[]"))
80+
{
81+
containsDelegatingHandler = true;
82+
}
7883
types.Add(obj.GetType());
7984
}
8085

86+
var copiedParameters = parameters;
87+
if (!containsDelegatingHandler)
88+
{
89+
types.Add((new DelegatingHandler[0]).GetType());
90+
var parameterList = copiedParameters.ToList();
91+
parameterList.Add(new DelegatingHandler[0]);
92+
copiedParameters = parameterList.ToArray();
93+
}
94+
8195
var constructor = typeof(TClient).GetConstructor(types.ToArray());
8296

8397
if (constructor == null)
8498
{
8599
throw new InvalidOperationException(string.Format(Resources.InvalidManagementClientType, typeof(TClient).Name));
86100
}
87101

88-
TClient client = (TClient)constructor.Invoke(parameters);
102+
TClient client = (TClient)constructor.Invoke(copiedParameters);
89103

90104
foreach (ProductInfoHeaderValue userAgent in _userAgents.Keys)
91105
{

src/ResourceManager/Common/Commands.ResourceManager.Common/ArgumentCompleters/LocationCompleter.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,7 @@ protected static IDictionary<string, ICollection<string>> ResourceTypeLocationDi
4949
{
5050
try
5151
{
52-
var instance = AzureSession.Instance;
53-
IResourceManagementClient client = instance.ClientFactory.CreateCustomArmClient<ResourceManagementClient>(
54-
context.Environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager),
55-
instance.AuthenticationFactory.GetServiceClientCredentials(context, AzureEnvironment.Endpoint.ResourceManager),
56-
instance.ClientFactory.GetCustomHandlers());
57-
client.SubscriptionId = context.Subscription.Id;
52+
IResourceManagementClient client = AzureSession.Instance.ClientFactory.CreateArmClient<ResourceManagementClient>(context, AzureEnvironment.Endpoint.ResourceManager);
5853
var allProviders = client.Providers.ListAsync();
5954
if (allProviders.Wait(TimeSpan.FromSeconds(_timeout)))
6055
{

src/ResourceManager/Common/Commands.ResourceManager.Common/ArgumentCompleters/ResourceGroupCompleter.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,7 @@ protected static IList<String> ResourceGroupNames
4848
var tempResourceGroupList = new List<string>();
4949
try
5050
{
51-
var instance = AzureSession.Instance;
52-
var client = instance.ClientFactory.CreateCustomArmClient<ResourceManagementClient>(
53-
context.Environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager),
54-
instance.AuthenticationFactory.GetServiceClientCredentials(context, AzureEnvironment.Endpoint.ResourceManager),
55-
instance.ClientFactory.GetCustomHandlers());
56-
client.SubscriptionId = context.Subscription.Id;
51+
var client = AzureSession.Instance.ClientFactory.CreateArmClient<ResourceManagementClient>(context, AzureEnvironment.Endpoint.ResourceManager);
5752
// Retrieve only the first page of ResourceGroups to display to the user
5853
var resourceGroups = client.ResourceGroups.ListAsync();
5954
if (resourceGroups.Wait(TimeSpan.FromSeconds(_timeout)))

src/ResourceManager/Common/Commands.ResourceManager.Common/ArgumentCompleters/ResourceTypeCompleter.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,7 @@ protected static IList<String> ResourceTypes
4848
var tempResourceTypeList = new List<string>();
4949
try
5050
{
51-
var instance = AzureSession.Instance;
52-
var client = instance.ClientFactory.CreateCustomArmClient<ResourceManagementClient>(
53-
context.Environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager),
54-
instance.AuthenticationFactory.GetServiceClientCredentials(context, AzureEnvironment.Endpoint.ResourceManager),
55-
instance.ClientFactory.GetCustomHandlers());
56-
client.SubscriptionId = context.Subscription.Id;
51+
var client = AzureSession.Instance.ClientFactory.CreateArmClient<ResourceManagementClient>(context, AzureEnvironment.Endpoint.ResourceManager);
5752
var resourceTypes = new List<Provider>();
5853
var task = client.Providers.ListAsync();
5954
if (task.Wait(TimeSpan.FromSeconds(_timeout)))

src/ResourceManager/Common/Commands.ResourceManager.Common/ArgumentCompleters/ScopeCompleter.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,7 @@ protected static IList<String> Scopes
4545
var tempScopeList = new List<string>();
4646
try
4747
{
48-
var instance = AzureSession.Instance;
49-
var client = instance.ClientFactory.CreateCustomArmClient<ResourceManagementClient>(
50-
context.Environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager),
51-
instance.AuthenticationFactory.GetServiceClientCredentials(context, AzureEnvironment.Endpoint.ResourceManager),
52-
instance.ClientFactory.GetCustomHandlers());
53-
client.SubscriptionId = context.Subscription.Id;
48+
var client = AzureSession.Instance.ClientFactory.CreateArmClient<ResourceManagementClient>(context, AzureEnvironment.Endpoint.ResourceManager);
5449
// Retrieve only the first page of ResourceGroups to use for scopes
5550
var resourceGroups = client.ResourceGroups.ListAsync();
5651
if (resourceGroups.Wait(TimeSpan.FromSeconds(_timeout)))

0 commit comments

Comments
 (0)