Files
deb-python-dcos/dcos/errors.py
Tamar Ben-Shachar be43c3cf88 error based on user command auth not auth to get CLUSTER_ID
We try to get the CLUSTER_ID before we run the user specified command.
If the user if authenticated, but not authorized (to get the
CLUSTER_ID), let them continue and error based on access to the command
they ran.
2016-02-23 14:23:45 -08:00

76 lines
1.7 KiB
Python

import abc
class DCOSException(Exception):
pass
class DCOSHTTPException(DCOSException):
""" A wrapper around Response objects for HTTP error codes.
:param response: requests Response object
:type response: Response
"""
def __init__(self, response):
self.response = response
def __str__(self):
return 'Error while fetching [{0}]: HTTP {1}: {2}'.format(
self.response.request.url,
self.response.status_code,
self.response.reason)
class DCOSAuthenticationException(DCOSHTTPException):
"""A wrapper around Response objects for HTTP Authentication errors (401).
:param response: requests Response object
:type response: Response
"""
def __init__(self, response):
self.response = response
def __str__(self):
return "Authentication failed"
class DCOSAuthorizationException(DCOSHTTPException):
"""A wrapper around Response objects for HTTP Authorization errors (403).
:param response: requests Response object
:type response: Response
"""
def __init__(self, response):
self.response = response
def __str__(self):
return "You are not authorized to perform this operation"
class Error(object):
"""Abstract class for describing errors."""
@abc.abstractmethod
def error(self):
"""Creates an error message
:returns: The error message
:rtype: str
"""
raise NotImplementedError
class DefaultError(Error):
"""Construct a basic Error class based on a string
:param message: String to use for the error message
:type message: str
"""
def __init__(self, message):
self._message = message
def error(self):
return self._message