Metadata-Version: 2.0
Name: solidfire-sdk-python
Version: 1.0.0.104
Summary: SolidFire Python SDK
Home-page: https://github.com/solidfire/solidfire-sdk-python
Author: Jason Ryan Womack
Author-email: jason.womack@netapp.com
License: Apache2
Keywords: solidfire nas iscsi fibre channel storage api sdk
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Operating System :: OS Independent
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
Classifier: Topic :: Utilities
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Requires-Dist: pycurl (>=7.19.0)
Requires-Dist: future (>=0.15.2)
Requires-Dist: sphinx-rtd-theme
Provides-Extra: dev
Requires-Dist: check-manifest; extra == 'dev'
Provides-Extra: docs
Requires-Dist: Sphinx (>=1.3.5); extra == 'docs'
Requires-Dist: sphinx-rtd-theme (>=0.1.9); extra == 'docs'
Provides-Extra: release
Requires-Dist: twine (>=1.6.5); extra == 'release'
Provides-Extra: test
Requires-Dist: coverage; extra == 'test'
Requires-Dist: pyhamcrest (>=1.8.5); extra == 'test'
Requires-Dist: pytest (>=2.8.7); extra == 'test'
Requires-Dist: pytest-flake8 (>=0.1); extra == 'test'

SolidFire Element API Python SDK
================================

.. image:: https://raw.githubusercontent.com/solidfire/solidfire-sdk-python/gh-pages/_static/PythonSDK-58x58.png 


Python SDK library for interacting with the SolidFire Element API.

Minimum versions:

* Python 2: 2.7+
* Python 3: 3.3+

Dependencies
------------
**PycURL**

The Solidfire Python SDK depends on the PycURL library which depends on an installed SSL library.  If the installation fails due to PycURL, this is most likely due to a missing SSL dependency. OpenSSL is the recomended SSL backend for all linux flavors.

The following are instructions are required before installing the Solidfire SDK.  Instructions are Python 2.7 specific with examples of Python 3.3+ examples in the comments.

**Ubuntu Pre-Installation Steps**::

    sudo apt-get install python-pip                                  # or python3-pip
    sudo apt-get install libffi-dev libssl-dev libcurl4-openssl-dev
    sudo apt-get install python-dev                                  # or python3.3-dev python3.4-dev python3.5-dev
    pip install pyopenssl ndg-httpsclient pyasn1                     # use the correct version of pip (i.e. pip3.3)

**RHEL/CentOS Pre-Installation Steps**::

    yum install epel-release
    yum groupinstall 'Development Tools'
    yum -y install python-setuptools python-pip python-wheel         # or python3-setuptools python3-pip python3-wheel
    yum -y install libffi-devel openssl-devel libcurl
    yum -y install python-devel                                      # or python3.3-devel python3.4-devel python3.5-devel 
    pip install pyopenssl ndg-httpsclient pyasn1                     # use the correct version of pip (i.e. pip3.3)

Installation
============
To install globally with `pip` (requires pip 1.3 or greater installed globally)::

    pip install solidfire-sdk-python

**From Source**
---------------
*Note*: It is recommended using virtualenv <https://github.com/pypa/virtualenv> for isolating the python environment to only the required libraries.

To install the latest version of the SDK::

    pip install -e git+https://github.com/solidfire/solidfire-sdk-python.git@release/1.0.0#egg=solidfire-sdk-python

Alternatively, for development purposes or to inspect the source, the following will work::

    git clone git@github.com:solidfire/solidfire-sdk-python.git  
    cd solidfire-sdk-python  
    git checkout release/1.0.0
    pip install -e ".[dev, test, docs, release]"
    python setup.py install

Then append the location of this directory to the `PYTHONPATH` environment
variable to use the SDK in other python scripts::

    export PYTHONPATH=$PYTHONPATH:/path/to/sf-python-sdk/

That's it -- you are ready to start interacting with your SolidFire cluster using Python!

**How To Use**
--------------
Using the SolidFire Element API Python SDK is very straightforward.
Just import the module, instantiate an instance of the `solidfire.Element` class, give it admin authentication 
credentials, and start asking the SolidFire Element API for data.

*Note*: The parameter *verify_ssl=False* is useful when connecting to an IP or when ssl errors are causing the connection to fail.

**Example**::

    >>> from solidfire import Element
    >>> sf = Element('<MVIP>', '<YOUR USERNAME>', '<YOUR PASSWORD>', '<API VERSION>', verify_ssl=False)
    >>> result = sf.list_active_volumes()
    >>> for volume in result.volumes:
    ...     print('{id}, ({name}): size={vol_size} - QoS(min={min_iops}, max={max_iops}, burst={burst_iops}, burst_time={burst_time})'.format(
    ...         id=volume.volume_id, name=volume.name,  vol_size=volume.total_size,
    ...         min_iops=volume.qos.min_iops, max_iops=volume.qos.max_iops, burst_iops=volume.qos.burst_iops, burst_time=volume.qos.burst_time)
    ...     )
    ...
    1, (VOLUME1): size=1000341504 - QoS(min=50, max=15000, burst=15000, burst_time=60)
    2, (VOLUME2): size=2000683008 - QoS(min=5000, max=15000, burst=30000, burst_time=60)
    3, (VOLUME3): size=1000341504 - QoS(min=50, max=15000, burst=15000, burst_time=60)
    4, (VOLUME4): size=2000683008 - QoS(min=50, max=15000, burst=15000, burst_time=60)

That is it! For a list of available methods (and a bit of documentation), run `help(Element)`.

**Logging**
-----------
To configure logging responses, execute the following::

    >>> import logging
    >>> from solidfire import common
    >>> common.setLogLevel(logging.DEBUG)

To access the logger for the Element instance::

    >>> from solidfire import common
    >>> common.log

**Timeouts**
------------
Connection timeout (useful for failing fast when a host becomes unreachable)::

    >>> from solidfire import Element
    >>> sf = Element('<MVIP>', '<YOUR USERNAME>', '<YOUR PASSWORD>', '<API VERSION>', verify_ssl=False)
    >>> sf.timeout(600)

Read timeout (useful for extending time for a service call to return)::

    >>> from solidfire import Element
    >>> sf = Element('<MVIP>', '<YOUR USERNAME>', '<YOUR PASSWORD>', '<API VERSION>', verify_ssl=False)
    >>> sf.read_timeout(600)

**License**
-----------
Copyright © 2016 NetApp, Inc.  All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

<http://www.apache.org/licenses/LICENSE-2.0>

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.


