// This function will get triggered/executed when a new message is written // on an Azure Queue called queue. public static void ProcessQueueMessage([QueueTrigger(PnPPartnerPackSettings.StorageQueueName)] ContinousJobItem content, TextWriter log) { // Attach TextWriter log to Trace // https://blog.josequinto.com/2017/02/16/enable-azure-invocation-log-at-a-web-job-function-level-for-pnp-provisioning/ TextWriterTraceListener twtl = new TextWriterTraceListener(log); twtl.Name = "ContinousJobLogger"; string[] notShownWords = new string[] { "TokenCache", "AcquireTokenHandlerBase" }; twtl.Filter = new RemoveWordsFilter(notShownWords); Trace.Listeners.Add(twtl); Trace.AutoFlush = true; log.WriteLine(String.Format("Found Job: {0}", content.JobId)); // Get the info about the Provisioning Job ProvisioningJobInformation jobInfo = ProvisioningRepositoryFactory.Current.GetProvisioningJob(content.JobId, true); // Get a reference to the Provisioning Job ProvisioningJob job = jobInfo.JobFile.FromJsonStream(jobInfo.Type); if (PnPPartnerPackSettings.ContinousJobHandlers.ContainsKey(job.GetType())) { PnPPartnerPackSettings.ContinousJobHandlers[job.GetType()].RunJob(job); } log.WriteLine("Completed Job execution"); // Remove Trace Listener Trace.Listeners.Remove(twtl); }
private static ProvisioningJobInformation PrepareJobInformationFromSharePoint(ClientContext context, ListItem jobItem, Boolean includeFileStream = false) { ProvisioningJobInformation resultItem = new ProvisioningJobInformation(); resultItem.JobId = Guid.Parse(((String)jobItem["FileLeafRef"]).Substring(0, ((String)jobItem["FileLeafRef"]).Length - 4)); resultItem.Title = (String)jobItem[PnPPartnerPackConstants.TitleField]; resultItem.Status = (ProvisioningJobStatus)Enum.Parse(typeof(ProvisioningJobStatus), (String)jobItem[PnPPartnerPackConstants.PnPProvisioningJobStatus]); resultItem.ErrorMessage = (String)jobItem[PnPPartnerPackConstants.PnPProvisioningJobError]; resultItem.Type = (String)jobItem[PnPPartnerPackConstants.PnPProvisioningJobType]; resultItem.Owner = ((FieldUserValue)jobItem[PnPPartnerPackConstants.PnPProvisioningJobOwner]).LookupValue; if (includeFileStream) { resultItem.JobFile = GetProvisioningJobStreamFromSharePoint(context, jobItem); } return(resultItem); }
// This function will get triggered/executed when a new message is written // on an Azure Queue called queue. public static void ProcessQueueMessage([QueueTrigger(PnPPartnerPackSettings.StorageQueueName)] ContinousJobItem content, TextWriter log) { log.WriteLine(String.Format("Found Job: {0}", content.JobId)); // Get the info about the Provisioning Job ProvisioningJobInformation jobInfo = ProvisioningRepositoryFactory.Current.GetProvisioningJob(content.JobId, true); // Get a reference to the Provisioning Job ProvisioningJob job = jobInfo.JobFile.FromJsonStream(jobInfo.Type); if (PnPPartnerPackSettings.ContinousJobHandlers.ContainsKey(job.GetType())) { PnPPartnerPackSettings.ContinousJobHandlers[job.GetType()].RunJob(job); } log.WriteLine("Completed Job execution"); }