Skip to content

Commit

Permalink
node-proxy: support more Location value formats
Browse files Browse the repository at this point in the history
After some tests, it turns out that depending on the hardware,
the header 'Location' which is returned by the server after logged can be different.
I could notice the following:

either:

Location: scheme://address:port/redfish/v1/SessionService/Session

or

Location: /redfish/v1/SessionService/Session

a previous tracker [1] was opened because I thought only the first one existed, which is wrong.

[1] https://tracker.ceph.com/issues/64894

Signed-off-by: Guillaume Abrioux <[email protected]>
  • Loading branch information
guits committed Mar 15, 2024
1 parent 5288e75 commit d7ccf26
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions src/ceph-node-proxy/ceph_node_proxy/redfish_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ def login(self) -> None:
oob_credentials = json.dumps({'UserName': self.username,
'Password': self.password})
headers = {'Content-Type': 'application/json'}
location_endpoint: str = ''

try:
_headers, _data, _status_code = self.query(data=oob_credentials,
Expand All @@ -43,8 +44,14 @@ def login(self) -> None:
self.log.error(msg)
raise RuntimeError
self.token = _headers['X-Auth-Token']
location_endpoint: str = _headers['Location'].split('/', 3)[-1:][0]
self.location = f'/{location_endpoint}'
if _headers['Location'].startswith('http'):
# We assume the value has the following format:
# scheme://address:port/redfish/v1/SessionService/Session
location_endpoint = f"/{_headers['Location'].split('/', 3)[-1:][0]}"
else:
location_endpoint = _headers['Location']
self.location = location_endpoint
self.log.info(f'Logged in to {self.url}, Received header "Location": {self.location}')

def is_logged_in(self) -> bool:
self.log.debug(f'Checking token validity for {self.url}')
Expand Down

0 comments on commit d7ccf26

Please sign in to comment.