internal void ApplyProvisioningHierarchy(Tenant tenant, OfficeDevPnP.Core.Framework.Provisioning.Model.ProvisioningHierarchy hierarchy, string sequenceId, ProvisioningTemplateApplyingInformation provisioningInfo) { using (var scope = new PnPMonitoredScope(CoreResources.Provisioning_ObjectHandlers_Provisioning)) { ProvisioningProgressDelegate progressDelegate = null; ProvisioningMessagesDelegate messagesDelegate = null; if (provisioningInfo == null) { // When no provisioning info was passed then we want to execute all handlers provisioningInfo = new ProvisioningTemplateApplyingInformation(); provisioningInfo.HandlersToProcess = Handlers.All; } else { progressDelegate = provisioningInfo.ProgressDelegate; if (provisioningInfo.ProgressDelegate != null) { scope.LogInfo(CoreResources.SiteToTemplateConversion_ProgressDelegate_registered); } messagesDelegate = provisioningInfo.MessagesDelegate; if (provisioningInfo.MessagesDelegate != null) { scope.LogInfo(CoreResources.SiteToTemplateConversion_MessagesDelegate_registered); } if (provisioningInfo.HandlersToProcess == default(Handlers)) { provisioningInfo.HandlersToProcess = Handlers.All; } } List <ObjectHierarchyHandlerBase> objectHandlers = new List <ObjectHierarchyHandlerBase> { new ObjectHierarchyTenant(), new ObjectHierarchySequenceTermGroups(), new ObjectHierarchySequenceSites(), new ObjectTeams(), new ObjectAzureActiveDirectory(), }; var count = objectHandlers.Count(o => o.ReportProgress && o.WillProvision(tenant, hierarchy, sequenceId, provisioningInfo)) + 1; progressDelegate?.Invoke("Initializing engine", 1, count); // handlers + initializing message) int step = 2; TokenParser sequenceTokenParser = new TokenParser(tenant, hierarchy); foreach (var handler in objectHandlers) { if (handler.WillProvision(tenant, hierarchy, sequenceId, provisioningInfo)) { if (messagesDelegate != null) { handler.MessagesDelegate = messagesDelegate; } if (handler.ReportProgress && progressDelegate != null) { progressDelegate(handler.Name, step, count); step++; } sequenceTokenParser = handler.ProvisionObjects(tenant, hierarchy, sequenceId, sequenceTokenParser, provisioningInfo); } } } }
/// <summary> /// Constructor for SubSiteCollection class /// </summary> /// <param name="parentProvisioning">Parent Provisioning object</param> public SubSiteCollection(ProvisioningHierarchy parentProvisioning) : base(parentProvisioning) { }
internal void ApplyTenantTemplate(Tenant tenant, OfficeDevPnP.Core.Framework.Provisioning.Model.ProvisioningHierarchy hierarchy, string sequenceId, ApplyConfiguration configuration) { using (var scope = new PnPMonitoredScope(CoreResources.Provisioning_ObjectHandlers_Provisioning)) { ProvisioningProgressDelegate progressDelegate = null; ProvisioningMessagesDelegate messagesDelegate = null; if (configuration == null) { // When no provisioning info was passed then we want to execute all handlers configuration = new ApplyConfiguration(); } else { progressDelegate = configuration.ProgressDelegate; if (configuration.ProgressDelegate != null) { scope.LogInfo(CoreResources.SiteToTemplateConversion_ProgressDelegate_registered); } messagesDelegate = configuration.MessagesDelegate; if (configuration.MessagesDelegate != null) { scope.LogInfo(CoreResources.SiteToTemplateConversion_MessagesDelegate_registered); } } List <ObjectHierarchyHandlerBase> objectHandlers = new List <ObjectHierarchyHandlerBase> { new ObjectHierarchyTenant(), new ObjectHierarchySequenceTermGroups(), new ObjectHierarchySequenceSites(), new ObjectTeams(), new ObjectAzureActiveDirectory(), }; var count = objectHandlers.Count(o => o.ReportProgress && o.WillProvision(tenant, hierarchy, sequenceId, configuration)) + 1; progressDelegate?.Invoke("Initializing engine", 1, count); // handlers + initializing message) int step = 2; TokenParser sequenceTokenParser = new TokenParser(tenant, hierarchy); CallWebHooks(hierarchy.Templates.FirstOrDefault(), sequenceTokenParser, ProvisioningTemplateWebhookKind.ProvisioningStarted); foreach (var handler in objectHandlers) { if (handler.WillProvision(tenant, hierarchy, sequenceId, configuration)) { if (messagesDelegate != null) { handler.MessagesDelegate = messagesDelegate; } if (handler.ReportProgress && progressDelegate != null) { progressDelegate(handler.Name, step, count); step++; } try { sequenceTokenParser = handler.ProvisionObjects(tenant, hierarchy, sequenceId, sequenceTokenParser, configuration); } catch (Exception ex) { CallWebHooks(hierarchy.Templates.FirstOrDefault(), sequenceTokenParser, ProvisioningTemplateWebhookKind.ProvisioningExceptionOccurred, handler.Name, ex); throw ex; } } } CallWebHooks(hierarchy.Templates.FirstOrDefault(), sequenceTokenParser, ProvisioningTemplateWebhookKind.ProvisioningCompleted); } }
/// <summary> /// Constructor for ProvisioningSequenceCollection class /// </summary> /// <param name="parentProvisioning">Parent Provisioning object</param> public ProvisioningSequenceCollection(ProvisioningHierarchy parentProvisioning) : base(parentProvisioning) { }