A Sneak Peek at Rescale's API

At Rescale, we’ve been quite busy lately with a few exciting features in the works. One of the items at the top of our customers’ wish list has been the ability to programmatically burst jobs onto the platform. To enable that, we’ve been working on making a public facing API.

Currently, our web service is a Django app, whose end points our Javascript client calls to create and monitor jobs. Fleshing out our internal data models and converting our existing Django views into a public facing RESTful API was quite an undertaking. We ended up using Django REST Framework for this purpose.

The Django REST Framework (DRF) is a powerful toolkit for Django. It provides a clear and easily extensible interface for handling serialization, deserialization, authentication, and routing for your API. DRF worked quite nicely with our multilevel relational model, and migrating our Django forms to DRF serializers was quite easy. In fact, using DRF made our code clearer and more concise because a lot of the features of its serializers and viewsets made our custom validation redundant.

Anatomy of a Rescale Job
Before going into the details of the API endpoints, let us first take a look at how a Rescale job is defined. A Rescale job is composed of two types of primary objects: job analyses and job variables. A job can contain one or more job variables. Job variables are input parameters that a user may specify to run a parameter sweep. Job analyses refers to the simulation software packages–or analysis code in Rescale terms–that you want to run for that job. Each job analysis object contains the analysis code, input command, hardware selection and the files associated with that particular job analysis. A job requires at least one job analysis in order to run.

JSON for an example job performing a ‘parameter sweep’  (sometimes referred to a Design of Experiments (DOE)) using a user uploaded binary “run_doe” would look like:

job_data = {
  'name':'DOE Test Job',
  'jobvariables':[
    {
      'name':'index',
      'variableType':'Param',
      'valueGeneratorType':'FixedRange',
      'valueGeneratorSettings':{
        'minvalue':1,
        'maxvalue':10,
        'increment':1
      }
    }
  ],
  'jobanalyses':[
    {
      'analysis':{
        'code':'user_included'
      },
      'command':'./run_doe',
      'hardware':{
        'coresPerSlot':1,
        'coreType':'standard'
      },
      'inputFiles':[
        {
          'id':'pCTmk'
        }
      ]
    }
  ]
}

API endpoints
You can use the API to upload files to the Rescale platform and then construct the JSON blob for the job. You can then create, submit, and monitor your job using the relevant API endpoints. While all of the API endpoints can be accessed over the web, we have built a python client which currently supports a reduced set of API calls as follows: upload_file download_file create_job submit_job get_status get_files. The API is currently in a private beta.

Interested in Getting a Token for Accessing the API?

Reach out to one of our experts will show you how Rescale can take your computing to the next level.

Similar Posts