aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs')
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs75
1 files changed, 74 insertions, 1 deletions
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs
index 4202b45a7..2ed20e91e 100644
--- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs
@@ -244,6 +244,21 @@ namespace Tango.AzureUtils.Database
}
}
+ public async Task UpgradeEurekaVersion(IWebAppBase sourceApp, IWebAppBase targetApp, String versionTag)
+ {
+ var latestEurekaVersion = await GetLatestEurekaVersion(sourceApp, versionTag);
+
+ var targetDataSource = (await targetApp.GetMachineServiceSettingsAsync()).ToDataSource();
+
+ OnProgress(AzureUtilsStage.Database, $"Adding Twine X4 database entry for version '{latestEurekaVersion.VersionAndTag}'...");
+
+ using (var db = ObservablesContext.CreateDefault(targetDataSource))
+ {
+ db.TangoVersions.Add(latestEurekaVersion);
+ await db.SaveChangesAsync();
+ }
+ }
+
public async Task UpgradeFSEVersion(IWebAppBase sourceApp, IWebAppBase targetApp, FSEBuildVariants build)
{
var latestFSEVersion = await GetLatestFSEVersion(sourceApp, build);
@@ -342,7 +357,8 @@ namespace Tango.AzureUtils.Database
using (var db = ObservablesContext.CreateDefault(dataSource))
{
- var versions = await db.TangoVersions.Where(x => x.Tag == versionTag).ToListAsync();
+ var versions = await db.TangoVersions.Include(x => x.MachineVersion).Where(x => x.Tag == versionTag).ToListAsync();
+ versions = versions.Where(x => x.MachineVersion.MachineType == MachineTypes.TS1800).ToList();
var latest_version = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault();
return latest_version;
}
@@ -353,6 +369,39 @@ namespace Tango.AzureUtils.Database
}
}
+ public async Task<TangoVersion> GetLatestEurekaVersion(IWebAppBase app, String versionTag)
+ {
+ OnProgress(AzureUtilsStage.Database, $"Getting latest Twine X4 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.TangoVersions.Include(x => x.MachineVersion).Where(x => x.Tag == versionTag).ToListAsync();
+ versions = versions.Where(x => x.MachineVersion.MachineType == MachineTypes.Eureka).ToList();
+ 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 Twine X4 version from database.", ex);
+ }
+ }
+
public async Task<FseVersion> GetLatestFSEVersion(IWebAppBase app, FSEBuildVariants build)
{
OnProgress(AzureUtilsStage.Database, $"Getting latest {build} version on '{app.Name}'...");
@@ -433,6 +482,30 @@ namespace Tango.AzureUtils.Database
}
}
+ public async Task ValidateEurekaDatabaseUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp, String versionTag)
+ {
+ OnProgress(AzureUtilsStage.Validating, "Validating Twine X4 database upgrade...");
+
+ var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync();
+ var targetSettings = await targetApp.GetMachineServiceSettingsAsync();
+
+ var latestSourceEurekaVersion = await GetLatestEurekaVersion(sourceApp, versionTag);
+
+ //Check if there is any source PPC version.
+ if (latestSourceEurekaVersion == null)
+ {
+ throw new ValidationException("Could not locate a Twine X4 version entry on the source database.");
+ }
+
+ var latestTargetEurekaVersion = await GetLatestEurekaVersion(targetApp, versionTag);
+
+ //Check target latest PPC version is older if there is any.
+ if (latestTargetEurekaVersion != null && Version.Parse(latestSourceEurekaVersion.Version) <= Version.Parse(latestTargetEurekaVersion.Version))
+ {
+ throw new ValidationException($"Twine X4 source version is '{latestSourceEurekaVersion.VersionAndTag}' while target version is '{latestTargetEurekaVersion.VersionAndTag}'.");
+ }
+ }
+
public async Task ValidateFSEDatabaseUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp, FSEBuildVariants build)
{
OnProgress(AzureUtilsStage.Validating, $"Validating {build} database upgrade...");