def _set_access_token(username: str, access_token: str, connect_string: str) -> Optional[str]: """ Sets the access_token for the connect request by doing the following: 1. retrieves the token configured for the connect_string from the .arkouda/tokens.txt file, if any 2. if access_token is None, returns the retrieved token 3. if access_token is not None, replaces retrieved token with the access_token to account for situations where the token can change for a url (for example, the arkouda_server is restarted and a corresponding new token is generated). :param str username: the username retrieved from the user's home directory :param str access_token: the access_token supplied by the user, defaults to None :param str connect_string: the arkouda_server host:port connect string :return: the retrieved or supplied access_token, defaults to None """ path = '{}/tokens.txt'.format(security.get_arkouda_client_directory()) tokens = io_util.delimited_file_to_dict(path) if access_token and access_token not in {'', 'None'}: saved_token = tokens.get(connect_string) if saved_token is None or saved_token != access_token: tokens[connect_string] = access_token io_util.dict_to_delimited_file(values=tokens, path=path, delimiter=',') return access_token else: tokens = io_util.delimited_file_to_dict(path) return tokens.get(connect_string)
def testGetArkoudaDirectory(self): security_test_dir = '{}/arkouda_test'.format(os.getcwd()) os.environ['ARKOUDA_CLIENT_DIRECTORY'] = str(security_test_dir) ak_directory = security.get_arkouda_client_directory() self.assertEquals('{}/.arkouda'.format(security_test_dir), str(ak_directory)) shutil.rmtree(security_test_dir)
def _set_access_token(access_token: Optional[str], connect_string: str = 'localhost:5555') -> Optional[str]: """ Sets the access_token for the connect request by doing the following: 1. retrieves the token configured for the connect_string from the .arkouda/tokens.txt file, if any 2. if access_token is None, returns the retrieved token 3. if access_token is not None, replaces retrieved token with the access_token to account for situations where the token can change for a url (for example, the arkouda_server is restarted and a corresponding new token is generated). Parameters ---------- username : str The username retrieved from the user's home directory access_token : str The access_token supplied by the user, which is required if authentication is enabled, defaults to None connect_string : str The arkouda_server host:port connect string, defaults to localhost:5555 Returns ------- str The access token configured for the host:port, None if there is no token configured for the host:port Raises ------ IOError If there's an error writing host:port -> access_token mapping to the user's tokens.txt file or retrieving the user's tokens """ path = '{}/tokens.txt'.format(security.get_arkouda_client_directory()) try: tokens = io_util.delimited_file_to_dict(path) except Exception as e: raise IOError(e) if cast(str, access_token) and cast(str, access_token) not in {'', 'None'}: saved_token = tokens.get(connect_string) if saved_token is None or saved_token != access_token: tokens[connect_string] = cast(str, access_token) try: io_util.dict_to_delimited_file(values=tokens, path=path, delimiter=',') except Exception as e: raise IOError(e) return access_token else: try: tokens = io_util.delimited_file_to_dict(path) except Exception as e: raise IOError(e) return tokens.get(connect_string)
def testGetArkoudaDirectory(self): ak_directory = security.get_arkouda_client_directory() self.assertEqual('{}/.arkouda'.format(security.get_home_directory()), str(ak_directory))