Python library that provides convenient way to interact with ScaleIO REST API.
- Supported ScaleIO versions: 2.0
- Supported Python versions: 2.6, 2.7, 3.4, 3.5
Library is under development!
Currently supported:
- Simple API client with base methods according to ScaleIO documentation
- ORM-like models (StoragePool, Volume, etc.)
- Scheme validation for API responses
TODO:
- HATEOAS links processing
Install via pip:
$ pip install pyscaleio
Install as RPM package using yum or dnf on Fedora/RHEL/CentOS:
$ dnf copr enable miushanov/pyscaleio
$ dnf install python-scaleio
Create and register API client:
import pyscaleio # create API client client = pyscaleio.ScaleIOClient.from_args("gateway_address", "admin", "password") # register it for using in models pyscaleio.add_client(client)
Find and modify resources:
# get all volumes in cluster volumes = pyscaleio.Volume.all() assert len(volumes) == 1 # or, get volume by specified id volume = pyscaleio.Volume.one_by_name("test_volume") # and access some volume attributes assert volume.name == "test_volume" assert volume.size == 8 * constants.GIGABYTE # or, resize it to new size volume.resize(16) volume.update() # updates model data assert volume.size == 16 * constants.GIGABYTE
Create or delete resources:
# create new volume in storage pool volume = pyscaleio.Volume.create(16, "storage_pool_id", "new_volume") assert volume.name == "new_volume" assert volume.size == 16 * constants.GIGABYTE # delete volume volume = pyscaleio.Volume.one_by_name("test_volume") volume.delete()
Tune client and models options:
pyscaleio.configure( # retries count for each request request_retries=0, # network timeout for requests network_timeout=30, # name of exported volume (according to udev/rules.d) volume_name="emc-2{system_id}{volume_id}", # prefix of exported volume volume_prefix="/dev/disk/by-id") volume = pyscaleio.Volume.one_by_name("test_volume") assert volume.path == "/dev/disk/by-id/emc-27947a0127a79ce60ca29f20950000008"