aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Azure/Tango.AzureUtils
diff options
context:
space:
mode:
authorRoy <Roy.mail.net@gmail.com>2022-10-28 01:53:10 +0300
committerRoy <Roy.mail.net@gmail.com>2022-10-28 01:53:10 +0300
commit6cfab959098ae0bd78aad7a3e69c20eda31da2a9 (patch)
treeeb76a9e754112ce67b20998216802d997d5f70e7 /Software/Visual_Studio/Azure/Tango.AzureUtils
parent00bed963c45e4de37a6e688c59e0ecc2964d0a11 (diff)
downloadTango-6cfab959098ae0bd78aad7a3e69c20eda31da2a9.tar.gz
Tango-6cfab959098ae0bd78aad7a3e69c20eda31da2a9.zip
Azure Utils for Twine Studio.
Diffstat (limited to 'Software/Visual_Studio/Azure/Tango.AzureUtils')
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs25
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs55
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/UpgradeEnvironmentConfiguration.cs20
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils/Storage/StorageManager.cs19
4 files changed, 82 insertions, 37 deletions
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs
index 2a94e95b0..836e66c9f 100644
--- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs
@@ -14,6 +14,7 @@ using Microsoft.Azure.Management.Sql.Fluent;
using Microsoft.Azure.Management.Sql.Fluent.Models;
using Tango.BL;
using Tango.BL.Entities;
+using Tango.BL.Enumerations;
using Tango.Core;
using Tango.Core.DB;
using Tango.Core.Helpers;
@@ -243,13 +244,13 @@ namespace Tango.AzureUtils.Database
}
}
- public async Task UpgradeFSEVersion(IWebAppBase sourceApp, IWebAppBase targetApp)
+ public async Task UpgradeFSEVersion(IWebAppBase sourceApp, IWebAppBase targetApp, FSEBuildVariants build)
{
- var latestFSEVersion = await GetLatestFSEVersion(sourceApp);
+ var latestFSEVersion = await GetLatestFSEVersion(sourceApp, build);
var targetDataSource = (await targetApp.GetMachineServiceSettingsAsync()).ToDataSource();
- OnProgress(AzureUtilsStage.Database, $"Adding FSE database entry for version '{latestFSEVersion.Version}'...");
+ OnProgress(AzureUtilsStage.Database, $"Adding {build} database entry for version '{latestFSEVersion.Version}'...");
using (var db = ObservablesContext.CreateDefault(targetDataSource))
{
@@ -352,9 +353,9 @@ namespace Tango.AzureUtils.Database
}
}
- public async Task<FseVersion> GetLatestFSEVersion(IWebAppBase app)
+ public async Task<FseVersion> GetLatestFSEVersion(IWebAppBase app, FSEBuildVariants build)
{
- OnProgress(AzureUtilsStage.Database, $"Getting latest FSE version on '{app.Name}'...");
+ OnProgress(AzureUtilsStage.Database, $"Getting latest {build} version on '{app.Name}'...");
MachineServiceSettings settings = null;
@@ -373,7 +374,7 @@ namespace Tango.AzureUtils.Database
using (var db = ObservablesContext.CreateDefault(dataSource))
{
- var versions = await db.FseVersions.ToListAsync();
+ var versions = await db.FseVersions.Where(x => x.BuildVariant == (int)build).ToListAsync();
var latest_version = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault();
return latest_version;
}
@@ -432,27 +433,27 @@ namespace Tango.AzureUtils.Database
}
}
- public async Task ValidateFSEDatabaseUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp)
+ public async Task ValidateFSEDatabaseUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp, FSEBuildVariants build)
{
- OnProgress(AzureUtilsStage.Validating, "Validating FSE database upgrade...");
+ OnProgress(AzureUtilsStage.Validating, $"Validating {build} database upgrade...");
var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync();
var targetSettings = await targetApp.GetMachineServiceSettingsAsync();
- var latestSourceFSEVersion = await GetLatestFSEVersion(sourceApp);
+ var latestSourceFSEVersion = await GetLatestFSEVersion(sourceApp, build);
//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.");
+ throw new ValidationException($"Could not locate a {build} version entry on the source database.");
}
- var latestTargetFSEVersion = await GetLatestFSEVersion(targetApp);
+ var latestTargetFSEVersion = await GetLatestFSEVersion(targetApp, build);
//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}'.");
+ throw new ValidationException($"{build} source version is '{latestSourceFSEVersion.Version}' while target version is '{latestTargetFSEVersion.Version}'.");
}
}
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs
index 8c6c745a9..ece5f04cd 100644
--- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs
@@ -21,6 +21,7 @@ using Tango.AzureUtils.Deployment;
using Tango.AzureUtils.FTP;
using Tango.AzureUtils.Storage;
using Tango.BL;
+using Tango.BL.Enumerations;
using Tango.Core;
using Tango.Core.DB;
using Tango.PMR.FirmwareUpgrade;
@@ -332,8 +333,8 @@ namespace Tango.AzureUtils.Environment
{
try
{
- await _storageManager.ValidateFSEStorageUpgrade(sourceApp, targetApp);
- await _storageManager.UpgradeFSEStorage(sourceApp, targetApp);
+ await _storageManager.ValidateFSEStorageUpgrade(sourceApp, targetApp, FSEBuildVariants.FSE);
+ await _storageManager.UpgradeFSEStorage(sourceApp, targetApp, FSEBuildVariants.FSE);
}
catch (Exception ex)
{
@@ -341,6 +342,20 @@ namespace Tango.AzureUtils.Environment
}
}
+ //Add Twine Studio storage versions.
+ if (config.CopyTwineStudioStorageBlobs)
+ {
+ try
+ {
+ await _storageManager.ValidateFSEStorageUpgrade(sourceApp, targetApp, FSEBuildVariants.TwineStudio);
+ await _storageManager.UpgradeFSEStorage(sourceApp, targetApp, FSEBuildVariants.TwineStudio);
+ }
+ catch (Exception ex)
+ {
+ await RequestConfirmation($"Issues encountered with upgrading Twine Studio storage versions.\n{ex.FlattenMessage()}\nDo you wish to continue?");
+ }
+ }
+
//Upgrade machine studio database version.
if (config.UpgradeMachineStudioDatabaseVersion)
{
@@ -374,8 +389,8 @@ namespace Tango.AzureUtils.Environment
{
try
{
- await _databaseManager.ValidateFSEDatabaseUpgrade(sourceApp, targetApp);
- await _databaseManager.UpgradeFSEVersion(sourceApp, targetApp);
+ await _databaseManager.ValidateFSEDatabaseUpgrade(sourceApp, targetApp, FSEBuildVariants.FSE);
+ await _databaseManager.UpgradeFSEVersion(sourceApp, targetApp, FSEBuildVariants.FSE);
}
catch (Exception ex)
{
@@ -383,6 +398,20 @@ namespace Tango.AzureUtils.Environment
}
}
+ //Upgrade FSE database version.
+ if (config.UpgradeTwineStudioDatabaseVersion)
+ {
+ try
+ {
+ await _databaseManager.ValidateFSEDatabaseUpgrade(sourceApp, targetApp, FSEBuildVariants.TwineStudio);
+ await _databaseManager.UpgradeFSEVersion(sourceApp, targetApp, FSEBuildVariants.TwineStudio);
+ }
+ catch (Exception ex)
+ {
+ await RequestConfirmation($"Issues encountered with upgrading Twine Studio database versions.\n{ex.FlattenMessage()}\nDo you wish to continue?");
+ }
+ }
+
//Copy Website files.
if (config.CopyMachineServiceFiles)
@@ -419,7 +448,13 @@ namespace Tango.AzureUtils.Environment
//Add FSE storage versions.
if (config.CopyFSEStorageBlobs)
{
- await _storageManager.ValidateFSEStorageUpgrade(sourceApp, targetApp);
+ await _storageManager.ValidateFSEStorageUpgrade(sourceApp, targetApp, FSEBuildVariants.FSE);
+ }
+
+ //Add Twine Studio storage versions.
+ if (config.CopyTwineStudioStorageBlobs)
+ {
+ await _storageManager.ValidateFSEStorageUpgrade(sourceApp, targetApp, FSEBuildVariants.TwineStudio);
}
//Upgrade machine studio database version.
@@ -437,7 +472,13 @@ namespace Tango.AzureUtils.Environment
//Upgrade FSE database version.
if (config.UpgradeFSEDatabaseVersion)
{
- await _databaseManager.ValidateFSEDatabaseUpgrade(sourceApp, targetApp);
+ await _databaseManager.ValidateFSEDatabaseUpgrade(sourceApp, targetApp, FSEBuildVariants.FSE);
+ }
+
+ //Upgrade Twine Studio database version.
+ if (config.UpgradeTwineStudioDatabaseVersion)
+ {
+ await _databaseManager.ValidateFSEDatabaseUpgrade(sourceApp, targetApp, FSEBuildVariants.TwineStudio);
}
}
@@ -525,7 +566,7 @@ namespace Tango.AzureUtils.Environment
}
catch (Exception ex)
{
- await RequestConfirmation($"Error occurred while trying to remove machine studio storage blobs.\n{ex.FlattenMessage()}\nDo you wish to continue?");
+ await RequestConfirmation($"Error occurred while trying to remove machine studio storage blobs.\n{ex.FlattenMessage()}\nDo you wish to continue?");
}
try
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/UpgradeEnvironmentConfiguration.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/UpgradeEnvironmentConfiguration.cs
index 1d7b9de16..6243b65a0 100644
--- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/UpgradeEnvironmentConfiguration.cs
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/UpgradeEnvironmentConfiguration.cs
@@ -8,14 +8,16 @@ namespace Tango.AzureUtils.Environment
{
public class UpgradeEnvironmentConfiguration
{
- public bool SynchronizeDatabaseSchema { get; set; } = true;
- public bool SynchronizeDatabaseData { get; set; } = true;
- public bool CopyMachineStudioStorageBlobs { get; set; } = true;
- public bool UpgradeMachineStudioDatabaseVersion { get; set; } = true;
- public bool CopyPPCStorageBlobs { get; set; } = true;
- public bool UpgradePPCDatabaseVersion { get; set; } = true;
- public bool CopyFSEStorageBlobs { get; set; } = true;
- public bool UpgradeFSEDatabaseVersion { get; set; } = true;
- public bool CopyMachineServiceFiles { get; set; } = true;
+ public bool SynchronizeDatabaseSchema { get; set; }
+ public bool SynchronizeDatabaseData { get; set; }
+ public bool CopyMachineStudioStorageBlobs { get; set; }
+ public bool UpgradeMachineStudioDatabaseVersion { get; set; }
+ public bool CopyPPCStorageBlobs { get; set; }
+ public bool UpgradePPCDatabaseVersion { get; set; }
+ public bool CopyFSEStorageBlobs { get; set; }
+ public bool UpgradeFSEDatabaseVersion { get; set; }
+ public bool CopyTwineStudioStorageBlobs { get; set; }
+ public bool UpgradeTwineStudioDatabaseVersion { get; set; }
+ public bool CopyMachineServiceFiles { get; set; }
}
}
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Storage/StorageManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Storage/StorageManager.cs
index db4403cc9..5ff7af246 100644
--- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Storage/StorageManager.cs
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Storage/StorageManager.cs
@@ -10,6 +10,7 @@ using Microsoft.Azure.Management.Fluent;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Tango.AzureUtils.Database;
+using Tango.BL.Enumerations;
using Tango.Core.IO;
namespace Tango.AzureUtils.Storage
@@ -109,16 +110,16 @@ namespace Tango.AzureUtils.Storage
});
}
- public async Task UpgradeFSEStorage(IWebAppBase sourceApp, IWebAppBase targetApp)
+ public async Task UpgradeFSEStorage(IWebAppBase sourceApp, IWebAppBase targetApp, FSEBuildVariants build)
{
OnProgress(AzureUtilsStage.Storage, $"Retrieving source and target settings...");
var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync();
var targetSettings = await targetApp.GetMachineServiceSettingsAsync();
- var latestFSEVersion = await _databaseManager.GetLatestFSEVersion(sourceApp);
+ var latestFSEVersion = await _databaseManager.GetLatestFSEVersion(sourceApp, build);
- OnProgress(AzureUtilsStage.Storage, $"Upgrading FSE version storage...");
+ OnProgress(AzureUtilsStage.Storage, $"Upgrading {build} version storage...");
var sourceAccount = CloudStorageAccount.Parse(sourceSettings.STORAGE_ACCOUNT);
var sourceClient = sourceAccount.CreateCloudBlobClient();
@@ -231,15 +232,15 @@ namespace Tango.AzureUtils.Storage
}
}
- public async Task ValidateFSEStorageUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp)
+ public async Task ValidateFSEStorageUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp, FSEBuildVariants build)
{
- OnProgress(AzureUtilsStage.Validating, "Validating FSE storage upgrade...");
+ OnProgress(AzureUtilsStage.Validating, $"Validating {build} storage upgrade...");
var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync();
var targetSettings = await targetApp.GetMachineServiceSettingsAsync();
- var latestSourceFSEVersion = await _databaseManager.GetLatestFSEVersion(sourceApp);
- var latestTargetFSEVersion = await _databaseManager.GetLatestFSEVersion(targetApp);
+ var latestSourceFSEVersion = await _databaseManager.GetLatestFSEVersion(sourceApp, build);
+ var latestTargetFSEVersion = await _databaseManager.GetLatestFSEVersion(targetApp, build);
var targetAccount = CloudStorageAccount.Parse(targetSettings.STORAGE_ACCOUNT);
var targetClient = targetAccount.CreateCloudBlobClient();
@@ -250,14 +251,14 @@ namespace Tango.AzureUtils.Storage
var targetFSEBlob = targetFSEContainer.GetBlockBlobReference(latestSourceFSEVersion.BlobName);
if (await targetFSEBlob.ExistsAsync())
{
- throw new ValidationException($"FSE Block blob '{latestSourceFSEVersion.BlobName}' already exists on the target storage.");
+ throw new ValidationException($"{build} Block blob '{latestSourceFSEVersion.BlobName}' already exists on the target storage.");
}
//Check FSE installer blob not exists on the target.
var targetFSEInstallerBlob = targetFSEContainer.GetBlockBlobReference(latestSourceFSEVersion.InstallerBlobName);
if (await targetFSEInstallerBlob.ExistsAsync())
{
- throw new ValidationException($"FSE Block blob '{latestSourceFSEVersion.InstallerBlobName}' already exists on the target storage.");
+ throw new ValidationException($"{build} Block blob '{latestSourceFSEVersion.InstallerBlobName}' already exists on the target storage.");
}
}