cc-backend/graph/schema.graphqls
2021-04-07 09:19:21 +02:00

171 lines
2.6 KiB
GraphQL

type Job {
id: ID!
jobId: String!
userId: String!
projectId: String!
clusterId: String!
startTime: Time!
duration: Int!
numNodes: Int!
}
type JobData {
load_one: JobMetric
mem_used: JobMetric
mem_bw: JobMetric
flops_any: JobMetric
flops_dp: JobMetric
flops_sp: JobMetric
cpi_avg: JobMetric
clock_speed: JobMetric
total_power: JobMetric
traffic_read_eth: JobMetric
traffic_write_eth: JobMetric
traffic_read_lustre: JobMetric
traffic_write_lustre: JobMetric
reg_read_lustre: JobMetric
reg_write_lustre: JobMetric
inodes_lustre: JobMetric
pkg_rate_read_ib: JobMetric
pkg_rate_write_ib: JobMetric
congestion_ib: JobMetric
}
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!
}
type Query {
jobById(jobId: String!): Job
jobs(filter: JobFilterList, page: PageRequest, order: OrderByInput): JobResultList!
jobsStatistics(filter: JobFilterList): JobsStatistics!
jobDataById(jobId: String!): JobData
jobAvailableMetricsById(jobId: String!): [JobMetricWithName]!
}
input StartJobInput {
jobId: String!
userId: String!
projectId: String!
clusterId: String!
startTime: Time!
numNodes: Int!
}
input StopJobInput {
stopTime: Time!
}
input AddJobInput {
jobId: String!
userId: String!
projectId: String!
clusterId: String!
startTime: Time!
duration: Int!
numNodes: Int!
}
input JobFilterList {
list: [JobFilter]
}
input JobFilter {
jobId: StringInput
userId: StringInput
projectId: StringInput
clusterId: StringInput
duration: IntRange
numNodes: IntRange
startTime: TimeRange
hasProfile: Boolean
}
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 JobMetricWithName {
name: String!
metric: JobMetric!
}
type HistoPoint {
count: Int!
value: Int!
}
type JobsStatistics {
totalJobs: Int!
shortJobs: Int!
totalWalltime: Int!
totalCoreHours: Int!
histWalltime: [HistoPoint]!
histNumNodes: [HistoPoint]!
}
input PageRequest {
itemsPerPage: Int
page: Int
}
scalar Time