Example #1
0
    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")
Example #2
0
 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)