code: private void executePlan(RebalancePlan rebalancePlan) {
          logger.info("Starting to execute rebalance Plan!");
  
          int batchCount = 0;
          int partitionStoreCount = 0;
          long totalTimeMs = 0;
  
          List<RebalanceBatchPlan> entirePlan = rebalancePlan.getPlan();
          int numBatches = entirePlan.size();
          int numPartitionStores = rebalancePlan.getPartitionStoresMoved();
  
          for(RebalanceBatchPlan batchPlan: entirePlan) {
              logger.info("========  REBALANCING BATCH " + (batchCount + 1)
                          + "  ========");
              RebalanceUtils.printBatchLog(batchCount,
                                           logger,
                                           batchPlan.toString());
  
              long startTimeMs = System.currentTimeMillis();
              // ACTUALLY DO A BATCH OF REBALANCING!
              executeBatch(batchCount, batchPlan);
              totalTimeMs += (System.currentTimeMillis() - startTimeMs);
  
              // Bump up the statistics
              batchCount++;
              partitionStoreCount += batchPlan.getPartitionStoreMoves();
              batchStatusLog(batchCount,
                             numBatches,
                             partitionStoreCount,
                             numPartitionStores,
                             totalTimeMs);
          }
      }
docs: Executes the rebalance plan. Does so batch-by-batch. Between each batch,
  status is dumped to logger.info.
  
  @param rebalancePlan