/// <summary> /// Waits for a recent job on a job schedule and returns its id. If a previous job is specified, this method waits until a new job is created. /// </summary> public static string WaitForRecentJob(BatchController controller, BatchAccountContext context, string jobScheduleId, string previousJob = null) { DateTime timeout = DateTime.Now.AddMinutes(2); RequestInterceptor interceptor = CreateHttpRecordingInterceptor(); BatchClientBehavior[] behaviors = new BatchClientBehavior[] { interceptor }; BatchClient client = new BatchClient(controller.BatchManagementClient, controller.ResourceManagementClient); ListJobScheduleOptions options = new ListJobScheduleOptions(context, behaviors) { JobScheduleId = jobScheduleId, Filter = null, MaxCount = Constants.DefaultMaxCount }; PSCloudJobSchedule jobSchedule = client.ListJobSchedules(options).First(); while (jobSchedule.ExecutionInformation.RecentJob == null || string.Equals(jobSchedule.ExecutionInformation.RecentJob.Id, previousJob, StringComparison.OrdinalIgnoreCase)) { if (DateTime.Now > timeout) { throw new TimeoutException("Timed out waiting for recent job"); } Sleep(5000); jobSchedule = client.ListJobSchedules(options).First(); } return(jobSchedule.ExecutionInformation.RecentJob.Id); }
/// <summary> /// Syncs the collections on a bound PSCloudJobSchedule with its wrapped OM object /// </summary> internal static void BoundJobScheduleSyncCollections(PSCloudJobSchedule jobSchedule) { if (jobSchedule != null) { jobSchedule.omObject.Metadata = CreateSyncedDict(jobSchedule.Metadata, ConvertMetadataItem); if (jobSchedule.JobSpecification != null) { JobSpecificationSyncCollections(jobSchedule.JobSpecification); } } }
/// <summary> /// Syncs the collections on a bound PSCloudJobSchedule with its wrapped OM object /// </summary> internal static void BoundJobScheduleSyncCollections(PSCloudJobSchedule jobSchedule) { if (jobSchedule != null) { jobSchedule.omObject.Metadata = CreateSyncedList(jobSchedule.Metadata, (m) => { MetadataItem metadata = new MetadataItem(m.Name, m.Value); return(metadata); }); if (jobSchedule.JobSpecification != null) { JobSpecificationSyncCollections(jobSchedule.JobSpecification); } } }