public override void ExecuteCmdlet() { var options = new WebJobFilterOptions() { Name = Name, Slot = Slot, JobName = JobName, JobType = JobType }; List<IPSWebJob> jobs = WebsitesClient.FilterWebJobs(options); WriteObject(jobs, true); }
public override void ExecuteCmdlet() { WebJobFilterOptions options = new WebJobFilterOptions() { Name = Name, Slot = Slot, JobName = JobName, JobType = JobType }; List<PSWebJob> jobs = new List<PSWebJob>(); try { jobs = WebsitesClient.FilterWebJobs(options); } catch { // Ignore exceptions, just show empty list. } WriteObject(jobs, true); }
/// <summary> /// Filters the web jobs. /// </summary> /// <param name="options">The web job filter options</param> /// <returns>The filtered web jobs list</returns> public List<IPSWebJob> FilterWebJobs(WebJobFilterOptions options) { //GetWebsite(options.Name, options.Slot); options.Name = SetWebsiteName(options.Name, options.Slot); IWebSiteExtensionsClient client = GetWebSiteExtensionsClient(options.Name); List<WebJobBase> jobList = new List<WebJobBase>(); bool isContinuousJobs = false; bool isTriggeredJobs = false; if (string.IsNullOrEmpty(options.JobType)) { isContinuousJobs = true; isTriggeredJobs = true; } else { if (string.Compare(options.JobType, WebJobType.Continuous.ToString(), StringComparison.CurrentCultureIgnoreCase) == 0) { isContinuousJobs = true; } else if (string.Compare(options.JobType, WebJobType.Triggered.ToString(), StringComparison.CurrentCultureIgnoreCase) == 0) { isTriggeredJobs = true; } else { throw new ArgumentOutOfRangeException("JobType"); } } if (!string.IsNullOrEmpty(options.JobName)) { if (isContinuousJobs && isTriggeredJobs) { throw new ArgumentOutOfRangeException("JobType"); } WebJobBase webJob = isContinuousJobs ? (WebJobBase)client.ContinuousWebJobs.Get(options.JobName).ContinuousWebJob : (WebJobBase)client.TriggeredWebJobs.Get(options.JobName).TriggeredWebJob; if (webJob == null) { throw new ArgumentOutOfRangeException("JobName"); } jobList.Add(webJob); } else { if (isContinuousJobs) { jobList.AddRange(client.ContinuousWebJobs.List().ContinuousWebJobs); } if (isTriggeredJobs) { jobList.AddRange(client.TriggeredWebJobs.List().TriggeredWebJobs); } } return jobList.Select(webJob => webJob is ContinuousWebJob ? (IPSWebJob)new PSContinuousWebJob(webJob as ContinuousWebJob) : (IPSWebJob)new PSTriggeredWebJob(webJob as TriggeredWebJob)).ToList(); }
/// <summary> /// Creates new web job for a website /// </summary> /// <param name="name">The website name</param> /// <param name="slot">The website slot name</param> /// <param name="jobName">The web job name</param> /// <param name="jobType">The web job type</param> /// <param name="jobFile">The web job file name</param> /// <returns>The created web job instance</returns> public IPSWebJob CreateWebJob(string name, string slot, string jobName, WebJobType jobType, string jobFile) { name = SetWebsiteName(name, slot); IWebSiteExtensionsClient client = GetWebSiteExtensionsClient(name); string fileName = Path.GetFileName(jobFile); bool isZipFile = Path.GetExtension(jobFile).ToLower() == ".zip"; switch (jobType) { case WebJobType.Continuous: if (isZipFile) { client.ContinuousWebJobs.UploadZip(jobName, fileName, File.OpenRead(jobFile)); } else { client.ContinuousWebJobs.UploadFile(jobName, fileName, File.OpenRead(jobFile)); } break; case WebJobType.Triggered: if (isZipFile) { client.TriggeredWebJobs.UploadZip(jobName, fileName, File.OpenRead(jobFile)); } else { client.TriggeredWebJobs.UploadFile(jobName, fileName, File.OpenRead(jobFile)); } break; default: break; } //Thread.Sleep(UploadJobWaitTime); var options = new WebJobFilterOptions() { Name = name, Slot = slot, JobName = jobName, JobType = jobType.ToString() }; try { return FilterWebJobs(options).FirstOrDefault(); } catch (CloudException e) { if (e.Response.StatusCode == HttpStatusCode.NotFound) { throw new ArgumentException(Resources.InvalidJobFile); } throw; } }
/// <summary> /// Creates new web job for a website /// </summary> /// <param name="name">The website name</param> /// <param name="slot">The website slot name</param> /// <param name="jobName">The web job name</param> /// <param name="jobType">The web job type</param> /// <param name="jobFile">The web job file name</param> public PSWebJob CreateWebJob(string name, string slot, string jobName, WebJobType jobType, string jobFile) { WebJobFilterOptions options = new WebJobFilterOptions() { Name = name, Slot = slot, JobName = jobName, JobType = jobType.ToString() }; name = SetWebsiteName(name, slot); IWebSiteExtensionsClient client = GetWebSiteExtensionsClient(name); if (Path.GetExtension(jobFile).ToLower() != ".zip") { throw new InvalidOperationException(Resources.InvalidWebJobFile); } switch (jobType) { case WebJobType.Continuous: client.WebJobs.UploadContinuous(jobName, File.OpenRead(jobFile)); break; case WebJobType.Triggered: client.WebJobs.UploadTriggered(jobName, File.OpenRead(jobFile)); break; default: break; } PSWebJob webjob = null; Thread.Sleep(UploadJobWaitTime); try { webjob = FilterWebJobs(options).FirstOrDefault(); } catch (CloudException e) { if (e.Response.StatusCode == HttpStatusCode.NotFound) { throw new ArgumentException(Resources.InvalidJobFile); } } return webjob; }
/// <summary> /// Filters the web jobs. /// </summary> /// <param name="options">The web job filter options</param> /// <returns>The filtered web jobs list</returns> public List<PSWebJob> FilterWebJobs(WebJobFilterOptions options) { options.Name = SetWebsiteName(options.Name, options.Slot); IWebSiteExtensionsClient client = GetWebSiteExtensionsClient(options.Name); List<WebJob> jobList = new List<WebJob>(); if (string.IsNullOrEmpty(options.JobName) && string.IsNullOrEmpty(options.JobType)) { jobList = client.WebJobs.List(new WebJobListParameters()).Jobs.ToList(); } else if (string.IsNullOrEmpty(options.JobName) && !string.IsNullOrEmpty(options.JobType)) { if (string.Compare(options.JobType, WebJobType.Continuous.ToString(), true) == 0) { jobList = client.WebJobs.ListContinuous(new WebJobListParameters()).Jobs.ToList(); } else if (string.Compare(options.JobType, WebJobType.Triggered.ToString(), true) == 0) { jobList = client.WebJobs.ListTriggered(new WebJobListParameters()).Jobs.ToList(); } else { throw new ArgumentOutOfRangeException("JobType"); } } else if (!string.IsNullOrEmpty(options.JobName) && !string.IsNullOrEmpty(options.JobType)) { if (string.Compare(options.JobType, WebJobType.Continuous.ToString(), true) == 0) { jobList = new List<WebJob>() { client.WebJobs.GetContinuous(options.JobName).WebJob }; } else if (string.Compare(options.JobType, WebJobType.Triggered.ToString(), true) == 0) { jobList = new List<WebJob>() { client.WebJobs.GetTriggered(options.JobName).WebJob }; } else { throw new ArgumentOutOfRangeException("JobType"); } } else { if (string.IsNullOrEmpty(options.JobName)) { throw new ArgumentOutOfRangeException("JobName"); } else if (string.IsNullOrEmpty(options.JobType)) { throw new ArgumentOutOfRangeException("JobType"); } else { throw new ArgumentOutOfRangeException("options"); } } List<PSWebJob> result = new List<PSWebJob>(); foreach(WebJob job in jobList) { result.Add(new PSWebJob(job)); } return result; }