X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=modules%2Flibjuju%2Fjuju%2Ferrors.py;h=da11cdb48af1315f7027a64bbba2e7b6a786eb61;hp=de5217455db39d6a6dd4f1da56bbcfbd129296bc;hb=1afb30a22cc175cf67572b7195609be6a484258c;hpb=68858c1915122c2dbc8999a5cd3229694abf5f3a diff --git a/modules/libjuju/juju/errors.py b/modules/libjuju/juju/errors.py index de52174..da11cdb 100644 --- a/modules/libjuju/juju/errors.py +++ b/modules/libjuju/juju/errors.py @@ -1,5 +1,16 @@ class JujuError(Exception): - pass + def __init__(self, *args, **kwargs): + self.message = '' + self.errors = [] + if args: + self.message = str(args[0]) + if isinstance(args[0], (list, tuple)): + self.errors = args[0] + elif len(args) > 1: + self.errors = list(args) + else: + self.errors = [self.message] + super().__init__(*args, **kwargs) class JujuAPIError(JujuError): @@ -14,3 +25,25 @@ class JujuAPIError(JujuError): class JujuConnectionError(ConnectionError, JujuError): pass + + +class JujuAuthError(JujuConnectionError): + pass + + +class JujuRedirectException(Exception): + """Exception indicating that a redirection was requested""" + def __init__(self, redirect_info): + self.redirect_info = redirect_info + + @property + def ca_cert(self): + return self.redirect_info['ca-cert'] + + @property + def endpoints(self): + return [ + ('{value}:{port}'.format(**s), self.ca_cert) + for servers in self.redirect_info['servers'] + for s in servers if s['scope'] == 'public' + ]