2.9 KiB
Garage Admin SDK
For SDK users
The SDK is currently only available for Python.
Python
You need at least Python 3.6, pip, and setuptools. Because the python package is in a subfolder, the command is a bit more complicated than usual:
pip3 install --user 'git+https://git.deuxfleurs.fr/quentin/garage-admin-sdk#egg=garage-admin-sdk&subdirectory=python'
Now, let imagine you have a fresh Garage instance running on localhost, with the admin API configured on port 3903 with the bearer s3cr3t
:
import garage_admin_sdk
from garage_admin_sdk.apis import *
from garage_admin_sdk.models import *
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0",
access_token = "s3cr3t"
)
# Init APIs
api = garage_admin_sdk.ApiClient(configuration)
nodes, layout, keys, buckets = NodesApi(api), LayoutApi(api), KeyApi(api), BucketApi(api)
# Display some info on the node
status = nodes.get_nodes()
print(f"running garage {status.garage_version}, node_id {status.node}")
# Change layout of this node
current = layout.get_layout()
layout.add_layout({
status.node: NodeClusterInfo(
zone = "dc1",
capacity = 1,
tags = [ "dev" ],
)
})
layout.apply_layout(LayoutVersion(
version = current.version + 1
))
# Create key, allow it to create buckets
kinfo = keys.add_key(AddKeyRequest(name="openapi"))
allow_create = UpdateKeyRequestAllow(create_bucket=True)
keys.update_key(kinfo.access_key_id, UpdateKeyRequest(allow=allow_create))
# Create a bucket, allow key, set quotas
doc = buckets.create_bucket(CreateBucketRequest(global_alias="documentation"))
doc = buckets.allow_bucket_key(AllowBucketKeyRequest(
bucket_id=doc.id,
access_key_id=kinfo.access_key_id,
permissions=AllowBucketKeyRequestPermissions(read=True, write=True, owner=True),
))
doc = buckets.update_bucket(doc.id, UpdateBucketRequest(
quotas=UpdateBucketRequestQuotas(max_size=19029801,max_objects=1500)))
# Display key
print(f"""
cluster ready
key id is {kinfo.access_key_id}
secret key is {kinfo.secret_access_key}
bucket {doc.global_aliases[0]} contains {doc.objects}/{doc.quotas.max_objects} objects
This example is named short.py
in the example folder. Other python examples are also available.
See also:
For SDK developpers
PR are accepted for other languages as soon as meaningful, manually written, covering a large range of the API are provided. Thanks in advance :-)
Clone this repo
git clone ...
git submodule update --init
(Re)generate libraries
# Check the OpenAPI spec file
gradle validate
# (re)build the python client
gradle buildPythonClient
Support a new language
Read the doc: https://openapi-generator.tech/docs/installation
We use the Gradle plugins: https://openapi-generator.tech/docs/plugins
Many generators exist: https://openapi-generator.tech/docs/generators