Para probar el proyecto importa este workspace en Postman.
Resumen de funcionalidad disponible:
- /health
- / -> Indica si el servidor está en funcionamiento
- /load -> Indica la carga del servidor
- /api
- /addJob -> Añadir nuevo trabajo
- /status -> Obtener estado de todos los trabajos del usuario
- /status/:id -> Obtener estado del trabajo
id
del usuario
- /status/:id -> Obtener estado del trabajo
- /results/:id/:file -> Obtener archivo
file
del trabajoid
- /deleteJob/:id -> Eliminar trabajo de la cola de trabajos
- /auth
- /:user/:password -> Inicio de sesión con usuario y contraseña, devuelve un bearer token
response: <h1>Server is Running</h1>
Devuelve la carga del sistema durante los últimos 10 periodos (20 segundos). Lista ordenada en orden inverso según timestamp
- avgRateOfArrival -> Devuelve la cantidad de trabajos que se han añadido en el periodo.
- avgRateOfService -> Devuelve la cantidad de trabajos que han pasado de estado En espera a Lanzado
- avgRateOfFinished -> Devuelve la cantidad de trabajos que han pasado a estado Finalizado
- avgResponseTime --> Devuelve el tiempo medio de los trabajos terminados en el periodo.
headers:
Authorization: Bearer yourBearerToken
response: [
{
"avgRateOfArrival": number,
"avgRateOfService": number,
"avgRateOfFinished": number,
"avgResponseTime": number,
"timestamp": number
},
...
]
headers:
Authorization: Bearer yourBearerToken
body: {
"url": "https://username:[email protected]/SalvaChiLlo/jobCC.git",
"args": "Arguments for your executable ## This string will be appended to your executable",
"config": "Your custom config in JSON ## This content will be written to your root project folder on config.json"
}
response: {
"jobId": "yourJobId"
}
headers:
Authorization: Bearer yourBearerToken
response: [
{
"id": string,
"status": string,
"outputFiles": ["url://file1", "url://file2"]
},
{
"id": string,
"status": string,
"outputFiles": ["url://file1", "url://file2"]
},
...
]
headers:
Authorization: Bearer yourBearerToken
response: {
"id": string,
"status": string,
"outputFiles": ["url://file1", "url://file2"]
}
headers:
Authorization: Bearer yourBearerToken
response: File Download
headers:
Authorization: Bearer yourBearerToken
response:
`El trabajo ${jobId} ha sido eliminado.`
o
`El trabajo ${jobId} no existe o no te pertenece.`
response: {
"token": "yourBearerToken"
}
Cada trabajo necesita inicializar un proyecto npm porque necesitamos el archivo package.json para lanzarlo con npm run start
.
Esto no nos limita a solo lanzar proyectos Javascript/Typescript. Dentro del package.json, puedes definir cualquier comando a ejecutar. Por ejemplo:
# For a JS project you could start it as follows:
...
"scripts": {
"start": "node src/index.js",
...
}
...
# For a Rust project you could start it as follows:
...
"scripts": {
"start": "rustc main.rs && ./main.rs",
...
}
...
Como se explica en la definición de la API, si se pasa una configuración en la llamada a la API, esta, se escribirá en la carpeta raíz del proyecto como config.json.
Si el proyecto produce cualquier archivo de salida, tiene que ser escrito en el directorio de salida output en la raíz de tu proyecto. Todo lo que se guarde en esta carpeta será guardado en Minio para que así después se puedan obtener los resultados del trabajo.