diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-07-28 15:27:05 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-07-28 15:27:05 +0300 |
| commit | 7c7aba43ab895d02e0209861550fed3bc12f3904 (patch) | |
| tree | 11287241a4cc80baa871712240ab82487c563f9f /Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs | |
| parent | 55b795f940282378784f0175803fcba62aecc816 (diff) | |
| download | Tango-7c7aba43ab895d02e0209861550fed3bc12f3904.tar.gz Tango-7c7aba43ab895d02e0209861550fed3bc12f3904.zip | |
Implemented Tango FSE Publish Utils.
Added FSE to AzureUtils on environment upgrade.
Diffstat (limited to 'Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs')
| -rw-r--r-- | Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs | 77 |
1 files changed, 74 insertions, 3 deletions
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs index 75a7f321b..2a94e95b0 100644 --- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs +++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs @@ -234,7 +234,7 @@ namespace Tango.AzureUtils.Database var targetDataSource = (await targetApp.GetMachineServiceSettingsAsync()).ToDataSource(); - OnProgress(AzureUtilsStage.Database, $"Adding machine studio database entry for version '{latestPPCVersion.Version}'..."); + OnProgress(AzureUtilsStage.Database, $"Adding PPC database entry for version '{latestPPCVersion.Version}'..."); using (var db = ObservablesContext.CreateDefault(targetDataSource)) { @@ -243,6 +243,21 @@ namespace Tango.AzureUtils.Database } } + public async Task UpgradeFSEVersion(IWebAppBase sourceApp, IWebAppBase targetApp) + { + var latestFSEVersion = await GetLatestFSEVersion(sourceApp); + + var targetDataSource = (await targetApp.GetMachineServiceSettingsAsync()).ToDataSource(); + + OnProgress(AzureUtilsStage.Database, $"Adding FSE database entry for version '{latestFSEVersion.Version}'..."); + + using (var db = ObservablesContext.CreateDefault(targetDataSource)) + { + db.FseVersions.Add(latestFSEVersion); + await db.SaveChangesAsync(); + } + } + public async Task DowngradeMachineStudioVersion(IWebAppBase app) { var latestMachineStudioVersion = await GetLatestMachineStudioVersion(app); @@ -327,8 +342,8 @@ namespace Tango.AzureUtils.Database using (var db = ObservablesContext.CreateDefault(dataSource)) { var versions = await db.TangoVersions.ToListAsync(); - var latest_machine_version = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); - return latest_machine_version; + var latest_version = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); + return latest_version; } } catch (Exception ex) @@ -337,6 +352,38 @@ namespace Tango.AzureUtils.Database } } + public async Task<FseVersion> GetLatestFSEVersion(IWebAppBase app) + { + OnProgress(AzureUtilsStage.Database, $"Getting latest FSE version on '{app.Name}'..."); + + MachineServiceSettings settings = null; + + try + { + settings = await app.GetMachineServiceSettingsAsync(); + } + catch (Exception ex) + { + throw new ArgumentException("Could not fetch machine service settings. Please check that all settings are available.", ex); + } + + try + { + DataSource dataSource = settings.ToDataSource(); + + using (var db = ObservablesContext.CreateDefault(dataSource)) + { + var versions = await db.FseVersions.ToListAsync(); + var latest_version = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); + return latest_version; + } + } + catch (Exception ex) + { + throw new InvalidDataException($"Could not retrieve '{app.Name}' latest FSE version from database.", ex); + } + } + public async Task ValidateMachineStudioDatabaseUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp) { OnProgress(AzureUtilsStage.Validating, "Validating machine studio database upgrade..."); @@ -385,6 +432,30 @@ namespace Tango.AzureUtils.Database } } + public async Task ValidateFSEDatabaseUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp) + { + OnProgress(AzureUtilsStage.Validating, "Validating FSE database upgrade..."); + + var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync(); + var targetSettings = await targetApp.GetMachineServiceSettingsAsync(); + + var latestSourceFSEVersion = await GetLatestFSEVersion(sourceApp); + + //Check if there is any source FSE version. + if (latestSourceFSEVersion == null) + { + throw new ValidationException("Could not locate a FSE version entry on the source database."); + } + + var latestTargetFSEVersion = await GetLatestFSEVersion(targetApp); + + //Check target latest FSE version is older if there is any. + if (latestTargetFSEVersion != null && Version.Parse(latestSourceFSEVersion.Version) <= Version.Parse(latestTargetFSEVersion.Version)) + { + throw new ValidationException($"FSE source version is '{latestSourceFSEVersion.Version}' while target version is '{latestTargetFSEVersion.Version}'."); + } + } + #endregion } } |
