Home
Softono

Python Ecsclient

Open source Python
19
Stars
22
Forks
20
Issues
47
Watchers
3 years
Last Commit

 About Python Ecsclient

Python library for interacting with the Dell ECS Management API

Platforms

Web Self-hosted

Languages

Python

Links

Need Help Installing Python Ecsclient?

We provide expert installation service for this software. Our team will install, configure, and secure Python Ecsclient on your server. plans start at just $30.

Python Ecsclient

View on GitHub

================ python-ecsclient

|Build_Status| |Docs| |Python| |Version| |Coverage|

This library is the Python Software Development Kit (SDK) for Dell EMC ECS <https://www.emc.com/en-us/storage/ecs/index.htm>. It allows developers to interact with the ECS Management API. You can find the ECS API specification here <https://www.emc.com/techpubs/api/ecs/v3-0-0-0/index.htm>.

This library is the successor of ECS Minion <https://github.com/chadlung/ecsminion>_.

.. |Build_Status| image:: https://travis-ci.org/EMCECS/python-ecsclient.svg?branch=master :target: https://travis-ci.org/EMCECS/python-ecsclient :alt: Build Status .. |Docs| image:: https://readthedocs.org/projects/python-ecsclient/badge/?version=latest&style=flat :target: https://python-ecsclient.readthedocs.io/en/latest/ :alt: Read the docs .. |Version| image:: https://img.shields.io/pypi/v/python-ecsclient.svg :target: https://pypi.python.org/pypi/python-ecsclient/ :alt: Version .. |Python| image:: https://img.shields.io/pypi/pyversions/python-ecsclient.svg :target: https://pypi.python.org/pypi/python-ecsclient/ :alt: Python Versions .. |Coverage| image:: https://coveralls.io/repos/github/EMCECS/python-ecsclient/badge.svg?branch=master :target: https://coveralls.io/github/EMCECS/python-ecsclient?branch=master :alt: Coverage .. |License| image:: http://img.shields.io/pypi/l/python-ecsclient.svg?style=flat :target: https://github.com/EMCECS/python-ecsclient/blob/master/LICENSE :alt: License .. _documentation: https://python-ecsclient.readthedocs.io/en/latest/ .. _v2: https://www.emc.com/techpubs/api/ecs/v2-2-1-0/index.htm .. _v3: https://www.emc.com/techpubs/api/ecs/v3-0-0-0/index.htm

Quick Start

You can install python-ecsclient using pip.

.. code-block:: sh

$ pip install python-ecsclient

Creating an instance of the ECSClient class allows the following arguments:

+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | Name | Required | Default Value | Description | +=======================+============+========================+===============================================================================================================================================+ | version | Yes | None | Version of the target ECS system. Options are 2, 3 and 4 | +-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | username | No | None | The username used to fetch the ECS token | +-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | password | No | None | The password used to fetch the ECS token | +-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | token | No | None | Pass a token to ECSClient (username/password are ignored then) | +-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | ecs_endpoint | Yes | None | The ECS API endpoint, ex: https://192.168.0.149:4443 | +-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | token_endpoint | No | None | The ECS API endpoint, ex: https://192.168.0.149:4443/login | +-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | verify_ssl | No | False | Whether to check a host's SSL certificate | +-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | token_path | No | /tmp/ecsclient.tkn | The location to store the temporary token file | +-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | request_timeout | No | 15.0 | Stop waiting for a response after a given number of seconds, this is a decimal value. Ex: 10.0 is ten seconds | +-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | cache_token | No | True | Whether to cache the token, by default this is true you should only switch this to false when you want to directly fetch a token for a user | +-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | override_header | No | None | Add X-EMC-Override header with the header value in API request only if it is not None | +-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ This is how you can instantiate the Client class and use the library.

.. code-block:: python

from ecsclient.client import Client

client = Client('3',
                username='ecsadmin@internal',
                password='PASSWORD',
                token_endpoint='https://192.168.0.149:4443/login',
                ecs_endpoint='https://192.168.0.149:4443')

print(client.user_info.whoami())

Take a look at our documentation_ to find a list of all supported ECS endpoints and services.

Supply a token

You can pass an authentication token directly to the client which means you
don't need to supply a username/password.

.. code-block:: python

    client = Client('3',
                    token='ALAcbGZtbjh6eVB3eUF1TzFEZWNmc0M2VVl2QjBVPQM',
                    ecs_endpoint='https://192.168.1.146:4443')


Token caching
~~~~~~~~~~~~~
By default, the client caches the auth token. But you can disable caching
by setting the ``cache_token`` parameter to false.

.. code-block:: python

    client = Client('3',
                    username='someone',
                    password='password',
                    token_endpoint='https://192.168.1.146:4443/login',
                    ecs_endpoint='https://192.168.1.146:4443',
                    cache_token=False)

Alternatively, when token caching is enabled, you may want to force the client
to obtain a new token on the next call. To do so, you can remove the cached token.

