Skip to content
Snippets Groups Projects
Select Git revision
  • d8bcc6c4de01e4e7168f97861cfae11e7f9d4c90
  • master default
2 results

scs_api.server_public.md

Blame
  • user avatar
    scs-ror authored
    d8bcc6c4
    History
    scs_api.server_public.md 15.11 KiB

    API Documentation

    Implements API for IT4I SCS Information System.

    There is a PyPI package which provides a simple user-friendly shell interface to call API requests and display their response. The package is available on https://pypi.org/project/it4i.portal.clients

    The number of requests you may make to IT4I API is limited. The rate limit can be changed without prior notice at any time, but the default is 6 requests per minute. Exceeding the limit will lead to your IP address being temporarily blocked from making further requests. The block will automatically be lifted by waiting an hour.

    • api revision: 12139689 / 2020-05-18 09:49:37 +0200

    • api version: 0.9-242-g1213968

    • apidoc building date: 2020-05-18 07:51:46 +0000

    Summary

    Resource

    Operation

    Description

    check-access

    POST /api/v1/check-access

    Access check to queue

    dedicated-time

    GET /api/v1/dedicated-time/(cluster_type)

    HPC dedicated time

    dedicated-time-calendar

    GET /api/v1/dedicated-time-calendar

    Dedicated time calendar

    fs-usage

    POST /api/v1/fs-usage

    Show filesystem usage

    it4ifree

    POST /api/v1/it4ifree/(login)

    Free account resources

    motd

    GET /api/v1/motd/(category)

    SCS messages of the day

    ping

    GET /api/v1/ping

    Connection test

    version

    GET /api/v1/version

    API version

    API Details

    POST /api/v1/check-access

    A service to check if an account and/or related project has an access to a specified queue.

    Terminal implementation is available at it4icheckaccess

    Request JSON Object

    • login (string) – account id

    • queue (string) – queue id

    • pid (string) – project id, not required if querying a projectless queue

    Status Codes

    Example request:

    curl -i -H "Content-Type:application/json" -X POST \
      --data '{"pid":"DD-13-5","login":"johnsm","queue":"qfat"}' \
      https://scs.it4i.cz/api/v1/check-access

    Example response:

    HTTP/1.1 200 OK
    Content-Type: application/json
    
      "OK Access granted for regular queue."

    GET /api/v1/dedicated-time-calendar

    A service with a public dedicated time calendar.

    GET /api/v1/dedicated-time/(cluster_type)

    Returns a list of times dedicated for HPC maintenance. It is not possible to use HPC services during maintenance.

    Terminal implementation is available at it4idedicatedtime

    Query Parameters

    • all – returns all dedicated times for all clusters

    • salomon – returns all times just for the Salomon cluster

    • anselm – returns all times just for the Anselm cluster

    • barbora – returns all times just for the Barbora cluster

    • dgx – returns all times just for the DGX-2 cluster

    • active – returns dedicated times for all clusters which are now active

    • planned – returns dedicated times for all clusters which are now active or scheduled in the future

    Response JSON Object

    • cluster_type (string) – cluster id

    • dateEfficiency (string) – maintenance start date

    • dateExpiration (string) – maintenance end date

    • updated_at (string) – date of the list’s last update

    Status Codes

    Example request:

    curl -i https://scs.it4i.cz/api/v1/dedicated-time/all

    Example response:

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    [
      {
        "cluster_type": "salomon",
        "dateEfficiency": "2017-11-21 09:45:00",
        "dateExpiration": "2017-11-21 23:59:00",
        "updated_at": "2017-11-21 09:45:00"
      }
    ]

    POST /api/v1/fs-usage

    A service to show filesystem usage.

    Terminal implementation is available at it4ifsusage

    Request JSON Object

    • login (string) – account id

    • it4ifreetoken (string) – token

    • cluster (string) – cluster id or ‘all’

    Response JSON Object

    • cluster (string) – cluster id or ‘all’

    • fs (string) – filesystem name

    • hard_quota_files (int) – file number quota

    • hard_quota_space (int) – space quota (in Kb)

    • ldapuser (string) – user id

    • updated_at (string) – date of last update

    • usage_files (int) – number of files created

    • usage_space (int) – amount of space used

    Status Codes

    Example request:

    curl -i -H "Content-Type:application/json" -X POST \
      --data '{"login":"johnsm", "it4ifreetoken": "abc","cluster":"all"}' \
      https://scs.it4i.cz/api/v1/fs-usage

    Example response:

    HTTP/1.1 200 OK
    Content-Type: application/json
    
      [
        {
          "cluster": "anselm",
          "fs": "/home",
          "hard_quota_files": 500000,
          "hard_quota_space": 250000000,
          "ldapuser": "johnsm",
          "updated_at": "2019-03-11 13:25:16",
          "usage_files": 19,
          "usage_space": 2620
        }
      ]

    POST /api/v1/it4ifree/(login)

    A service to check resources of the projects on which the account participates. If the calculation runs on 1 cpu core for 1 hour, it consumes 1 core-hour from the project’s resources. However, some calculations (or their placement) can be cheaper. Actual consumed core-hours are reduced by a cheaping factor and then deducted from the project’s resources. See link for more details about so-called normalized core-hours. The json response contains two parts:

    • me – data from projects, where the account has access
    • me_as_pi – data from projects, where the account is PI (primary investigator)

    Terminal implementation is available at it4ifree

    Request JSON Object

    • login (string) – account id

    • it4ifreetoken (string) – token

    Response JSON Object

    • login (string) – account id

    • pi_login (string) – PI account id

    • pid (string) – project id

    • type (string) – project type, S for standard, M-1, M-2, M-3, M-4 for multiyear project in particular period

    • days_left (string) – days to the end of project, or inactive, expired, forthcoming, upcoming, unlimited

    • free (int) – free core-hours which can still be consumed

    • total (int) – total core-hours assigned to the project

    • used (int) – actual consumed core-hours

    • used_with_factor (int) – consumed normalized core-hours

    • used_by_me (int) – core-hours consumed by the account

    • used_by_me_with_factor (int) – normalized core-hours consumed by the account

    • corehours (int) – core-hours consumed by the account

    • core_hours_with_factor (int) – normalized core-hours consumed by the account

    Status Codes

    Example request:

    curl -i -H "Content-Type:application/json" -X POST \
      --data '{"login":"johnsm", "it4ifreetoken": "abc"}' \
      https://scs.it4i.cz/api/v1/it4ifree/johnsm

    Example response:

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
      "me": [
        {
          "days_left": "---",
          "free": 17124,
          "login": "johnsm",
          "pid": "DD-13-6",
          "total": 100000,
          "type": "S",
          "used": 82876,
          "used_by_me": 0,
          "used_by_me_with_factor": 0,
          "used_with_factor":82876
        },
        {
          "days_left": "---",
          "free": 0,
          "login": "johnsm",
          "pid": "DD-14-12",
          "total": 1000,
          "used": 8641,
          "type": "S",
          "used_by_me": 0,
          "used_by_me_with_factor": 0,
          "used_with_factor": 8641
        }
      ],
      "me_as_pi": [
        {
          "core_hours": 82876,
          "core_hours_with_factor": 82876,
          "login":"abc",
          "pi_login": "johnsm",
          "pid": "DD-13-6",
          "type": "S"
        },
        {
          "core_hours": 0,
          "core_hours_with_factor": 0,
          "login": "johnsm",
          "pi_login": "johnsm",
          "pid":"DD-13-6",
          "type": "S"
        },
        {
          "core_hours": 0,
          "core_hours_with_factor": 0,
          "login": "johnsm",
          "pi_login": "johnsm",
          "pid":"DD-1-1",
          "type": "M-1"
        }
      ]
    }

    GET /api/v1/motd/(category)

    Returns SCS messages of the day.

    Terminal implementation is available at it4imotd

    Query Parameters

    • notice – returns only notice messages

    • important – returns only important messages

    • all – returns all messages

    Response JSON Object

    • author (string) – author of the message

    • category (string) – message category

    • created_at (string) – creation date

    • dateEfficiency (string) – effective date

    • dateExpiration (string) – expiration date

    • dateModification (string) – date the message was modified

    • deleted_at (string) –

    • id (string) – message id

    • messageBody (string) – the text of the message

    • state (string) –

    • title (string) – the title of the message

    • typeMotd (string) –

    • updated_at (string) – date of the list’s last update

    Status Codes

    Example request:

    curl -i https://scs.it4i.cz/api/v1/motd/notice

    Example response:

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    [
      {
        "author": "svi47",
        "category": "notice",
        "created_at": "2017-10-12 11:44:51",
        "dateEfficiency": "2017-10-12 11:41:00",
        "dateExpiration": "2017-11-28 14:30:00",
        "dateModification": "2017-10-12 13:44:51",
        "deleted_at": null,
        "id": 169,
        "messageBody": "For more information about the course,
          please visit its web page: https://goo.gl/cvFsFH",
        "state": null,
        "title": "Invitation to the Course Productivity Tools
          for High Performance Computing (2017-11-27 to 2017-11-28)",
        "typeMotd": null,
        "updated_at": "2017-10-12 11:44:51"
      }
    ]

    GET /api/v1/ping

    A service for testing connection to API.

    Response JSON Object

    • message (string) – reply message ‘pong’

    Status Codes

    Example request:

    curl -i https://scs.it4i.cz/api/v1/ping

    Example response:

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
       "message": "pong"
    }

    GET /api/v1/version

    Returns basic information about the API.

    Response JSON Object

    • hostname (string) – system hostname

    • revision (string) – API revision / build time

    • version (string) – API version

    Status Codes

    Example request:

    curl -i https://scs.it4i.cz/api/v1/version

    Example response:

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
       "hostname": "scs.it4i.cz",
       "revision": "ceac8aa / 2017-11-01 12:25:27 +0100",
       "version": "0.8.2-34-gceac8aa"
    }