2014-01-05 17:24:04 +00:00
|
|
|
from os import environ as env
|
|
|
|
|
|
|
|
from django.conf import settings
|
|
|
|
import requests
|
|
|
|
from datetime import datetime
|
|
|
|
from django.utils import timezone
|
|
|
|
from celery.utils.log import get_task_logger
|
|
|
|
|
|
|
|
logger = get_task_logger(__name__)
|
|
|
|
|
|
|
|
auth = (settings.JENKINS_USER, settings.JENKINS_PASS)
|
|
|
|
|
|
|
|
def get_job_status(jobname):
|
|
|
|
ret = {
|
|
|
|
'active': True,
|
|
|
|
'succeeded': False,
|
2014-01-17 11:49:34 +00:00
|
|
|
'blocked_build_time': None,
|
|
|
|
'status_code': 200
|
2014-01-05 17:24:04 +00:00
|
|
|
}
|
|
|
|
endpoint = settings.JENKINS_API + 'job/%s/api/json' % jobname
|
|
|
|
resp = requests.get(endpoint, auth=auth, verify=True)
|
|
|
|
status = resp.json
|
2014-01-17 11:49:34 +00:00
|
|
|
ret['status_code'] = resp.status_code
|
2014-01-05 17:24:04 +00:00
|
|
|
if status['color'].startswith('blue'):
|
|
|
|
ret['active'] = True
|
|
|
|
ret['succeeded'] = True
|
|
|
|
elif status['color'] == 'disabled':
|
|
|
|
ret['active'] = False
|
|
|
|
ret['succeeded'] = False
|
|
|
|
if status['queueItem'] and status['queueItem']['blocked']:
|
|
|
|
time_blocked_since = datetime.utcfromtimestamp(float(status['queueItem']['inQueueSince'])/1000).replace(tzinfo=timezone.utc)
|
|
|
|
ret['time_blocked'] = timezone.now() - time_blocked_since
|
|
|
|
return ret
|