Difference between revisions of "Storage Manager"

From Grid5000
Jump to: navigation, search
Line 61: Line 61:
 
To delete an access you specify it's identifier, for instance:
 
To delete an access you specify it's identifier, for instance:
 
  curl -X DELETE https://api.grid5000.fr/stable/sites/<code class="replace">nancy</code>/storage/home/<code class="replace">jpicard</code>/access/<code class="replace">G5k-home_jpicard_u_1535456240_1</code>
 
  curl -X DELETE https://api.grid5000.fr/stable/sites/<code class="replace">nancy</code>/storage/home/<code class="replace">jpicard</code>/access/<code class="replace">G5k-home_jpicard_u_1535456240_1</code>
 
  
 
== API Specification: ==
 
== API Specification: ==

Revision as of 08:38, 29 August 2018

The Storage API is used to allow NFS access across machines on Grid'5000. This page focus on accessing user home directories.

How it works

The storage API works with access object. An access specify a list of IP and a termination condition for a specific location on a NFS Server. In this page, we will focus on sharing the user home. Each user home is located on /export/home/username on the NFS server of each site : nfs.site.grid5000.fr

Each time you start a job, an access to your home on the local site is automatically create for all the assigned nodes. You may want to use this page if you want to allow additional addresses to access your home or if you want to access your home over-site. You will need to use the Grid'5000 API, the entry-point for the home of a user on a specific site is :

https://api.grid5000.fr/stable/sites/site/storage/home/username/access
Note.png Note

Only the home owner can interact with his or her accesses, so you need to be authenticated. It's done automatically on the frontend.

Usage

We will assume we want to work with the home of user jpicard on nancy, so the storage API entry-point will be:

https://api.grid5000.fr/stable/sites/nancy/storage/home/jpicard/access

Create access

Accesses creation is done by sending POST to the API. If we want to create an access to the nancy home of user jpicard to IP addresses 172.16.72.1 and 172.16.72.25

We need a termination condition, it can be a specific date or a job termination.

If we want to use a specific time (for example 2018-12-25 19:38), we send the following request to the Storage API:

 curl -X POST 'https://api.grid5000.fr/stable/sites/nancy/storage/home/jpicard/access' -H "Content-Type: application/json" -d '{"ipv4": ["172.16.72.1", "172.16.72.25"], "termination" : {"until":"2018-12-25 19:38"}}'

If we want to use a job termination, for example the job 4548 of grenoble:

 curl -X POST 'https://api.grid5000.fr/stable/sites/nancy/storage/home/jpicard/access' -H "Content-Type: application/json" -d '{"ipv4": ["172.16.72.1", "172.16.72.25"], "termination" : {"job": 4548, "site": "grenoble"}}
Warning.png Warning

The access is create immediately and until the termination of the job, even if the job has not yet started.

After that, you should be able to mount the home where you want:

Terminal.png node:
mount nfs.nancy.grid5000.fr:/home/jpicard /mnt/


Note.png Note

debian9-x64-std,debian9-x64-big and debian9-x64-nfs use autofs for the homes of the local NFS server. So cd /home/jpicard/ will automount the home of jpicard if you have the right

List access

To list all access, you should do:

 curl https://api.grid5000.fr/stable/sites/nancy/storage/home/jpicard/access

You get a list of accesses:

 {
   "G5k-home_jpicard_j_1666466-nancy_1": {
     "ipv4": [
       "172.16.64.97"
     ],
     "termination": {
       "job": 1666466,
       "site": "nancy"
     }
   },
   "G5k-home_jpicard_u_1535456240_1": {
     "ipv4": [
       "172.16.64.16"
     ],
     "termination": {
       "until": 1535456240,
     }
   }
 }

You can also ask for a specific access by providing its identifier, for instance :

 curl https://api.grid5000.fr/stable/sites/nancy/storage/home/jpicard/access/G5k-home_jpicard_u_1535456240_1

Delete an access

Accesses deletion is done by sending DELETE to the API. To delete an access you specify it's identifier, for instance:

curl -X DELETE https://api.grid5000.fr/stable/sites/nancy/storage/home/jpicard/access/G5k-home_jpicard_u_1535456240_1

API Specification:

GET /stable/sites/site/storage/home/username/access

fetch a list of access.

GET /stable/sites/site/storage/home/username/access/access_id

fetch information of a specific access

DELETE /stable/sites/site/storage/home/username/access/access_id

delete a specific access

DELETE /stable/sites/site/storage/home/username/access/?job=job_id&site=job_site

delete all access link to job job_id of site job_site

POST /stable/sites/site/storage/home/username/access

Create new access. The payload must be in JSON format, and contains the following mandatory properties:

Parameter Type Description & Examples
ipv4 Mandatory Array of ipv4 allowed to access NFS
  ["172.16.72.1",
   "172.16.72.25"]
termination Mandatory Termination condition can be of two types "Until" or "Job". The form is a structure/hash.

Until termination takes a date as an until parameter. The access will be deleted after the specify date. eg:

  {"until" : "2018-12-25 19:38"}

Job terminations takes two parameters, job and site, which are respectively the id and the site of a Grid'5000 job. When the job end, the export is deleted. eg:

  {"job": "4548, "site":"nancy"}