Пример #1
0
    def get(self, request, *args, **kwargs):
        auditor.record(event_type=JOB_LOGS_VIEWED,
                       instance=self.job,
                       actor_id=request.user.id,
                       actor_name=request.user.username)
        job_name = self.job.unique_name
        if self.job.is_done:
            log_path = stores.get_job_logs_path(job_name=job_name, temp=False)
            log_path = archive_logs_file(
                log_path=log_path,
                namepath=job_name)
        else:
            process_logs(job=self.job, temp=True)
            log_path = stores.get_job_logs_path(job_name=job_name, temp=True)

        filename = os.path.basename(log_path)
        chunk_size = 8192
        try:
            wrapped_file = FileWrapper(open(log_path, 'rb'), chunk_size)
            response = StreamingHttpResponse(wrapped_file,
                                             content_type=mimetypes.guess_type(log_path)[0])
            response['Content-Length'] = os.path.getsize(log_path)
            response['Content-Disposition'] = "attachment; filename={}".format(filename)
            return response
        except FileNotFoundError:
            _logger.warning('Log file not found: log_path=%s', log_path)
            return Response(status=status.HTTP_404_NOT_FOUND,
                            data='Log file not found: log_path={}'.format(log_path))
Пример #2
0
    def get(self, request, *args, **kwargs):
        auditor.record(event_type=EXPERIMENT_LOGS_VIEWED,
                       instance=self.experiment,
                       actor_id=request.user.id,
                       actor_name=request.user.username)
        experiment_name = self.experiment.unique_name
        if self.experiment.is_done:
            log_path = stores.get_experiment_logs_path(
                experiment_name=experiment_name, temp=False)
            log_path = archive_logs_file(log_path=log_path,
                                         namepath=experiment_name)
        elif self.experiment.run_env and self.experiment.run_env.get(
                'in_cluster'):
            process_logs(experiment=self.experiment, temp=True)
            log_path = stores.get_experiment_logs_path(
                experiment_name=experiment_name, temp=True)
        else:
            return Response(status=status.HTTP_404_NOT_FOUND,
                            data='Experiment is still running, no logs.')

        filename = os.path.basename(log_path)
        chunk_size = 8192
        try:
            wrapped_file = FileWrapper(open(log_path, 'rb'), chunk_size)
            response = StreamingHttpResponse(
                wrapped_file, content_type=mimetypes.guess_type(log_path)[0])
            response['Content-Length'] = os.path.getsize(log_path)
            response['Content-Disposition'] = "attachment; filename={}".format(
                filename)
            return response
        except FileNotFoundError:
            _logger.warning('Log file not found: log_path=%s', log_path)
            return Response(
                status=status.HTTP_404_NOT_FOUND,
                data='Log file not found: log_path={}'.format(log_path))
Пример #3
0
    def get(self, request, *args, **kwargs):
        auditor.record(event_type=JOB_LOGS_VIEWED,
                       instance=self.job,
                       actor_id=request.user.id,
                       actor_name=request.user.username)
        job_name = self.job.unique_name
        if self.job.is_done:
            log_path = stores.get_job_logs_path(job_name=job_name, temp=False)
            log_path = archive_logs_file(log_path=log_path, namepath=job_name)
        else:
            process_logs(job=self.job, temp=True)
            log_path = stores.get_job_logs_path(job_name=job_name, temp=True)

        return stream_file(file_path=log_path, logger=_logger)
Пример #4
0
def get_experiment_logs_path(experiment: Experiment) -> Optional[str]:
    experiment_name = experiment.unique_name
    if experiment.is_done:
        log_path = stores.get_experiment_logs_path(experiment_name=experiment_name, temp=False)
        logs_path = archive_logs_file(
            log_path=log_path,
            namepath=experiment_name)
    elif experiment.is_managed:
        process_logs(experiment=experiment, temp=True)
        logs_path = stores.get_experiment_logs_path(experiment_name=experiment_name, temp=True)
    else:
        return None

    return logs_path
Пример #5
0
def get_experiment_logs_path(experiment: Experiment) -> Optional[str]:
    experiment_name = experiment.unique_name
    if experiment.is_done:
        log_path = stores.get_experiment_logs_path(experiment_name=experiment_name, temp=False)
        logs_path = archive_logs_file(
            log_path=log_path,
            namepath=experiment_name)
    elif experiment.is_managed:
        process_logs(experiment=experiment, temp=True)
        logs_path = stores.get_experiment_logs_path(experiment_name=experiment_name, temp=True)
    else:
        # Normally it should load from the tmp file where we append the logs
        return None

    return logs_path
Пример #6
0
def get_experiment_job_logs_path(experiment: Experiment, job: ExperimentJob) -> Optional[str]:
    if not job:
        return None
    job_name = job.unique_name
    if experiment.is_done:
        log_path = stores.get_experiment_job_logs_path(experiment_job_name=job_name, temp=False)
        logs_path = archive_logs_file(
            log_path=log_path,
            namepath=job_name)
    elif experiment.is_managed:
        process_experiment_job_logs(experiment_job=job, temp=True)
        logs_path = stores.get_experiment_job_logs_path(experiment_job_name=job_name, temp=True)
    else:
        logs_path = None

    return logs_path