GraphQL
Many of the Shakudo Platform features are supported through the platform dashboard as well as GraphQL. GraphQL method is particularly useful when some actions are easier done algorithmically such as spinning up many jobs at once.
Below are some common graphql queries for submission, checking status, etc.
Sessions
Get Sessions
Get a list of Sessions.
query hyperhubSessions($limit: Int!, $email: String, $status: String, $imageType: String) {
hyperHubSessions(orderBy:{startTime: desc}, take: $limit, where: {
hyperplaneUserEmail: {equals: $email},
status: {equals: $status},
}) {
id
hyperplaneUserEmail
status
imageType
jLabUrl
notebookURI
estimatedCost
department
resourceCPUlimit
resourceRAMlimit
resourceCPUrequest
resourceRAMrequest
gpuRequest
startTime
completionTime
}
countHyperHubSessions
}
Cancel a session by session_id
Cancel a Session
mutation($id: String!) {
updateHyperHubSession(where: {id: $id}, data: {
status: {set: "cancelled"}
}) {
id
status
}
}
Count sessions
Count the number of sessions based on the filters provided by the parameters
query hyperhubSessions($email: String, $imageType: String, $status: String) {
hyperHubSessions(where: {
hyperplaneUserEmail: {equals: $email},
imageType: {equals: $imageType}
status: {equals: $status}
}) {
id
}
}
Create a pipeline job
Create a pipeline job with the specified inputs
mutation ($type: String!, $timeout: Int!, $activeTimeout: Int, $maxRetries: Int!, $yamlPath: String!, $exposedPort: String, $schedule: String, $parameters: ParameterCreateNestedManyWithoutPipelineJobInput ) {
createPipelineJob (data: {
jobType: $type,
timeout: $timeout,
activeTimeout: $activeTimeout
maxRetries: $maxRetries,
pipelineYamlPath: $yamlPath,
exposedPort: $exposedPort,
parameters: $parameters,
schedule: $schedule
}) {
id
pinned
pipelineYamlPath
schedule
status
statusReason
output
startTime
completionTime
daskDashboardUrl
timeout
outputNotebooksPath
activeTimeout
maxRetries
exposedPort
jobType
parameters {
key
value
}
}
}
Cancel a pipeline job
Cancel a job (Stop job from running)
mutation ($id: String!) {
updatePipelineJob(where: {id: $id},
data: {
status: {set: "cancelled"}
}) {
id
}
}
Get a list of jobs
Show the list of jobs
query nextJobs($limit: Int!) {
pipelineJobs(orderBy: [{pinned: desc},{ startTime: desc}], take: $limit) {
id
pipelineYamlPath
schedule
status
output
startTime
completionTime
daskDashboardUrl
timeout
outputNotebooksPath
activeTimeout
maxRetries
jobType
estimatedCost
owner
department
}
}
Get job status
Count the number of jobs based on their statuses. For example, failed, pending, or cancelled jobs. The timeFrame parameter specifies the timeframe which will be considered.
For instance:
- T_10M = past 10 minutes
- T_24H = past 24 hours
query {
COUNT_ALL_TOTAL: getJobStat(stat: COUNT_ALL, timeFrame: TOTAL)
COUNT_CANCELLED_TOTAL: getJobStat(stat: COUNT_CANCELLED, timeFrame: TOTAL)
COUNT_DONE_TOTAL: getJobStat(stat: COUNT_DONE, timeFrame: TOTAL)
COUNT_FAILED_TOTAL: getJobStat(stat: COUNT_FAILED, timeFrame: TOTAL)
COUNT_IN_PROGRESS_TOTAL: getJobStat(
stat: COUNT_IN_PROGRESS
timeFrame: TOTAL
)
COUNT_PENDING_TOTAL: getJobStat(stat: COUNT_PENDING, timeFrame: TOTAL)
COUNT_SCHEDULED_TOTAL: getJobStat(stat: COUNT_SCHEDULED, timeFrame: TOTAL)
COUNT_TIMED_OUT_TOTAL: getJobStat(stat: COUNT_TIMED_OUT, timeFrame: TOTAL)
COUNT_ALL_T_10M: getJobStat(stat: COUNT_ALL, timeFrame: T_10M)
COUNT_CANCELLED_T_10M: getJobStat(stat: COUNT_CANCELLED, timeFrame: T_10M)
COUNT_DONE_T_10M: getJobStat(stat: COUNT_DONE, timeFrame: T_10M)
COUNT_FAILED_T_10M: getJobStat(stat: COUNT_FAILED, timeFrame: T_10M)
COUNT_IN_PROGRESS_T_10M: getJobStat(
stat: COUNT_IN_PROGRESS
timeFrame: T_10M
)
COUNT_PENDING_T_10M: getJobStat(stat: COUNT_PENDING, timeFrame: T_10M)
COUNT_SCHEDULED_T_10M: getJobStat(stat: COUNT_SCHEDULED, timeFrame: T_10M)
COUNT_TIMED_OUT_T_10M: getJobStat(stat: COUNT_TIMED_OUT, timeFrame: T_10M)
COUNT_ALL_T_1H: getJobStat(stat: COUNT_ALL, timeFrame: T_1H)
COUNT_CANCELLED_T_1H: getJobStat(stat: COUNT_CANCELLED, timeFrame: T_1H)
COUNT_DONE_T_1H: getJobStat(stat: COUNT_DONE, timeFrame: T_1H)
COUNT_FAILED_T_1H: getJobStat(stat: COUNT_FAILED, timeFrame: T_1H)
COUNT_IN_PROGRESS_T_1H: getJobStat(stat: COUNT_IN_PROGRESS, timeFrame: T_1H)
COUNT_PENDING_T_1H: getJobStat(stat: COUNT_PENDING, timeFrame: T_1H)
COUNT_SCHEDULED_T_1H: getJobStat(stat: COUNT_SCHEDULED, timeFrame: T_1H)
COUNT_TIMED_OUT_T_1H: getJobStat(stat: COUNT_TIMED_OUT, timeFrame: T_1H)
COUNT_ALL_T_24H: getJobStat(stat: COUNT_ALL, timeFrame: T_24H)
COUNT_CANCELLED_T_24H: getJobStat(stat: COUNT_CANCELLED, timeFrame: T_24H)
COUNT_DONE_T_24H: getJobStat(stat: COUNT_DONE, timeFrame: T_24H)
COUNT_FAILED_T_24H: getJobStat(stat: COUNT_FAILED, timeFrame: T_24H)
COUNT_IN_PROGRESS_T_24H: getJobStat(
stat: COUNT_IN_PROGRESS
timeFrame: T_24H
)
COUNT_PENDING_T_24H: getJobStat(stat: COUNT_PENDING, timeFrame: T_24H)
COUNT_SCHEDULED_T_24H: getJobStat(stat: COUNT_SCHEDULED, timeFrame: T_24H)
COUNT_TIMED_OUT_T_24H: getJobStat(stat: COUNT_TIMED_OUT, timeFrame: T_24H)
}
Get scheduled jobs status
Count the number of scheduled jobs based on their statuses. For example, failed, pending, or cancelled jobs.
The differnece with the query above is that the belew parameter is added to only count scheduled jobs for each time frame with status: SCHEDULED
query {
COUNT_ALL_TOTAL: getJobStat(stat: COUNT_ALL, timeFrame: TOTAL, status: SCHEDULED)
COUNT_CANCELLED_TOTAL: getJobStat(stat: COUNT_CANCELLED, timeFrame: TOTAL, status: SCHEDULED)
COUNT_DONE_TOTAL: getJobStat(stat: COUNT_DONE, timeFrame: TOTAL, status: SCHEDULED)
COUNT_FAILED_TOTAL: getJobStat(stat: COUNT_FAILED, timeFrame: TOTAL, status: SCHEDULED)
COUNT_IN_PROGRESS_TOTAL: getJobStat(
stat: COUNT_IN_PROGRESS
timeFrame: TOTAL
)
COUNT_PENDING_TOTAL: getJobStat(stat: COUNT_PENDING, timeFrame: TOTAL, status: SCHEDULED)
COUNT_SCHEDULED_TOTAL: getJobStat(stat: COUNT_SCHEDULED, timeFrame: TOTAL, status: SCHEDULED)
COUNT_TIMED_OUT_TOTAL: getJobStat(stat: COUNT_TIMED_OUT, timeFrame: TOTAL, status: SCHEDULED)
COUNT_ALL_T_10M: getJobStat(stat: COUNT_ALL, timeFrame: T_10M)
COUNT_CANCELLED_T_10M: getJobStat(stat: COUNT_CANCELLED, timeFrame: T_10M, status: SCHEDULED)
COUNT_DONE_T_10M: getJobStat(stat: COUNT_DONE, timeFrame: T_10M, status: SCHEDULED)
COUNT_FAILED_T_10M: getJobStat(stat: COUNT_FAILED, timeFrame: T_10M, status: SCHEDULED)
COUNT_IN_PROGRESS_T_10M: getJobStat(
stat: COUNT_IN_PROGRESS
timeFrame: T_10M
)
COUNT_PENDING_T_10M: getJobStat(stat: COUNT_PENDING, timeFrame: T_10M, status: SCHEDULED)
COUNT_SCHEDULED_T_10M: getJobStat(stat: COUNT_SCHEDULED, timeFrame: T_10M, status: SCHEDULED)
COUNT_TIMED_OUT_T_10M: getJobStat(stat: COUNT_TIMED_OUT, timeFrame: T_10M, status: SCHEDULED)
COUNT_ALL_T_1H: getJobStat(stat: COUNT_ALL, timeFrame: T_1H, status: SCHEDULED)
COUNT_CANCELLED_T_1H: getJobStat(stat: COUNT_CANCELLED, timeFrame: T_1H, status: SCHEDULED)
COUNT_DONE_T_1H: getJobStat(stat: COUNT_DONE, timeFrame: T_1H, status: SCHEDULED)
COUNT_FAILED_T_1H: getJobStat(stat: COUNT_FAILED, timeFrame: T_1H, status: SCHEDULED)
COUNT_IN_PROGRESS_T_1H: getJobStat(stat: COUNT_IN_PROGRESS, timeFrame: T_1H, status: SCHEDULED)
COUNT_PENDING_T_1H: getJobStat(stat: COUNT_PENDING, timeFrame: T_1H, status: SCHEDULED)
COUNT_SCHEDULED_T_1H: getJobStat(stat: COUNT_SCHEDULED, timeFrame: T_1H, status: SCHEDULED)
COUNT_TIMED_OUT_T_1H: getJobStat(stat: COUNT_TIMED_OUT, timeFrame: T_1H, status: SCHEDULED)
COUNT_ALL_T_24H: getJobStat(stat: COUNT_ALL, timeFrame: T_24H)
COUNT_CANCELLED_T_24H: getJobStat(stat: COUNT_CANCELLED, timeFrame: T_24H, status: SCHEDULED)
COUNT_DONE_T_24H: getJobStat(stat: COUNT_DONE, timeFrame: T_24H, status: SCHEDULED)
COUNT_FAILED_T_24H: getJobStat(stat: COUNT_FAILED, timeFrame: T_24H, status: SCHEDULED)
COUNT_IN_PROGRESS_T_24H: getJobStat(
stat: COUNT_IN_PROGRESS
timeFrame: T_24H
, status: SCHEDULED
)
COUNT_PENDING_T_24H: getJobStat(stat: COUNT_PENDING, timeFrame: T_24H, status: SCHEDULED)
COUNT_SCHEDULED_T_24H: getJobStat(stat: COUNT_SCHEDULED, timeFrame: T_24H, status: SCHEDULED)
COUNT_TIMED_OUT_T_24H: getJobStat(stat: COUNT_TIMED_OUT, timeFrame: T_24H, status: SCHEDULED)
}
Get a list of services
Get list of services - services are pipeline jobs which have an active timeout and timeout of -1 (Never ending jobs)
query nextJobs($offset: Int, $limit: Int!, $status: String!) {
pipelineJobs(orderBy: [{pinned: desc},{ startTime: desc}], take: $limit, skip: $offset, where: {
AND: [
{activeTimeout: {equals: -1}},
{timeout: {equals: -1}},
{status: {equals: $status}}
]
}) {
id
exposedPort
pinned
pipelineYamlPath
schedule
status
statusReason
startTime
completionTime
daskDashboardUrl
timeout
output
outputNotebooksPath
activeTimeout
duration
jobType
schedule
estimatedCost
owner
department
maxRetries
}
}
Jobs
Submit a pipeline job
mutation submitJob {
createPipelineJob (data: {
jobType: "basic",
timeout: 1500,
activeTimeout: 1000,
maxRetries: 5,
pipelineYamlPath: "example_pipeline.yaml",
parameters: {
create: [
{key: "a_param", value: "pass parameters as strings"},
]
}
}) {
id
runId
}
}
Cancel a job
mutation cancelJob {
updatePipelineJob(
where: { id: "your-job-id" }
data: { status: { set: "cancelled" } }
) {
id
}
}
Cancel all scheduled jobs
mutation cancelScheduledJob {
updateManyPipelineJob(
where: { status: { equals: "scheduled" } }
data: { status: { set: "cancelled" } }
) {
count
}
}
Check the status of a job
query checkStatus {
pipelineJob (where: {id: "your-job-id"}){
status
}
}
Get job parameters
Get the list of parameters for a pipeline job
query nextJobs($id: String!) {
pipelineJobs(where: {id: {equals: $id}}) {
parameters {
key
value
id
pipelineJobId
}
}
}
Detele job parameters
Delete a parameter for a pipeline job
mutation($jobId: String!, $parameterId: String!) {
updatePipelineJob(where: {id: $jobId},
data: {
parameters: {disconnect: {id: $parameterId}}
}) {
id
}
}
Update job parameters
Update the parameter key and value
mutation ($parameterId: String!, $keyValue: String, $valueValue: String) {
updateParameter(where: {id: $parameterId}, data: {
key: {set: $keyValue}
value: {set: $valueValue}
}) {
id
}
}