aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-08-09 19:05:10 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-08-09 19:05:10 +0300
commit690e3aa537a830e2f7c11aee03502124a0e612cf (patch)
treec28a9e1728a784fe085fe6292110a93c2969cb7b /Software/Visual_Studio/PPC/Tango.PPC.Common/MachineSetup/MachineSetupManager.cs
parent4635652744b760ba35f5590b629874a3b078f64a (diff)
downloadTango-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.cs133
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();
});
}
}