static void dropCluster(String zkLayoutPath, String clusterName, String dcs, HelixAdminFactory helixAdminFactory)
      throws Exception {
    Map<String, ClusterMapUtils.DcZkInfo> dataCenterToZkAddress = parseAndUpdateDcInfoFromArg(dcs, zkLayoutPath);
    info("Dropping cluster {} from Helix", clusterName);
    for (Map.Entry<String, ClusterMapUtils.DcZkInfo> entry : dataCenterToZkAddress.entrySet()) {
      List<String> zkConnectStrs = entry.getValue().getZkConnectStrs();
      if (zkConnectStrs.size() != 1) {
        throw new IllegalArgumentException(
            entry.getKey() + " has invalid number of ZK endpoints: " + zkConnectStrs.size());
      }
      HelixAdmin admin = helixAdminFactory.getHelixAdmin(zkConnectStrs.get(0));
      admin.dropCluster(clusterName);
      info("Dropped cluster from {}", entry.getKey());
    }
  }
Drop a cluster from Helix.
@param zkLayoutPath the path to the zookeeper layout file.
@param clusterName the name of the cluster in Helix.
@param dcs the comma-separated list of data centers that needs to be upgraded/bootstrapped.
@param helixAdminFactory the {@link HelixAdminFactory} to use to instantiate {@link HelixAdmin}
@throws Exception if there is an error reading a file or in parsing json.
ambry-clustermap/src/main/java/com/github/ambry/clustermap/HelixBootstrapUpgradeUtil.java