diff options
author | Vanessasaurus <814322+vsoch@users.noreply.github.com> | 2021-10-12 09:29:22 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-12 17:29:22 +0200 |
commit | ce7eebfc1f523680c41b03eb2b4d5e7bebe29013 (patch) | |
tree | 164e881666552890777895fc538c884f7fabc9b2 /lib | |
parent | f66ae104bfdc2546780bf7a3556538642d57a380 (diff) | |
download | spack-ce7eebfc1f523680c41b03eb2b4d5e7bebe29013.tar.gz spack-ce7eebfc1f523680c41b03eb2b4d5e7bebe29013.tar.bz2 spack-ce7eebfc1f523680c41b03eb2b4d5e7bebe29013.tar.xz spack-ce7eebfc1f523680c41b03eb2b4d5e7bebe29013.zip |
allowing spack monitor to handle redirect (#26666)
when deployed on kubernetes, the server sends back permanent redirect responses.
This is elegantly handled by the requests library, but not urllib that we have
to use here, so I have to manually handle it by parsing the exception to
get the Location header, and then retrying the request there.
Signed-off-by: vsoch <vsoch@users.noreply.github.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/spack/spack/monitor.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/spack/spack/monitor.py b/lib/spack/spack/monitor.py index ac45fadb97..d3a66c6d9b 100644 --- a/lib/spack/spack/monitor.py +++ b/lib/spack/spack/monitor.py @@ -278,6 +278,22 @@ class SpackMonitorClient: ) return self.issue_request(request, False) + # Handle permanent re-directs! + elif hasattr(e, "code") and e.code == 308: + location = e.headers.get('Location') + + request_data = None + if request.data: + request_data = sjson.load(request.data.decode('utf-8'))[0] + + if location: + request = self.prepare_request( + location, + request_data, + self.headers + ) + return self.issue_request(request, True) + # Otherwise, relay the message and exit on error msg = "" if hasattr(e, 'reason'): |