Skip to content

gmmephisto/pyscaleio

Repository files navigation

pyscaleio

https://travis-ci.org/gmmephisto/pyscaleio.svg?branch=master https://coveralls.io/repos/github/gmmephisto/pyscaleio/badge.svg?branch=master

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!

Features

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

Installation

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

Usage

  • 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"