Skip to content

equinor/radix-job-scheduler

Repository files navigation

Build status

Radix Job Scheduler

The job scheduler server for application jobs

Usage

Request from application container URLs

  • POST http://<job-name>:8080/api/v1/jobs - start a new job
  • GET http://<job-name>:8080/api/v1/jobs - get a job list
  • GET http://<job-name>:8080/api/v1/jobs/<job-name> - get a job status
  • DELETE http://<job-name>:8080/api/v1/jobs/<job-name> - delete a job
  • POST http://<job-name>:8080/api/v1/jobs/<batch-name>/stop - stop a batch
  • POST http://<job-name>:8080/api/v1/batches - start a new batch
  • GET http://<job-name>:8080/api/v1/batches - get a batch list
  • GET http://<job-name>:8080/api/v1/batches/<batch-name> - get a batch status
  • DELETE http://<job-name>:8080/api/v1/batches/<batch-name> - delete a batch
  • POST http://<job-name>:8080/api/v1/batches/<batch-name>/stop - stop a batch
  • POST http://<job-name>:8080/api/v1/batches/<batch-name>/jobs/<job-name>/stop - stop a batch job

Developing

You need Go installed. Make sure GOPATH and GOROOT are properly set up.

Clone the repo into your GOPATH and run go mod download.

Also needed:

  • go-swagger (on a Mac, you can install it with Homebrew: brew install go-swagger)
  • statik (install with go get github.com/rakyll/statik)

Clone the repo into your GOPATH and run go mod download.

Update version

We follow the semantic version as recommended by go. radix-job-scheduler has three places to set version

  • apiVersionRoute in router/server.go and BasePathin docs/docs.go - API version, used in API's URL

  • Version in docs/docs.go - indicates changes in radix-job-scheduler logic - to see (e.g in swagger), that the version in the environment corresponds with what you wanted

    Run following command to update version in swagger.json

    make swagger
    
  • If generated file swagger.json is changed (methods or structures) - copy it to the public site

Custom configuration

By default Info and Error messages are logged. This can be configured via environment variable LOG_LEVEL (pods need to be restarted after changes)

  • LOG_LEVEL=ERROR - log only Error messages
  • LOG_LEVEL=INFO or not set - log Info and Error messages
  • LOG_LEVEL=WARNING or not set - log Info, Warning and Error messages
  • LOG_LEVEL=DEBUG - log Debug, Warning, Info and Error messages

By default swagger UI is not available. This can be configured via environment variable USE_SWAGGER

  • USE_SWAGGER=true - allows to use swagger UI with URL <api-endpoint>/swaggerui

Generating mocks

We use gomock to generate mocks used in unit test. https://github.com/golang/mock

You need to regenerate mocks if you make changes to any of the interfaces in the code, e.g. the job Handler interface

Run make mock to regenerate mocks

Update version

We follow the semantic version as recommended by go.

  • tag in git repository (in main branch)

    Run following command to set tag (with corresponding version)

    git tag v1.0.0 
    git push origin v1.0.0
    

Contribution

Want to contribute? Read our contributing guidelines

Security

This is how we handle security issues