aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Azure/Tango.AzureUtils
diff options
context:
space:
mode:
authorRoy <Roy.mail.net@gmail.com>2022-11-20 19:06:28 +0200
committerRoy <Roy.mail.net@gmail.com>2022-11-20 19:06:28 +0200
commit7c7e27fad7deb4c82a5ca7e5cb19184fa324b8d5 (patch)
tree4ebd799531535c2415e9640d2a17e9763c83e2df /Software/Visual_Studio/Azure/Tango.AzureUtils
parentfa2c00989b50258d1195925030ed1da2a1d6d040 (diff)
downloadTango-7c7e27fad7deb4c82a5ca7e5cb19184fa324b8d5.tar.gz
Tango-7c7e27fad7deb4c82a5ca7e5cb19184fa324b8d5.zip
AzureUtils PPC VersionTag kind of working.
Diffstat (limited to 'Software/Visual_Studio/Azure/Tango.AzureUtils')
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs24
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs20
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/RollbackEnvironmentConfiguration.cs2
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/UpgradeEnvironmentConfiguration.cs10
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils/Firmware/FirmwareManager.cs8
-rw-r--r--Software/Visual_Studio/Azure/Tango.AzureUtils/Storage/StorageManager.cs26
6 files changed, 50 insertions, 40 deletions
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs
index 836e66c9f..4202b45a7 100644
--- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Database/DatabaseManager.cs
@@ -229,13 +229,13 @@ namespace Tango.AzureUtils.Database
}
}
- public async Task UpgradePPCVersion(IWebAppBase sourceApp, IWebAppBase targetApp)
+ public async Task UpgradePPCVersion(IWebAppBase sourceApp, IWebAppBase targetApp, String versionTag)
{
- var latestPPCVersion = await GetLatestPPCVersion(sourceApp);
+ var latestPPCVersion = await GetLatestPPCVersion(sourceApp, versionTag);
var targetDataSource = (await targetApp.GetMachineServiceSettingsAsync()).ToDataSource();
- OnProgress(AzureUtilsStage.Database, $"Adding PPC database entry for version '{latestPPCVersion.Version}'...");
+ OnProgress(AzureUtilsStage.Database, $"Adding PPC database entry for version '{latestPPCVersion.VersionAndTag}'...");
using (var db = ObservablesContext.CreateDefault(targetDataSource))
{
@@ -274,12 +274,12 @@ namespace Tango.AzureUtils.Database
}
}
- public async Task DowngradePPCVersion(IWebAppBase app)
+ public async Task DowngradePPCVersion(IWebAppBase app, String versionTag)
{
- var latestPPCVersion = await GetLatestPPCVersion(app);
+ var latestPPCVersion = await GetLatestPPCVersion(app, versionTag);
var dataSource = (await app.GetMachineServiceSettingsAsync()).ToDataSource();
- OnProgress(AzureUtilsStage.Database, $"Removing PPC database entry for version '{latestPPCVersion.Version}'...");
+ OnProgress(AzureUtilsStage.Database, $"Removing PPC database entry for version '{latestPPCVersion.VersionAndTag}'...");
using (var db = ObservablesContext.CreateDefault(dataSource))
{
@@ -321,7 +321,7 @@ namespace Tango.AzureUtils.Database
}
}
- public async Task<TangoVersion> GetLatestPPCVersion(IWebAppBase app)
+ public async Task<TangoVersion> GetLatestPPCVersion(IWebAppBase app, String versionTag)
{
OnProgress(AzureUtilsStage.Database, $"Getting latest PPC version on '{app.Name}'...");
@@ -342,7 +342,7 @@ namespace Tango.AzureUtils.Database
using (var db = ObservablesContext.CreateDefault(dataSource))
{
- var versions = await db.TangoVersions.ToListAsync();
+ var versions = await db.TangoVersions.Where(x => x.Tag == versionTag).ToListAsync();
var latest_version = versions.OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault();
return latest_version;
}
@@ -409,14 +409,14 @@ namespace Tango.AzureUtils.Database
}
}
- public async Task ValidatePPCDatabaseUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp)
+ public async Task ValidatePPCDatabaseUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp, String versionTag)
{
OnProgress(AzureUtilsStage.Validating, "Validating PPC database upgrade...");
var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync();
var targetSettings = await targetApp.GetMachineServiceSettingsAsync();
- var latestSourcePPCVersion = await GetLatestPPCVersion(sourceApp);
+ var latestSourcePPCVersion = await GetLatestPPCVersion(sourceApp, versionTag);
//Check if there is any source PPC version.
if (latestSourcePPCVersion == null)
@@ -424,12 +424,12 @@ namespace Tango.AzureUtils.Database
throw new ValidationException("Could not locate a PPC version entry on the source database.");
}
- var latestTargetPPCVersion = await GetLatestPPCVersion(targetApp);
+ var latestTargetPPCVersion = await GetLatestPPCVersion(targetApp, versionTag);
//Check target latest PPC version is older if there is any.
if (latestTargetPPCVersion != null && Version.Parse(latestSourcePPCVersion.Version) <= Version.Parse(latestTargetPPCVersion.Version))
{
- throw new ValidationException($"PPC source version is '{latestSourcePPCVersion.Version}' while target version is '{latestTargetPPCVersion.Version}'.");
+ throw new ValidationException($"PPC source version is '{latestSourcePPCVersion.VersionAndTag}' while target version is '{latestTargetPPCVersion.VersionAndTag}'.");
}
}
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs
index 4806bc8c8..01c95a566 100644
--- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/EnvironmentManager.cs
@@ -195,8 +195,8 @@ namespace Tango.AzureUtils.Environment
//Add PPC storage versions.
try
{
- await _storageManager.ValidatePPCStorageUpgrade(sourceSlot, slot);
- await _storageManager.UpgradePPCStorage(sourceSlot, slot);
+ await _storageManager.ValidatePPCStorageUpgrade(sourceSlot, slot, null);
+ await _storageManager.UpgradePPCStorage(sourceSlot, slot, null);
}
catch (Exception ex)
{
@@ -319,8 +319,8 @@ namespace Tango.AzureUtils.Environment
{
try
{
- await _storageManager.ValidatePPCStorageUpgrade(sourceApp, targetApp);
- await _storageManager.UpgradePPCStorage(sourceApp, targetApp);
+ await _storageManager.ValidatePPCStorageUpgrade(sourceApp, targetApp, config.PPCVersionTag);
+ await _storageManager.UpgradePPCStorage(sourceApp, targetApp, config.PPCVersionTag);
}
catch (Exception ex)
{
@@ -375,8 +375,8 @@ namespace Tango.AzureUtils.Environment
{
try
{
- await _databaseManager.ValidatePPCDatabaseUpgrade(sourceApp, targetApp);
- await _databaseManager.UpgradePPCVersion(sourceApp, targetApp);
+ await _databaseManager.ValidatePPCDatabaseUpgrade(sourceApp, targetApp, config.PPCVersionTag);
+ await _databaseManager.UpgradePPCVersion(sourceApp, targetApp, config.PPCVersionTag);
}
catch (Exception ex)
{
@@ -442,7 +442,7 @@ namespace Tango.AzureUtils.Environment
//Add PPC storage versions.
if (config.CopyPPCStorageBlobs)
{
- await _storageManager.ValidatePPCStorageUpgrade(sourceApp, targetApp);
+ await _storageManager.ValidatePPCStorageUpgrade(sourceApp, targetApp, config.PPCVersionTag);
}
//Add FSE storage versions.
@@ -466,7 +466,7 @@ namespace Tango.AzureUtils.Environment
//Upgrade PPC database version.
if (config.UpgradePPCDatabaseVersion)
{
- await _databaseManager.ValidatePPCDatabaseUpgrade(sourceApp, targetApp);
+ await _databaseManager.ValidatePPCDatabaseUpgrade(sourceApp, targetApp, config.PPCVersionTag);
}
//Upgrade FSE database version.
@@ -583,7 +583,7 @@ namespace Tango.AzureUtils.Environment
{
try
{
- await _storageManager.DowngradePPCStorage(app);
+ await _storageManager.DowngradePPCStorage(app, config.PPCVersionTag);
}
catch (Exception ex)
{
@@ -592,7 +592,7 @@ namespace Tango.AzureUtils.Environment
try
{
- await _databaseManager.DowngradePPCVersion(app);
+ await _databaseManager.DowngradePPCVersion(app, config.PPCVersionTag);
}
catch (Exception ex)
{
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/RollbackEnvironmentConfiguration.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/RollbackEnvironmentConfiguration.cs
index da0f68aac..7811a73bb 100644
--- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/RollbackEnvironmentConfiguration.cs
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/RollbackEnvironmentConfiguration.cs
@@ -11,5 +11,7 @@ namespace Tango.AzureUtils.Environment
public bool RollbackMachineStudio { get; set; }
public bool RollbackPPC { get; set; }
+
+ public String PPCVersionTag { get; set; }
}
}
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/UpgradeEnvironmentConfiguration.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/UpgradeEnvironmentConfiguration.cs
index 44cde7731..b165fb6b0 100644
--- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/UpgradeEnvironmentConfiguration.cs
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Environment/UpgradeEnvironmentConfiguration.cs
@@ -3,10 +3,11 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.Core;
namespace Tango.AzureUtils.Environment
{
- public class UpgradeEnvironmentConfiguration
+ public class UpgradeEnvironmentConfiguration : ExtendedObject
{
public bool SynchronizeDatabaseSchema { get; set; }
public bool SynchronizeDatabaseData { get; set; }
@@ -19,5 +20,12 @@ namespace Tango.AzureUtils.Environment
public bool CopyTwineRSMStorageBlobs { get; set; }
public bool UpgradeTwineRSMDatabaseVersion { get; set; }
public bool CopyMachineServiceFiles { get; set; }
+ private String _ppcVersionTag;
+ public String PPCVersionTag
+ {
+ get { return _ppcVersionTag.IsNotNullOrEmpty() ? _ppcVersionTag : null; }
+ set { _ppcVersionTag = value; RaisePropertyChangedAuto(); }
+ }
+
}
}
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Firmware/FirmwareManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Firmware/FirmwareManager.cs
index eb073f7a2..ac8e52a65 100644
--- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Firmware/FirmwareManager.cs
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Firmware/FirmwareManager.cs
@@ -30,7 +30,7 @@ namespace Tango.AzureUtils.Firmware
#region Firmware Injection
- public async Task InjectFirmwarePackage(IWebAppBase slot, String tfpFile)
+ public async Task InjectFirmwarePackage(IWebAppBase slot, String tfpFile, String versionTag)
{
OnProgress(AzureUtilsStage.Firmware, $"Validating TFP package...");
@@ -46,7 +46,7 @@ namespace Tango.AzureUtils.Firmware
throw new ValidationException($"The specified TFP package is invalid.\n{ex.FlattenMessage()}");
}
- var ppcVersion = await _databaseManager.GetLatestPPCVersion(slot);
+ var ppcVersion = await _databaseManager.GetLatestPPCVersion(slot, null);
if (Version.Parse(ppcVersion.FirmwareVersion) >= tfpPackage.GetMcuVersion())
{
@@ -60,7 +60,7 @@ namespace Tango.AzureUtils.Firmware
var zipFile = TemporaryManager.CreateImaginaryFile(".zip");
- await _storageManager.DownloadLatestPPCVersion(slot, zipFile);
+ await _storageManager.DownloadLatestPPCVersion(slot, zipFile, versionTag);
OnProgress(AzureUtilsStage.Firmware, $"Replacing firmware_package.tfp...");
await Task.Factory.StartNew(() =>
@@ -84,7 +84,7 @@ namespace Tango.AzureUtils.Firmware
}
});
- await _storageManager.ReplaceLatestPPCVersion(slot, zipFile);
+ await _storageManager.ReplaceLatestPPCVersion(slot, zipFile, versionTag);
OnProgress(AzureUtilsStage.Firmware, $"Updating firmware version on database...");
using (ObservablesContext db = ObservablesContext.CreateDefault(settings.ToDataSource()))
diff --git a/Software/Visual_Studio/Azure/Tango.AzureUtils/Storage/StorageManager.cs b/Software/Visual_Studio/Azure/Tango.AzureUtils/Storage/StorageManager.cs
index 5ff7af246..887b0ec63 100644
--- a/Software/Visual_Studio/Azure/Tango.AzureUtils/Storage/StorageManager.cs
+++ b/Software/Visual_Studio/Azure/Tango.AzureUtils/Storage/StorageManager.cs
@@ -77,14 +77,14 @@ namespace Tango.AzureUtils.Storage
await blob.DeleteAsync();
}
- public async Task UpgradePPCStorage(IWebAppBase sourceApp, IWebAppBase targetApp)
+ public async Task UpgradePPCStorage(IWebAppBase sourceApp, IWebAppBase targetApp, String versionTag)
{
OnProgress(AzureUtilsStage.Storage, $"Retrieving source and target settings...");
var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync();
var targetSettings = await targetApp.GetMachineServiceSettingsAsync();
- var latestPPCVersion = await _databaseManager.GetLatestPPCVersion(sourceApp);
+ var latestPPCVersion = await _databaseManager.GetLatestPPCVersion(sourceApp, versionTag);
OnProgress(AzureUtilsStage.Storage, $"Upgrading PPC version storage...");
@@ -189,11 +189,11 @@ namespace Tango.AzureUtils.Storage
OnCompleted("Latest Machine Studio storage blobs removed.");
}
- public async Task DowngradePPCStorage(IWebAppBase app)
+ public async Task DowngradePPCStorage(IWebAppBase app, String versionTag)
{
OnProgress(AzureUtilsStage.Storage, $"Retrieving settings...");
- var latestPPCVersion = await _databaseManager.GetLatestPPCVersion(app);
+ var latestPPCVersion = await _databaseManager.GetLatestPPCVersion(app, versionTag);
var settings = await app.GetMachineServiceSettingsAsync();
await RemoveBlob(settings.TANGO_VERSIONS_CONTAINER, latestPPCVersion.BlobName);
@@ -202,15 +202,15 @@ namespace Tango.AzureUtils.Storage
OnCompleted("Latest PPC storage blobs removed.");
}
- public async Task ValidatePPCStorageUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp)
+ public async Task ValidatePPCStorageUpgrade(IWebAppBase sourceApp, IWebAppBase targetApp, String versionTag)
{
OnProgress(AzureUtilsStage.Validating, "Validating PPC storage upgrade...");
var sourceSettings = await sourceApp.GetMachineServiceSettingsAsync();
var targetSettings = await targetApp.GetMachineServiceSettingsAsync();
- var latestSourcePPCVersion = await _databaseManager.GetLatestPPCVersion(sourceApp);
- var latestTargetPPCVersion = await _databaseManager.GetLatestPPCVersion(targetApp);
+ var latestSourcePPCVersion = await _databaseManager.GetLatestPPCVersion(sourceApp, versionTag);
+ var latestTargetPPCVersion = await _databaseManager.GetLatestPPCVersion(targetApp, versionTag);
var targetAccount = CloudStorageAccount.Parse(targetSettings.STORAGE_ACCOUNT);
var targetClient = targetAccount.CreateCloudBlobClient();
@@ -292,12 +292,12 @@ namespace Tango.AzureUtils.Storage
}
}
- public async Task DownloadLatestPPCVersion(IWebAppBase app, String filePath)
+ public async Task DownloadLatestPPCVersion(IWebAppBase app, String filePath, String versionTag)
{
OnProgress(AzureUtilsStage.Storage, $"Retrieving source and target settings...");
var settings = await app.GetMachineServiceSettingsAsync();
- var ppcVersion = await _databaseManager.GetLatestPPCVersion(app);
+ var ppcVersion = await _databaseManager.GetLatestPPCVersion(app, versionTag);
OnProgress(AzureUtilsStage.Storage, $"Downloading PPC version '{ppcVersion.Version}'...");
@@ -312,21 +312,21 @@ namespace Tango.AzureUtils.Storage
using (FileStreamWrapper st = new FileStreamWrapper(filePath, FileMode.Create, (progress) =>
{
- OnProgress(AzureUtilsStage.Storage, $"Downloading PPC version '{ppcVersion.Version}'...", progress, length, false);
+ OnProgress(AzureUtilsStage.Storage, $"Downloading PPC version '{ppcVersion.VersionAndTag}'...", progress, length, false);
}))
{
await blob.DownloadToStreamAsync(st);
}
}
- public async Task ReplaceLatestPPCVersion(IWebAppBase app, String filePath)
+ public async Task ReplaceLatestPPCVersion(IWebAppBase app, String filePath, String versionTag)
{
OnProgress(AzureUtilsStage.Storage, $"Retrieving source and target settings...");
var settings = await app.GetMachineServiceSettingsAsync();
- var ppcVersion = await _databaseManager.GetLatestPPCVersion(app);
+ var ppcVersion = await _databaseManager.GetLatestPPCVersion(app, versionTag);
- OnProgress(AzureUtilsStage.Storage, $"Uploading PPC version '{ppcVersion.Version}'...");
+ OnProgress(AzureUtilsStage.Storage, $"Uploading PPC version '{ppcVersion.VersionAndTag}'...");
var account = CloudStorageAccount.Parse(settings.STORAGE_ACCOUNT);
var client = account.CreateCloudBlobClient();