cc-backend/graph/schema.graphqls

204 lines
3.4 KiB
GraphQL
Raw Normal View History

type Job {
id: ID!
jobId: String!
userId: String!
projectId: String!
clusterId: String!
startTime: Time!
duration: Int!
numNodes: Int!
hasProfile: Boolean!
2021-09-23 11:45:20 +02:00
tags: [JobTag!]!
loadAvg: Float
memUsedMax: Float
flopsAnyAvg: Float
memBwAvg: Float
netBwAvg: Float
fileBwAvg: Float
2021-09-23 11:45:20 +02:00
}
2021-04-21 10:12:19 +02:00
2021-09-23 11:45:20 +02:00
type JobTag {
id: ID!
tagType: String!
tagName: String!
2021-04-07 09:19:21 +02:00
}
2021-04-22 15:00:54 +02:00
type Cluster {
clusterID: String!
processorType: String!
socketsPerNode: Int!
coresPerSocket: Int!
threadsPerCore: Int!
flopRateScalar: Int!
flopRateSimd: Int!
memoryBandwidth: Int!
metricConfig: [MetricConfig!]!
filterRanges: FilterRanges!
2021-04-22 15:00:54 +02:00
}
type MetricConfig {
name: String!
unit: String!
sampletime: Int!
peak: Int!
normal: Int!
caution: Int!
alert: Int!
}
2021-04-07 09:19:21 +02:00
type JobMetric {
unit: String!
scope: JobMetricScope!
timestep: Int!
series: [JobMetricSeries]!
}
enum JobMetricScope {
node
cpu
socket
}
type JobMetricSeries {
node_id: String!
statistics: JobMetricStatistics
data: [Float]!
}
type JobMetricStatistics {
avg: Float!
min: Float!
max: Float!
}
2021-09-23 11:45:20 +02:00
type JobMetricWithName {
name: String!
metric: JobMetric!
2021-04-14 18:53:18 +02:00
}
type Query {
2021-04-22 15:00:54 +02:00
clusters: [Cluster!]!
2021-05-21 09:30:15 +02:00
jobById(id: ID!): Job
jobs(filter: JobFilterList, page: PageRequest, order: OrderByInput): JobResultList!
jobsStatistics(filter: JobFilterList): JobsStatistics!
2021-09-23 11:45:20 +02:00
jobMetrics(jobId: String!, clusterId: String, metrics: [String]): [JobMetricWithName]!
jobMetricAverages(filter: JobFilterList!, metrics: [String]!): [[Float]]!
rooflineHeatmap(filter: JobFilterList!, rows: Int!, cols: Int!, minX: Float!, minY: Float!, maxX: Float!, maxY: Float!): [[Float!]]!
tags: [JobTag!]!
filterRanges: FilterRanges!
2021-09-23 11:45:20 +02:00
userStats(startTime: Time, stopTime: Time, clusterId: String): [UserStats!]!
}
2021-05-21 09:30:15 +02:00
type Mutation {
createTag(type: String!, name: String!): JobTag!
deleteTag(id: ID!): ID!
addTagsToJob(job: ID!, tagIds: [ID!]!): [JobTag!]!
removeTagsFromJob(job: ID!, tagIds: [ID!]!): [JobTag!]!
2021-09-23 11:45:20 +02:00
updateConfiguration(name: String!, value: String!): String
}
type IntRangeOutput {
from: Int!
to: Int!
}
type TimeRangeOutput {
from: Time!
to: Time!
}
type FilterRanges {
duration: IntRangeOutput!
numNodes: IntRangeOutput!
startTime: TimeRangeOutput!
2021-05-21 09:30:15 +02:00
}
input JobFilterList {
list: [JobFilter]
}
input JobFilter {
tags: [ID!]
jobId: StringInput
userId: StringInput
projectId: StringInput
clusterId: StringInput
duration: IntRange
numNodes: IntRange
startTime: TimeRange
2021-09-23 11:45:20 +02:00
isRunning: Boolean
flopsAnyAvg: FloatRange
memBwAvg: FloatRange
loadAvg: FloatRange
memUsedMax: FloatRange
}
input OrderByInput {
field: String!
order: SortDirectionEnum = ASC
}
enum SortDirectionEnum {
DESC
ASC
}
input StringInput {
eq: String
contains: String
startsWith: String
endsWith: String
}
input IntRange {
from: Int!
to: Int!
}
input FloatRange {
from: Float!
to: Float!
}
input TimeRange {
from: Time!
to: Time!
}
type JobResultList {
items: [Job]!
offset: Int
limit: Int
count: Int
}
type HistoPoint {
count: Int!
value: Int!
}
type JobsStatistics {
totalJobs: Int!
shortJobs: Int!
totalWalltime: Int!
totalCoreHours: Int!
histWalltime: [HistoPoint]!
histNumNodes: [HistoPoint]!
}
2021-09-23 11:45:20 +02:00
type UserStats {
userId: ID!
totalJobs: Int!
totalWalltime: Float!
totalCoreHours: Float!
}
input PageRequest {
2021-09-23 11:45:20 +02:00
itemsPerPage: Int!
page: Int!
}
scalar Time