def test_Jobs_submitRDBJob(self): rdbComputeDomain = Jobs.getRDBComputeDomainFromName( Jobs_RDBComputeDomainName) jobId = Jobs.submitRDBQueryJob(Jobs_SqlQuery, rdbComputeDomain, Jobs_DatabaseContextName, Jobs_QueryResultsFile, Jobs_Alias) jobStatus = Jobs.waitForJob(jobId) self.assertTrue(jobStatus == Jobs.getJobStatus(jobId)) self.assertTrue(jobStatus.get('status') == 32) job = Jobs.getJobDescription(jobId) self.assertTrue(job.get('username') == Authentication_loginName) self.assertTrue(job.get('rdbDomainName') == Jobs_RDBComputeDomainName) self.assertTrue( job.get('databaseContextName') == Jobs_DatabaseContextName) self.assertTrue(job.get('inputSql') == Jobs_SqlQuery) self.assertTrue(job.get('submitterDID') == Jobs_Alias) fileService = Files.getFileServiceFromName(Jobs_FileServiceName) jobDirectory = job.get('resultsFolderURI') relativePath = jobDirectory.split( 'scratch/')[1] + Jobs_QueryResultsFile + '.csv' string = Files.download(fileService, 'scratch', '', relativePath, format="txt", userVolumeOwner=Authentication_loginName) string.rstrip("\n") self.assertTrue(string, Jobs_SqlQueryResult)
def test_Files_getRootVolumesInfo(self): fileService = Files.getFileServiceFromName(Files_FileServiceName) rootVolumes = Files.getRootVolumesInfo(fileService) self.assertTrue(rootVolumes.__len__() > 0) found = False for rootVolume in rootVolumes: if rootVolume.get('rootVolumeName') == Files_RootVolumeName1: found = True self.assertTrue(found) found = False for rootVolume in rootVolumes: if rootVolume.get('rootVolumeName') == Files_RootVolumeName2: found = True self.assertTrue(found)
def test_Files_createUserVolume_deleteUserVolume(self): fileService = Files.getFileServiceFromName(Files_FileServiceName) Files.createUserVolume(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1 ]), quiet=False) Files.deleteUserVolume(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1 ]), quiet=False)
def upload_repo(file_service_name, volume_name, path_='Redshift-Resnet.tar'): """Archive this repo and upload it to sciserver-files""" tmp_dir = tempfile.TemporaryDirectory().name archive = zip_dir('', os.path.join(os.path.dirname(os.path.realpath(__file__)), '..'), format='tar', dest_dir=tmp_dir) logger.info('The repo is archived in {}'.format(archive)) file_service_name = file_service_name file_service = sf.getFileServiceFromName(file_service_name) user_volumes = sf.getUserVolumesInfo(file_service) volume_path = user_volumes[0].get('path', 'Storage/username/persistent').rsplit('/', 1)[0] + '/' + volume_name logger.info('Creating {} if it doesn\'t exist.'.format(volume_path)) sf.createUserVolume(file_service, volume_path, quiet=True) sf.upload(file_service, path=volume_path + '/' + path_, localFilePath=archive, quiet=True) logger.info('Uploaded archived repo to sciserver-files at {}'.format(volume_path + '/' + path_)) return volume_path + '/' + path_
print(fileServices) # In[ ]: # get names of file services available to the user. fileServiceNames = Files.getFileServicesNames(); print(fileServiceNames) # In[ ]: # get FileService from Name fileService = Files.getFileServiceFromName(Files_FileServiceName); print(fileService) # In[ ]: # get the API endpoint URL of a FileService fileServiceAPIUrl = Files.__getFileServiceAPIUrl(fileService); print(fileServiceAPIUrl) # In[ ]: # get root volumes
def test_Jobs_submitNotebookJob_cancel_waitForJob_getJobStatus_getJobDescription_submitShellCommandJob( self): fileService = Files.getFileServiceFromName(Jobs_FileServiceName) try: Files.deleteUserVolume(fileService, Jobs_RootVolumeName, Jobs_UserVolumeName) except: pass Files.createUserVolume(fileService, Jobs_RootVolumeName, Jobs_UserVolumeName) Files.upload(fileService, Jobs_RootVolumeName, Jobs_UserVolumeName, Jobs_DirectoryName + "/" + Jobs_NotebookName, localFilePath=Jobs_NotebookName) dockerComputeDomain = Jobs.getDockerComputeDomainFromName( Jobs_DockerComputeDomainName) jobId_1 = Jobs.submitNotebookJob( '/home/idies/workspace/' + Jobs_UserVolumeName + '/' + Jobs_DirectoryName + '/' + Jobs_NotebookName, dockerComputeDomain, Jobs_DockerImageName, Jobs_UserVolumes, Jobs_DataVolumes, Jobs_Parameters, Jobs_Alias) Jobs.cancelJob(jobId_1) jobStatus = Jobs.getJobStatus(jobId_1) self.assertTrue(jobStatus.get('status') == 128) jobId_2 = Jobs.submitNotebookJob(Jobs_RemoteNotebookPath, dockerComputeDomain, Jobs_DockerImageName, Jobs_UserVolumes, Jobs_DataVolumes, Jobs_Parameters, Jobs_Alias) jobStatus = Jobs.waitForJob(jobId_2) self.assertTrue(jobStatus == Jobs.getJobStatus(jobId_2)) self.assertTrue(jobStatus.get('status') == 32) job = Jobs.getJobDescription(jobId_2) self.assertTrue(job.get('username') == Authentication_loginName) self.assertTrue(job.get('dockerImageName') == Jobs_DockerImageName) self.assertTrue(job.get('scriptURI') == Jobs_RemoteNotebookPath) self.assertTrue(job.get('submitterDID') == Jobs_Alias) jobDirectory = job.get('resultsFolderURI') relativePath = jobDirectory.split( 'scratch/')[1] + Jobs_NoteBookOutPutFile string = Files.download(fileService, 'scratch', '', relativePath, format="txt", userVolumeOwner=Authentication_loginName) string.rstrip("\n") self.assertTrue(string, job.get('resultsFolderURI')) jobs = Jobs.getJobsList(top=2) found = False for job in jobs: if jobId_1 == job.get("id"): found = True self.assertTrue(found) found = False for job in jobs: if jobId_2 == job.get("id"): found = True self.assertTrue(found) jobId = Jobs.submitShellCommandJob(Jobs_ShellCommand, dockerComputeDomain, Jobs_DockerImageName, Jobs_UserVolumes, Jobs_DataVolumes, Jobs_Alias) jobStatus = Jobs.waitForJob(jobId) self.assertTrue(jobStatus == Jobs.getJobStatus(jobId)) self.assertTrue(jobStatus.get('status') == 32) job = Jobs.getJobDescription(jobId) self.assertTrue(job.get('username') == Authentication_loginName) self.assertTrue(job.get('dockerImageName') == Jobs_DockerImageName) self.assertTrue(job.get('command') == Jobs_ShellCommand) self.assertTrue(job.get('submitterDID') == Jobs_Alias) jobDirectory = job.get('resultsFolderURI') relativePath = jobDirectory.split('scratch/')[1] + "command.txt" string = Files.download(fileService, 'scratch', '', relativePath, format="txt", userVolumeOwner=Authentication_loginName) string.rstrip("\n") self.assertTrue(string, job.get('resultsFolderURI')) Files.deleteUserVolume(fileService, Jobs_RootVolumeName, Jobs_UserVolumeName)
def test_Files_createDir_upload_dirList_download_download_shareUserVolume( self): try: fileService = Files.getFileServiceFromName(Files_FileServiceName) os.remove(Files_LocalFileName) Files.deleteUserVolume(fileService, Files_RootVolumeName1, Files_UserVolumeName1, quiet=True) Files.deleteUserVolume(fileService, Files_RootVolumeName1, Files_UserVolumeName2, quiet=True) except: pass try: fileService = Files.getFileServiceFromName(Files_FileServiceName) Files.createUserVolume(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1 ]), quiet=False) Files.createUserVolume(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName2 ]), quiet=False) Files.createDir( fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1, Files_NewDirectoryName1 ])) Files.createDir( fileService, "/".join([ Files_RootVolumeName2, Authentication_loginName, Files_UserVolumeName2, Files_NewDirectoryName2 ])) dirList = Files.dirList(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1, Files_NewDirectoryName1 ]), level=2) self.assertTrue( dirList.get('root').get('name') == Files_NewDirectoryName1) Files.upload(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1, Files_NewDirectoryName1, Files_LocalFileName ]), data=Files_LocalFileContent) dirList = Files.dirList(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1, Files_NewDirectoryName1 ]), level=2) self.assertTrue( dirList.get('root').get('files')[0].get('name') == Files_LocalFileName) Files.download(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1, Files_NewDirectoryName1, Files_LocalFileName ]), localFilePath=Files_LocalFileName) with open(Files_LocalFileName, 'r') as myfile: downloadedFileContent = myfile.read() assert (downloadedFileContent == Files_LocalFileContent) Files.delete( fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1, Files_NewDirectoryName1, Files_LocalFileName ])) dirList = Files.dirList(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1, Files_NewDirectoryName1 ]), level=2) self.assertIsNone(dirList.get('root').get('files')) Files.upload(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1, Files_NewDirectoryName1, Files_LocalFileName ]), localFilePath=Files_LocalFileName, quiet=False) Files.move( fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1, Files_NewDirectoryName1, Files_LocalFileName ]), fileService, "/".join([ Files_RootVolumeName2, Authentication_loginName, Files_UserVolumeName2, Files_NewDirectoryName2, Files_LocalFileName ])) Files.shareUserVolume( fileService, "/".join([ Files_RootVolumeName2, Authentication_loginName, Files_UserVolumeName2 ]), sharedWith=Authentication_login_sharedWithName, type="USER", allowedActions=["read"]) token1 = Authentication.login( Authentication_login_sharedWithName, Authentication_login_sharedWithPassword) string = Files.download(fileService, "/".join([ Files_RootVolumeName2, Authentication_loginName, Files_UserVolumeName2, Files_NewDirectoryName2, Files_LocalFileName ]), format="txt") self.assertTrue(string, Files_LocalFileContent) token1 = Authentication.login(Authentication_loginName, Authentication_loginPassword) finally: try: os.remove(Files_LocalFileName) Files.deleteUserVolume(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName1 ]), quiet=True) Files.deleteUserVolume(fileService, "/".join([ Files_RootVolumeName1, Authentication_loginName, Files_UserVolumeName2 ]), quiet=True) except: pass
def test_Files_getUserVolumesInfo(self): fileService = Files.getFileServiceFromName(Files_FileServiceName) userVolumesInfo = Files.getUserVolumesInfo(fileService) self.assertTrue(userVolumesInfo.__len__() > 0)
def test_Files_getFileServiceFromName(self): fileService = Files.getFileServiceFromName(Files_FileServiceName) self.assertTrue(fileService.get('name') == Files_FileServiceName)