@Override
  public JSONObject getSnapshot() {
    JSONObject snapshot = new JSONObject();
    snapshot.put(DISK_NODE, dataNode.getHostname() + ":" + dataNode.getPort());
    snapshot.put(DISK_MOUNT_PATH, getMountPath());
    snapshot.put(CAPACITY_BYTES, getRawCapacityInBytes());
    String liveness = UP;
    if (dataNode.getState() == HardwareState.UNAVAILABLE) {
      liveness = NODE_DOWN;
    } else if (diskStatePolicy.isHardDown()) {
      liveness = DISK_DOWN;
    } else if (diskStatePolicy.isDown()) {
      liveness = SOFT_DOWN;
    }
    snapshot.put(LIVENESS, liveness);
    return snapshot;
  }
An implementation of {@link DiskId} to be used within the {@link StaticClusterManager}.

A Disk stores {@link Replica}s. Each Disk is hosted on one specific {@link DataNode}. Each Disk is uniquely
identified by its DataNode and mount path (the path to this Disk's device on its DataNode).
ambry-clustermap/src/main/java/com/github/ambry/clustermap/Disk.java