diff --git a/api/swagger.json b/api/swagger.json index 8de2d8a..5c32a2d 100644 --- a/api/swagger.json +++ b/api/swagger.json @@ -97,6 +97,12 @@ "$ref": "#/definitions/api.ErrorResponse" } }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/api.ErrorResponse" + } + }, "500": { "description": "Internal Server Error", "schema": { @@ -726,13 +732,6 @@ }, "jobState": { "description": "Final job state", - "enum": [ - "completed", - "failed", - "cancelled", - "stopped", - "timeout" - ], "allOf": [ { "$ref": "#/definitions/schema.JobState" @@ -790,14 +789,6 @@ }, "jobState": { "description": "Final state of job", - "enum": [ - "completed", - "failed", - "cancelled", - "stopped", - "timeout", - "out_of_memory" - ], "allOf": [ { "$ref": "#/definitions/schema.JobState" @@ -926,14 +917,6 @@ }, "jobState": { "description": "Final state of job", - "enum": [ - "completed", - "failed", - "cancelled", - "stopped", - "timeout", - "out_of_memory" - ], "allOf": [ { "$ref": "#/definitions/schema.JobState" diff --git a/api/swagger.yaml b/api/swagger.yaml index 65806ed..7d008b8 100644 --- a/api/swagger.yaml +++ b/api/swagger.yaml @@ -76,12 +76,6 @@ definitions: allOf: - $ref: '#/definitions/schema.JobState' description: Final job state - enum: - - completed - - failed - - cancelled - - stopped - - timeout example: completed startTime: description: Start Time of job as epoch @@ -130,13 +124,6 @@ definitions: allOf: - $ref: '#/definitions/schema.JobState' description: Final state of job - enum: - - completed - - failed - - cancelled - - stopped - - timeout - - out_of_memory example: completed metaData: additionalProperties: @@ -239,13 +226,6 @@ definitions: allOf: - $ref: '#/definitions/schema.JobState' description: Final state of job - enum: - - completed - - failed - - cancelled - - stopped - - timeout - - out_of_memory example: completed metaData: additionalProperties: @@ -463,6 +443,10 @@ paths: description: Unauthorized schema: $ref: '#/definitions/api.ErrorResponse' + "403": + description: Forbidden + schema: + $ref: '#/definitions/api.ErrorResponse' "500": description: Internal Server Error schema: diff --git a/internal/api/docs.go b/internal/api/docs.go index 62d05e2..af6745f 100644 --- a/internal/api/docs.go +++ b/internal/api/docs.go @@ -103,6 +103,12 @@ const docTemplate = `{ "$ref": "#/definitions/api.ErrorResponse" } }, + "403": { + "description": "Forbidden", + "schema": { + "$ref": "#/definitions/api.ErrorResponse" + } + }, "500": { "description": "Internal Server Error", "schema": { @@ -732,13 +738,6 @@ const docTemplate = `{ }, "jobState": { "description": "Final job state", - "enum": [ - "completed", - "failed", - "cancelled", - "stopped", - "timeout" - ], "allOf": [ { "$ref": "#/definitions/schema.JobState" @@ -796,14 +795,6 @@ const docTemplate = `{ }, "jobState": { "description": "Final state of job", - "enum": [ - "completed", - "failed", - "cancelled", - "stopped", - "timeout", - "out_of_memory" - ], "allOf": [ { "$ref": "#/definitions/schema.JobState" @@ -932,14 +923,6 @@ const docTemplate = `{ }, "jobState": { "description": "Final state of job", - "enum": [ - "completed", - "failed", - "cancelled", - "stopped", - "timeout", - "out_of_memory" - ], "allOf": [ { "$ref": "#/definitions/schema.JobState" diff --git a/internal/api/rest.go b/internal/api/rest.go index a262fca..dc2f3d8 100644 --- a/internal/api/rest.go +++ b/internal/api/rest.go @@ -104,10 +104,10 @@ type DeleteJobApiResponse struct { type StopJobApiRequest struct { // Stop Time of job as epoch StopTime int64 `json:"stopTime" validate:"required" example:"1649763839"` - State schema.JobState `json:"jobState" validate:"required" example:"completed" enums:"completed,failed,cancelled,stopped,timeout"` // Final job state - JobId *int64 `json:"jobId" example:"123000"` // Cluster Job ID of job - Cluster *string `json:"cluster" example:"fritz"` // Cluster of job - StartTime *int64 `json:"startTime" example:"1649723812"` // Start Time of job as epoch + State schema.JobState `json:"jobState" validate:"required" example:"completed"` // Final job state + JobId *int64 `json:"jobId" example:"123000"` // Cluster Job ID of job + Cluster *string `json:"cluster" example:"fritz"` // Cluster of job + StartTime *int64 `json:"startTime" example:"1649723812"` // Start Time of job as epoch } // DeleteJobApiRequest model diff --git a/pkg/schema/job.go b/pkg/schema/job.go index 9b99d99..208af11 100644 --- a/pkg/schema/job.go +++ b/pkg/schema/job.go @@ -17,26 +17,26 @@ import ( type BaseJob struct { // The unique identifier of a job JobID int64 `json:"jobId" db:"job_id" example:"123000"` - User string `json:"user" db:"user" example:"abcd100h"` // The unique identifier of a user - Project string `json:"project" db:"project" example:"abcd200"` // The unique identifier of a project - Cluster string `json:"cluster" db:"cluster" example:"fritz"` // The unique identifier of a cluster - SubCluster string `json:"subCluster" db:"subcluster" example:"main"` // The unique identifier of a sub cluster - Partition string `json:"partition" db:"partition" example:"main"` // The Slurm partition to which the job was submitted - ArrayJobId int64 `json:"arrayJobId" db:"array_job_id" example:"123000"` // The unique identifier of an array job - NumNodes int32 `json:"numNodes" db:"num_nodes" example:"2" minimum:"1"` // Number of nodes used (Min > 0) - NumHWThreads int32 `json:"numHwthreads" db:"num_hwthreads" example:"20" minimum:"1"` // Number of HWThreads used (Min > 0) - NumAcc int32 `json:"numAcc" db:"num_acc" example:"2" minimum:"1"` // Number of accelerators used (Min > 0) - Exclusive int32 `json:"exclusive" db:"exclusive" example:"1" minimum:"0" maximum:"2"` // Specifies how nodes are shared: 0 - Shared among multiple jobs of multiple users, 1 - Job exclusive (Default), 2 - Shared among multiple jobs of same user - MonitoringStatus int32 `json:"monitoringStatus" db:"monitoring_status" example:"1" minimum:"0" maximum:"3"` // State of monitoring system during job run: 0 - Disabled, 1 - Running or Archiving (Default), 2 - Archiving Failed, 3 - Archiving Successfull - SMT int32 `json:"smt" db:"smt" example:"4"` // SMT threads used by job - State JobState `json:"jobState" db:"job_state" example:"completed" enums:"completed,failed,cancelled,stopped,timeout,out_of_memory"` // Final state of job - Duration int32 `json:"duration" db:"duration" example:"43200" minimum:"1"` // Duration of job in seconds (Min > 0) - Walltime int64 `json:"walltime" db:"walltime" example:"86400" minimum:"1"` // Requested walltime of job in seconds (Min > 0) - Tags []*Tag `json:"tags"` // List of tags - RawResources []byte `json:"-" db:"resources"` // Resources used by job [As Bytes] - Resources []*Resource `json:"resources"` // Resources used by job - RawMetaData []byte `json:"-" db:"meta_data"` // Additional information about the job [As Bytes] - MetaData map[string]string `json:"metaData"` // Additional information about the job + User string `json:"user" db:"user" example:"abcd100h"` // The unique identifier of a user + Project string `json:"project" db:"project" example:"abcd200"` // The unique identifier of a project + Cluster string `json:"cluster" db:"cluster" example:"fritz"` // The unique identifier of a cluster + SubCluster string `json:"subCluster" db:"subcluster" example:"main"` // The unique identifier of a sub cluster + Partition string `json:"partition" db:"partition" example:"main"` // The Slurm partition to which the job was submitted + ArrayJobId int64 `json:"arrayJobId" db:"array_job_id" example:"123000"` // The unique identifier of an array job + NumNodes int32 `json:"numNodes" db:"num_nodes" example:"2" minimum:"1"` // Number of nodes used (Min > 0) + NumHWThreads int32 `json:"numHwthreads" db:"num_hwthreads" example:"20" minimum:"1"` // Number of HWThreads used (Min > 0) + NumAcc int32 `json:"numAcc" db:"num_acc" example:"2" minimum:"1"` // Number of accelerators used (Min > 0) + Exclusive int32 `json:"exclusive" db:"exclusive" example:"1" minimum:"0" maximum:"2"` // Specifies how nodes are shared: 0 - Shared among multiple jobs of multiple users, 1 - Job exclusive (Default), 2 - Shared among multiple jobs of same user + MonitoringStatus int32 `json:"monitoringStatus" db:"monitoring_status" example:"1" minimum:"0" maximum:"3"` // State of monitoring system during job run: 0 - Disabled, 1 - Running or Archiving (Default), 2 - Archiving Failed, 3 - Archiving Successfull + SMT int32 `json:"smt" db:"smt" example:"4"` // SMT threads used by job + State JobState `json:"jobState" db:"job_state" example:"completed"` // Final state of job + Duration int32 `json:"duration" db:"duration" example:"43200" minimum:"1"` // Duration of job in seconds (Min > 0) + Walltime int64 `json:"walltime" db:"walltime" example:"86400" minimum:"1"` // Requested walltime of job in seconds (Min > 0) + Tags []*Tag `json:"tags"` // List of tags + RawResources []byte `json:"-" db:"resources"` // Resources used by job [As Bytes] + Resources []*Resource `json:"resources"` // Resources used by job + RawMetaData []byte `json:"-" db:"meta_data"` // Additional information about the job [As Bytes] + MetaData map[string]string `json:"metaData"` // Additional information about the job } // Non-Swaggered Comment: Job