コード例 #1
0
        public IAzureSubscription AddOrSetSubscription(IAzureSubscription subscription)
        {
            if (subscription == null)
            {
                throw new ArgumentNullException("subscription", Resources.SubscriptionNeedsToBeSpecified);
            }
            if (subscription.GetEnvironment() == null)
            {
                throw new ArgumentNullException("subscription.Environment", Resources.EnvironmentNeedsToBeSpecified);
            }
            // Validate environment
            GetEnvironmentOrDefault(subscription.GetEnvironment());

            if (Profile.SubscriptionTable.ContainsKey(subscription.GetId()))
            {
                Profile.SubscriptionTable[subscription.GetId()] = MergeSubscriptionProperties(subscription, Profile.SubscriptionTable[subscription.GetId()]);
            }
            else
            {
                Debug.Assert(!string.IsNullOrEmpty(subscription.GetAccount()));
                if (!Profile.AccountTable.ContainsKey(subscription.GetAccount()))
                {
                    throw new KeyNotFoundException(string.Format("The specified account {0} does not exist in profile accounts", subscription.GetAccount()));
                }

                Profile.SubscriptionTable[subscription.GetId()] = subscription;
            }

            return(Profile.SubscriptionTable[subscription.GetId()]);
        }
コード例 #2
0
        public TClient CreateClient <TClient>(IAzureContextContainer profile, IAzureSubscription subscription, string endpoint) where TClient : ServiceClient <TClient>
        {
#if !NETSTANDARD
            if (subscription == null)
            {
                throw new ArgumentException(Microsoft.Azure.Commands.ResourceManager.Common.Properties.Resources.InvalidDefaultSubscription);
            }

            if (profile == null)
            {
                profile = new AzureSMProfile(Path.Combine(AzureSession.Instance.ProfileDirectory, AzureSession.Instance.ProfileFile));
            }

            SubscriptionCloudCredentials creds = new TokenCloudCredentials(subscription.Id.ToString(), "fake_token");
            if (HttpMockServer.GetCurrentMode() != HttpRecorderMode.Playback)
            {
                ProfileClient profileClient = new ProfileClient(profile as AzureSMProfile);
                AzureContext  context       = new AzureContext(
                    subscription,
                    profileClient.GetAccount(subscription.GetAccount()),
                    profileClient.GetEnvironmentOrDefault(subscription.GetEnvironment())
                    );

                creds = AzureSession.Instance.AuthenticationFactory.GetSubscriptionCloudCredentials(context);
            }

            Uri endpointUri = profile.Environments.FirstOrDefault((e) => e.Name.Equals(subscription.GetEnvironment(), StringComparison.OrdinalIgnoreCase)).GetEndpointAsUri(endpoint);
            return(CreateCustomClient <TClient>(creds, endpointUri));
#else
            throw new NotSupportedException("AzureSMProfile is not supported in Azure PS on .Net Core.");
#endif
        }
コード例 #3
0
        public static IHDInsightSubscriptionCredentials GetSubscriptionCredentials(
            this IAzureHDInsightCommonCommandBase command,
            IAzureSubscription currentSubscription,
            IAzureEnvironment environment,
            AzureSMProfile profile)
        {
            var accountId = currentSubscription.GetAccount();

            Debug.Assert(profile.AccountTable.ContainsKey(accountId));

            if (profile.AccountTable[accountId].Type == AzureAccount.AccountType.Certificate)
            {
                return(GetSubscriptionCertificateCredentials(command, currentSubscription, profile.AccountTable[accountId], environment));
            }
            else if (profile.AccountTable[accountId].Type == AzureAccount.AccountType.User)
            {
                return(GetAccessTokenCredentials(command, currentSubscription, profile.AccountTable[accountId], environment));
            }
            else if (profile.AccountTable[accountId].Type == AzureAccount.AccountType.ServicePrincipal)
            {
                return(GetAccessTokenCredentials(command, currentSubscription, profile.AccountTable[accountId], environment));
            }

            throw new NotSupportedException();
        }
