aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2018-12-23 11:25:16 +0200
committerAvi Levkovich <avi@twine-s.com>2018-12-23 11:25:16 +0200
commit32b6e8d780c1fcadc78301a26a0f19d40a0dc270 (patch)
treebc4437c517ae41163938275b46bc4bf6ea45f092 /Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
parent7ac67be021eff174dfcc740d56a2cb1ed7aa43bf (diff)
parent5cb09f7732429d15477321e7f748d010ef27c85d (diff)
downloadTango-32b6e8d780c1fcadc78301a26a0f19d40a0dc270.tar.gz
Tango-32b6e8d780c1fcadc78301a26a0f19d40a0dc270.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs117
1 files changed, 71 insertions, 46 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
index 3d816c89a..b8638b158 100644
--- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
+++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
@@ -19,6 +19,9 @@ using Tango.Integration.Operation;
using Tango.PMR.Synchronization;
using Tango.PPC.Common.Application;
using Tango.PPC.Common.Connection;
+using Tango.PPC.Common.OS;
+using Tango.PPC.Common.RemoteAssistance;
+using Tango.PPC.Common.UWF;
using Tango.Settings;
using Tango.SharedUI.Helpers;
using Tango.SQLExaminer;
@@ -33,6 +36,10 @@ namespace Tango.PPC.Common.MachineSetup
/// <seealso cref="Tango.PPC.Common.MachineSetup.IMachineSetupManager" />
public class MachineSetupManager : ExtendedObject, IMachineSetupManager
{
+ private IRemoteAssistanceProvider _remoteAssistance;
+ private IUnifiedWriteFilterManager _uwf;
+ private IWindowsActivationManager _windows_activation_manager;
+
#region Events
/// <summary>
@@ -58,6 +65,21 @@ namespace Tango.PPC.Common.MachineSetup
#endregion
+ #region Constructor
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="MachineSetupManager"/> class.
+ /// </summary>
+ /// <param name="remoteAssistance">The remote assistance.</param>
+ public MachineSetupManager(IRemoteAssistanceProvider remoteAssistance, IUnifiedWriteFilterManager unifiedWriterFilterManager, IWindowsActivationManager windowsActivationManager)
+ {
+ _remoteAssistance = remoteAssistance;
+ _uwf = unifiedWriterFilterManager;
+ _windows_activation_manager = windowsActivationManager;
+ }
+
+ #endregion
+
#region Public Methods
/// <summary>
@@ -76,26 +98,10 @@ namespace Tango.PPC.Common.MachineSetup
IMachineOperator op = null;
- var demoMode = SettingsManager.Default.GetOrCreate<PPCSettings>().DemoMode;
-
- if (!demoMode)
- {
- //Connecting to machine...
- LogManager.Log("Initiating machine connection...");
-
- UpdateProgress("Connecting to machine", "Connecting...");
- op = await DefaultMachineProvider.CreateMinimalMachineOperator((msg) =>
- {
- UpdateProgress("Connecting to machine", msg);
- });
- }
- else
- {
- LogManager.Log("Application in demo mode. Skipping machine connection...");
- }
+ var settings = SettingsManager.Default.GetOrCreate<PPCSettings>();
//Connect to machine service and get matching packages for this machine.
- UpdateProgress("Downloading software package", "Connecting to machine service...");
+ UpdateProgress("Validating serial number", "Connecting to machine service...");
LogManager.Log($"Connecting to machine service on {machineServiceAddress}...");
@@ -106,9 +112,9 @@ namespace Tango.PPC.Common.MachineSetup
try
{
- using (var http = new ProtoWebClient())
+ using (var http = new WebTransportClient())
{
- setup_response = await http.Post<MachineSetupRequest, MachineSetupResponse>(machineServiceAddress + "/api/Synchronization/MachineSetup", request);
+ setup_response = await http.PostJson<MachineSetupRequest, MachineSetupResponse>(machineServiceAddress + "/api/PPC/MachineSetup", request);
}
}
catch (Exception ex)
@@ -118,6 +124,39 @@ namespace Tango.PPC.Common.MachineSetup
LogManager.Log($"Machine setup response received: {Environment.NewLine}{setup_response.ToJsonString()}");
+ if (setup_response.SetupFirmware)
+ {
+ //Connecting to machine...
+ LogManager.Log("Initiating machine connection...");
+
+ UpdateProgress("Connecting to machine", "Connecting...");
+ op = await DefaultMachineProvider.CreateMinimalMachineOperator((msg) =>
+ {
+ UpdateProgress("Connecting to machine", msg);
+ });
+ }
+
+ if (setup_response.SetupActivation)
+ {
+ LogManager.Log("Activating windows license...");
+ UpdateProgress("Activating operation system license", "Activating...");
+ await _windows_activation_manager.Activate(setup_response.OSKey);
+ }
+
+ if (setup_response.SetupRemoteAssistance)
+ {
+ LogManager.Log("Installing remote assistance...");
+ UpdateProgress("Installing remote assistance", "Installing...");
+ await _remoteAssistance.InstallRemoteAssistance(serialNumber);
+ }
+
+ if (setup_response.SetupUWF)
+ {
+ LogManager.Log("Activating unified write filter...");
+ UpdateProgress("Activating disk protection", "Activating...");
+ await _uwf.Setup();
+ }
+
//Create temporary folders for packages.
var _newPackageTempFolder = TemporaryManager.CreateFolder();
_newPackageTempFolder.Persist = true;
@@ -168,22 +207,20 @@ namespace Tango.PPC.Common.MachineSetup
//Synchronize database
UpdateProgress("Updating Database", "Initializing...");
- String db_name = "Tango";
- String localAddress = SettingsManager.Default.GetOrCreate<CoreSettings>().DataSource.Address;
- String remote_address = setup_response.DbAddress;
+ var localDataSource = SettingsManager.Default.GetOrCreate<CoreSettings>().DataSource;
- LogManager.Log($"Synchronizing database '{remote_address}\\{db_name}' => '{localAddress}\\{db_name}'...");
+ LogManager.Log($"Synchronizing database '{setup_response.DataSource.ToString()}' => '{localDataSource.ToString()}'...");
UpdateProgress("Updating Database", "Connecting to local database...");
- LogManager.Log($"Connecting to local database at {localAddress}...");
- DbManager db = DbManager.FromAddress(localAddress);
+ LogManager.Log($"Connecting to local database at {localDataSource}...");
+ DbManager db = DbManager.FromAddress(localDataSource.Address);
- LogManager.Log($"Ensuring {db_name} database exists on the local machine...");
- if (!db.Exists(db_name))
+ LogManager.Log($"Ensuring {localDataSource.Catalog} database exists on the local machine...");
+ if (!db.Exists(localDataSource.Catalog))
{
UpdateProgress("Updating Database", "Creating new database...");
LogManager.Log("Database does not exist. Creating new database...");
- db.Create(db_name);
+ db.Create(localDataSource.Catalog);
}
else
{
@@ -193,7 +230,7 @@ namespace Tango.PPC.Common.MachineSetup
db.Dispose();
LogManager.Log("Initializing database manager...");
- db = DbManager.FromAddressAndName(localAddress, db_name);
+ db = DbManager.FromDataSource(localDataSource);
UpdateProgress("Updating Database", "Clearing current database...");
LogManager.Log("Clearing database...");
@@ -209,20 +246,9 @@ namespace Tango.PPC.Common.MachineSetup
ExaminerSequenceConfigurationRunner runner = new ExaminerSequenceConfigurationRunner(
Path.Combine(_newPackageTempFolder, "Provision Scripts", "config.xml"),
Path.Combine(_newPackageTempFolder, "Provision Scripts"),
- new ExaminerSequenceDataSource()
- {
- Address = remote_address,
- DataBaseName = db_name,
- IntegratedSecurity = false,
- UserName = setup_response.DbUserName,
- Password = setup_response.DbPassword,
- },
- new ExaminerSequenceDataSource()
- {
- Address = localAddress,
- DataBaseName = db_name,
- IntegratedSecurity = true,
- }, serialNumber);
+ setup_response.DataSource,
+ localDataSource,
+ serialNumber);
runner.Log += (x, msg) =>
{
@@ -249,7 +275,7 @@ namespace Tango.PPC.Common.MachineSetup
throw LogManager.Log(ex, "Setup manager error while trying to synchronize database.");
}
- if (!demoMode)
+ if (setup_response.SetupFirmware)
{
//Updating firmware
UpdateProgress("Updating Firmware", "Connecting to firmware device...");
@@ -287,7 +313,6 @@ namespace Tango.PPC.Common.MachineSetup
}
else
{
- LogManager.Log("Application in demo mode. Skipping firmware upgrade...");
result.SetResult(new MachineSetupResult()
{
UpdatePackagePath = _newPackageTempFolder,