public ListJobSchedules ( Microsoft.Azure.Commands.Batch.Models.ListJobScheduleOptions options ) : IEnumerable |
||
options | Microsoft.Azure.Commands.Batch.Models.ListJobScheduleOptions | The options to use when querying for job schedules. |
return | IEnumerable |
public IEnumerable<PSCloudJobSchedule> ListJobSchedules(ListJobScheduleOptions options)
{
if (options == null)
{
throw new ArgumentNullException("options");
}
// Get the single job schedule matching the specified id
if (!string.IsNullOrWhiteSpace(options.JobScheduleId))
{
WriteVerbose(string.Format(Resources.GetJobScheduleById, options.JobScheduleId));
JobScheduleOperations jobScheduleOperations = options.Context.BatchOMClient.JobScheduleOperations;
ODATADetailLevel getDetailLevel = new ODATADetailLevel(selectClause: options.Select, expandClause: options.Expand);
CloudJobSchedule jobSchedule = jobScheduleOperations.GetJobSchedule(options.JobScheduleId, detailLevel: getDetailLevel, additionalBehaviors: options.AdditionalBehaviors);
PSCloudJobSchedule psJobSchedule = new PSCloudJobSchedule(jobSchedule);
return new PSCloudJobSchedule[] { psJobSchedule };
}
// List job schedules using the specified filter
else
{
string verboseLogString = null;
ODATADetailLevel listDetailLevel = new ODATADetailLevel(selectClause: options.Select, expandClause: options.Expand);
if (!string.IsNullOrEmpty(options.Filter))
{
verboseLogString = Resources.GetJobScheduleByOData;
listDetailLevel.FilterClause = options.Filter;
}
else
{
verboseLogString = Resources.GetJobScheduleNoFilter;
}
WriteVerbose(verboseLogString);
JobScheduleOperations jobScheduleOperations = options.Context.BatchOMClient.JobScheduleOperations;
IPagedEnumerable<CloudJobSchedule> workItems = jobScheduleOperations.ListJobSchedules(listDetailLevel, options.AdditionalBehaviors);
Func<CloudJobSchedule, PSCloudJobSchedule> mappingFunction = j => { return new PSCloudJobSchedule(j); };
return PSPagedEnumerable<PSCloudJobSchedule, CloudJobSchedule>.CreateWithMaxCount(
workItems, mappingFunction, options.MaxCount, () => WriteVerbose(string.Format(Resources.MaxCount, options.MaxCount)));
}
}
/// <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); }