コード例 #4
0
        public TClient CreateClient <TClient>(IAzureContextContainer container, IAzureSubscription subscription, string endpoint) where TClient : ServiceClient <TClient>
        {
            var profile = container as AzureSMProfile;

            if (subscription == null)
            {
                throw new ArgumentException(Commands.Common.Properties.Resources.InvalidDefaultSubscription);
            }

            if (profile == null)
            {
                profile = new AzureSMProfile(Path.Combine(AzureSession.Instance.ProfileDirectory, AzureSession.Instance.ProfileFile));
            }

            SubscriptionCloudCredentials creds = new TokenCloudCredentials(subscription.Id.ToString(), "fake_token");

            if (HttpMockServer.GetCurrentMode() != HttpRecorderMode.Playback)
            {
                ProfileClient profileClient = new ProfileClient(profile);
                AzureContext  context       = new AzureContext(
                    subscription,
                    profileClient.GetAccount(subscription.GetAccount()),
                    profileClient.GetEnvironmentOrDefault(subscription.GetEnvironment())
                    );

                creds = AzureSession.Instance.AuthenticationFactory.GetSubscriptionCloudCredentials(context);
            }

            Uri endpointUri = profile.EnvironmentTable[subscription.GetEnvironment()].GetEndpointAsUri(endpoint);

            return(CreateCustomClient <TClient>(creds, endpointUri));
        }
コード例 #5
0
 public static IHDInsightSubscriptionCredentials GetSubscriptionCertificateCredentials(this IAzureHDInsightCommonCommandBase command,
                                                                                       IAzureSubscription currentSubscription, IAzureAccount azureAccount, IAzureEnvironment environment)
 {
     return(new HDInsightCertificateCredential
     {
         SubscriptionId = currentSubscription.GetId(),
         Certificate = AzureSession.Instance.DataStore.GetCertificate(currentSubscription.GetAccount()),
         Endpoint = environment.GetEndpointAsUri(AzureEnvironment.Endpoint.ServiceManagement),
     });
 }
コード例 #6
0
 public PSAzureSubscription(IAzureSubscription subscription, AzureSMProfile profile)
 {
     SubscriptionId            = subscription.Id.ToString();
     SubscriptionName          = subscription.Name;
     Environment               = subscription.GetEnvironment();
     DefaultAccount            = subscription.GetAccount();
     Accounts                  = profile.AccountTable.Values.Where(a => a.HasSubscription(subscription.GetId())).ToArray();
     IsDefault                 = subscription.IsPropertySet(AzureSubscription.Property.Default);
     IsCurrent                 = profile.Context != null && profile.Context.Subscription.Id == subscription.Id;
     CurrentStorageAccountName = subscription.GetProperty(AzureSubscription.Property.StorageAccount);
     TenantId                  = subscription.GetTenant();
 }
コード例 #7
0
        internal Subscription(IAzureSubscription azureSubscription)
        {
            if (azureSubscription == null)
            {
                throw new ArgumentNullException();
            }

            ProfileClient client      = new ProfileClient(new AzureSMProfile(Path.Combine(AzureSession.Instance.ProfileDirectory, AzureSession.Instance.ProfileFile)));
            var           environment = client.GetEnvironmentOrDefault(azureSubscription.GetEnvironment());

            this.SubscriptionName = azureSubscription.Name;
            this.SubscriptionId   = azureSubscription.Id.ToString();
            this.ServiceEndpoint  = new Uri(String.Format("{0}/{1}/services/systemcenter/vmm", environment.GetEndpoint(AzureEnvironment.Endpoint.ServiceManagement).TrimEnd(new[] { '/' }), SubscriptionId));
            this.Certificate      = FileUtilities.DataStore.GetCertificate(azureSubscription.GetAccount());
            this.CredentialType   = CredentialType.UseCertificate;
        }
コード例 #8
0
        /// <summary>
        /// Returns Account specified in the parameter or current account of the subscription
        /// </summary>
        /// <returns></returns>
        private string GetAccount()
        {
            if (!string.IsNullOrEmpty(Account))
            {
                return(Account);
            }

            IAzureSubscription subscription = ProfileClient.Profile.SubscriptionTable.Values
                                              .Where(s => !string.IsNullOrWhiteSpace(s.Name))
                                              .FirstOrDefault(s => s.Name.Equals(SubscriptionName, StringComparison.InvariantCultureIgnoreCase) ||
                                                              s.Id.ToString().Equals(SubscriptionId, StringComparison.InvariantCultureIgnoreCase));

            if (subscription != null)
            {
                return(subscription.GetAccount());
            }
            else
            {
                return(null);
            }
        }