.. code-block:: python

    client.remove_cached_token()

Add X-EMC-Override: "true" header

You can pass override_header to the client which means the user wants to add custom X-EMC-Override header into API request

.. code-block:: python

client = Client('3',
                username='someone',
                password='password',
                token_endpoint='https://192.168.1.146:4443/login',
                ecs_endpoint='https://192.168.1.146:4443',
                override_header='true')

Supported endpoints

The following table shows the supported endpoints per API version.

+--------------------------+---------+---------+---------+ | | v2_ | v3_ | v4_ | +==========================+=========+=========+=========+ | Configuration | +--------------------------+---------+---------+---------+ | Certificate | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Configuration Properties | ✓* | ✓* | ✓* | +--------------------------+---------+---------+---------+ | Licensing | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Feature | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Syslog | | ✓* | ✓* | +--------------------------+---------+---------+---------+ | Snmp | | ✓* | ✓* | +--------------------------+---------+---------+---------+ | CAS | +--------------------------+---------+---------+---------+ | CAS User Profile | ✓* | ✓* | ✓* | +--------------------------+---------+---------+---------+ | File System Access | +--------------------------+---------+---------+---------+ | NFS | ✗ | ✗ | ✗ | +--------------------------+---------+---------+---------+ | Metering | +--------------------------+---------+---------+---------+ | Billing | ~ | ~ | ~ | +--------------------------+---------+---------+---------+ | Migration | +--------------------------+---------+---------+---------+ | Transformation | ✗ | ✗ | ✗ | +--------------------------+---------+---------+---------+ | Monitoring | +--------------------------+---------+---------+---------+ | Capacity | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Dashboard | ✓* | ✓* | ✓* | +--------------------------+---------+---------+---------+ | Events | ✓* | ✓* | ✓* | +--------------------------+---------+---------+---------+ | Alerts | ✓* | ✓* | ✓* | +--------------------------+---------+---------+---------+ | Multi-tenancy | +--------------------------+---------+---------+---------+ | Namespace | ✓* | ✓* | ✓* | +--------------------------+---------+---------+---------+ | Tenant(Flex) | ✗ | ✗ | ✓* | +--------------------------+---------+---------+---------+ | Geo-Replication | +--------------------------+---------+---------+---------+ | Replication Group | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Temporary Failed Zone | ✓* | ✓* | ✓* | +--------------------------+---------+---------+---------+ | Provisioning | +--------------------------+---------+---------+---------+ | Base URL | ✓* | ✓* | ✓* | +--------------------------+---------+---------+---------+ | Bucket | ✓* | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Data Store | ✓* | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Node | ~ | ~ | ~ | +--------------------------+---------+---------+---------+ | Storage Pool | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Virtual Data Center | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | VDC Keystore | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Support | +--------------------------+---------+---------+---------+ | Call Home | ✗ | ✗ | ✗ | +--------------------------+---------+---------+---------+ | User Management | +--------------------------+---------+---------+---------+ | Authentication Provider | ~ | ~ | ~ | +--------------------------+---------+---------+---------+ | Password Group (Swift) | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Secret Key | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Secret Key Self-Service | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | User (Object) | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+ | User (Management) | ✓* | ✓ | ✓ | +--------------------------+---------+---------+---------+ | Other | +--------------------------+---------+---------+---------+ | Who am I | ✓ | ✓ | ✓ | +--------------------------+---------+---------+---------+

Legend:

+-------+-------------------------------------+ | ✓ | Supported and tested | +-------+-------------------------------------+ | ✓* | Supported but not tested yet | +-------+-------------------------------------+ | ~ | Partially supported | +-------+-------------------------------------+ | ✗ | Not supported yet | +-------+-------------------------------------+ | | Not available in this API version | +-------+-------------------------------------+

Development

Getting Started

Assuming that you have Python and ``virtualenv`` installed, set up your
environment and install the required dependencies like this instead of
the ``pip install python-ecsclient`` defined above:

.. code-block:: sh

    $ git clone https://github.com/EMCECS/python-ecsclient.git
    $ cd python-ecsclient
    $ virtualenv venv
    ...
    $ . venv/bin/activate
    $ pip install -r requirements.txt

Running Tests
~~~~~~~~~~~~~
You can run tests in all supported Python versions using ``tox``. By default,
it will run all of the unit tests, but you can also specify your own
``nosetests`` options. Note that this requires that you have all supported
versions of Python installed, otherwise you must pass ``-e`` or run the
``nosetests`` command directly:

.. code-block:: sh

    $ tox
    $ tox -e py27,py35 tests/functional

You can also run individual tests with your default Python version:

.. code-block:: sh

    $ nosetests tests/unit

License
-------

This software library is released to you under the Apache License 2.0. See
`LICENSE <https://github.com/EMCECS/python-ecsclient/blob/master/LICENSE>`__
for more information.

----------

`ECS <https://www.emc.com>`__ is an Dell EMC product,
trademarked, copyrighted, etc.