pyepic.client package
Submodules
pyepic.client.base module
- class pyepic.client.base.Client(connection_token, connection_url='https://epic.zenotech.com/api/v2')
Bases:
object
Base client class for API wrappers
- Parameters:
connection_token (str) – Your EPIC API authentication token
connection_url (str, optional) – The API URL for EPIC, defaults to “https://epic.zenotech.com/api/v2”
- set_limt(limit)
- class pyepic.client.base.EPICClient(connection_token, connection_url='https://epic.zenotech.com/api/v2')
Bases:
object
A wrapper class around the epiccore API.
- Parameters:
connection_token (str) – Your EPIC API authentication token
connection_url (str, optional) – The API URL for EPIC, defaults to “https://epic.zenotech.com/api/v2”
- Variables:
job (
JobClient
) – API to Job functionscatalog (
CatalogClient
) – API to Catalog functionsdesktops (
DesktopClient
) – API to Desktops functionsprojects (
ProjectClient
) – API to Projects functionsteams (
TeamsClient
) – API to Teams functions
pyepic.client.catalog module
- class pyepic.client.catalog.CatalogClient(connection_token, connection_url='https://epic.zenotech.com/api/v2')
Bases:
Client
A wrapper class around the epiccore Catalog API.
- Parameters:
connection_token (str) – Your EPIC API authentication token
connection_url (str, optional) – The API URL for EPIC, defaults to “https://epic.zenotech.com/api/v2”
- application_details(application_id)
Get the details of application with id application_id
- Parameters:
application_id (int) – ID of application to get details for
- Returns:
BatchQueueDetails
- Return type:
epiccore.models.BatchApplicationDetails
- list_applications(product_name=None)
List the applications available in EPIC
- Parameters:
product_name (str, optional) – Filter clusters by application name.
- Returns:
Iterable collection of BatchApplicationDetails
- Return type:
collections.Iterable[
epiccore.models.BatchApplicationDetails
]
- list_clusters(cluster_name=None, queue_name=None, allowed_apps=None)
List the clusters available in EPIC
- Parameters:
cluster_name (str, optional) – Filter clusters by cluster name.
queue_name (str, optional) – Filter clusters by queue name.
allowed_apps (str, optional) – Filter clusters by those with application code available.
- Returns:
Iterable collection of BatchQueueDetails
- Return type:
collections.Iterable[
epiccore.models.BatchQueueDetails
]
- list_desktops()
List the available Desktops in EPIC
- Returns:
Iterable collection of DesktopNodeApp
- Return type:
collections.Iterable[
epiccore.models.DesktopNodeApp
]
- queue_details(queue_id)
Get the details of queue with id queue_id
- Parameters:
queue_id (int) – ID of queue to get details for
- Returns:
BatchQueueDetails
- Return type:
epiccore.models.BatchQueueDetails
pyepic.client.data module
- class pyepic.client.data.DataClient(connection_token, connection_url='https://epic.zenotech.com/api/v2')
Bases:
Client
A wrapper class around the epiccore Data API.
- Parameters:
connection_token (str) – Your EPIC API authentication token
connection_url (str, optional) – The API URL for EPIC, defaults to “https://epic.zenotech.com/api/v2”
- delete(epic_path, dryrun=False)
- Delete the file of folder at epic_path
- param epic_path:
Path of a file or folder to delete in the form epic://[<folder>]/<file>
- type epic_path:
str
- param dryrun:
If dryrun is True then return a list of files that would be deleted without actually deleting them
- type dryrun:
bool
- return:
List of the files deleted
- rtype:
List[str]
- download_file(epic_path, destination)
- Download the contents of epic_path
- param epic_path:
Path of a file in the form epic://[<folder>]/<file>
- type epic_path:
str
- param destination:
Location to download file to, can be a string or a writable file-like object
- type destination:
str
- get_file_meta_data(epic_path)
- Get the meta-data for the file at epic_path
- param epic_path:
Path of a file in the form epic://[<folder>]/<file>
- type epic_path:
str
- return:
Dictionary of file meta-data
- rtype:
dict
- ls(epic_path)
- List the files and folders at the given path
- param epic_path:
Path in the form epic://[<folder>]/
- type epic_path:
str
- return:
Iterable collection of DataObject
- rtype:
collections.Iterable[
pyepic.client.data.DataObject
]
- meta_source = 'SDK'
- sync(source_path, target_path, dryrun=False, overwrite_existing=False, callback=None, threads=3, cancel_event=None)
- Synchronize the data from one directory to another, source_path or target_path can be a remote folder or a local folder.
- param source_path:
Source folder to syncronise from. For remote folders use form epic://[<folder>]/<file>.
- type source_path:
str
- param target_path:
Target folder to syncronise to. For remote folders use form epic://[<folder>]/<file>.
- type target_path:
str
- param dryrun:
If dryrun == True then no actual copy will take place but the callback will be called with the generated source and target paths. This can be useful for checking before starting a large upload/download.
- type dryrun:
bool, optional
- param overwrite_existing:
If overwrite_existing == True then files with newer modification timestamps in source_path will replace existing files in target_path
- type overwrite_existing:
bool, optional
- param callback:
A callback method that accepts four parameters. These are source, destination, a boolean indicating if a copy has taken place and a boolean to indicate if the copy was a dryrun. The callback is called after each file is processed.
- type callback:
method, optional
- param threads:
Number of threads to use for sync
- type threads:
int, optional
- param cancel_event:
An instance of threading.Event that can be set to cancel the sync.
- type cancel_event:
threading.Event
- upload_file(file, epic_path)
- Upload the contents of file to epic_path
- param destination:
Location of the file to upload OR a readable file-like object
- type destination:
str
- param epic_path:
Destination path of a file in the form epic://[<folder>]/<file>
- type epic_path:
str
- class pyepic.client.data.DataObject(name, obj_path, folder=False, size=None, last_modified=None)
Bases:
object
Class representing a file or folder
- Parameters:
name (int) – Name of the file/folder
obj_path (str) – Path of the file/folder
folder (bool) – Is the object a folder?
name – Size of the object if available
last_modified (str) – Last modified time if available. Datetime in ISO 8601 format, UTC timezone.
- class pyepic.client.data.DataThread(s3_client, bucket_name, s3_prefix, local_path, file_queue, cancel_event=None, dryrun=False, callback=None, download_thread=True, overwrite_existing=False, meta_data={})
Bases:
Thread
Thread class used internally by pyepic for managaing upload/download functions
- download_key(key_name)
- run()
Method representing the thread’s activity.
You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.
- upload_file(file_full_path)
pyepic.client.desktop module
- class pyepic.client.desktop.DesktopClient(connection_token, connection_url='https://epic.zenotech.com/api/v2')
Bases:
Client
A wrapper class around the epiccore Desktop API.
- Parameters:
connection_token (str) – Your EPIC API authentication token
connection_url (str, optional) – The API URL for EPIC, defaults to “https://epic.zenotech.com/api/v2”
- get_details(id)
Get details of desktop with ID id
- Parameters:
id (int) – The ID of the desktop to fetch details on
- Returns:
A desktop instance
- Return type:
class:epiccore.models.DesktopInstance
- get_quote(desktop_spec)
Get a Quote for launching the desktop on EPIC
- Parameters:
desktop_spec (class:epiccore.models.DesktopNodeQuote) – The EPIC Desktop Quote specification
- Returns:
A quote giving the price for the job on the available HPC queues
- Return type:
class:epiccore.models.PriceQuote
- launch(desktop_spec)
Launch the Desktop described by desktop_spec in EPIC
- Parameters:
desktop_spec (class:epiccore.models.DesktopNodeQuote) – The EPIC Desktop Launch specification
- Returns:
A quote giving the price for the job on the available HPC queues
- Return type:
class:epiccore.models.DesktopInstance
- list()
List all of your Desktops in EPIC.
- Returns:
Iterable collection of DesktopInstance
- Return type:
collections.Iterable[
epiccore.models.DesktopInstance
]
- terminate(id)
Terminate Desktop job with ID id
- Parameters:
id (int) – The ID of the Desktop to terminate
pyepic.client.job module
- class pyepic.client.job.JobClient(connection_token, connection_url='https://epic.zenotech.com/api/v2')
Bases:
Client
A wrapper class around the epiccore Job API.
- Parameters:
connection_token (str) – Your EPIC API authentication token
connection_url (str, optional) – The API URL for EPIC, defaults to “https://epic.zenotech.com/api/v2”
- cancel(job_id)
Cancel job with ID job_id
- Parameters:
job_id (int) – The ID of the job to cancel
- get_details(job_id)
Get details of job with ID job_id
- Parameters:
job_id (int) – The ID of the job to fetch details on
- Returns:
A Job instance
- Return type:
class:epiccore.models.Job
- get_job_residual_names(job_id)
Get the names of the residual variables available forjob with id job_id
- Parameters:
job_id (int) – The ID of the job to get the residual list for
- Returns:
A list of variable names
- Return type:
List[str]
- get_job_residual_values(job_id, variable_list)
Get the names of the residual variables available forjob with id job_id
- Parameters:
job_id (int) – The ID of the job to get the variables for
variable_names (List[str]) – A list of the variables to return
- Returns:
A JobResidualData object
- Return type:
class:epiccore.models.JobResidualData
- get_quote(job_spec)
Get a Quote for running a series of tasks on EPIC.
- Parameters:
job_spec (class:epiccore.models.JobSpec) – The EPIC job specification
- Returns:
A quote giving the price for the job on the available HPC queues
- Return type:
class:epiccore.models.JobQuote
- get_step_details(step_id)
Get the details of the step ID step_id
- Parameters:
step_id (int) – The ID of the job step to fetch
- Returns:
A Job Step instance
- Return type:
class:epiccore.models.JobStep
- get_step_logs(step_id, refresh=True, refresh_timeout=10)
Get the step logs for step with id step_id
- Parameters:
step_id (int) – The ID of the step to fetch the logs for
dryrun (int, optional) – If refresh is True then the request will attempt to refresh the logs before returning the latest update
dryrun – How many seconds should we wait for a refresh before giving up, default 10 seconds
- Returns:
A Job Log instance
- Return type:
class:epiccore.models.JobLog
- list(job_array=None, limit=10)
List all of the jobs in EPIC.
- Parameters:
job_array (int) – Filter by job array ID (optional)
limit (int) – Maximum number of jobs to list
- Returns:
Iterable collection of Jobs
- Return type:
collections.Iterable[
epiccore.models.Job
]
- list_steps(parent_job=None)
List all of the job steps in EPIC.
- Parameters:
parent_job (int, optional) – The ID of the parent job to list the steps for
- Returns:
Iterable collection of Job Steps
- Return type:
collections.Iterable[
epiccore.models.JobStep
]
- submit(job_array_spec)
Submit new job in EPIC as described by job_array_spec.
- Parameters:
job_array_spec (class:epiccore.models.JobArraySpec) – The EPIC job specification
- Returns:
The newly created job instance
- Return type:
class:epiccore.models.Job
pyepic.client.projects module
- class pyepic.client.projects.ProjectClient(connection_token, connection_url='https://epic.zenotech.com/api/v2')
Bases:
Client
A wrapper class around the epiccore Projects API.
- Parameters:
connection_token (str) – Your EPIC API authentication token
connection_url (str, optional) – The API URL for EPIC, defaults to “https://epic.zenotech.com/api/v2”
- get_details(id: int)
Get the details for project with ID id
- Returns:
The Project
- Return type:
epiccore.models.ProjectDetails
- list()
List all of the projects you have access to on EPIC.
- Returns:
An interable list of Projects
- Return type:
collections.Iterable[
epiccore.models.Project
]
pyepic.client.teams module
- class pyepic.client.teams.TeamsClient(connection_token, connection_url='https://epic.zenotech.com/api/v2')
Bases:
Client
A wrapper class around the epiccore Teams API.
- Parameters:
connection_token (str) – Your EPIC API authentication token
connection_url (str, optional) – The API URL for EPIC, defaults to “https://epic.zenotech.com/api/v2”
- get_details(id: int)
Get the details for team with ID id
- Returns:
The Team details
- Return type:
epiccore.models.TeamDetails
- list()
List all of the teams you have access to on EPIC.
- Returns:
An interable list of Teams
- Return type:
collections.Iterable[
epiccore.models.Team
]