aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2019-11-28 16:12:39 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2019-11-28 16:12:39 +0200
commit242cb9fd566647406792d63547b61ec1d6a5f3bc (patch)
tree312bf250e054cb6b2a4edee0dfaa306ebf50c657 /Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs
parentcc407822ab637108a1b7868c3dd6f2f27b2ee5f8 (diff)
downloadTango-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.cs94
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;