Skip to content

scaleway/python-scaleway

Repository files navigation

Scaleway SDK

Python SDK to query Scaleway's APIs.

Stable release: Last releasePython versionsSoftware license

Development: Unit-tests statusCoverage StatusCode Quality

Installation

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

$ 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:

GET<api_url>/foo/bar

you only need to call the following pythonic code:

>>>fromscaleway.apisimportDummyAPI>>>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](https://github.com/scaleway/api.scaleway.com/blob/master/README.md#apis)

Examples

  • List your organizations:
>>>fromscaleway.apisimportAccountAPI>>>api=AccountAPI(auth_token='') # Set your token here!>>>printapi.query().organizations.get(){u'organizations': [...]}
  • List your organizations, but get a flask.Response object instead of a dict:
>>>fromscaleway.apisimportAccountAPI>>>api=AccountAPI(auth_token='') # Set your token here!>>>resp=api.query(serialize=False).organizations.get() >>>printtype(resp) <Response [200]>>>>printresp.headers{...} # Response HTTP headers.>>>printresp.links{...} # Parsed "Link" HTTP header, for pagination.>>>printresp.json(){u'organizations': [...]}
  • List your servers:
>>>fromscaleway.apisimportComputeAPI>>>api=ComputeAPI(auth_token='') # Set your token here!>>>printapi.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!>>>printapi.query().servers.get(){u'servers': [...]}
  • Get details of a server:
>>>fromscaleway.apisimportComputeAPI>>>api=ComputeAPI(auth_token='') # Set your token here!>>>server_id=''# Set a server ID here!>>>printapi.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:
>>>fromscaleway.apisimportAccountAPI>>>api=AccountAPI(auth_token='') # Set your token here!>>>printapi.has_perm(service='compute', name='servers:read', ... resource='9a096d36-6bf9-470f-91df-2398aa7361f7') False

Development

Assuming you are in a virtualenv:

$ 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:

$ 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.