'Returns a Job instance given a job tracker interface and a thriftjob object returned from that
job tracker interface.  The job tracker interface is typically located in request.jt'

def __init__(self, jt, thriftJob):

    JobLinkage.__init__(self, jt, thriftJob.jobID.asString)
    self.jt = jt
    self.job = thriftJob
    self.tasks = []
    if (self.job.tasks is not None):
        self.tasks = TaskList.from_thriftTaskList(self.job.tasks, jt)
    self.task_map = dict(((task.taskId, task) for task in self.tasks))
    self._counters = None
    self._conf_keys = None
    self._full_job_conf = None
    self._init_attributes()
    self.is_retired = hasattr(thriftJob, 'is_retired')
    self.is_mr2 = False
    self.applicationType = 'MAPREDUCE'
