Elastifile REST API using Python

This article is for those who are interesting on working with python to run REST API commands against the Elastifile system.

In the code below you can find a general process and some functions.
In addition to that, there is a description of each function in the comments.

You always can refer to 'REST API Docs' for more details under the following link from your Elastifile web interface:

In addition, refer to the API guides in the Elastifile documentation.

#! /usr/bin/python
import requests, json, time
from requests.packages.urllib3.exceptions import InsecureRequestWarning


user = 'admin'
password = 'changeme'

SECURITY_PREFIX = b')]}\',\n'
login = {'user': {'login': user, 'password': password}}
headers = {'Content-type': 'application/json'}

ems_ip = ''
dc_name = 'api'
size ='1000' #GB

size= int(size)*1024*1024*1024

# Creating a session against the Elastifile Management Server
response = requests.post ('https://{}/api/sessions'.format(ems_ip), data=json.dumps(login), headers=headers, timeout=10, verify=False)
cookies= response.cookies

# Creating a new data container
dc_payload = {'name':dc_name, 'soft_quota':size, 'hard_quota':size, 'policy_id':'1', 'dir_permissions':'755'}
new_dc = requests.post ('https://{}/api/data_containers'.format (ems_ip), data=json.dumps(dc_payload), headers=headers, timeout=10, cookies=cookies, verify= False)
new_dc_output = json.loads(new_dc.content[len(SECURITY_PREFIX):])

# Creating a new export to the data container
export_payload = {'name':'root', 'path':'/', 'user_mapping':'remap_all', 'data_container_id':new_dc_output['id'], 'uid':'0', 'gid':'0'}
new_export = requests.post ('https://{}/api/exports'.format(ems_ip), data=json.dumps(export_payload), headers=headers, timeout=10, cookies=cookies, verify= False)

# Listing the data containers in the system
r = requests.get ('https://{}/api/data_containers'.format(ems_ip), cookies=cookies, verify= False)
content= r.content

data_containers = json.loads(content[len(SECURITY_PREFIX):])
for dc in range(0,len(data_containers)):
    print (str(data_containers[dc]['name']))

Snir is the author of this solution article.

Did you find it helpful? Yes No

Send feedback
Sorry we couldn't be helpful. Help us improve this article with your feedback.