def retryWithAuthOrRaise(original_exception): # in all cases ask for auth, so that in non-interactive mode a # login URL is displayed auth.authorizeUser(provider='github', interactive=interactive) if not interactive: raise original_exception else: logger.debug('trying with authtoken: %s', settings.getProperty('github', 'authtoken')) return fn(*args, **kwargs)
def wrapped(*args, **kwargs): # if yotta is being run noninteractively, then we never retry, but we # do call auth.authorizeUser, so that a login URL can be displayed: interactive = globalconf.get('interactive') try: return fn(*args, **kwargs) except requests.exceptions.HTTPError as e: if e.response.status_code == requests.codes.unauthorized: #pylint: disable=no-member logger.debug('%s unauthorised', fn) # any provider is sufficient for registry auth auth.authorizeUser(provider=None, interactive=interactive) if interactive: logger.debug('retrying after authentication...') return fn(*args, **kwargs) raise
def wrapped(*args, **kwargs): # if yotta is being run noninteractively, then we never retry, but we # do call auth.authorizeUser, so that a login URL can be displayed: interactive = globalconf.get('interactive') if not interactive: try: return fn(*args, **kwargs) except requests.exceptions.HTTPError as e: if e.response.status_code == 401: auth.authorizeUser(provider='github', interactive=False) raise except github.BadCredentialsException: logger.debug("github: bad credentials") auth.authorizeUser(provider='github', interactive=False) raise except github.UnknownObjectException: logger.debug("github: unknown object") # some endpoints return 404 if the user doesn't have access: if not _userAuthedWithGithub(): logger.info('failed to fetch Github object, try re-authing...') auth.authorizeUser(provider='github', interactive=False) raise else: try: return fn(*args, **kwargs) except requests.exceptions.HTTPError as e: if e.response.status_code == 401: auth.authorizeUser(provider='github') return fn(*args, **kwargs) raise except github.BadCredentialsException: logger.debug("github: bad credentials") auth.authorizeUser(provider='github') logger.debug('trying with authtoken:', settings.getProperty('github', 'authtoken')) return fn(*args, **kwargs) except github.UnknownObjectException: logger.debug("github: unknown object") # some endpoints return 404 if the user doesn't have access, maybe # it would be better to prompt for another username and password, # and store multiple tokens that we can try for each request.... # but for now we assume that if the user is logged in then a 404 # really is a 404 if not _userAuthedWithGithub(): logger.info('failed to fetch Github object, re-trying with authentication...') auth.authorizeUser(provider='github') return fn(*args, **kwargs) raise
def wrapped(*args, **kwargs): # if yotta is being run noninteractively, then we never retry, but we # do call auth.authorizeUser, so that a login URL can be displayed: interactive = globalconf.get('interactive') if not interactive: try: return fn(*args, **kwargs) except requests.exceptions.HTTPError as e: if e.response.status_code == 401: auth.authorizeUser(provider='github', interactive=False) raise except github.BadCredentialsException: logger.debug("github: bad credentials") auth.authorizeUser(provider='github', interactive=False) raise except github.UnknownObjectException: logger.debug("github: unknown object") # some endpoints return 404 if the user doesn't have access: if not _userAuthedWithGithub(): logger.info( 'failed to fetch Github object, try re-authing...') auth.authorizeUser(provider='github', interactive=False) raise else: try: return fn(*args, **kwargs) except requests.exceptions.HTTPError as e: if e.response.status_code == 401: auth.authorizeUser(provider='github') return fn(*args, **kwargs) raise except github.BadCredentialsException: logger.debug("github: bad credentials") auth.authorizeUser(provider='github') logger.debug('trying with authtoken:', settings.getProperty('github', 'authtoken')) return fn(*args, **kwargs) except github.UnknownObjectException: logger.debug("github: unknown object") # some endpoints return 404 if the user doesn't have access, maybe # it would be better to prompt for another username and password, # and store multiple tokens that we can try for each request.... # but for now we assume that if the user is logged in then a 404 # really is a 404 if not _userAuthedWithGithub(): logger.info( 'failed to fetch Github object, re-trying with authentication...' ) auth.authorizeUser(provider='github') return fn(*args, **kwargs) raise