ManagedkdbInsights/update_cluster/update_cluster_code.py (31 lines of code) (raw):
import os
import pykx as kx_local
def get_pykx_remote_connection(connectionString: str):
import pykx as kx
conn_parts = connectionString.split(":")
host=conn_parts[2].strip("/")
port = int(conn_parts[3])
username=conn_parts[4]
password=conn_parts[5]
return kx.QConnection(host=host, port=port, username=username, password=password, tls=True)
def _set_directories(filesPath: str, remotePath: str):
file_directories = []
file_remote_directories = []
for root, dirs, files in os.walk(filesPath):
path = root.split(os.sep)
for file in files:
if "checkpoint" not in file:
file_directories.append(os.path.join(root, file))
_, remote_subdirectory = root.split(filesPath)
if remote_subdirectory:
remote_subdirectory += "/"
file_remote_directories.append(remotePath + remote_subdirectory + file)
kx_local.q["fileDirectories"] = file_directories
kx_local.q["fileRemoteDirectories"] = file_remote_directories
def copy_local_to_cluster(kx_remote, filesPath: str, remotePath: str):
_set_directories(filesPath, remotePath)
print(kx_local.q("fileDirectories"))
# Get a list of bytes representations of the files to update
kx_local.q('files: {read1 fileDirectories[x]} each til count fileDirectories')
# Pass on variables to remote
kx_remote['files'] = kx_local.q('files')
kx_remote['fileRemoteDirectories'] = kx_local.q('fileRemoteDirectories')
kx_remote('{fileRemoteDirectories[x] 1: files[x]} each til count files')