void addPod(PodBuilderConfig pod) {
    String podName = pod.getId() + "." + pod.getCluster().id();

    if (_podMap.get(podName) != null) {
      throw new IllegalStateException(L.l("Duplicate pod '{0}'", pod.getId()));
    }

    _podMap.put(podName, pod);
  }
  private UpdatePod initBuilderPod(PodBuilderConfig podConfig) {
    UpdatePodBuilder podBuilder = new UpdatePodBuilder();

    podBuilder.name(podConfig.getId());
    podBuilder.cluster(podConfig.getCluster());

    ArrayList<ServerBartender> serverList = podConfig.getServers();

    /*
    int depth = Math.min(3, serverList.size());

    if (depth <= 0) {
      depth = 3;
    }
    */
    int depth = 3;

    podBuilder.depth(depth);

    ServerPod[] servers = null;

    switch (podConfig.getType()) {
      case solo:
      case lazy:
        podBuilder.primaryCount(1);
        servers = buildClusterServers(podConfig.getCluster(), depth);
        break;

      case web:
        podBuilder.primaryCount(1);
        servers = buildClusterServers(podConfig.getCluster(), depth);
        break;

      case pair:
        podBuilder.primaryCount(2);
        servers = buildClusterServers(podConfig.getCluster(), depth);
        break;

      case triad:
        podBuilder.primaryCount(3);
        servers = buildClusterServers(podConfig.getCluster(), depth);
        break;

      case cluster:
        podBuilder.primaryCount(Math.max(3, serverList.size()));
        servers = buildClusterServers(podConfig.getCluster(), Math.max(serverList.size(), depth));
        break;

      default:
        throw new IllegalStateException(String.valueOf(podConfig.getType()));
    }

    int len = Math.min(serverList.size(), servers.length);

    podBuilder.type(podConfig.getType());
    podBuilder.pod(servers);

    return podBuilder.build();
  }