code: def estimate_descendents(self):
          
          child_method = None
          if self.method == 'build':
              child_method = 'buildArch'
          if self.method == 'image':
              child_method = 'createImage'
          if child_method is None:
              defer.returnValue(None)
          # Find the open child task and estimate that.
          subtasks = yield self.descendents(method=child_method,
                                            state=task_states.OPEN)
          if not subtasks:
              raise NoDescendentsError('no running %s for task %d' %
                                       (child_method, self.id))
          # Find subtask with the most recent start time:
          build_task = subtasks[0]
          for subtask in subtasks:
              if subtask.start_ts > build_task.start_ts:
                  build_task = subtask
          subtask_completion = yield build_task.estimate_completion()
          defer.returnValue(subtask_completion)
docs: Estimate from the descendent (child) tasks.
  
          :returns: deferred that when fired returns a datetime object for the
                    estimated, or actual datetime, or None if there is no support
                    for this task method. Currently the only supported methods
                    here are "build" and "image".
          :raises NoDescendentsError: If we expected to find descendents for this
                    task, but there are none open. Possible explanations:
                    * Koji has not assigned this task to a worker, because it's
                      over capacity, or because it takes a few seconds to assign.
                      You may see descendant tasks in FREE state here, instead of
                      OPEN state.
                    * The makeSRPMFromSCM descendent task for this build task is
                      not yet complete.
                    * The tagBuild descendent task for this build task is not yet
                      complete.
                    If you hit this NoDescendentsError, you may want to try again
                    in a few minutes.