From 4380f16dc8b30ca3c450dd74e45998dc66446b38 Mon Sep 17 00:00:00 2001 From: Johan Marcusson Date: Wed, 28 Feb 2024 09:04:14 +0100 Subject: [PATCH] make dhcp hook try using OAUTH_CLIENT_ID etc if JWT_AUTH_TOKEN is not set --- src/cnaas_nms/tools/dhcp_hook.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/cnaas_nms/tools/dhcp_hook.py b/src/cnaas_nms/tools/dhcp_hook.py index 2f64d7bf..a4418d9e 100644 --- a/src/cnaas_nms/tools/dhcp_hook.py +++ b/src/cnaas_nms/tools/dhcp_hook.py @@ -26,8 +26,23 @@ def get_apidata(configfile="/etc/cnaas-nms/apiclient.yml"): def get_jwt_token(): try: token = os.environ["JWT_AUTH_TOKEN"] - except Exception: - raise ValueError("Could not find JWT token") + except KeyError: + try: + auth_data = { + "grant_type": "client_credentials", + "client_id": os.environ["OAUTH_CLIENT_ID"], + "client_secret": os.environ["OAUTH_CLIENT_SECRET"], + } + auth_response = requests.post( + os.environ["OAUTH_TOKEN_ENDPOINT"], + data=auth_data, + headers={"Content-Type": "application/x-www-form-urlencoded"}, + timeout=5, + ) + auth_response.raise_for_status() + token = auth_response.json()["access_token"] + except Exception as e: + raise ValueError("Could not find JWT token: {}".format(e)) return token