@Override
  public boolean equals(Object obj) {
    if (this == obj)
      return true;
    if (obj == null)
      return false;
    if (getClass() != obj.getClass())
      return false;
    JobModel other = (JobModel) obj;
    if (config == null) {
      if (other.config != null)
        return false;
    } else if (!config.equals(other.config))
      return false;
    if (containers == null) {
      if (other.containers != null)
        return false;
    } else if (!containers.equals(other.containers))
      return false;
    return true;
  }
<p>
The data model used to represent a Samza job. The model is used in the job
coordinator and SamzaContainer to determine how to execute Samza jobs.
</p>

<p>
The hierarchy for a Samza's job data model is that jobs have containers, and
containers have tasks. Each data model contains relevant information, such as
an id, partition information, etc.
</p>
samza-api/src/main/java/org/apache/samza/job/model/JobModel.java