fence-agents/RHEL-83255-fence_ibm_vpc-refresh-bearer-token.patch
Oyvind Albrigtsen d53dbdb147 - fence_ibm_vpc: refresh bearer-token if token data is corrupt, and
avoid edge-case of writing empty token file
  Resolves: RHEL-83255
2025-03-14 09:28:08 +01:00

39 lines
1.3 KiB
Diff

From 293b3961149f680ead9028e6719c405957abc6b7 Mon Sep 17 00:00:00 2001
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
Date: Thu, 13 Mar 2025 16:40:30 +0100
Subject: [PATCH] fence_ibm_vpc: refresh bearer-token in connect() if token
data is corrupt, and avoid edge-case of writing empty token file
---
agents/ibm_vpc/fence_ibm_vpc.py | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/agents/ibm_vpc/fence_ibm_vpc.py b/agents/ibm_vpc/fence_ibm_vpc.py
index 035a3235a..efda5eed7 100755
--- a/agents/ibm_vpc/fence_ibm_vpc.py
+++ b/agents/ibm_vpc/fence_ibm_vpc.py
@@ -105,6 +105,8 @@ def get_bearer_token(conn, options):
except Exception as e:
logging.error("Failed: Unable to authenticate: {}".format(e))
fail(EC_LOGIN_DENIED)
+ if len(token) < 1:
+ fail(EC_LOGIN_DENIED)
file_obj.write(token)
finally:
os.umask(oldumask)
@@ -152,6 +154,14 @@ def connect(opt):
# set auth token for later requests
conn = set_bearer_token(conn, bearer_token)
+ try:
+ command = "instances?version=2021-05-25&generation=2&limit=1"
+ res = send_command(conn, opt, command)
+ except Exception as e:
+ logging.warning("Failed to login/connect. Updating bearer-token.")
+ bearer_token = get_bearer_token(conn, opt)
+ conn = set_bearer_token(conn, bearer_token)
+
return conn
def disconnect(conn):