From 48371c98ee49807b5c2b73a442d649bad40b73ec Mon Sep 17 00:00:00 2001 From: Michael Johnson Date: Thu, 11 Jul 2019 09:06:23 -0700 Subject: [PATCH] Add warning log if auth_strategy is not keystone A user came to the IRC channel with CLI errors: "Client-side error: Validation failure: Missing project ID in request where one is required." The root cause was the [api_settings] auth_strategy was set to "noauth" instead of "keystone". This patch adds a warning log message to the API process that warns users that typically the auth_strategy should be set to keystone. It also points the user to have an administrator check the keystone settings in the octavia.conf. Change-Id: I7793d7a9113b23ac88e7c53d5dc292a70b9453b5 --- octavia/api/v2/controllers/load_balancer.py | 4 +++- octavia/cmd/api.py | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/octavia/api/v2/controllers/load_balancer.py b/octavia/api/v2/controllers/load_balancer.py index 14069028aa..6c9a4a93f9 100644 --- a/octavia/api/v2/controllers/load_balancer.py +++ b/octavia/api/v2/controllers/load_balancer.py @@ -324,7 +324,9 @@ class LoadBalancersController(base.BaseController): if not load_balancer.project_id: raise exceptions.ValidationException(detail=_( - "Missing project ID in request where one is required.")) + "Missing project ID in request where one is required. " + "An administrator should check the keystone settings " + "in the Octavia configuration.")) self._auth_validate_action(context, load_balancer.project_id, constants.RBAC_POST) diff --git a/octavia/cmd/api.py b/octavia/cmd/api.py index 14e59cb9df..b44ed45dbd 100644 --- a/octavia/cmd/api.py +++ b/octavia/cmd/api.py @@ -20,6 +20,7 @@ from oslo_log import log as logging from oslo_reports import guru_meditation_report as gmr from octavia.api import app as api_app +from octavia.common import constants from octavia import version @@ -35,6 +36,11 @@ def main(): port = cfg.CONF.api_settings.bind_port LOG.info("Starting API server on %(host)s:%(port)s", {"host": host, "port": port}) + if cfg.CONF.api_settings.auth_strategy != constants.KEYSTONE: + LOG.warning('Octavia configuration [api_settings] auth_strategy is ' + 'not set to "keystone". This is not a normal ' + 'configuration and you may get "Missing project ID" ' + 'errors from API calls."') srv = simple_server.make_server(host, port, app) srv.serve_forever()