public override void ProcessMailbox(DirectoryMailbox mailbox, IAnchorRunspaceProxy runspace) { DirectoryDatabase directoryDatabase = (DirectoryDatabase)mailbox.Parent; IMailboxPolicy violatedPolicy = this.GetViolatedPolicy(mailbox, directoryDatabase); if (violatedPolicy == null) { return; } MoveInfo info = this.getMoveInfo.GetInfo(mailbox, runspace); ProvisioningConstraintFixStateLog.Write(mailbox, directoryDatabase, info); switch (info.Status) { case MoveStatus.MoveExistsNotInProgress: violatedPolicy.HandleExistingButNotInProgressMove(mailbox, directoryDatabase); return; case MoveStatus.MoveExistsInProgress: break; case MoveStatus.MoveDoesNotExist: this.InjectMoveRequest(mailbox, violatedPolicy); break; default: return; } }
private void InjectMoveRequest(DirectoryMailbox mailbox, IMailboxPolicy violatedPolicy) { BatchName batchName = violatedPolicy.GetBatchName(); if (batchName == null) { throw new InvalidOperationException("Batch names should never be null."); } base.Logger.Log(MigrationEventType.Information, "Starting a new load balancing procedure to fix provisioning constraint, batch name will be '{0}'", new object[] { batchName }); this.moveInjector.InjectMoveForMailbox(mailbox, batchName); }
public PolicyActivationControl(IMailboxPolicy policy, ILoadBalanceSettings settings) { AnchorUtil.ThrowOnNullArgument(policy, "policy"); this.policy = policy; this.settings = settings; }