diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-09 19:05:10 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-09 19:05:10 +0300 |
| commit | 690e3aa537a830e2f7c11aee03502124a0e612cf (patch) | |
| tree | c28a9e1728a784fe085fe6292110a93c2969cb7b /Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs | |
| parent | 4635652744b760ba35f5590b629874a3b078f64a (diff) | |
| download | Tango-690e3aa537a830e2f7c11aee03502124a0e612cf.tar.gz Tango-690e3aa537a830e2f7c11aee03502124a0e612cf.zip | |
Working on PPC machine setup.
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 | 133 |
1 files changed, 48 insertions, 85 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 64500b454..72c6da515 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs @@ -30,21 +30,24 @@ namespace Tango.PPC.Common.MachineSetup get { return _currentStep; } set { - _currentStep = value; - RaisePropertyChangedAuto(); - ProgressStep?.Invoke(this, _currentStep); + if (_currentStep != value) + { + _currentStep = value; + RaisePropertyChangedAuto(); + ProgressStep?.Invoke(this, _currentStep); + } } } private double _downloadProgress; - public double UpdatingPackagesProgress + public double DownloadingPackagesProgress { get { return _downloadProgress; } private set { _downloadProgress = value; RaisePropertyChangedAuto(); } } private String _updatingPackagesStatus; - public String UpdatingPackagesStatus + public String DownloadingPackagesStatus { get { return _updatingPackagesStatus; } set { _updatingPackagesStatus = value; RaisePropertyChangedAuto(); } @@ -56,9 +59,9 @@ namespace Tango.PPC.Common.MachineSetup { //Connect to machine service and get matching packages for this machine. - CurrentStep = MachineSetupSteps.UpdatingPackages; - UpdatingPackagesProgress = 0; - UpdatingPackagesStatus = "Connecting to machine service..."; + CurrentStep = MachineSetupSteps.DownloadingPackage; + DownloadingPackagesProgress = 0; + DownloadingPackagesStatus = "Connecting to machine service..."; MachineSetupRequest request = new MachineSetupRequest(); request.SerialNumber = serialNumber; @@ -74,24 +77,20 @@ namespace Tango.PPC.Common.MachineSetup var _newPackageTempFolder = TemporaryManager.CreateFolder(); _newPackageTempFolder.Persist = true; - var software_package_folder = _newPackageTempFolder.CreateFolder(); - var embedded_package_folder = _newPackageTempFolder.CreateFolder(); - - //Download software package. var tempFile = TemporaryManager.CreateFile(".zip"); - UpdatingPackagesStatus = "Downloading software package..."; + DownloadingPackagesStatus = "Downloading software package..."; int fileSize = 0; - UpdatingPackagesProgress = 0; + DownloadingPackagesProgress = 0; using (FileStreamWrapper fs = new FileStreamWrapper(tempFile.Path, FileMode.Create, (current) => { InvokeUINow(() => { Thread.Sleep(10); - UpdatingPackagesProgress = ((double)current / (double)fileSize) * 100d; + DownloadingPackagesProgress = ((double)current / (double)fileSize) * 100d; }); })) { @@ -107,96 +106,60 @@ namespace Tango.PPC.Common.MachineSetup } } - //Synchronize database - String remote_address = setup_response.DbAddress; + //Extract software package. + ZipFile.ExtractToDirectory(tempFile, _newPackageTempFolder); + + //Synchronize database CurrentStep = MachineSetupSteps.SynchronizingSchema; String db_name = "Tango"; - String localAddress = SettingsManager.Default.GetOrCreate<CoreSettings>().DataBaseSource; - - var tempFolder = TemporaryManager.Default.CreateFolder("Machine Setup"); - String report_file = tempFolder.CreateImaginaryFile(".xml"); - String config_file = tempFolder.CreateImaginaryFile(".xml"); + String remote_address = setup_response.DbAddress; DbManager db = new DbManager(new SqlConnection(String.Format("Server={0};Integrated security=SSPI", localAddress))); - if (!db.Exists("Tango")) + if (!db.Exists(db_name)) { throw new InvalidProgramException("Database tango does not exists."); } - //Create schema configuration - ExaminerConfigurationBuilder builder = new ExaminerConfigurationBuilder(ExaminerConfigurationType.Schema); - - builder. - SetSourceServer(remote_address, db_name). - SetTargetServer(localAddress, db_name). - Synchronize(); - - //Synchronize Source schema with Target schema - - var process = new ExaminerProcess(builder.Build(), ExaminerProcessType.Schema); - process.Progress += (x, msg) => - { - ProgressLog?.Invoke(this, msg); - }; - var result = process.Execute().Result; - - //Synchronization was successful - if (result.ExitCode != ExaminerProcessExitCode.Success) - { - throw new InvalidProgramException("Error while trying to synchronize database schema."); - } - - CurrentStep = MachineSetupSteps.SynchronizingData; - - //Create override data configuration - builder = new ExaminerConfigurationBuilder(ExaminerConfigurationType.OverrideData); + db.ClearDb(db_name); //TODO: This is not working! - builder. - SetSourceServer(remote_address, db_name). - SetTargetServer(localAddress, db_name). - Synchronize(); + ExaminerSequenceConfigurationRunner runner = new ExaminerSequenceConfigurationRunner( + Path.Combine(_newPackageTempFolder, "Synchronization Scripts", "config.xml"), + Path.Combine(_newPackageTempFolder, "Synchronization Scripts"), + new ExaminerSequenceDataSource() + { + Address = remote_address, + DataBaseName = db_name, + IntegratedSecurity = true, + }, + new ExaminerSequenceDataSource() + { + Address = localAddress, + DataBaseName = db_name, + IntegratedSecurity = true, + }, serialNumber); - process = new ExaminerProcess(builder.Build(), ExaminerProcessType.Data); - process.Progress += (x, msg) => + runner.Log += (x, msg) => { - ProgressLog?.Invoke(this, msg); + ProgressLog.Invoke(this, msg); }; - result = process.Execute().Result; - - //Synchronization was successful - if (result.ExitCode != ExaminerProcessExitCode.Success) - { - throw new InvalidProgramException("Error while trying to synchronize data."); - } - - CurrentStep = MachineSetupSteps.SynchronizingMachineConfiguration; - //Provision Target - builder = new ExaminerConfigurationBuilder(ExaminerConfigurationType.ProvisionMachine); - - builder. - SetSourceServer(remote_address, db_name). - SetTargetServer(localAddress, db_name). - SetMachineSerialNumber(serialNumber). - Synchronize(); - - - process = new ExaminerProcess(builder.Build(), ExaminerProcessType.Data); - process.Progress += (x, msg) => + runner.ScriptExecuting += (x, item) => { - ProgressLog?.Invoke(this, msg); + if (item.Type == ExaminerSequenceItemType.Data && item.RequiresSerialNumber) + { + CurrentStep = MachineSetupSteps.SynchronizingMachineConfiguration; + } + else if (item.Type == ExaminerSequenceItemType.Data) + { + CurrentStep = MachineSetupSteps.SynchronizingData; + } }; - result = process.Execute().Result; - //Synchronization was successful - if (result.ExitCode != ExaminerProcessExitCode.Success) - { - throw new InvalidProgramException("Error while trying to synchronize database schema."); - } + runner.Run().Wait(); }); } } |
