RepoScalewayScalewaypublished Oct 14, 2014seen 5d

scaleway/python-scaleway

Python

Open original ↗

Captured source

source ↗
published Oct 14, 2014seen 5dcaptured 8hhttp 200method plain

scaleway/python-scaleway

Description: :snake: Python SDK to query Scaleway APIs.

Language: Python

License: NOASSERTION

Stars: 112

Forks: 27

Open issues: 7

Created: 2014-10-14T16:10:22Z

Pushed: 2023-07-27T12:48:44Z

Default branch: develop

Fork: no

Archived: no

README: Scaleway SDK ============

Python SDK to query Scaleway _'s APIs _.

Stable release: |release| |versions| |license|

Development: |build| |coverage| |quality|

:target: https://pypi.python.org/pypi/scaleway-sdk :alt: Last release :target: https://pypi.python.org/pypi/scaleway-sdk :alt: Python versions :target: https://opensource.org/licenses/BSD-2-Clause :alt: Software license .. |build| image:: https://travis-ci.org/scaleway/python-scaleway.svg?branch=develop :target: https://travis-ci.org/scaleway/python-scaleway :alt: Unit-tests status .. |coverage| image:: https://codecov.io/gh/scaleway/python-scaleway/branch/develop/graph/badge.svg :target: https://codecov.io/github/scaleway/python-scaleway?branch=develop :alt: Coverage Status .. |quality| image:: https://scrutinizer-ci.com/g/scaleway/python-scaleway/badges/quality-score.png?b=develop :target: https://scrutinizer-ci.com/g/scaleway/python-scaleway/?branch=develop :alt: Code Quality

Installation ------------

The package is available on `pip`. To install it in a virtualenv:

.. code-block:: bash

$ virtualenv my_virtualenv $ source my_virtualenv/bin/activate $ pip install scaleway-sdk

General principle -----------------

If you're looking to send a `GET` HTTP request against our APIs, like:

.. code-block:: http

GET /foo/bar

you only need to call the following pythonic code:

.. code-block:: python

>>> from scaleway.apis import DummyAPI >>> DummyAPI().query().foo.bar.get()

The magic here lies in `scaleway.apis.*API instances, which all have a query method returning a slumber.API` object. The latter handling all the excruciating details of the requests.

Documentation -------------

Even if this SDK is designed to be developer-friendly and aim for self-service discovery, it is still recommended to read the official API documentation _.

And because most of the provided helpers takes the form of pre-configured `Slumber objects, a good read of Slumber `_ documention is encouraged as well.

The list of available resources per API can be found on the Scaleway API repository

Examples --------

  • List your organizations:

.. code-block:: python

>>> from scaleway.apis import AccountAPI >>> api = AccountAPI(auth_token='') # Set your token here! >>> print api.query().organizations.get() {u'organizations': [...]}

  • List your organizations, but get a flask.Response object instead of a

dict:

.. code-block:: python

>>> from scaleway.apis import AccountAPI >>> api = AccountAPI(auth_token='') # Set your token here! >>> resp = api.query(serialize=False).organizations.get() >>> print type(resp)

>>> print resp.headers {...} # Response HTTP headers. >>> print resp.links {...} # Parsed "Link" HTTP header, for pagination. >>> print resp.json() {u'organizations': [...]}

  • List your servers:

.. code-block:: python

>>> from scaleway.apis import ComputeAPI >>> api = ComputeAPI(auth_token='') # Set your token here! >>> print api.query().servers.get() {u'servers': [...]}

Or choose your region, as in apis/api_compute.py

>>> api = ComputeAPI(region='ams1', auth_token='') # Set your token here! >>> print api.query().servers.get() {u'servers': [...]}

  • Get details of a server:

.. code-block:: python

>>> from scaleway.apis import ComputeAPI >>> api = ComputeAPI(auth_token='') # Set your token here! >>> server_id = '' # Set a server ID here! >>> print api.query().servers(server_id).get() {u'server': {...}}

  • Check if your token has the permission `servers:read` for the service

compute for the organization 9a096d36-6bf9-470f-91df-2398aa7361f7`:

.. code-block:: python

>>> from scaleway.apis import AccountAPI >>> api = AccountAPI(auth_token='') # Set your token here! >>> print api.has_perm(service='compute', name='servers:read', ... resource='9a096d36-6bf9-470f-91df-2398aa7361f7') False

Development -----------

Assuming you are in a virtualenv _:

.. code-block:: bash

$ pip install -e . $ python -c 'from scaleway.apis import AccountAPI'

it works!

Test ----

To submit a patch, you'll need to test your code against python2.7 and python3.4. To run tests:

.. code-block:: bash

$ pip install nose coverage pycodestyle pylint $ python setup.py nosetests --with-coverage (...) $ pycodestyle scaleway (...) $ pylint scaleway (...)

  • Coverage score should never be lower than before your patch.
  • PEP8 should never return an error.
  • Pylint score should never be lower than before your patch.

Alternatively, to run nosetests on both Python2.7 and Python3.4, you can run tox.

Alternative libraries / clients -------------------------------

We maintain a list of the current library/client implementations on the api.scaleway.com repository _.

License -------

This software is licensed under a BSD 2-Clause License _.