public IList <AzureTenant> ListAccountTenants(IAccessToken accessToken, IAzureEnvironment environment) { List <AzureTenant> result = new List <AzureTenant>(); SubscriptionClient subscriptionClient = null; try { subscriptionClient = AzureSession.Instance.ClientFactory.CreateCustomArmClient <SubscriptionClient>( environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager), new TokenCredentials(accessToken.AccessToken) as ServiceClientCredentials, AzureSession.Instance.ClientFactory.GetCustomHandlers()); var tenants = new GenericPageEnumerable <TenantIdDescription>(subscriptionClient.Tenants.List, subscriptionClient.Tenants.ListNext, ulong.MaxValue, 0).ToList(); if (tenants != null) { result = new List <AzureTenant>(); tenants.ForEach((t) => { result.Add(t.ToAzureTenant(accessToken)); }); } } finally { // In test mode, we are reusing the client since disposing of it will // fail some tests (due to HttpClient being null) if (subscriptionClient != null && !TestMockSupport.RunningMocked) { subscriptionClient.Dispose(); } } return(result); }
public SubscriptionClient AddRestLogHandler(SubscriptionClient client) { var withHandlerMethod = typeof(SubscriptionClient).GetMethod("WithHandler", new[] { typeof(DelegatingHandler) }); SubscriptionClient finalClient = (SubscriptionClient)withHandlerMethod.Invoke(client, new object[] { new HttpRestCallLogger() }); client.Dispose(); return(finalClient); }
private static List <AzureTenant> ListAccountTenants( IAzureContext defaultContext) { List <AzureTenant> result = new List <AzureTenant>(); var commonTenant = GetCommonTenant(defaultContext.Account); var commonTenantToken = AcquireAccessToken( defaultContext.Account, defaultContext.Environment, commonTenant); SubscriptionClient subscriptionClient = null; try { subscriptionClient = AzureSession.Instance.ClientFactory.CreateCustomArmClient <SubscriptionClient>( defaultContext.Environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager), new TokenCredentials(commonTenantToken.AccessToken) as ServiceClientCredentials, AzureSession.Instance.ClientFactory.GetCustomHandlers()); var tenants = subscriptionClient.Tenants.List(); if (tenants != null) { result = new List <AzureTenant>(); tenants.ForEach((t) => { result.Add(new AzureTenant { Id = t.TenantId, Directory = commonTenantToken.GetDomain() }); }); } } finally { // In test mode, we are reusing the client since disposing of it will // fail some tests (due to HttpClient being null) if (subscriptionClient != null && !TestMockSupport.RunningMocked) { subscriptionClient.Dispose(); } } return(result); }
private List <AzureTenant> ListAccountTenants( IAzureAccount account, IAzureEnvironment environment, SecureString password, string promptBehavior, Action <string> promptAction) { List <AzureTenant> result = new List <AzureTenant>(); var commonTenant = GetCommonTenant(account); try { var commonTenantToken = AcquireAccessToken( account, environment, commonTenant, password, promptBehavior, promptAction); SubscriptionClient subscriptionClient = null; try { subscriptionClient = AzureSession.Instance.ClientFactory.CreateCustomArmClient <SubscriptionClient>( environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ResourceManager), new TokenCredentials(commonTenantToken.AccessToken) as ServiceClientCredentials, AzureSession.Instance.ClientFactory.GetCustomHandlers()); //TODO: Fix subscription client to not require subscriptionId result = account.MergeTenants(subscriptionClient.Tenants.List(), commonTenantToken); } finally { // In test mode, we are reusing the client since disposing of it will // fail some tests (due to HttpClient being null) if (subscriptionClient != null && !TestMockSupport.RunningMocked) { subscriptionClient.Dispose(); } } } catch { WriteWarningMessage(string.Format(ProfileMessages.UnableToAqcuireToken, commonTenant)); if (account.IsPropertySet(AzureAccount.Property.Tenants)) { result = account.GetPropertyAsArray(AzureAccount.Property.Tenants) .Select(ti => { var tenant = new AzureTenant(); Guid guid; if (Guid.TryParse(ti, out guid)) { tenant.Id = ti; tenant.Directory = AccessTokenExtensions.GetDomain(account.Id); } else { tenant.Directory = ti; } return(tenant); }).ToList(); } if (!result.Any()) { throw; } } return(result); }
public SubscriptionClient AddRestLogHandler(SubscriptionClient client) { var withHandlerMethod = typeof(SubscriptionClient).GetMethod("WithHandler", new[] { typeof(DelegatingHandler) }); SubscriptionClient finalClient = (SubscriptionClient)withHandlerMethod.Invoke(client, new object[] { new HttpRestCallLogger() }); client.Dispose(); return finalClient; }