static void uploadOrDeleteAdminConfigs(String hardwareLayoutPath, String partitionLayoutPath, String zkLayoutPath,
      String clusterNamePrefix, String dcs, boolean forceRemove, String[] adminTypes, String adminConfigFilePath)
      throws Exception {
    HelixBootstrapUpgradeUtil clusterMapToHelixMapper =
        new HelixBootstrapUpgradeUtil(hardwareLayoutPath, partitionLayoutPath, zkLayoutPath, clusterNamePrefix, dcs,
            DEFAULT_MAX_PARTITIONS_PER_RESOURCE, false, forceRemove, null, ClusterMapConfig.DEFAULT_STATE_MODEL_DEF,
            null, null, null, null, null, false, 0);
    if (forceRemove) {
      for (String adminType : adminTypes) {
        removeAdminInfosFromCluster(clusterMapToHelixMapper, adminType);
      }
    } else {
      for (String adminType : adminTypes) {
        generateAdminInfosAndUpload(clusterMapToHelixMapper, adminType, adminConfigFilePath);
      }
    }
  }
Upload or delete cluster admin configs.
For upload, it takes in the path to the files that make up the static cluster map and uploads the cluster admin
configs (such as partition override, replica addition) to HelixPropertyStore in zookeeper.
For delete, it searches admin config names in given dc and delete them if corresponding znodes exist.
@param hardwareLayoutPath the path to the hardware layout file.
@param partitionLayoutPath the path to the partition layout file.
@param zkLayoutPath the path to the zookeeper layout file.
@param clusterNamePrefix the prefix that when combined with the cluster name in the static cluster map files
                         will give the cluster name in Helix to bootstrap or upgrade.
@param dcs the comma-separated list of data centers that needs to be upgraded/bootstrapped.
@param forceRemove whether to remove admin configs from cluster.
@param adminTypes types of admin operation that requires to generate config and upload it to Helix PropertyStore.
@param adminConfigFilePath if not null, use this file to generate admin config infos. If null, use the standard
                              HardwareLayout and PartitionLayout files to generate admin configs to upload.
@throws IOException if there is an error reading a file.
@throws JSONException if there is an error parsing the JSON content in any of the files.
ambry-clustermap/src/main/java/com/github/ambry/clustermap/HelixBootstrapUpgradeUtil.java