diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-11-28 16:12:39 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2019-11-28 16:12:39 +0200 |
| commit | 242cb9fd566647406792d63547b61ec1d6a5f3bc (patch) | |
| tree | 312bf250e054cb6b2a4edee0dfaa306ebf50c657 /Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs | |
| parent | cc407822ab637108a1b7868c3dd6f2f27b2ee5f8 (diff) | |
| download | Tango-242cb9fd566647406792d63547b61ec1d6a5f3bc.tar.gz Tango-242cb9fd566647406792d63547b61ec1d6a5f3bc.zip | |
Added PPC pending updates...
Diffstat (limited to 'Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs')
| -rw-r--r-- | Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs | 94 |
1 files changed, 89 insertions, 5 deletions
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs index a77212787..4c39aad80 100644 --- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs +++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs @@ -30,7 +30,9 @@ namespace Tango.MachineService.Controllers public class PPCController : TangoController<PPCController.TokenObject> { private static List<PPCPendingUpload> _pendingUploads; + private static List<PPCPendingUpdate> _pendingUpdates; private ActiveDirectoryManager _ad_manager; + private const int SQL_TEMP_CREDENTIALS_EXP_MINUTS = 20; public class TokenObject { @@ -44,6 +46,7 @@ namespace Tango.MachineService.Controllers static PPCController() { _pendingUploads = new List<PPCPendingUpload>(); + _pendingUpdates = new List<PPCPendingUpdate>(); } public PPCController() @@ -60,6 +63,7 @@ namespace Tango.MachineService.Controllers public MachineSetupResponse MachineSetup(MachineSetupRequest request) { MachineSetupResponse response = new MachineSetupResponse(); + response.NotifyCompletedToken = Guid.NewGuid().ToString(); LogManager.Log("Setup request received: " + request.ToString()); @@ -98,8 +102,6 @@ namespace Tango.MachineService.Controllers machine.DeviceId = request.DeviceID; machine.IsDeviceRegistered = true; - db.SaveChanges(); - var machine_version = db.MachineVersions.SingleOrDefault(x => x.Guid == machine.MachineVersionGuid); var latest_machine_version = db.TangoVersions.Where(x => x.MachineVersionGuid == machine_version.Guid).ToList().OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); @@ -118,7 +120,7 @@ namespace Tango.MachineService.Controllers { credentials = smo.CreateRandomLoginAndUser(); - Task.Delay(TimeSpan.FromMinutes(10)).ContinueWith((x) => + Task.Delay(TimeSpan.FromMinutes(SQL_TEMP_CREDENTIALS_EXP_MINUTS)).ContinueWith((x) => { using (SmoManager m = new SmoManager()) { @@ -143,6 +145,22 @@ namespace Tango.MachineService.Controllers response.SetupUWF = machine.SetupUwf; response.SetupFirmware = machine.SetupFirmware; response.IsDemo = machine.IsDemo; + + TangoUpdate tangoUpdate = new TangoUpdate(); + tangoUpdate.ApplicationVersion = latest_machine_version.Version; + tangoUpdate.FirmwareVersion = latest_machine_version.FirmwareVersion; + tangoUpdate.MachineGuid = machine.Guid; + tangoUpdate.StartDate = DateTime.UtcNow; + tangoUpdate.UpdateStatus = TangoUpdateStatuses.SetupStarted; + db.TangoUpdates.Add(tangoUpdate); + + db.SaveChanges(); + + _pendingUpdates.Add(new PPCPendingUpdate() + { + Token = response.NotifyCompletedToken, + TangoUpdateGuid = tangoUpdate.Guid, + }); } return response; @@ -153,6 +171,7 @@ namespace Tango.MachineService.Controllers public DownloadUpdateResponse MachineUpdate(DownloadUpdateRequest request) { DownloadUpdateResponse response = new DownloadUpdateResponse(); + response.NotifyCompletedToken = Guid.NewGuid().ToString(); using (ObservablesContext db = ObservablesContextHelper.CreateContext()) { @@ -184,7 +203,7 @@ namespace Tango.MachineService.Controllers { credentials = smo.CreateRandomLoginAndUser(); - Task.Delay(TimeSpan.FromMinutes(10)).ContinueWith((x) => + Task.Delay(TimeSpan.FromMinutes(SQL_TEMP_CREDENTIALS_EXP_MINUTS)).ContinueWith((x) => { using (SmoManager m = new SmoManager()) { @@ -202,6 +221,22 @@ namespace Tango.MachineService.Controllers IntegratedSecurity = false, Type = DataSourceType.SQLServer, }; + + TangoUpdate tangoUpdate = new TangoUpdate(); + tangoUpdate.ApplicationVersion = latest_machine_version.Version; + tangoUpdate.FirmwareVersion = latest_machine_version.FirmwareVersion; + tangoUpdate.MachineGuid = machine.Guid; + tangoUpdate.StartDate = DateTime.UtcNow; + tangoUpdate.UpdateStatus = TangoUpdateStatuses.UpdateStarted; + db.TangoUpdates.Add(tangoUpdate); + + db.SaveChanges(); + + _pendingUpdates.Add(new PPCPendingUpdate() + { + Token = response.NotifyCompletedToken, + TangoUpdateGuid = tangoUpdate.Guid, + }); } return response; @@ -209,6 +244,35 @@ namespace Tango.MachineService.Controllers [HttpPost] [JwtTokenFilter] + public MachineUpdateCompletedResponse NotifyUpdateCompleted(MachineUpdateCompletedRequest request) + { + var pendingUpdate = _pendingUpdates.SingleOrDefault(x => x.Token == request.Token); + if (pendingUpdate != null) + { + _pendingUpdates.Remove(pendingUpdate); + + using (ObservablesContext db = ObservablesContextHelper.CreateContext()) + { + var tangoUpdate = db.TangoUpdates.SingleOrDefault(x => x.Guid == pendingUpdate.TangoUpdateGuid); + + if (tangoUpdate != null) + { + tangoUpdate.LastUpdated = DateTime.UtcNow; + tangoUpdate.UpdateStatus = request.Status; + tangoUpdate.EndDate = DateTime.UtcNow; + tangoUpdate.FailedReason = request.FailedReason; + tangoUpdate.FailedLog = request.FailedLog; + + db.SaveChanges(); + } + } + } + + return new MachineUpdateCompletedResponse(); + } + + [HttpPost] + [JwtTokenFilter] public CheckForUpdateResponse CheckForUpdates(CheckForUpdateRequest request) { CheckForUpdateResponse response = new CheckForUpdateResponse(); @@ -255,6 +319,7 @@ namespace Tango.MachineService.Controllers public UpdateDBResponse UpdateDB(UpdateDBRequest request) { UpdateDBResponse response = new UpdateDBResponse(); + response.NotifyCompletedToken = Guid.NewGuid().ToString(); using (ObservablesContext db = ObservablesContextHelper.CreateContext()) { @@ -276,7 +341,7 @@ namespace Tango.MachineService.Controllers { credentials = manager.CreateRandomLoginAndUser(); - Task.Delay(TimeSpan.FromMinutes(10)).ContinueWith((x) => + Task.Delay(TimeSpan.FromMinutes(SQL_TEMP_CREDENTIALS_EXP_MINUTS)).ContinueWith((x) => { using (SmoManager m = new SmoManager()) { @@ -294,6 +359,25 @@ namespace Tango.MachineService.Controllers IntegratedSecurity = false, Type = DataSourceType.SQLServer, }; + + var machine_version = db.MachineVersions.SingleOrDefault(x => x.Guid == machine.MachineVersionGuid); + var latest_machine_version = db.TangoVersions.Where(x => x.MachineVersionGuid == machine_version.Guid).ToList().OrderByDescending(x => Version.Parse(x.Version)).FirstOrDefault(); + + TangoUpdate tangoUpdate = new TangoUpdate(); + tangoUpdate.ApplicationVersion = latest_machine_version.Version; + tangoUpdate.FirmwareVersion = latest_machine_version.FirmwareVersion; + tangoUpdate.MachineGuid = machine.Guid; + tangoUpdate.StartDate = DateTime.UtcNow; + tangoUpdate.UpdateStatus = TangoUpdateStatuses.DatabaseStarted; + db.TangoUpdates.Add(tangoUpdate); + + db.SaveChanges(); + + _pendingUpdates.Add(new PPCPendingUpdate() + { + Token = response.NotifyCompletedToken, + TangoUpdateGuid = tangoUpdate.Guid, + }); } return response; |
