in cookbooks/aws-parallelcluster-platform/files/dcv/pcluster_dcv_authenticator.py [0:0]
def do_GET(self): # noqa N802, pylint: disable=C0103
"""
Handle GET requests coming from the user to obtain request and session tokens.
The format of the request should be:
curl -X GET -G http://localhost:<port> -d action=requestToken -d authUser=<username> -d sessionID=<ID>
curl -X GET -G http://localhost:<port> -d action=sessionToken -d requestToken=<tr>
"""
try:
logger.info("Validating user request..")
# validate number of parameters
parameters = dict(parse_qsl(urlparse(self.path).query))
if not parameters or len(parameters) > 3:
raise DCVAuthenticator.IncorrectRequestError(
f"Incorrect number of parameters passed.\nParameters: {parameters}"
)
# evaluate action parameter
action = self._extract_parameters_values(parameters, ["action"])[0]
if action == "requestToken":
username, session_id = self._extract_parameters_values(parameters, ["authUser", "sessionID"])
result = self._get_request_token(username, session_id)
elif action == "sessionToken":
request_token = self._extract_parameters_values(parameters, ["requestToken"])[0]
result = self._get_session_token(request_token)
else:
raise DCVAuthenticator.IncorrectRequestError(f"The action specified '{action}' is not valid.")
self._set_headers(400, content="application/json")
self.wfile.write(result.encode())
except DCVAuthenticator.IncorrectRequestError as e:
logger.error(e)
self._return_bad_request(e)