import json import logging from django.utils.encoding import smart_str from django.utils.translation import ugettext as _ from hadoop.yarn import resource_manager_api from desktop.lib.django_util import JsonResponse from desktop.lib.exceptions import MessageException from desktop.lib.exceptions_renderable import PopupException from jobbrowser.conf import MAX_JOB_FETCH, LOG_OFFSET from jobbrowser.views import job_executor_logs, job_single_logs LOG = logging.getLogger(__name__) LOG_OFFSET_BYTES = LOG_OFFSET.get() try: from jobbrowser.api import YarnApi as NativeYarnApi, ApplicationNotRunning, JobExpired from jobbrowser.apis.base_api import Api, MockDjangoRequest, _extract_query_params from jobbrowser.views import job_attempt_logs_json, kill_job, massage_job_for_json from jobbrowser.yarn_models import Application except Exception as e: LOG.exception('Some application are not enabled: %s' % e) class JobApi(Api): def __init__(self, user): self.user = user
LOG = logging.getLogger(__name__) try: from beeswax.hive_site import hiveserver2_impersonation_enabled except: LOG.warn('Hive is not enabled') def hiveserver2_impersonation_enabled(): return True from jobbrowser.conf import LOG_OFFSET, SHARE_JOBS from jobbrowser.api import get_api, ApplicationNotRunning, JobExpired from jobbrowser.models import Job, JobLinkage, Tracker, Cluster, can_view_job, LinkJobLogs, can_kill_job from jobbrowser.yarn_models import Application LOG_OFFSET_BYTES = LOG_OFFSET.get() def check_job_permission(view_func): """ Ensure that the user has access to the job. Assumes that the wrapped function takes a 'jobid' param named 'job'. """ def decorate(request, *args, **kwargs): jobid = kwargs['job'] try: job = get_job(request, job_id=jobid) except ApplicationNotRunning, e: LOG.warn('Job %s has not yet been accepted by the RM, will poll for status.' % jobid) return job_not_assigned(request, jobid, request.path)