aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2020-02-04 16:32:43 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2020-02-04 16:32:43 +0200
commit5bf3a7b36b3ccc7942f4e8e3fa227a38c04a8451 (patch)
tree03019be5bddc677ddb440fa00affc9b7c24aa1ce /Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs
parentc6a0f97efd7fc804e761086db3179443d1414df7 (diff)
downloadTango-5bf3a7b36b3ccc7942f4e8e3fa227a38c04a8451.tar.gz
Tango-5bf3a7b36b3ccc7942f4e8e3fa227a38c04a8451.zip
Working on azure utils.
Diffstat (limited to 'Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs121
1 files changed, 121 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs
new file mode 100644
index 000000000..958d1b857
--- /dev/null
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils.UI/ViewModels/MainViewVM.cs
@@ -0,0 +1,121 @@
+using Microsoft.Azure.Management.AppService.Fluent;
+using Microsoft.Azure.Management.Fluent;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Input;
+using Tango.AzureUtils.Deployment;
+using Tango.AzureUtils.UI.Managers;
+using Tango.Core.Commands;
+using Tango.Core.DI;
+using Tango.SharedUI;
+
+namespace Tango.AzureUtils.UI.ViewModels
+{
+ public class MainViewVM : AzureDashboardViewModel
+ {
+ private static string app_id = "be33437c-5052-449f-ab9d-a88d008eae24";
+ private static string client_secret = "bf67fb6f-4d06-4893-988c-6b347aff23d6";
+ private static string tenant_id = "2ebd63a5-bc2f-41dc-9066-4409ed5e5dd4";
+ private static string subscription_id = "10c8aa60-3b15-4e0d-b412-6aeef90e5e91";
+
+ private IAzure _azure;
+
+ #region Properties
+
+ private bool _isInitialized;
+ public bool IsInitialized
+ {
+ get { return _isInitialized; }
+ set { _isInitialized = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
+ }
+
+ private AzureUtilsProgressEventArgs _progress;
+ public AzureUtilsProgressEventArgs Progress
+ {
+ get { return _progress; }
+ set { _progress = value; RaisePropertyChangedAuto(); }
+ }
+
+ #endregion
+
+ #region Commands
+
+ public RelayCommand InitCommand { get; set; }
+
+ #endregion
+
+ public MainViewVM()
+ {
+ InitCommand = new RelayCommand(Init, () => !IsInitialized);
+ }
+
+ public override void OnApplicationReady()
+ {
+ StatusManager.StatusUpdated += StatusManager_StatusUpdated;
+ StatusManager.UpdateStatus(AzureUtilsStage.Ready, "Waiting for authentication...", false);
+ }
+
+ private void StatusManager_StatusUpdated(object sender, AzureUtilsProgressEventArgs e)
+ {
+ Progress = e;
+ }
+
+ public async void Init()
+ {
+ try
+ {
+ IsFree = false;
+
+ StatusManager.UpdateStatus(AzureUtilsStage.Initializing, "Authenticating...", true);
+ _azure = await AzureUtilsAuthenticationFactory.AuthenticateOrGetAsync(new AzureUtilsCredentials()
+ {
+ ClientID = app_id,
+ ClientSecret = client_secret,
+ TenantID = tenant_id,
+ SubscriptionID = subscription_id
+ });
+
+ List<IWebAppBase> allApps = new List<IWebAppBase>();
+
+ StatusManager.UpdateStatus(AzureUtilsStage.Initializing, "Retrieving machine service deployment slots...", true);
+
+ var apps = await _azure.WebApps.ListAsync();
+
+ foreach (var app in apps)
+ {
+ if (app.Name.Contains("Machine"))
+ {
+ allApps.Add(app);
+ }
+
+ var slots = await app.DeploymentSlots.ListAsync();
+
+ foreach (var slot in slots)
+ {
+ if (slot.Name.Contains("Machine"))
+ {
+ allApps.Add(slot);
+ }
+ }
+ }
+
+ IsInitialized = true;
+
+ StatusManager.UpdateStatus(AzureUtilsStage.Ready, "Authenticated successfully.", false);
+
+ TangoIOC.Default.GetAllInstancesByBase<AzureDashboardViewModel>().Where(x => x != this).ToList().ForEach(x => x.OnAuthenticated(_azure, allApps.ToList()));
+ }
+ catch (Exception ex)
+ {
+ StatusManager.UpdateStatus(ex);
+ }
+ finally
+ {
+ IsFree = true;
+ }
+ }
+ }
+}