Skip to main content

Tools to query the REST APIs of Scaleway

Project description

Scaleway SDK

This package provides tools to query the REST APIs of Scaleway.

Stable release: Last release Software license Requirements freshness Popularity

Development: Unit-tests status Code Quality Coverage Status

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:

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

Examples

  • List your organizations:

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

>>> from scaleway.apis import AccountAPI
>>> api = AccountAPI(auth_token='')  # Set your token here!
>>> resp = api.query(serialize=False).organizations.get()
>>> print type(resp)
<Response [200]>
>>> print resp.headers
{...}  # Response HTTP headers.
>>> print resp.links
{...}  # Parsed "Link" HTTP header, for pagination.
>>> print resp.json()
{u'organizations': [...]}
  • List your servers:

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

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

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

$ 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 pep8 pylint
$ python setup.py nosetests --with-coverage
  (...)
$ pep8 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.

ChangeLog

1.4.1 (2016-10-31)

  • Fix ComputeAPI when base_url is providen explicitely.

1.4.0 (2016-10-28)

  • Accept “region” argument in the constructor of ComputeAPI.

1.3.0 (2016-08-30)

  • query() accepts the argument serialize. If False (default is True), a flask.Response object is returned instead of a dict. It can be used to get response HTTP headers.

1.2.0 (2016-08-16)

  • Forward api.query() kwargs to the slumber.API object. It is now possible to override the append_slash behaviour with api.query(append_slash=False).

1.1.4 (2016-05-31)

  • Really, do not flood the APIs in case of maintenance. Reduce number of retries from 10 to 3.

1.1.3 (2016-03-29)

  • Do not flood the APIs in case of maintenance.

1.1.2 (2015-11-23)

  • Add bumpversion config.

  • Fix readme rendering.

1.1.1 (2015-11-23)

  • Switch from coveralls.io to codecov.io.

1.1.0 (2015-10-13)

  • Add Python3 support (#4).

  • Add an explicit error message when SNI fails (#8).

  • In an API endpoint is in maintenance (ie. it returns HTTP/503), keep trying to make requests for 180 seconds.

1.0.2 (2015-04-07)

  • Fix Pypi mess.

1.0.0 (2015-04-07)

  • Rename OCS to Scaleway. import ocs becomes import scaleway.

0.4.2 (2015-04-02)

  • Install packages to have TLS SNI support.

0.4.1 (2015-04-02)

  • Update APIs URLs from cloud.online.net to scaleway.com.

0.4.0 (2015-03-11)

  • Add param include_locked to AccountAPI.get_resources(). Useful if you need to list all the permissions of a token, even if the owner’s organization is locked.

  • AccountAPI.has_perm() also accepts the param include_locked.

0.3.2 (2015-01-08)

  • Raise BadToken if account API returns HTTP/400.

0.3.1 (2014-12-19)

  • ocs_sdk.apis.API accepts the constructor param user_agent. Defaults to ocs-sdk Pythons/version Platform.

  • Check code coverage thanks to coveralls.

0.3.0 (2014-11-12)

  • Add missing license files. Closes #1.

  • Create class MetadataAPI to get metadata of a running server.

0.2.1 (2014-10-14)

  • Add documentation.

  • Set production URLs as defaults in AccountAPI and ComputeAPI.

0.2.0 (2014-04-16)

  • Added quota methods (has_quota, get_quotas) & their tests. Refs: AM-1, AM-11.

0.1.3 (2014-03-07)

  • Minor changes in AccountAPI.perm_matches (67f967d26d3).

  • base_url can be given to the constructor of API().

  • verify_ssl can be given to the constructor of API().

0.1.2 (2014-02-28)

  • Raise InvalidToken when get_resources is called with and invalid token.

0.1.1 (2014-02-28)

  • Add missing files in source tarball.

0.1.0 (2014-02-28)

  • Initial release.

0.0.0 (2013-06-24)

  • First commit.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scaleway-sdk-1.4.1.tar.gz (17.2 kB view details)

Uploaded Source

Built Distributions

scaleway_sdk-1.4.1-py2.7.egg (32.1 kB view details)

Uploaded Source

scaleway_sdk-1.4.1-py2-none-any.whl (21.7 kB view details)

Uploaded Python 2

File details

Details for the file scaleway-sdk-1.4.1.tar.gz.

File metadata

File hashes

Hashes for scaleway-sdk-1.4.1.tar.gz
Algorithm Hash digest
SHA256 51f3e5f8729b0870f9f38deaa64137eb6eb8116804fb6dc15292ed97787b8240
MD5 e8b2d05e9d35762c50d35ab6d48b9760
BLAKE2b-256 18d424cf2cfa2238268b3b1cec42d7a698a4c7d8effdcee2bc1c58fd53a40d30

See more details on using hashes here.

File details

Details for the file scaleway_sdk-1.4.1-py2.7.egg.

File metadata

File hashes

Hashes for scaleway_sdk-1.4.1-py2.7.egg
Algorithm Hash digest
SHA256 7d61c40916995df6855f1b5074fb109f16b22dae6bd6675ad8fd39808edd660f
MD5 0a185209c64029e725c0019a4a262b47
BLAKE2b-256 7471761f258e8c9814c071dcbf92b1979006731ac7798949b244da6361762bf4

See more details on using hashes here.

File details

Details for the file scaleway_sdk-1.4.1-py2-none-any.whl.

File metadata

File hashes

Hashes for scaleway_sdk-1.4.1-py2-none-any.whl
Algorithm Hash digest
SHA256 f5224f951bf5bc5c24575352d889c651796d2b3b51bc36c4d298b4a241e712a7
MD5 b06f6aec9a62ac7a27669b3d8bf39b97
BLAKE2b-256 24fd1ff158a461e01d4f6381c5f5ad94e38d45f2ff30091ff54d1f5647535b97

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page