internal static ReconciliationCookie GetReconciliationCookie(ProvisioningReconciliationConfig provisioningReconciliationConfig, Task.TaskErrorLoggingDelegate errorLogger) { ITopologyConfigurationSession topologyConfigurationSession = DirectorySessionFactory.Default.CreateTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, ADSessionSettings.FromRootOrgScopeSet(), 42, "GetReconciliationCookie", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Common\\ProvisioningReconciliationHelper.cs"); ReconciliationCookie reconciliationCookie = null; if (provisioningReconciliationConfig.ReconciliationCookies != null && provisioningReconciliationConfig.ReconciliationCookies.Count > 0) { string empty = string.Empty; bool flag = false; using (MultiValuedProperty <ReconciliationCookie> .Enumerator enumerator = provisioningReconciliationConfig.ReconciliationCookies.GetEnumerator()) { while (enumerator.MoveNext()) { ReconciliationCookie reconciliationCookie2 = enumerator.Current; if (reconciliationCookie2.Version == ProvisioningReconciliationHelper.CurrentCookieVersion && ProvisioningReconciliationHelper.IsServerSuitable(reconciliationCookie2.InvocationId, topologyConfigurationSession, out empty, out flag)) { reconciliationCookie = new ReconciliationCookie(reconciliationCookie2.Version, empty, reconciliationCookie2.InvocationId, reconciliationCookie2.HighestCommittedUsn); if (flag) { break; } } } goto IL_E8; } } Fqdn[] domainControllersInLocalSite = ProvisioningReconciliationHelper.GetDomainControllersInLocalSite(errorLogger); if (domainControllersInLocalSite != null) { foreach (Fqdn fqdn in domainControllersInLocalSite) { reconciliationCookie = ProvisioningReconciliationHelper.GetReconciliationCookieForDomainController(fqdn, topologyConfigurationSession, errorLogger); if (reconciliationCookie != null) { break; } } } IL_E8: if (reconciliationCookie != null) { return(reconciliationCookie); } errorLogger(new TaskException(Strings.ErrorNoActiveDCForProvisioningReconciliationCookie), (ErrorCategory)1001, null); return(null); }
private static ReconciliationCookie GetReconciliationCookieForDomainController(Fqdn fqdn, ITopologyConfigurationSession configSession, Task.TaskErrorLoggingDelegate errorLogger) { ADServer adserver = configSession.FindDCByFqdn(fqdn); if (adserver != null) { LocalizedString empty = LocalizedString.Empty; string text; if (SuitabilityVerifier.IsServerSuitableIgnoreExceptions(adserver.DnsHostName, true, null, out text, out empty)) { ITopologyConfigurationSession sessionForDC = ProvisioningReconciliationHelper.GetSessionForDC(adserver); RootDse rootDse = sessionForDC.GetRootDse(); Guid invocationIdByDC = sessionForDC.GetInvocationIdByDC(adserver); return(new ReconciliationCookie(ProvisioningReconciliationHelper.CurrentCookieVersion, adserver.DnsHostName, invocationIdByDC, rootDse.HighestCommittedUSN)); } } return(null); }