diff options
| author | Avi Levkovich <avi@twine-s.com> | 2018-12-23 11:25:16 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2018-12-23 11:25:16 +0200 |
| commit | 32b6e8d780c1fcadc78301a26a0f19d40a0dc270 (patch) | |
| tree | bc4437c517ae41163938275b46bc4bf6ea45f092 /Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs | |
| parent | 7ac67be021eff174dfcc740d56a2cb1ed7aa43bf (diff) | |
| parent | 5cb09f7732429d15477321e7f748d010ef27c85d (diff) | |
| download | Tango-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.cs | 117 |
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, |
