Skip to content

ByteInternet/hypernode-api-python

Repository files navigation

Hypernode API Python Client

Please note: this project is still in its early stages and the API may be subject to change.

Installation

git clone https://github.com/byteinternet/hypernode-api-python.git
cd hypernode-api-python
python3 -m venv venv
. venv/bin/activate
pip install -r requirements/development.txt

Usage

Acquiring an API token

Each Hypernode has an API token associated with it, you can use that to talk to the API directly. You can find the token in /etc/hypernode/hypernode_api_token. For API tokens with special permissions please contact [email protected]. Not all functionality in the API is currently generally available but if you'd like to start automating and have an interesting use-case we'd love to hear from you.

Using the library from the commandline

In the bin/ directory you'll find entry points to interact with the API directly from the commandline.

See for example:

$ export PYTHONPATH=.

$ ./bin/get_slas --help
usage: get_slas [-h]

List all available SLAs.

Example:
$ ./bin/get_slas
[
  {
    "id": 123,
    "code": "sla-standard",
    "name": "SLA Standard",
    "price": 1234,
    "billing_period": 1,
    "billing_period_unit": "month"
  },
  ...
]

optional arguments:
  -h, --help  show this help message and exit

Installing the library in your project

First make sure your project has the library installed:

pip install -e git+https://github.com/byteinternet/hypernode-api-python.git@master#egg=hypernode_api_python

Of course you might want to put that in a requirements.txt file in your project instead of installing it manually.

Alternatively, you can also install the hypernode-api-python library from PyPI:

$ python3 -m venv venv
$ . venv/bin/activate
$ pip install hypernode-api-python
$ pip freeze | grep hypernode-api-python
hypernode-api-python==0.0.6

Performing API calls

Then to use the API client you can test out an example request in your Python repl:

from hypernode_api_python.client import HypernodeAPIPython

client = HypernodeAPIPython(token='yoursecrettoken')

response = client.get_app_flavor('yourhypernodeappname')

response.json()
{'name': '2CPU/8GB/60GB (Falcon S 202202)', 'redis_size': '1024'}

Using the Hypernode-API you can automate all kinds of cool things like configuring settings:

client.set_app_setting('yourhypernodeappname', 'php_version', '8.1').json()
{'name': 'yourhypernodeappname', 'type': 'persistent', 'php_version': '8.1', ...}

You can even perform acts of cloud automation, like scaling to the first next larger plan:

client.xgrade(
    'yourhypernodeappname',
      data={
          'product': client.get_next_best_plan_for_app_or_404(
              'yourhypernodeappname'
          ).json()['code']
      }
)

Development

To run the unit tests you can use tox:

tox -r

Related projects