protected override void HandleCreateDomainResponse(DomainResponseInfoSet responseSet, List <EhfDomainItem> domainsTriedToCreate) { int num = 0; int permanentFailureCount = 0; List <EhfDomainItemVersion2> list = new List <EhfDomainItemVersion2>(); List <EhfDomainItemVersion2> list2 = new List <EhfDomainItemVersion2>(); for (int i = 0; i < responseSet.ResponseInfo.Length; i++) { DomainResponseInfo domainResponseInfo = responseSet.ResponseInfo[i]; EhfDomainItemVersion2 ehfDomainItemVersion = domainsTriedToCreate[i] as EhfDomainItemVersion2; if (ehfDomainItemVersion == null) { throw new InvalidOperationException("Version 2 of EhfConnector should be using version 2 of EhfDomainItem"); } if (domainResponseInfo.Status == ResponseStatus.Success) { base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "Successfully created EHF domain: DN=<{0}>; Name=<{1}>; GUID=<{2}>; EHF-Company-ID=<{3}>", new object[] { ehfDomainItemVersion.DistinguishedName, ehfDomainItemVersion.Domain.Name, domainResponseInfo.DomainGuid.Value, ehfDomainItemVersion.Domain.CompanyId }); if (ehfDomainItemVersion.TryClearForceDomainSyncFlagFromPerimeterConfig(base.ADAdapter) == EhfADResultCode.Failure) { num++; } if (!this.UpdateDuplicateDetectedFlag(ehfDomainItemVersion)) { num++; } } else if (domainResponseInfo.Fault.Id == FaultId.DomainExistUnderThisCompany || domainResponseInfo.Fault.Id == FaultId.DomainExistOutsideThisCompany) { Guid domainGuid = ehfDomainItemVersion.GetDomainGuid(); if (domainResponseInfo.Fault.Id == FaultId.DomainExistUnderThisCompany && domainResponseInfo.DomainGuid.Value.Equals(domainGuid)) { if (ehfDomainItemVersion.TriedToUpdateDomain && !ehfDomainItemVersion.DomainCreatedWithGuid) { base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "Attempted to create a domain that already exists. Treating this as error since update is already called: DN=<{0}>; Name=<{1}>; GUID=<{2}>; EHF-Company-ID=<{3}>", new object[] { ehfDomainItemVersion.DistinguishedName, ehfDomainItemVersion.Domain.Name, domainGuid, ehfDomainItemVersion.Domain.CompanyId }); base.HandleFailedDomain("Create Domain", ehfDomainItemVersion, domainResponseInfo, ref num, ref permanentFailureCount); } else { base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "Attempted to create a domain that already exists. Trying to update the domain. DN=<{0}>; Name=<{1}>; GUID=<{2}>; EHF-Company-ID=<{3}>", new object[] { ehfDomainItemVersion.DistinguishedName, ehfDomainItemVersion.Domain.Name, domainGuid, ehfDomainItemVersion.Domain.CompanyId }); list.Add(ehfDomainItemVersion); } } else if (domainResponseInfo.Fault.Id == FaultId.DomainExistUnderThisCompany && domainResponseInfo.SourceId == ProvisioningSource.Other && !ehfDomainItemVersion.DomainCreatedWithGuid) { base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "A domain collision is detected for domain: DN=<{0}>; Name=<{1}>; AD-GUID=<{2}>; EHF-Company-ID=<{3}>. Trying to create the domain as OutboundOnly domain.", new object[] { ehfDomainItemVersion.DistinguishedName, ehfDomainItemVersion.Name, domainGuid, ehfDomainItemVersion.Domain.CompanyId }); list2.Add(ehfDomainItemVersion); } else if (!base.HandledAllDeletedDomains) { base.AddDomainToCreateLastList(ehfDomainItemVersion); EdgeSyncDiag diagSession = base.DiagSession; EdgeSyncLoggingLevel level = EdgeSyncLoggingLevel.Low; string messageFormat = "Attempted to create a domain with the name that already exists but a different GUID: DN=<{0}>; Name=<{1}>; AD-GUID=<{2}>; EHF-GUID=<{3}>; EHF-Company-ID=<{4}>"; object[] array = new object[5]; array[0] = ehfDomainItemVersion.DistinguishedName; array[1] = ehfDomainItemVersion.Name; array[2] = domainGuid; object[] array2 = array; int num2 = 3; Guid? domainGuid2 = domainResponseInfo.DomainGuid; array2[num2] = ((domainGuid2 != null) ? domainGuid2.GetValueOrDefault() : "null"); array[4] = ehfDomainItemVersion.Domain.CompanyId; diagSession.LogAndTraceInfo(level, messageFormat, array); } else if (!ehfDomainItemVersion.DomainCreatedWithGuid && domainResponseInfo.Fault.Id == FaultId.DomainExistOutsideThisCompany) { base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "A domain collision is detected for domain: DN=<{0}>; Name=<{1}>; AD-GUID=<{2}>; EHF-Company-ID=<{3}>. Trying to create the domain as OutboundOnly domain.", new object[] { ehfDomainItemVersion.DistinguishedName, ehfDomainItemVersion.Name, domainGuid, ehfDomainItemVersion.Domain.CompanyId }); list2.Add(ehfDomainItemVersion); } else { base.HandleFailedDomain("Create Domain", ehfDomainItemVersion, domainResponseInfo, ref num, ref permanentFailureCount); } } else if (domainResponseInfo.Fault.Id == FaultId.DomainGuidIsNotUnique && !ehfDomainItemVersion.TriedToUpdateDomain) { list.Add(ehfDomainItemVersion); } else { base.HandleFailedDomain("Create Domain", ehfDomainItemVersion, domainResponseInfo, ref num, ref permanentFailureCount); } if (!ehfDomainItemVersion.EventLogAndTryStoreSyncErrors(base.ADAdapter)) { num++; } } base.HandlePerEntryFailureCounts("Create Domain", domainsTriedToCreate.Count, num, permanentFailureCount, false); foreach (EhfDomainItemVersion2 domain in list) { this.AddDomainToUpdateBatch(domain); } foreach (EhfDomainItemVersion2 domain2 in list2) { this.AddDomainToCreateWithGuidBatch(domain2); } }
private void InvokeEhfUpdateDomains(bool finalUpdate) { if (this.domainsToUpdate == null || this.domainsToUpdate.Count == 0) { return; } DomainResponseInfoSet responseSet = null; base.InvokeProvisioningService("Update Domain", delegate { responseSet = this.ProvisioningService.UpdateDomainSettingsByGuids(this.domainsToUpdate); }, this.domainsToUpdate.Count); int num = 0; int permanentFailureCount = 0; List <EhfDomainItemVersion2> list = new List <EhfDomainItemVersion2>(); for (int i = 0; i < responseSet.ResponseInfo.Length; i++) { DomainResponseInfo domainResponseInfo = responseSet.ResponseInfo[i]; EhfDomainItemVersion2 ehfDomainItemVersion = this.domainsToUpdate[i]; ehfDomainItemVersion.TriedToUpdateDomain = true; if (domainResponseInfo.Status == ResponseStatus.Success) { base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "Successfully updated EHF Domain: DN=<{0}>; GUID=<{1}>; Name =<{2}>; OutboundOnly <{3}>", new object[] { ehfDomainItemVersion.DistinguishedName, domainResponseInfo.DomainGuid.Value, ehfDomainItemVersion.Name, ehfDomainItemVersion.OutboundOnly }); if (ehfDomainItemVersion.TryClearForceDomainSyncFlagFromPerimeterConfig(base.ADAdapter) == EhfADResultCode.Failure) { num++; } if (!this.UpdateDuplicateDetectedFlag(ehfDomainItemVersion)) { num++; } } else if ((domainResponseInfo.Fault.Id == FaultId.DomainDoesNotExist || domainResponseInfo.Fault.Id == FaultId.DomainExistOutsideThisCompany) && !finalUpdate) { base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "Update Domain operation failed with FaultId <{0}> for domain: DN=<{1}>; Name=<{2}>", new object[] { domainResponseInfo.Fault.Id, ehfDomainItemVersion.DistinguishedName, ehfDomainItemVersion.Name }); list.Add(ehfDomainItemVersion); } else { base.HandleFailedDomain("Update Domain", ehfDomainItemVersion, domainResponseInfo, ref num, ref permanentFailureCount); } if (!ehfDomainItemVersion.EventLogAndTryStoreSyncErrors(base.ADAdapter)) { num++; } } base.HandlePerEntryFailureCounts("Update Domain", this.domainsToUpdate.Count, num, permanentFailureCount, false); this.domainsToUpdate.Clear(); foreach (EhfDomainItemVersion2 ehfDomainItemVersion2 in list) { if (ehfDomainItemVersion2.DomainCreatedWithGuid) { base.AddDomainToCreateBatch(ehfDomainItemVersion2); } else { base.AddDomainToCreateLastList(ehfDomainItemVersion2); } } }
protected virtual void HandleCreateDomainResponse(DomainResponseInfoSet responseSet, List <EhfDomainItem> domainsTriedToCreate) { int num = 0; int permanentFailureCount = 0; for (int i = 0; i < responseSet.ResponseInfo.Length; i++) { DomainResponseInfo domainResponseInfo = responseSet.ResponseInfo[i]; EhfDomainItem ehfDomainItem = domainsTriedToCreate[i]; bool flag = false; if (domainResponseInfo.Status == ResponseStatus.Success) { flag = true; base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "Successfully created EHF domain: DN=<{0}>; Name=<{1}>; GUID=<{2}>; EHF-Company-ID=<{3}>", new object[] { ehfDomainItem.DistinguishedName, ehfDomainItem.Domain.Name, domainResponseInfo.DomainGuid.Value, ehfDomainItem.Domain.CompanyId }); } else if (domainResponseInfo.Fault.Id == FaultId.DomainExistUnderThisCompany || domainResponseInfo.Fault.Id == FaultId.DomainExistOutsideThisCompany) { Guid domainGuid = ehfDomainItem.GetDomainGuid(); if (domainResponseInfo.Fault.Id == FaultId.DomainExistUnderThisCompany && domainResponseInfo.DomainGuid.Value.Equals(domainGuid)) { flag = true; base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "Attempted to create a domain that already exists: DN=<{0}>; Name=<{1}>; GUID=<{2}>; EHF-Company-ID=<{3}>", new object[] { ehfDomainItem.DistinguishedName, ehfDomainItem.Domain.Name, domainGuid, ehfDomainItem.Domain.CompanyId }); } else if (!this.handledAllDeletedDomains) { base.AddItemToLazyList <EhfDomainItem>(ehfDomainItem, ref this.domainsToCreateLast); EdgeSyncDiag diagSession = base.DiagSession; EdgeSyncLoggingLevel level = EdgeSyncLoggingLevel.Low; string messageFormat = "Attempted to create a domain with the name that already exists but a different GUID: DN=<{0}>; Name=<{1}>; AD-GUID=<{2}>; EHF-GUID=<{3}>; EHF-Company-ID=<{4}>"; object[] array = new object[5]; array[0] = ehfDomainItem.DistinguishedName; array[1] = ehfDomainItem.Name; array[2] = domainGuid; object[] array2 = array; int num2 = 3; Guid? domainGuid2 = domainResponseInfo.DomainGuid; array2[num2] = ((domainGuid2 != null) ? domainGuid2.GetValueOrDefault() : "null"); array[4] = ehfDomainItem.Domain.CompanyId; diagSession.LogAndTraceInfo(level, messageFormat, array); } else { this.HandleFailedDomain("Create Domain", ehfDomainItem, domainResponseInfo, ref num, ref permanentFailureCount); } } else { this.HandleFailedDomain("Create Domain", ehfDomainItem, domainResponseInfo, ref num, ref permanentFailureCount); } if (flag && ehfDomainItem.TryClearForceDomainSyncFlagFromPerimeterConfig(base.ADAdapter) == EhfADResultCode.Failure) { num++; } if (!ehfDomainItem.EventLogAndTryStoreSyncErrors(base.ADAdapter)) { num++; } } base.HandlePerEntryFailureCounts("Create Domain", domainsTriedToCreate.Count, num, permanentFailureCount, false); }
private void InvokeEhfDeleteDomains() { if (this.domainsToDelete == null || this.domainsToDelete.Count == 0) { return; } DomainResponseInfoSet responseSet = null; base.InvokeProvisioningService("Delete Domain", delegate { responseSet = this.ProvisioningService.DeleteDomains(this.domainsToDelete); }, this.domainsToDelete.Count); int transientFailureCount = 0; int permanentFailureCount = 0; for (int i = 0; i < responseSet.ResponseInfo.Length; i++) { DomainResponseInfo domainResponseInfo = responseSet.ResponseInfo[i]; EhfDomainItem ehfDomainItem = this.domainsToDelete[i]; if (domainResponseInfo.Status == ResponseStatus.Success) { base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "Successfully deleted EHF domain: DN=<{0}>; GUID=<{1}>; EHF-Company-ID=<{2}>", new object[] { ehfDomainItem.DistinguishedName, domainResponseInfo.DomainGuid.Value, ehfDomainItem.Domain.CompanyId }); } else if (domainResponseInfo.Fault.Id == FaultId.DomainDoesNotExist) { base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "Attempted to delete a domain that does not exist; ignoring the domain: DN=<{0}>; GUID=<{1}>; EHF-Company-ID=<{2}>", new object[] { ehfDomainItem.DistinguishedName, ehfDomainItem.GetDomainGuid(), ehfDomainItem.Domain.CompanyId }); } else if (domainResponseInfo.Fault.Id == FaultId.DomainExistOutsideThisCompany) { base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "Attempted to delete a domain that belongs to a different company under this reseller; ignoring the domain: DN=<{0}>; GUID=<{1}>; EHF-Company-ID=<{2}>", new object[] { ehfDomainItem.DistinguishedName, ehfDomainItem.GetDomainGuid(), ehfDomainItem.Domain.CompanyId }); } else if (domainResponseInfo.Fault.Id == FaultId.AccessDenied) { base.DiagSession.LogAndTraceInfo(EdgeSyncLoggingLevel.Low, "Attempted to delete a domain that belongs to a different company outside of this reseller; ignoring the domain: DN=<{0}>; GUID=<{1}>; EHF-Company-ID=<{2}>", new object[] { ehfDomainItem.DistinguishedName, ehfDomainItem.GetDomainGuid(), ehfDomainItem.Domain.CompanyId }); } else { this.HandleFailedDomain("Delete Domain", ehfDomainItem, domainResponseInfo, ref transientFailureCount, ref permanentFailureCount); } if (!ehfDomainItem.EventLogAndTryStoreSyncErrors(base.ADAdapter)) { throw new InvalidOperationException("EventLogAndTryStoreSyncErrors() returned false for a deleted object"); } } base.HandlePerEntryFailureCounts("Delete Domain", this.domainsToDelete.Count, transientFailureCount, permanentFailureCount, false); this.domainsToDelete.Clear(); }
protected void HandleFailedDomain(string operationName, EhfDomainItem domain, DomainResponseInfo response, ref int transientFailureCount, ref int permanentFailureCount) { if (response.Status == ResponseStatus.TransientFailure) { transientFailureCount++; } else { permanentFailureCount++; } string responseTargetValuesString = EhfProvisioningService.GetResponseTargetValuesString(response); EdgeSyncDiag diagSession = base.DiagSession; string messageFormat = "Failed to {0}: FaultId={1}; FaultType={2}; FaultDetail={3}; Target={4}; TargetValues=({5}); DN=({6}); Name={7}; AD-GUID=({8}); EHF-GUID=({9}); EHF-Company-ID={10}"; object[] array = new object[11]; array[0] = operationName; array[1] = response.Fault.Id; array[2] = response.Status; array[3] = (response.Fault.Detail ?? "null"); array[4] = response.Target; array[5] = responseTargetValuesString; array[6] = domain.DistinguishedName; array[7] = domain.Name; array[8] = domain.GetDomainGuid(); object[] array2 = array; int num = 9; Guid? domainGuid = response.DomainGuid; array2[num] = ((domainGuid != null) ? domainGuid.GetValueOrDefault() : "null"); array[10] = domain.Domain.CompanyId; domain.AddSyncError(diagSession.LogAndTraceError(messageFormat, array)); }