def create_job_exe_model(self, framework_id, when): """Creates and returns a scheduled job execution model :param framework_id: The scheduling framework ID :type framework_id: string :param when: The start time :type when: :class:`datetime.datetime` :returns: The job execution model :rtype: :class:`job.models.JobExecution` """ job_exe = JobExecution() job_exe.job_id = self._queue.job_id job_exe.job_type_id = self._queue.job_type_id job_exe.recipe_id = self._queue.recipe_id job_exe.batch_id = self._queue.batch_id job_exe.exe_num = self._queue.exe_num job_exe.timeout = self._queue.timeout job_exe.input_file_size = self._queue.input_file_size job_exe.configuration = self.configuration.get_dict() job_exe.queued = self._queue.queued if self.is_canceled: job_exe.node_id = None job_exe.resources = NodeResources().get_json().get_dict() job_exe.started = None else: job_exe.node_id = self._scheduled_node_id job_exe.resources = self._scheduled_resources.get_json().get_dict() job_exe.started = when job_exe.set_cluster_id(framework_id, self._queue.job_id, self._queue.exe_num) return job_exe
def create_job_exe_model(self, framework_id, when): """Creates and returns a scheduled job execution model :param framework_id: The scheduling framework ID :type framework_id: string :param when: The start time :type when: :class:`datetime.datetime` :returns: The job execution model :rtype: :class:`job.models.JobExecution` """ job_exe = JobExecution() job_exe.job_id = self._queue.job_id job_exe.job_type_id = self._queue.job_type_id job_exe.recipe_id = self._queue.recipe_id job_exe.batch_id = self._queue.batch_id job_exe.exe_num = self._queue.exe_num job_exe.timeout = self._queue.timeout job_exe.docker_image = self._queue.docker_image job_exe.input_file_size = self._queue.input_file_size job_exe.configuration = self.configuration.get_dict() job_exe.queued = self._queue.queued if self.is_canceled: job_exe.node_id = None job_exe.resources = NodeResources().get_json().get_dict() job_exe.started = None else: job_exe.node_id = self._scheduled_node_id job_exe.resources = self._scheduled_resources.get_json().get_dict() job_exe.started = when job_exe.set_cluster_id(framework_id, self._queue.job_id, self._queue.exe_num) if self.required_resources.gpus > 0: if not GPUManager.assign_gpus_for_job(job_exe.node_id,job_exe.job_id, self.required_resources.gpus): logger.error("Job %s was unable to assign %s reserved GPUs on node %s. Note: this is not supposed to be able to happen. something has gone horribly wrong.", job_exe.job_id, self.required_resources.gpus, job_exe.node_id) return job_exe