# 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: ```bash 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`: ```python import garage_admin_sdk from garage_admin_sdk.api import nodes_api, layout_api, key_api from garage_admin_sdk.model.node_cluster_info import NodeClusterInfo from garage_admin_sdk.model.layout_version import LayoutVersion from garage_admin_sdk.model.add_key_request import AddKeyRequest from garage_admin_sdk.model.update_key_request import UpdateKeyRequest from garage_admin_sdk.model.update_key_request_allow import UpdateKeyRequestAllow configuration = garage_admin_sdk.Configuration( host = "http://localhost:3903/v0", access_token = "s3cr3t" ) # Init APIs api = garage_admin_sdk.ApiClient(configuration) nodes = nodes_api.NodesApi(api) layout = layout_api.LayoutApi(api) keys = key_api.KeyApi(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)) # Display key print(f""" cluster ready key id is {kinfo.access_key_id} secret key is {kinfo.secret_access_key} """) ``` *This example is named `short.py` in the example folder. Other python examples are also available.* See also: - [examples](./example) - [generated doc](./python) ## 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 ```bash git clone ... git submodule update --init ``` ### (Re)generate libraries ```bash # 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