public async Task InitializeDialog(AzureContext azureContext) { _AzureContext = azureContext; _AzureContext.LogProvider.WriteLog("InitializeDialog", "Start AzureSubscriptionContextDialog InitializeDialog"); lblAzureEnvironment.Text = _AzureContext.AzureEnvironment.ToString(); if (_AzureContext.TokenProvider.LastUserInfo != null) { lblAzureUsername.Text = _AzureContext.TokenProvider.LastUserInfo.DisplayableId; } cboTenant.Items.Clear(); if (_AzureContext.AzureRetriever != null && _AzureContext.TokenProvider != null) { _AzureContext.LogProvider.WriteLog("InitializeDialog", "Loading Azure Tenants"); foreach (AzureTenant azureTenant in await _AzureContext.GetAzureARMTenants()) { if (azureTenant.Subscriptions.Count > 0) // Only add Tenants that have one or more Subscriptions { cboTenant.Items.Add(azureTenant); _AzureContext.LogProvider.WriteLog("InitializeDialog", "Added Azure Tenant '" + azureTenant.ToString() + "'"); } else { _AzureContext.LogProvider.WriteLog("InitializeDialog", "Not adding Azure Tenant '" + azureTenant.ToString() + "'. Contains no subscriptions."); } } cboTenant.Enabled = true; if (_AzureContext.AzureTenant != null) { foreach (AzureTenant azureTenant in cboTenant.Items) { if (_AzureContext.AzureTenant == azureTenant) { cboTenant.SelectedItem = azureTenant; } } } } _AzureContext.LogProvider.WriteLog("InitializeDialog", "End AzureSubscriptionContextDialog InitializeDialog"); _AzureContext.StatusProvider.UpdateStatus("Ready"); }
public static async Task <AzureContext> SetupAzureContext(AzureEnvironment azureEnvironment, string restResponseFile) { ILogProvider logProvider = new FakeLogProvider(); IStatusProvider statusProvider = new FakeStatusProvider(); TargetSettings targetSettings = new FakeSettingsProvider().GetTargetSettings(); TestRetriever testRetriever = new TestRetriever(logProvider, statusProvider); AzureContext azureContext = new AzureContext(testRetriever, targetSettings); azureContext.AzureEnvironment = azureEnvironment; azureContext.TokenProvider = new FakeTokenProvider(); azureContext.AzureRetriever.LoadRestCache(restResponseFile); List <AzureTenant> tenants = await azureContext.GetAzureARMTenants(true); List <AzureSubscription> subscriptions = tenants[0].Subscriptions; await azureContext.SetSubscriptionContext(subscriptions[0]); return(azureContext); }
public async Task BindContext(AzureContext azureContext, List <AzureEnvironment> azureEnvironments, List <AzureEnvironment> userDefinedAzureEnvironments) { _AzureContext = azureContext; cboAzureEnvironment.Items.Clear(); foreach (AzureEnvironment azureEnvironment in azureEnvironments) { cboAzureEnvironment.Items.Add(azureEnvironment); } foreach (AzureEnvironment azureEnvironment in userDefinedAzureEnvironments) { cboAzureEnvironment.Items.Add(azureEnvironment); } if (_AzureContext.AzureEnvironment != null) { int environmentIndex = cboAzureEnvironment.FindStringExact(_AzureContext.AzureEnvironment.ToString()); if (environmentIndex >= 0) { cboAzureEnvironment.SelectedIndex = environmentIndex; } } if (cboAzureEnvironment.SelectedIndex < 0) { cboAzureEnvironment.SelectedIndex = 0; } if (_AzureContext.TokenProvider == null || _AzureContext.TokenProvider.LastUserInfo == null) { lblAuthenticatedUser.Text = "-"; cboAzureEnvironment.Enabled = true; btnAuthenticate.Text = "Sign In"; } else { lblAuthenticatedUser.Text = _AzureContext.TokenProvider.LastUserInfo.DisplayableId; cboAzureEnvironment.Enabled = false; btnAuthenticate.Text = "Sign Out"; } cboTenant.Items.Clear(); if (_AzureContext.AzureRetriever != null && _AzureContext.TokenProvider != null && _AzureContext.TokenProvider.LastUserInfo != null) { foreach (AzureTenant azureTenant in await _AzureContext.GetAzureARMTenants()) { if (azureTenant.Subscriptions.Count > 0) // Only add Tenants that have one or more Subscriptions { cboTenant.Items.Add(azureTenant); } } cboTenant.Enabled = true; if (_AzureContext.AzureTenant != null) { foreach (AzureTenant azureTenant in cboTenant.Items) { if (_AzureContext.AzureTenant == azureTenant) { cboTenant.SelectedItem = azureTenant; } } } if (cboTenant.SelectedItem != null) { AzureTenant selectedTenant = (AzureTenant)cboTenant.SelectedItem; cmbSubscriptions.Items.Clear(); if (_AzureContext.AzureRetriever != null) { foreach (AzureSubscription azureSubscription in await selectedTenant.GetAzureARMSubscriptions(_AzureContext, false)) { cmbSubscriptions.Items.Add(azureSubscription); } cmbSubscriptions.Enabled = true; } if (_AzureContext.AzureSubscription != null) { foreach (AzureSubscription azureSubscription in cmbSubscriptions.Items) { if (_AzureContext.AzureSubscription == azureSubscription) { cmbSubscriptions.SelectedItem = azureSubscription; } } } } } _AzureContext.StatusProvider.UpdateStatus("Ready"); }
private async void btnAuthenticate_Click(object sender, EventArgs e) { _AzureContext.LogProvider.WriteLog("btnAuthenticate_Click", "Start"); if (btnAuthenticate.Text == "Sign In") { try { cboTenant.Enabled = false; cboTenant.Items.Clear(); cmbSubscriptions.Enabled = false; cmbSubscriptions.Items.Clear(); await _AzureContext.Login(_AzureContext.AzureEnvironment.ServiceManagementUrl); if (_AzureContext.TokenProvider != null) { lblAuthenticatedUser.Text = _AzureContext.TokenProvider.LastUserInfo.DisplayableId; btnAuthenticate.Text = "Sign Out"; cboTenant.Items.Clear(); foreach (AzureTenant azureTenant in await _AzureContext.GetAzureARMTenants()) { if (azureTenant.Subscriptions.Count > 0) // Only add Tenants to the drop down that have subscriptions { cboTenant.Items.Add(azureTenant); } } cboAzureEnvironment.Enabled = false; cboTenant.Enabled = true; Application.DoEvents(); if (cboTenant.Items.Count == 0) { MessageBox.Show("This account does not have any Tenants with Azure Subscription(s). Logging out of Azure AD Account."); btnAuthenticate_Click(this, null); // No tenants, logout } if (cboTenant.Items.Count == 1) { cboTenant.SelectedIndex = 0; } else if (cboTenant.Items.Count > 1) { _AzureContext.StatusProvider.UpdateStatus("WAIT: Awaiting user selection of Azure Tenant"); } } else { _AzureContext.LogProvider.WriteLog("GetToken_Click", "Failed to get token"); } } catch (Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException exc) { if (exc.ErrorCode == "authentication_canceled") { // do nothing } else { throw exc; } } } else { await _AzureContext.Logout(); lblAuthenticatedUser.Text = "<Not Authenticated>"; btnAuthenticate.Text = "Sign In"; cboTenant.Items.Clear(); cboTenant.Enabled = false; cmbSubscriptions.Items.Clear(); cmbSubscriptions.Enabled = false; cboAzureEnvironment.Enabled = true; } _AzureContext.LogProvider.WriteLog("btnAuthenticate_Click", "End"); _AzureContext.StatusProvider.UpdateStatus("Ready"); }