コード例 #9
0
        private PSAzureSubscriptionExtended ConstructPsAzureSubscriptionExtended(IAzureSubscription subscription, IClientFactory clientFactory)
        {
            using (var client = clientFactory.CreateClient <ManagementClient>(Profile, subscription, AzureEnvironment.Endpoint.ServiceManagement))
            {
                var  response                      = client.Subscriptions.Get();
                var  environment                   = ProfileClient.GetEnvironmentOrDefault(subscription.GetEnvironment());
                var  account                       = ProfileClient.Profile.AccountTable[subscription.GetAccount()];
                bool isCert                        = account.Type == AzureAccount.AccountType.Certificate;
                var  psAzureSubscription           = new PSAzureSubscription(subscription, ProfileClient.Profile);
                PSAzureSubscriptionExtended result = new PSAzureSubscriptionExtended(psAzureSubscription)
                {
                    AccountAdminLiveEmailId    = response.AccountAdminLiveEmailId,
                    ActiveDirectoryUserId      = subscription.GetAccount(),
                    CurrentCoreCount           = response.CurrentCoreCount,
                    CurrentHostedServices      = response.CurrentHostedServices,
                    CurrentDnsServers          = response.CurrentDnsServers,
                    CurrentLocalNetworkSites   = response.CurrentLocalNetworkSites,
                    CurrentStorageAccounts     = response.CurrentStorageAccounts,
                    CurrentVirtualNetworkSites = response.CurrentVirtualNetworkSites,
                    MaxCoreCount            = response.MaximumCoreCount,
                    MaxDnsServers           = response.MaximumDnsServers,
                    MaxHostedServices       = response.MaximumHostedServices,
                    MaxLocalNetworkSites    = response.MaximumLocalNetworkSites,
                    MaxStorageAccounts      = response.MaximumStorageAccounts,
                    MaxVirtualNetworkSites  = response.MaximumVirtualNetworkSites,
                    ServiceAdminLiveEmailId = response.ServiceAdminLiveEmailId,
                    SubscriptionRealName    = response.SubscriptionName,
                    SubscriptionStatus      = response.SubscriptionStatus.ToString(),
                    ServiceEndpoint         = environment.GetEndpoint(AzureEnvironment.Endpoint.ServiceManagement),
                    ResourceManagerEndpoint = environment.GetEndpoint(AzureEnvironment.Endpoint.ResourceManager),
                    IsDefault   = subscription.GetProperty(AzureSubscription.Property.Default) != null,
                    Account     = account,
                    Certificate = isCert ? AzureSession.Instance.DataStore.GetCertificate(subscription.GetAccount()) : null,
                    CurrentStorageAccountName = subscription.GetProperty(AzureSubscription.Property.StorageAccount)
                };

                return(result);
            }
        }
コード例 #10
0
        /// <summary>
        /// Creates the client.
        /// </summary>
        /// <typeparam name="TClient">The type of the client.</typeparam>
        /// <param name="profile">The profile.</param>
        /// <param name="subscription">The subscription.</param>
        /// <param name="endpoint">The endpoint.</param>
        /// <returns></returns>
        /// <exception cref="System.ApplicationException"></exception>
        /// <exception cref="System.ArgumentException">
        /// accountName
        /// or
        /// environment
        /// </exception>
        public virtual TClient CreateClient <TClient>(IAzureContextContainer profile, IAzureSubscription subscription, string endpoint) where TClient : ServiceClient <TClient>
        {
            if (subscription == null)
            {
                throw new ApplicationException(Resources.InvalidDefaultSubscription);
            }

            var account = profile.Accounts.FirstOrDefault((a) => string.Equals(a.Id, (subscription.GetAccount()), StringComparison.OrdinalIgnoreCase));

            if (null == account)
            {
                throw new ArgumentException(string.Format("Account with name '{0}' does not exist.", subscription.GetAccount()), "accountName");
            }

            var environment = profile.Environments.FirstOrDefault((e) => string.Equals(e.Name, subscription.GetEnvironment(), StringComparison.OrdinalIgnoreCase));

            if (null == environment)
            {
                throw new ArgumentException(string.Format(Resources.EnvironmentNotFound, subscription.GetEnvironment()));
            }

            AzureContext context = new AzureContext(subscription, account, environment);

            var client = CreateClient <TClient>(context, endpoint);

            foreach (IClientAction action in GetActions())
            {
                action.Apply <TClient>(client, profile, endpoint);
            }

            return(client);
        }