Source code for pyoozie.exceptions

# Copyright (c) 2017 "Shopify inc." All rights reserved.
# Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.
from __future__ import unicode_literals


import requests


[docs]class OozieException(Exception): def __init__(self, message='', caused_by=None): super(OozieException, self).__init__(message or caused_by and str(caused_by)) self.caused_by = caused_by
[docs] @classmethod def coordinator_not_found(cls, artifact_id, caused_by=None): message = "Coordinator '{}' not found".format(artifact_id) return OozieArtifactNotFoundException(message, caused_by)
[docs] @classmethod def coordinator_action_not_found(cls, artifact_id, action, caused_by=None): message = "Coordinator action '{}@{}' not found".format(artifact_id, action) return OozieArtifactNotFoundException(message, caused_by)
[docs] @classmethod def workflow_not_found(cls, artifact_id, caused_by=None): message = "Workflow '{}' not found".format(artifact_id) return OozieArtifactNotFoundException(message, caused_by)
[docs] @classmethod def workflow_action_not_found(cls, artifact_id, action, caused_by=None): message = "Workflow action '{}@{}' not found".format(artifact_id, action) return OozieArtifactNotFoundException(message, caused_by)
[docs] @classmethod def job_not_found(cls, artifact_id, caused_by=None): message = "'{}' does not match any known job".format(artifact_id) return OozieArtifactNotFoundException(message, caused_by)
[docs] @classmethod def operation_failed(cls, operation, caused_by=None): message = "Operation failed: {}".format(operation) return OozieOperationFailedException(message, caused_by)
[docs] @classmethod def parse_error(cls, message, caused_by=None): return OozieParsingException(message, caused_by)
[docs] @classmethod def required_key_missing(cls, key, artifact, caused_by=None): message = "Required key '{}' missing or invalid in {}".format(key, artifact.__class__.__name__) return OozieParsingException(message, caused_by)
[docs] @classmethod def communication_error(cls, message=None, caused_by=None): if not message: if caused_by and isinstance(caused_by, requests.RequestException): if caused_by.response is not None: message = caused_by.response.headers.get('oozie-error-message', caused_by.response.reason) return OozieCommunicationException(message, caused_by)
class OozieArtifactNotFoundException(OozieException): pass class OozieOperationFailedException(OozieException): pass class OozieParsingException(OozieException): pass class OozieCommunicationException(OozieException): pass