private static void FixTenantInfo(RequestJobXML requestJobXML) { if (!CommonUtils.IsMultiTenantEnabled()) { requestJobXML.OrganizationId = OrganizationId.ForestWideOrgId; return; } if (requestJobXML.OrganizationId == OrganizationId.ForestWideOrgId && requestJobXML.ExternalDirectoryOrganizationId == Guid.Empty && requestJobXML.PartitionHint == null) { return; } if (requestJobXML.OrganizationId != OrganizationId.ForestWideOrgId && requestJobXML.PartitionHint == null) { if (requestJobXML.ExternalDirectoryOrganizationId != Guid.Empty) { requestJobXML.OrganizationId = OrganizationId.FromExternalDirectoryOrganizationId(requestJobXML.ExternalDirectoryOrganizationId); } requestJobXML.PartitionHint = TenantPartitionHint.FromOrganizationId(requestJobXML.OrganizationId); requestJobXML.ExternalDirectoryOrganizationId = requestJobXML.PartitionHint.GetExternalDirectoryOrganizationId(); return; } if (requestJobXML.PartitionHint != null) { if (requestJobXML.ExternalDirectoryOrganizationId == Guid.Empty) { requestJobXML.ExternalDirectoryOrganizationId = requestJobXML.PartitionHint.GetExternalDirectoryOrganizationId(); } requestJobXML.OrganizationId = OrganizationId.FromExternalDirectoryOrganizationId(requestJobXML.ExternalDirectoryOrganizationId); } }
protected override TenantInfoProvider CreateOnCacheMiss(Guid key, ref bool shouldAdd) { OrganizationId scopingOrganizationId = OrganizationId.FromExternalDirectoryOrganizationId(key); ADSessionSettings adsessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopesServiceOnly(scopingOrganizationId); IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(null, true, ConsistencyMode.PartiallyConsistent, adsessionSettings, 99, "CreateOnCacheMiss", "f:\\15.00.1497\\sources\\dev\\data\\src\\storage\\UnifiedPolicy\\TenantInfoProviderFactory.cs"); ADUser discoveryMailbox = MailboxDataProvider.GetDiscoveryMailbox(tenantOrRootOrgRecipientSession); ExchangePrincipal syncMailboxPrincipal = ExchangePrincipal.FromADUser(adsessionSettings, discoveryMailbox); return(new TenantInfoProvider(syncMailboxPrincipal)); }
public static ReservationBase CreateReservation(Guid mailboxGuid, TenantPartitionHint partitionHint, Guid resourceId, ReservationFlags flags, string clientName) { ReservationBase result; using (DisposeGuard disposeGuard = default(DisposeGuard)) { SettingsContextBase settingsContextBase = new MailboxSettingsContext(mailboxGuid, null); if (partitionHint != null) { settingsContextBase = new OrganizationSettingsContext(OrganizationId.FromExternalDirectoryOrganizationId(partitionHint.GetExternalDirectoryOrganizationId()), settingsContextBase); } ReservationBase reservationBase; if (resourceId == MRSResource.Id.ObjectGuid) { reservationBase = new MRSReservation(); } else { if (flags.HasFlag(ReservationFlags.Read)) { reservationBase = new ReadReservation(); } else { reservationBase = new WriteReservation(); } settingsContextBase = new DatabaseSettingsContext(resourceId, settingsContextBase); } disposeGuard.Add <ReservationBase>(reservationBase); settingsContextBase = new GenericSettingsContext("WorkloadType", reservationBase.WorkloadType.ToString(), settingsContextBase); reservationBase.MailboxGuid = mailboxGuid; reservationBase.PartitionHint = partitionHint; reservationBase.ResourceId = resourceId; reservationBase.Flags = flags; reservationBase.ClientName = clientName; using (settingsContextBase.Activate()) { reservationBase.ReserveResources(); } disposeGuard.Success(); result = reservationBase; } return(result); }
public OrganizationId FromExternalDirectoryOrganizationId(Guid externalDirectoryOrganizationId) { return(OrganizationId.FromExternalDirectoryOrganizationId(externalDirectoryOrganizationId)); }