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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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;
 }