# -----------------------------------------------------------
# Copyright (C) 2009 StatPro Italia s.r.l.
#
# StatPro Italia
# Via G. B. Vico 4
# I-20123 Milano
# ITALY
#
# phone: +39 02 96875 1
# fax: +39 02 96875 605
#
# email: info@riskmap.net
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the license for more details.
# -----------------------------------------------------------
#
# Author: Enrico Sirola <enrico.sirola@statpro.com>
"""
drmaa errors
"""
from ctypes import create_string_buffer
from drmaa.const import ERROR_STRING_BUFFER
class DrmaaException(Exception):
"""
A common ancestor to all DRMAA Error classes.
"""
pass
[docs]class AlreadyActiveSessionException(DrmaaException):
pass
[docs]class AuthorizationException(DrmaaException):
pass
[docs]class ConflictingAttributeValuesException(DrmaaException, AttributeError):
pass
[docs]class DeniedByDrmException(DrmaaException):
pass
[docs]class DrmCommunicationException(DrmaaException):
pass
[docs]class DrmsExitException(DrmaaException):
pass
[docs]class DrmsInitException(DrmaaException):
pass
[docs]class ExitTimeoutException(DrmaaException):
pass
[docs]class HoldInconsistentStateException(DrmaaException):
pass
[docs]class IllegalStateException(DrmaaException):
pass
[docs]class InternalException(DrmaaException):
pass
[docs]class InvalidJobException(DrmaaException):
pass
[docs]class InvalidJobTemplateException(DrmaaException):
pass
[docs]class NoActiveSessionException(DrmaaException):
pass
[docs]class ReleaseInconsistentStateException(DrmaaException):
pass
[docs]class ResumeInconsistentStateException(DrmaaException):
pass
[docs]class SuspendInconsistentStateException(DrmaaException):
pass
[docs]class TryLaterException(DrmaaException):
pass
[docs]class UnsupportedAttributeException(DrmaaException, AttributeError):
pass
[docs]class InvalidArgumentException(DrmaaException, AttributeError):
pass
[docs]class InvalidAttributeValueException(DrmaaException, AttributeError):
pass
[docs]class OutOfMemoryException(DrmaaException, MemoryError):
pass
error_buffer = create_string_buffer(ERROR_STRING_BUFFER)
def error_check(code):
if code == 0:
return
else:
error_string = "code {0}: {1}".format(code, error_buffer.value.decode())
try:
raise _ERRORS[code - 1](error_string)
except IndexError:
raise DrmaaException(error_string)
# da vedere: NO_RUSAGE, NO_MORE_ELEMENTS
_ERRORS = [InternalException,
DrmCommunicationException,
AuthorizationException,
InvalidArgumentException,
NoActiveSessionException,
OutOfMemoryException,
InvalidContactStringException,
DefaultContactStringException,
NoDefaultContactStringSelectedException,
DrmsInitException,
AlreadyActiveSessionException,
DrmsExitException,
InvalidAttributeFormatException,
InvalidAttributeValueException,
ConflictingAttributeValuesException,
TryLaterException,
DeniedByDrmException,
InvalidJobException,
ResumeInconsistentStateException,
SuspendInconsistentStateException,
HoldInconsistentStateException,
ReleaseInconsistentStateException,
ExitTimeoutException,
Exception,
StopIteration]