def docker_login_if_necessary(self) -> None: """Get authorization to pull docker images""" if self.update_model and self.update_model.image: auth = self.update_model.auth registry = self.update_model.image.split("/")[0] else: auth = self.model.auth registry = self.model.image.split("/")[0] if auth is not None: try: username, password = base64.b64decode(auth.encode("utf-8")).decode("utf-8").split(":") except Exception: _log.exception("Could not decode user provided auth, discarding.") self.model.set_state(self.end_error_state, "Unable to log into docker registry") raise exceptions.BadDockerAuth("Unable to log into docker registry") try: # Assume docker hub first, then try as private registry self.docker.login(username, password) _log.info("Login success") return except Exception: _log.exception("Could not login to docker hub with auth, attempting private registry...") try: self.docker.login(username, password, registry=registry) _log.info("Login success") except Exception: _log.exception("Could not login to private registry either.") self.model.set_state(self.end_error_state, "Unable to log into docker registry") raise exceptions.BadDockerAuth("Unable to log into docker registry")
def test_webserver_error_handler_bad_auth_error(self, mock_http_response, mock_report_exception): exception = exceptions.BadDockerAuth() helpers.webserver_error_handler(exception) mock_report_exception.assert_not_called() mock_http_response.assert_called_once_with(400, ANY)