{"id":23053954,"url":"https://github.com/emcecs/python-ecsclient","last_synced_at":"2025-07-28T16:08:26.679Z","repository":{"id":16523510,"uuid":"80103659","full_name":"EMCECS/python-ecsclient","owner":"EMCECS","description":"Python library for interacting with the Dell ECS Management API","archived":false,"fork":false,"pushed_at":"2023-04-02T14:57:06.000Z","size":269,"stargazers_count":18,"open_issues_count":20,"forks_count":21,"subscribers_count":48,"default_branch":"master","last_synced_at":"2025-06-24T12:44:48.183Z","etag":null,"topics":["dell-emc","object-storage","python","sdk"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EMCECS.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-26T10:07:17.000Z","updated_at":"2024-03-27T08:30:20.000Z","dependencies_parsed_at":"2024-06-21T17:51:43.867Z","dependency_job_id":"8e7ee9ee-9f18-407b-a450-8c17b83a265b","html_url":"https://github.com/EMCECS/python-ecsclient","commit_stats":{"total_commits":154,"total_committers":20,"mean_commits":7.7,"dds":0.5714285714285714,"last_synced_commit":"155fe98b0671dd98eb534becac757b2fc7b61f33"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/EMCECS/python-ecsclient","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMCECS%2Fpython-ecsclient","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMCECS%2Fpython-ecsclient/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMCECS%2Fpython-ecsclient/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMCECS%2Fpython-ecsclient/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EMCECS","download_url":"https://codeload.github.com/EMCECS/python-ecsclient/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EMCECS%2Fpython-ecsclient/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267543813,"owners_count":24104649,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dell-emc","object-storage","python","sdk"],"created_at":"2024-12-16T00:31:48.289Z","updated_at":"2025-07-28T16:08:26.571Z","avatar_url":"https://github.com/EMCECS.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"================\npython-ecsclient\n================\n\n|Build_Status| |Docs| |Python| |Version| |Coverage|\n\nThis library is the Python Software Development Kit (SDK) for `Dell EMC ECS\n\u003chttps://www.emc.com/en-us/storage/ecs/index.htm\u003e`_.\nIt allows developers to interact with the ECS Management API. You can find\nthe ECS API specification `here \u003chttps://www.emc.com/techpubs/api/ecs/v3-0-0-0/index.htm\u003e`_.\n\nThis library is the successor of `ECS Minion\n\u003chttps://github.com/chadlung/ecsminion\u003e`_.\n\n\n.. |Build_Status| image:: https://travis-ci.org/EMCECS/python-ecsclient.svg?branch=master\n    :target: https://travis-ci.org/EMCECS/python-ecsclient\n    :alt: Build Status\n.. |Docs| image:: https://readthedocs.org/projects/python-ecsclient/badge/?version=latest\u0026style=flat\n    :target: https://python-ecsclient.readthedocs.io/en/latest/\n    :alt: Read the docs\n.. |Version| image:: https://img.shields.io/pypi/v/python-ecsclient.svg\n    :target: https://pypi.python.org/pypi/python-ecsclient/\n    :alt: Version\n.. |Python| image:: https://img.shields.io/pypi/pyversions/python-ecsclient.svg\n    :target: https://pypi.python.org/pypi/python-ecsclient/\n    :alt: Python Versions\n.. |Coverage| image:: https://coveralls.io/repos/github/EMCECS/python-ecsclient/badge.svg?branch=master\n    :target: https://coveralls.io/github/EMCECS/python-ecsclient?branch=master\n    :alt: Coverage\n.. |License| image:: http://img.shields.io/pypi/l/python-ecsclient.svg?style=flat\n    :target: https://github.com/EMCECS/python-ecsclient/blob/master/LICENSE\n    :alt: License\n.. _`documentation`: https://python-ecsclient.readthedocs.io/en/latest/\n.. _`v2`: https://www.emc.com/techpubs/api/ecs/v2-2-1-0/index.htm\n.. _`v3`: https://www.emc.com/techpubs/api/ecs/v3-0-0-0/index.htm\n\nQuick Start\n-----------\n\nYou can install ``python-ecsclient`` using pip.\n\n.. code-block:: sh\n\n    $ pip install python-ecsclient\n\nCreating an instance of the ECSClient class allows the following\narguments:\n\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\n| Name                  | Required   | Default Value          | Description                                                                                                                                   |\n+=======================+============+========================+===============================================================================================================================================+\n| ``version``           | Yes        | None                   | Version of the target ECS system. Options are ``2``, ``3`` and ``4``                                                                          |\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\n| ``username``          | No         | None                   | The username used to fetch the ECS token                                                                                                      |\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\n| ``password``          | No         | None                   | The password used to fetch the ECS token                                                                                                      |\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\n| ``token``             | No         | None                   | Pass a token to ECSClient (username/password are ignored then)                                                                                |\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\n| ``ecs_endpoint``      | Yes        | None                   | The ECS API endpoint, ex: ``https://192.168.0.149:4443``                                                                                      |\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\n| ``token_endpoint``    | No         | None                   | The ECS API endpoint, ex: ``https://192.168.0.149:4443/login``                                                                                |\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\n| ``verify_ssl``        | No         | False                  | Whether to check a host's SSL certificate                                                                                                     |\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\n| ``token_path``        | No         | ``/tmp/ecsclient.tkn`` | The location to store the temporary token file                                                                                                |\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\n| ``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                                 |\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\n| ``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   |\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\n| ``override_header``   | No         | None                   | Add X-EMC-Override header with the header value in API request only if it is not None\n  |\n+-----------------------+------------+------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+\nThis is how you can instantiate the ``Client`` class and use the library.\n\n.. code-block:: python\n\n    from ecsclient.client import Client\n\n    client = Client('3',\n                    username='ecsadmin@internal',\n                    password='PASSWORD',\n                    token_endpoint='https://192.168.0.149:4443/login',\n                    ecs_endpoint='https://192.168.0.149:4443')\n\n    print(client.user_info.whoami())\n\nTake a look at our `documentation`_ to find a list of all supported ECS endpoints and services.\n\nSupply a token\n~~~~~~~~~~~~~~\nYou can pass an authentication token directly to the client which means you\ndon't need to supply a username/password.\n\n.. code-block:: python\n\n    client = Client('3',\n                    token='ALAcbGZtbjh6eVB3eUF1TzFEZWNmc0M2VVl2QjBVPQM',\n                    ecs_endpoint='https://192.168.1.146:4443')\n\n\nToken caching\n~~~~~~~~~~~~~\nBy default, the client caches the auth token. But you can disable caching\nby setting the ``cache_token`` parameter to false.\n\n.. code-block:: python\n\n    client = Client('3',\n                    username='someone',\n                    password='password',\n                    token_endpoint='https://192.168.1.146:4443/login',\n                    ecs_endpoint='https://192.168.1.146:4443',\n                    cache_token=False)\n\nAlternatively, when token caching is enabled, you may want to force the client\nto obtain a new token on the next call. To do so, you can remove the cached token.\n\n.. code-block:: python\n\n    client.remove_cached_token()\n\nAdd X-EMC-Override: \"true\" header\n~~~~~~~~~~~~~~\nYou can pass override_header to the client which means the user wants to add custom \nX-EMC-Override header into API request\n\n.. code-block:: python\n\n    client = Client('3',\n                    username='someone',\n                    password='password',\n                    token_endpoint='https://192.168.1.146:4443/login',\n                    ecs_endpoint='https://192.168.1.146:4443',\n                    override_header='true')\n\n\nSupported endpoints\n-------------------\n\nThe following table shows the supported endpoints per API version.\n\n+--------------------------+---------+---------+---------+\n|                          |  `v2`_  |  `v3`_  |  `v4`_  |\n+==========================+=========+=========+=========+\n| **Configuration**                                      |\n+--------------------------+---------+---------+---------+\n| Certificate              |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| Configuration Properties |    ✓*   |    ✓*   |    ✓*   |\n+--------------------------+---------+---------+---------+\n| Licensing                |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| Feature                  |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| Syslog                   |         |    ✓*   |    ✓*   |\n+--------------------------+---------+---------+---------+\n| Snmp                     |         |    ✓*   |    ✓*   |\n+--------------------------+---------+---------+---------+\n| **CAS**                                                |\n+--------------------------+---------+---------+---------+\n| CAS User Profile         |    ✓*   |    ✓*   |    ✓*   |\n+--------------------------+---------+---------+---------+\n| **File System Access**                                 |\n+--------------------------+---------+---------+---------+\n| NFS                      |    ✗    |    ✗    |    ✗    |\n+--------------------------+---------+---------+---------+\n| **Metering**                                           |\n+--------------------------+---------+---------+---------+\n| Billing                  |    ~    |    ~    |    ~    |\n+--------------------------+---------+---------+---------+\n| **Migration**                                          |\n+--------------------------+---------+---------+---------+\n| Transformation           |    ✗    |    ✗    |    ✗    |\n+--------------------------+---------+---------+---------+\n| **Monitoring**                                         |\n+--------------------------+---------+---------+---------+\n| Capacity                 |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| Dashboard                |    ✓*   |    ✓*   |    ✓*   |\n+--------------------------+---------+---------+---------+\n| Events                   |    ✓*   |    ✓*   |    ✓*   |\n+--------------------------+---------+---------+---------+\n| Alerts                   |    ✓*   |    ✓*   |    ✓*   |\n+--------------------------+---------+---------+---------+\n| **Multi-tenancy**                                      |\n+--------------------------+---------+---------+---------+\n| Namespace                |    ✓*   |    ✓*   |    ✓*   |\n+--------------------------+---------+---------+---------+\n| Tenant(Flex)             |    ✗    |    ✗    |    ✓*   |\n+--------------------------+---------+---------+---------+\n| **Geo-Replication**                                    |\n+--------------------------+---------+---------+---------+\n| Replication Group        |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| Temporary Failed Zone    |    ✓*   |    ✓*   |    ✓*   |\n+--------------------------+---------+---------+---------+\n| **Provisioning**                                       |\n+--------------------------+---------+---------+---------+\n| Base URL                 |    ✓*   |    ✓*   |    ✓*   |\n+--------------------------+---------+---------+---------+\n| Bucket                   |    ✓*   |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| Data Store               |    ✓*   |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| Node                     |    ~    |    ~    |    ~    |\n+--------------------------+---------+---------+---------+\n| Storage Pool             |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| Virtual Data Center      |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| VDC Keystore             |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| **Support**                                            |\n+--------------------------+---------+---------+---------+\n| Call Home                |    ✗    |    ✗    |    ✗    |\n+--------------------------+---------+---------+---------+\n| **User Management**                                    |\n+--------------------------+---------+---------+---------+\n| Authentication Provider  |    ~    |    ~    |    ~    |\n+--------------------------+---------+---------+---------+\n| Password Group (Swift)   |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| Secret Key               |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| Secret Key Self-Service  |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| User (Object)            |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| User (Management)        |    ✓*   |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n| **Other**                                              |\n+--------------------------+---------+---------+---------+\n| Who am I                 |    ✓    |    ✓    |    ✓    |\n+--------------------------+---------+---------+---------+\n\n**Legend:**\n\n+-------+-------------------------------------+\n|   ✓   | Supported and tested                |\n+-------+-------------------------------------+\n|   ✓*  | Supported but not tested yet        |\n+-------+-------------------------------------+\n|   ~   | Partially supported                 |\n+-------+-------------------------------------+\n|   ✗   | Not supported yet                   |\n+-------+-------------------------------------+\n|       | Not available in this API version   |\n+-------+-------------------------------------+\n\nDevelopment\n-----------\n\nGetting Started\n~~~~~~~~~~~~~~~\nAssuming that you have Python and ``virtualenv`` installed, set up your\nenvironment and install the required dependencies like this instead of\nthe ``pip install python-ecsclient`` defined above:\n\n.. code-block:: sh\n\n    $ git clone https://github.com/EMCECS/python-ecsclient.git\n    $ cd python-ecsclient\n    $ virtualenv venv\n    ...\n    $ . venv/bin/activate\n    $ pip install -r requirements.txt\n\nRunning Tests\n~~~~~~~~~~~~~\nYou can run tests in all supported Python versions using ``tox``. By default,\nit will run all of the unit tests, but you can also specify your own\n``nosetests`` options. Note that this requires that you have all supported\nversions of Python installed, otherwise you must pass ``-e`` or run the\n``nosetests`` command directly:\n\n.. code-block:: sh\n\n    $ tox\n    $ tox -e py27,py35 tests/functional\n\nYou can also run individual tests with your default Python version:\n\n.. code-block:: sh\n\n    $ nosetests tests/unit\n\nLicense\n-------\n\nThis software library is released to you under the Apache License 2.0. See\n`LICENSE \u003chttps://github.com/EMCECS/python-ecsclient/blob/master/LICENSE\u003e`__\nfor more information.\n\n----------\n\n`ECS \u003chttps://www.emc.com\u003e`__ is an Dell EMC product,\ntrademarked, copyrighted, etc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femcecs%2Fpython-ecsclient","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femcecs%2Fpython-ecsclient","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femcecs%2Fpython-ecsclient/lists"}