1
1
import requests
2
2
from flask import current_app
3
- from werkzeug .exceptions import Unauthorized , BadRequest , NotFound , InternalServerError , ServiceUnavailable
3
+ from werkzeug .exceptions import BadRequest , Forbidden , InternalServerError , NotFound , ServiceUnavailable , Unauthorized
4
4
from datetime import datetime
5
5
from dateutil .tz import *
6
6
import dateutil .parser
@@ -45,8 +45,8 @@ def abort_job(id, **kwargs):
45
45
cromwell_url = _get_base_url (), id = id )
46
46
response = requests .post (
47
47
url , auth = kwargs .get ('auth' ), headers = kwargs .get ('auth_headers' ))
48
- if response .status_code == NotFound . code :
49
- raise NotFound (response . json ()[ 'message' ] )
48
+ if response .status_code != 200 :
49
+ handle_error (response )
50
50
51
51
52
52
@requires_auth
@@ -70,13 +70,8 @@ def update_job_labels(id, body, **kwargs):
70
70
auth = kwargs .get ('auth' ),
71
71
headers = kwargs .get ('auth_headers' ))
72
72
73
- if response .status_code == InternalServerError .code :
74
- raise InternalServerError (_get_response_message (response ))
75
- elif response .status_code == BadRequest .code :
76
- raise BadRequest (_get_response_message (response ))
77
- elif response .status_code == NotFound .code :
78
- raise NotFound (_get_response_message (response ))
79
- response .raise_for_status ()
73
+ if response .status_code != 200 :
74
+ handle_error (response )
80
75
81
76
# Follow API spec
82
77
result = response .json ()
@@ -97,13 +92,11 @@ def get_job(id, **kwargs):
97
92
cromwell_url = _get_base_url (), id = id )
98
93
response = requests .get (
99
94
url , auth = kwargs .get ('auth' ), headers = kwargs .get ('auth_headers' ))
95
+
96
+ if response .status_code != 200 :
97
+ handle_error (response )
98
+
100
99
job = response .json ()
101
- if response .status_code == BadRequest .code :
102
- raise BadRequest (job .get ('message' ))
103
- elif response .status_code == NotFound .code :
104
- raise NotFound (job .get ('message' ))
105
- elif response .status_code == InternalServerError .code :
106
- raise InternalServerError (job .get ('message' ))
107
100
108
101
failures = [
109
102
format_failure (name , m )
@@ -320,13 +313,8 @@ def query_jobs(body, **kwargs):
320
313
auth = auth ,
321
314
headers = headers )
322
315
323
- if response .status_code == BadRequest .code :
324
- raise BadRequest (_get_response_message (response ))
325
- elif response .status_code == Unauthorized .code :
326
- raise Unauthorized (_get_response_message (response ))
327
- elif response .status_code == InternalServerError .code :
328
- raise InternalServerError (_get_response_message (response ))
329
- response .raise_for_status ()
316
+ if response .status_code != 200 :
317
+ handle_error (response )
330
318
331
319
total_results = int (response .json ()['totalResultsCount' ])
332
320
last_page = get_last_page (total_results , query_page_size )
@@ -420,6 +408,23 @@ def format_job(job, now):
420
408
extensions = ExtendedFields (parent_job_id = job .get ('parentWorkflowId' )))
421
409
422
410
411
+ def handle_error (response ):
412
+ if response .status_code == BadRequest .code :
413
+ raise BadRequest (_get_response_message (response ))
414
+ elif response .status_code == Forbidden .code :
415
+ raise Forbidden (_get_response_message (response ))
416
+ elif response .status_code == InternalServerError .code :
417
+ raise InternalServerError (_get_response_message (response ))
418
+ elif response .status_code == NotFound .code :
419
+ raise NotFound (_get_response_message (response ))
420
+ elif response .status_code == ServiceUnavailable .code :
421
+ raise ServiceUnavailable (_get_response_message (response ))
422
+ elif response .status_code == Unauthorized .code :
423
+ raise Unauthorized (_get_response_message (response ))
424
+
425
+ response .raise_for_status ()
426
+
427
+
423
428
def _parse_datetime (date_string ):
424
429
if not date_string :
425
430
return None
0 commit comments