code: public static HashMap<Integer, List<Integer>>
              getBalancedNumberOfPrimaryPartitionsPerNode(final Cluster nextCandidateCluster,
                                                          Map<Integer, Integer> targetPartitionsPerZone) {
          HashMap<Integer, List<Integer>> numPartitionsPerNode = Maps.newHashMap();
          for(Integer zoneId: nextCandidateCluster.getZoneIds()) {
              List<Integer> partitionsOnNode = Utils.distributeEvenlyIntoList(nextCandidateCluster.getNumberOfNodesInZone(zoneId),
                                                                              targetPartitionsPerZone.get(zoneId));
              numPartitionsPerNode.put(zoneId, partitionsOnNode);
          }
          return numPartitionsPerNode;
      }
docs: Determines how many primary partitions each node within each zone should
  have. The list of integers returned per zone is the same length as the
  number of nodes in that zone.
  
  @param nextCandidateCluster
  @param targetPartitionsPerZone
  @return A map of zoneId to list of target number of partitions per node
  within zone.