scheduled tasks tidy up

This commit is contained in:
Gary Sharp
2016-09-28 20:39:24 +10:00
parent 27c21175d7
commit 86faf02cf0
12 changed files with 53 additions and 79 deletions
@@ -608,7 +608,7 @@ namespace Disco.Services.Devices.Enrolment
{ {
foreach (var wirelessProfiles in provisionResult.Profiles) foreach (var wirelessProfiles in provisionResult.Profiles)
{ {
EnrolmentLog.LogSessionTaskProvisioningCertificate(sessionId, RepoDevice.SerialNumber, wirelessProfiles.Name); EnrolmentLog.LogSessionTaskProvisioningWirelessProfile(sessionId, RepoDevice.SerialNumber, wirelessProfiles.Name);
} }
} }
@@ -52,11 +52,7 @@ namespace Disco.Services.Documents.AttachmentImport
} }
} }
SystemLog.LogInformation( Status.LogInformation($"Cleared DocumentDropBox_SessionPages Cache, Deleted {deleteCount} File/s, with {errorCount} Error/s");
$"Cleared DocumentDropBox_SessionPages Cache, Deleted {deleteCount} File/s, with {errorCount} Error/s",
deleteCount,
errorCount
);
} }
} }
} }
@@ -35,11 +35,7 @@ namespace Disco.Services.Interop.ActiveDirectory
changeCount = ActiveDirectory.Context.ManagedGroups.SyncManagedGroups(managedGroups, this.Status); changeCount = ActiveDirectory.Context.ManagedGroups.SyncManagedGroups(managedGroups, this.Status);
SystemLog.LogInformation(new string[] Status.LogInformation($"Synchronised Active Directory Managed Groups, {changeCount:N0} changes made");
{
"Synchronised Active Directory Managed Groups",
changeCount.ToString()
});
this.Status.SetFinishedMessage(string.Format("Made {0} Changes to Active Directory Groups", changeCount)); this.Status.SetFinishedMessage(string.Format("Made {0} Changes to Active Directory Groups", changeCount));
} }
@@ -1,13 +1,9 @@
using Disco.Data.Repository; using Disco.Data.Repository;
using Disco.Models.Repository; using Disco.Models.Repository;
using Disco.Services.Logging;
using Disco.Services.Tasks; using Disco.Services.Tasks;
using Quartz; using Quartz;
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.DirectoryServices;
using System.DirectoryServices.ActiveDirectory;
using System.Linq; using System.Linq;
namespace Disco.Services.Interop.ActiveDirectory namespace Disco.Services.Interop.ActiveDirectory
@@ -24,7 +20,7 @@ namespace Disco.Services.Interop.ActiveDirectory
TriggerBuilder triggerBuilder = TriggerBuilder.Create(). TriggerBuilder triggerBuilder = TriggerBuilder.Create().
WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(23, 30)); WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(23, 30));
this.ScheduleTask(triggerBuilder); ScheduleTask(triggerBuilder);
} }
protected override void ExecuteTask() protected override void ExecuteTask()
@@ -35,16 +31,12 @@ namespace Disco.Services.Interop.ActiveDirectory
using (DiscoDataContext database = new DiscoDataContext()) using (DiscoDataContext database = new DiscoDataContext())
{ {
UpdateLastNetworkLogonDates(database, this.Status); UpdateLastNetworkLogonDates(database, this.Status);
this.Status.UpdateStatus(95, "Updating Database", "Writing last network logon dates to the Database"); Status.UpdateStatus(95, "Updating Database", "Writing last network logon dates to the Database");
changeCount = database.SaveChanges(); changeCount = database.SaveChanges();
this.Status.Finished(string.Format("{0} Device last network logon dates updated", changeCount), "/Config/SystemConfig"); Status.Finished(string.Format("{0} Device last network logon dates updated", changeCount), "/Config/SystemConfig");
} }
SystemLog.LogInformation(new string[] Status.LogInformation($"Updated LastNetworkLogon Device Property for Device/s, {changeCount:N0} changes");
{
"Updated LastNetworkLogon Device Property for Device/s",
changeCount.ToString()
});
} }
public static ScheduledTaskStatus ScheduleImmediately() public static ScheduledTaskStatus ScheduleImmediately()
@@ -62,7 +54,7 @@ namespace Disco.Services.Interop.ActiveDirectory
const string ldapFilterTemplate = "(&(objectCategory=Computer)(sAMAccountName={0}))"; const string ldapFilterTemplate = "(&(objectCategory=Computer)(sAMAccountName={0}))";
string[] ldapProperties = new string[] { "lastLogon", "lastLogonTimestamp" }; string[] ldapProperties = new string[] { "lastLogon", "lastLogonTimestamp" };
System.DateTime? lastLogon = null; DateTime? lastLogon = null;
if (!string.IsNullOrEmpty(Device.DeviceDomainId) && Device.DeviceDomainId.Contains('\\')) if (!string.IsNullOrEmpty(Device.DeviceDomainId) && Device.DeviceDomainId.Contains('\\'))
{ {
@@ -32,14 +32,14 @@ namespace Disco.Services.Interop.DiscoServices
{ {
try try
{ {
UpdateQuery.Check(database, true, this.Status); UpdateQuery.Check(database, true, Status);
} }
catch (Exception ex) catch (Exception ex)
{ {
ScheduledTasksLog.LogScheduledTaskException(this.Status.TaskName, this.Status.SessionId, this.Status.TaskType, ex); ScheduledTasksLog.LogScheduledTaskException(Status.TaskName, Status.SessionId, Status.TaskType, ex);
// Could be proxy error - try again without proxy: // Could be proxy error - try again without proxy:
UpdateQuery.Check(database, false, this.Status); UpdateQuery.Check(database, false, Status);
} }
} }
} }
@@ -1,11 +1,6 @@
using Disco.Data.Repository; using Disco.Data.Repository;
using Disco.Services.Tasks; using Disco.Services.Tasks;
using Quartz; using Quartz;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Disco.Services.Jobs.JobQueues namespace Disco.Services.Jobs.JobQueues
{ {
@@ -19,11 +14,11 @@ namespace Disco.Services.Jobs.JobQueues
protected override void ExecuteTask() protected override void ExecuteTask()
{ {
int jobQueueId = (int)this.ExecutionContext.JobDetail.JobDataMap["JobQueueId"]; int jobQueueId = (int)ExecutionContext.JobDetail.JobDataMap["JobQueueId"];
using (DiscoDataContext Database = new DiscoDataContext()) using (DiscoDataContext Database = new DiscoDataContext())
{ {
JobQueueService.DeleteJobQueue(Database, jobQueueId, this.Status); JobQueueService.DeleteJobQueue(Database, jobQueueId, Status);
} }
} }
+12 -12
View File
@@ -26,7 +26,7 @@ namespace Disco.Services.Plugins
if (!string.IsNullOrEmpty(packageUrlPath)) if (!string.IsNullOrEmpty(packageUrlPath))
{ {
this.Status.UpdateStatus(0, "Downloading Plugin Package", "Connecting..."); Status.UpdateStatus(0, "Downloading Plugin Package", "Connecting...");
if (File.Exists(packageFilePath)) if (File.Exists(packageFilePath))
File.Delete(packageFilePath); File.Delete(packageFilePath);
@@ -49,7 +49,7 @@ namespace Disco.Services.Plugins
} }
} }
this.Status.UpdateStatus(10, "Opening Plugin Package", Path.GetFileName(packageFilePath)); Status.UpdateStatus(10, "Opening Plugin Package", Path.GetFileName(packageFilePath));
using (var packageStream = File.OpenRead(packageFilePath)) using (var packageStream = File.OpenRead(packageFilePath))
{ {
@@ -67,7 +67,7 @@ namespace Disco.Services.Plugins
packageManifest = PluginManifest.FromPluginManifestFile(packageManifestStream); packageManifest = PluginManifest.FromPluginManifestFile(packageManifestStream);
} }
this.Status.UpdateStatus(20, string.Format("{0} [{1} v{2}] by {3}", packageManifest.Name, packageManifest.Id, packageManifest.Version.ToString(4), packageManifest.Author), "Initializing Install Environment"); Status.UpdateStatus(20, string.Format("{0} [{1} v{2}] by {3}", packageManifest.Name, packageManifest.Id, packageManifest.Version.ToString(4), packageManifest.Author), "Initializing Install Environment");
PluginsLog.LogInstalling(packageManifest); PluginsLog.LogInstalling(packageManifest);
@@ -93,7 +93,7 @@ namespace Disco.Services.Plugins
// Force Delete of Existing Folder // Force Delete of Existing Folder
if (Directory.Exists(packagePath)) if (Directory.Exists(packagePath))
{ {
this.Status.UpdateStatus(25, "Removing Existing Files"); Status.UpdateStatus(25, "Removing Existing Files");
try try
{ {
Directory.Delete(packagePath, true); Directory.Delete(packagePath, true);
@@ -105,8 +105,8 @@ namespace Disco.Services.Plugins
} }
Directory.CreateDirectory(packagePath); Directory.CreateDirectory(packagePath);
this.Status.UpdateStatus(30, "Extracting Files"); Status.UpdateStatus(30, "Extracting Files");
double extractFileInterval = (double)50 / packageArchive.Entries.Count; double extractFileInterval = (double)50 / packageArchive.Entries.Count;
int countExtractedFiles = 0; int countExtractedFiles = 0;
@@ -114,7 +114,7 @@ namespace Disco.Services.Plugins
// Extract Package Contents // Extract Package Contents
foreach (var packageEntry in packageArchive.Entries) foreach (var packageEntry in packageArchive.Entries)
{ {
this.Status.UpdateStatus(30 + (countExtractedFiles++ * extractFileInterval), string.Format("Extracting File: {0}", packageEntry.FullName)); Status.UpdateStatus(30 + (countExtractedFiles++ * extractFileInterval), string.Format("Extracting File: {0}", packageEntry.FullName));
// Determine Extraction Path // Determine Extraction Path
var packageEntryTarget = Path.Combine(packagePath, packageEntry.FullName); var packageEntryTarget = Path.Combine(packagePath, packageEntry.FullName);
@@ -135,19 +135,19 @@ namespace Disco.Services.Plugins
packageManifest = PluginManifest.FromPluginManifestFile(Path.Combine(packagePath, "manifest.json")); packageManifest = PluginManifest.FromPluginManifestFile(Path.Combine(packagePath, "manifest.json"));
// Install Plugin // Install Plugin
this.Status.UpdateStatus(80, "Initial Package Configuration"); Status.UpdateStatus(80, "Initial Package Configuration");
packageManifest.InstallPlugin(database, this.Status); packageManifest.InstallPlugin(database, Status);
// Initialize Plugin // Initialize Plugin
this.Status.UpdateStatus(98, "Initializing Plugin for Use"); Status.UpdateStatus(98, "Initializing Plugin for Use");
packageManifest.InitializePlugin(database); packageManifest.InitializePlugin(database);
// Add Plugin Manifest to Host Environment // Add Plugin Manifest to Host Environment
Plugins.AddPlugin(packageManifest); Plugins.AddPlugin(packageManifest);
PluginsLog.LogInstalled(packageManifest); PluginsLog.LogInstalled(packageManifest);
this.Status.SetFinishedUrl(string.Format("/Config/Plugins/{0}", System.Web.HttpUtility.UrlEncode(packageManifest.Id))); Status.SetFinishedUrl(string.Format("/Config/Plugins/{0}", System.Web.HttpUtility.UrlEncode(packageManifest.Id)));
this.Status.UpdateStatus(100, "Plugin Installation Completed"); Status.UpdateStatus(100, "Plugin Installation Completed");
} }
} }
} }
+10 -15
View File
@@ -1,14 +1,9 @@
using System; using Disco.Data.Repository;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using Disco.Services.Tasks; using Disco.Services.Tasks;
using Quartz; using Quartz;
using Disco.Data.Repository; using System;
using System.IO;
using System.Linq;
namespace Disco.Services.Plugins namespace Disco.Services.Plugins
{ {
@@ -18,10 +13,10 @@ namespace Disco.Services.Plugins
protected override void ExecuteTask() protected override void ExecuteTask()
{ {
PluginManifest manifest = (PluginManifest)this.ExecutionContext.JobDetail.JobDataMap["PluginManifest"]; var manifest = (PluginManifest)ExecutionContext.JobDetail.JobDataMap["PluginManifest"];
bool UninstallData = (bool)this.ExecutionContext.JobDetail.JobDataMap["UninstallData"]; var UninstallData = (bool)ExecutionContext.JobDetail.JobDataMap["UninstallData"];
this.Status.UpdateStatus(25, string.Format("Uninstalling Plugin: {0} [{1}]", manifest.Name, manifest.Id), "Queuing plugin for uninstall"); Status.UpdateStatus(25, string.Format("Uninstalling Plugin: {0} [{1}]", manifest.Name, manifest.Id), "Queuing plugin for uninstall");
PluginsLog.LogUninstalling(manifest, UninstallData); PluginsLog.LogUninstalling(manifest, UninstallData);
@@ -31,7 +26,7 @@ namespace Disco.Services.Plugins
using (DiscoDataContext database = new DiscoDataContext()) using (DiscoDataContext database = new DiscoDataContext())
{ {
manifest.UninstallPlugin(database, UninstallData, this.Status); manifest.UninstallPlugin(database, UninstallData, Status);
} }
string manifestUninstallFileLocation = Path.Combine(manifest.PluginLocation, "manifest.uninstall.json"); string manifestUninstallFileLocation = Path.Combine(manifest.PluginLocation, "manifest.uninstall.json");
@@ -50,7 +45,7 @@ namespace Disco.Services.Plugins
File.Copy(manifestUninstallFileLocation, manifestDataUninstallFileLocation); File.Copy(manifestUninstallFileLocation, manifestDataUninstallFileLocation);
} }
this.Status.Finished("Restarting Disco, please wait...", "/Config/Plugins"); Status.Finished("Restarting Disco, please wait...", "/Config/Plugins");
Plugins.RestartApp(2500); Plugins.RestartApp(2500);
} }
@@ -63,7 +58,7 @@ namespace Disco.Services.Plugins
if (ScheduledTasks.GetTaskStatuses(typeof(InstallPluginTask)).Where(s => s.IsRunning).Count() > 0) if (ScheduledTasks.GetTaskStatuses(typeof(InstallPluginTask)).Where(s => s.IsRunning).Count() > 0)
throw new InvalidOperationException("A plugin is being Installed"); throw new InvalidOperationException("A plugin is being Installed");
JobDataMap taskData = new JobDataMap() { { "PluginManifest", Manifest }, { "UninstallData", UninstallData } }; var taskData = new JobDataMap() { { "PluginManifest", Manifest }, { "UninstallData", UninstallData } };
var instance = new UninstallPluginTask(); var instance = new UninstallPluginTask();
@@ -20,6 +20,10 @@ namespace Disco.Services.Tasks
public Exception TaskException { get; set; } public Exception TaskException { get; set; }
[Obsolete("Use ScheduledTaskMockStatus.Create(TaskName) instead")]
public ScheduledTaskMockStatus() : this("Unknown Task")
{ }
public ScheduledTaskMockStatus(string TaskName) public ScheduledTaskMockStatus(string TaskName)
{ {
this.TaskName = TaskName; this.TaskName = TaskName;
@@ -103,10 +107,10 @@ namespace Disco.Services.Tasks
ScheduledTasksLog.LogScheduledTaskInformation(TaskName, null, Message); ScheduledTasksLog.LogScheduledTaskInformation(TaskName, null, Message);
} }
[Obsolete("Use the constructor which requires a TaskName instead")] [Obsolete("Use ScheduledTaskMockStatus.Create(TaskName) instead")]
public static ScheduledTaskMockStatus Create() public static ScheduledTaskMockStatus Create()
{ {
return new ScheduledTaskMockStatus("Unknown Task"); return new ScheduledTaskMockStatus();
} }
public static ScheduledTaskMockStatus Create(string TaskName) public static ScheduledTaskMockStatus Create(string TaskName)
+5 -9
View File
@@ -2,10 +2,6 @@
using Disco.Services.Tasks; using Disco.Services.Tasks;
using Quartz; using Quartz;
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Disco.Services.Users namespace Disco.Services.Users
{ {
@@ -22,16 +18,16 @@ namespace Disco.Services.Users
// Run @ every 15mins // Run @ every 15mins
// Next 15min interval // Next 15min interval
DateTime now = DateTime.Now; var now = DateTime.Now;
int mins = (15 - (now.Minute % 15)); var mins = (15 - (now.Minute % 15));
if (mins < 10) if (mins < 10)
mins += 15; mins += 15;
DateTimeOffset startAt = new DateTimeOffset(now).AddMinutes(mins).AddSeconds(now.Second * -1).AddMilliseconds(now.Millisecond * -1); var startAt = new DateTimeOffset(now).AddMinutes(mins).AddSeconds(now.Second * -1).AddMilliseconds(now.Millisecond * -1);
TriggerBuilder triggerBuilder = TriggerBuilder.Create().StartAt(startAt). var triggerBuilder = TriggerBuilder.Create().StartAt(startAt).
WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(15)); WithSchedule(SimpleScheduleBuilder.RepeatMinutelyForever(15));
this.ScheduleTask(triggerBuilder); ScheduleTask(triggerBuilder);
} }
protected override void ExecuteTask() protected override void ExecuteTask()
@@ -19,11 +19,11 @@ namespace Disco.Services.Users.UserFlags
protected override void ExecuteTask() protected override void ExecuteTask()
{ {
int UserFlagId = (int)this.ExecutionContext.JobDetail.JobDataMap["UserFlagId"]; int UserFlagId = (int)ExecutionContext.JobDetail.JobDataMap["UserFlagId"];
string TechnicianUserId = (string)this.ExecutionContext.JobDetail.JobDataMap["TechnicianUserId"]; string TechnicianUserId = (string)ExecutionContext.JobDetail.JobDataMap["TechnicianUserId"];
string Comments = (string)this.ExecutionContext.JobDetail.JobDataMap["Comments"]; string Comments = (string)ExecutionContext.JobDetail.JobDataMap["Comments"];
List<string> UserIds = (List<string>)this.ExecutionContext.JobDetail.JobDataMap["UserIds"]; List<string> UserIds = (List<string>)ExecutionContext.JobDetail.JobDataMap["UserIds"];
bool Override = (bool)this.ExecutionContext.JobDetail.JobDataMap["Override"]; bool Override = (bool)ExecutionContext.JobDetail.JobDataMap["Override"];
using (DiscoDataContext Database = new DiscoDataContext()) using (DiscoDataContext Database = new DiscoDataContext())
{ {
@@ -14,7 +14,7 @@ namespace Disco.Services.Users.UserFlags
protected override void ExecuteTask() protected override void ExecuteTask()
{ {
int UserFlagId = (int)this.ExecutionContext.JobDetail.JobDataMap["UserFlagId"]; int UserFlagId = (int)ExecutionContext.JobDetail.JobDataMap["UserFlagId"];
using (DiscoDataContext Database = new DiscoDataContext()) using (DiscoDataContext Database = new DiscoDataContext())
{ {
@@ -24,7 +24,7 @@ namespace Disco.Services.Users.UserFlags
public static ScheduledTaskStatus ScheduleNow(int UserFlagId) public static ScheduledTaskStatus ScheduleNow(int UserFlagId)
{ {
JobDataMap taskData = new JobDataMap() { { "UserFlagId", UserFlagId } }; var taskData = new JobDataMap() { { "UserFlagId", UserFlagId } };
var instance = new UserFlagDeleteTask(); var instance = new UserFlagDeleteTask();