1
0
mirror of https://github.com/checktheroads/hyperglass synced 2024-05-11 05:55:08 +00:00

159 lines
4.0 KiB
Python
Raw Normal View History

"""
Custom exceptions for hyperglass
"""
from typing import Dict
from hyperglass.constants import code
class HyperglassError(Exception):
"""
hyperglass base exception
"""
pass
class ConfigError(HyperglassError):
"""
Raised for generic user-config issues.
"""
def __init__(self, unformatted_msg, kwargs={}):
self.message: unformatted_msg.format(**kwargs)
self.keywords: Dict = kwargs
super().__init__(self.message, self.keywords)
def __str__(self):
return self.message
class ConfigInvalid(HyperglassError):
"""Raised when a config item fails type or option validation"""
def __init__(self, **kwargs):
self.message: str = 'The value field "{field}" is invalid: {error_msg}'.format(
**kwargs
)
self.keywords: Dict = kwargs
super().__init__(self.message, self.keywords)
def __str__(self):
return self.message
class ConfigMissing(HyperglassError):
"""
Raised when a required config file or item is missing or undefined
"""
def __init__(self, kwargs={}):
self.message: str = (
"{missing_item} is missing or undefined and is required to start "
"hyperglass. Please consult the installation documentation."
).format(**kwargs)
self.keywords: Dict = kwargs
super().__init__(self.message, self.keywords)
def __str__(self):
return self.message
class ScrapeError(HyperglassError):
"""Raised upon a scrape/netmiko error"""
def __init__(self, kwargs={}):
self.message: str = "".format(**kwargs)
self.keywords: Dict = kwargs
self.status: int = code.target_error
super().__init__(self.message, self.keywords)
def __str__(self):
return self.message
class AuthError(HyperglassError):
"""Raised when authentication to a device fails"""
def __init__(self, kwargs={}):
self.message: str = "".format(**kwargs)
self.keywords: Dict = kwargs
self.status: int = code.target_error
super().__init__(self.message, self.keywords)
def __str__(self):
return self.message
class RestError(HyperglassError):
"""Raised upon a rest API client error"""
def __init__(self, kwargs={}):
self.message: str = "".format(**kwargs)
self.keywords: Dict = kwargs
self.status: int = code.target_error
super().__init__(self.message, self.keywords)
def __str__(self):
return self.message
class InputInvalid(HyperglassError):
"""Raised when input validation fails"""
def __init__(self, unformatted_msg, **kwargs):
self.message: str = unformatted_msg.format(**kwargs)
self.keywords: Dict = kwargs
2019-08-29 07:10:40 -07:00
self.status: int = code.invalid
super().__init__(self.message, self.status)
2019-08-29 07:10:40 -07:00
def __str__(self):
return self.message
class InputNotAllowed(HyperglassError):
"""
Raised when input validation fails due to a blacklist or
requires_ipv6_cidr check
"""
def __init__(self, unformatted_msg, **kwargs):
self.message: str = unformatted_msg.format(**kwargs)
self.keywords: Dict = kwargs
self.status: int = code.invalid
super().__init__(self.status, self.message)
def __str__(self):
return self.message
class ParseError(HyperglassError):
"""
Raised when an ouput parser encounters an error.
"""
def __init__(self, kwargs={}):
self.message: str = "".format(**kwargs)
self.keywords: Dict = kwargs
self.status: int = code.target_error
super().__init__(self.message, self.keywords)
def __str__(self):
return self.message
class UnsupportedDevice(HyperglassError):
"""
Raised when an input NOS is not in the supported NOS list.
"""
def __init__(self, kwargs={}):
self.message: str = "".format(**kwargs)
self.keywords: Dict = kwargs
self.status: int = code.target_error
super().__init__(self.message, self.keywords)
def __str__(self):
return self.message