Improve code generation

This commit is contained in:
Quentin 2022-09-13 16:00:03 +02:00
parent b916cc1b32
commit cbdd714b5a
Signed by: quentin
GPG key ID: E9602264D639FF68
65 changed files with 680 additions and 307 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.gradle

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "garage"]
path = garage
url = https://git.deuxfleurs.fr/Deuxfleurs/garage.git

View file

@ -1,8 +1,18 @@
# Garage Admin SDK
# Generate
## Python
## Clone this repo
```bash
git clone ...
git submodule init
```
java -jar ~/Downloads/openapi-generator-cli.jar generate -i ../garage/doc/api/garage-admin-v0.yml -g python -o ./python/
## (Re)generate libraries
```bash
# Check the OpenAPI spec file
gradle validate
# (re)build the python client
gradle buildPythonClient
```

20
build.gradle Normal file
View file

@ -0,0 +1,20 @@
plugins {
id "org.openapi.generator" version "6.1.0"
}
task validate(type: org.openapitools.generator.gradle.plugin.tasks.ValidateTask){
inputSpec = "./garage/doc/api/garage-admin-v0.yml"
recommend = true
}
task buildPythonClient(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
generatorName = "python"
inputSpec = "./garage/doc/api/garage-admin-v0.yml"
outputDir = "$rootDir/python"
configOptions = [
packageName: "garage_admin_sdk",
packageVersion: "0.7.3",
projectName: "garage-admin-sdk"
]
}

1
garage Submodule

@ -0,0 +1 @@
Subproject commit a628359122cd6204118e6238a65859d50e4cd472

View file

@ -8,7 +8,7 @@ stages:
script:
- pip install -r requirements.txt
- pip install -r test-requirements.txt
- pytest --cov=openapi_client
- pytest --cov=garage_admin_sdk
test-3.6:
extends: .tests

View file

@ -1,5 +1,6 @@
.gitignore
.gitlab-ci.yml
.openapi-generator-ignore
.travis.yml
README.md
docs/ClusterLayout.md
@ -8,6 +9,7 @@ docs/KeyApi.md
docs/KeyGetRequest.md
docs/KeyIdAccessKeyDeleteRequest.md
docs/KeyIdAccessKeyDeleteRequestAllow.md
docs/KeyIdAccessKeyDeleteRequestDeny.md
docs/KeyImportPostRequest.md
docs/KeyInfo.md
docs/KeyInfoBucketsInner.md
@ -20,38 +22,58 @@ docs/MembershipApi.md
docs/NodeClusterInfo.md
docs/NodeNetworkInfo.md
docs/StatusGet200Response.md
garage_admin_sdk/__init__.py
garage_admin_sdk/api/__init__.py
garage_admin_sdk/api/key_api.py
garage_admin_sdk/api/layout_api.py
garage_admin_sdk/api/membership_api.py
garage_admin_sdk/api_client.py
garage_admin_sdk/apis/__init__.py
garage_admin_sdk/configuration.py
garage_admin_sdk/exceptions.py
garage_admin_sdk/model/__init__.py
garage_admin_sdk/model/cluster_layout.py
garage_admin_sdk/model/connect_post200_response_inner.py
garage_admin_sdk/model/key_get_request.py
garage_admin_sdk/model/key_id_access_key_delete_request.py
garage_admin_sdk/model/key_id_access_key_delete_request_allow.py
garage_admin_sdk/model/key_id_access_key_delete_request_deny.py
garage_admin_sdk/model/key_import_post_request.py
garage_admin_sdk/model/key_info.py
garage_admin_sdk/model/key_info_buckets_inner.py
garage_admin_sdk/model/key_info_buckets_inner_permissions.py
garage_admin_sdk/model/key_info_permissions.py
garage_admin_sdk/model/layout_version.py
garage_admin_sdk/model/list_keys200_response_inner.py
garage_admin_sdk/model/node_cluster_info.py
garage_admin_sdk/model/node_network_info.py
garage_admin_sdk/model/status_get200_response.py
garage_admin_sdk/model_utils.py
garage_admin_sdk/models/__init__.py
garage_admin_sdk/rest.py
git_push.sh
openapi_client/__init__.py
openapi_client/api/__init__.py
openapi_client/api/key_api.py
openapi_client/api/layout_api.py
openapi_client/api/membership_api.py
openapi_client/api_client.py
openapi_client/apis/__init__.py
openapi_client/configuration.py
openapi_client/exceptions.py
openapi_client/model/__init__.py
openapi_client/model/cluster_layout.py
openapi_client/model/connect_post200_response_inner.py
openapi_client/model/key_get_request.py
openapi_client/model/key_id_access_key_delete_request.py
openapi_client/model/key_id_access_key_delete_request_allow.py
openapi_client/model/key_import_post_request.py
openapi_client/model/key_info.py
openapi_client/model/key_info_buckets_inner.py
openapi_client/model/key_info_buckets_inner_permissions.py
openapi_client/model/key_info_permissions.py
openapi_client/model/layout_version.py
openapi_client/model/list_keys200_response_inner.py
openapi_client/model/node_cluster_info.py
openapi_client/model/node_network_info.py
openapi_client/model/status_get200_response.py
openapi_client/model_utils.py
openapi_client/models/__init__.py
openapi_client/rest.py
requirements.txt
setup.cfg
setup.py
test-requirements.txt
test/__init__.py
test/test_cluster_layout.py
test/test_connect_post200_response_inner.py
test/test_key_api.py
test/test_key_get_request.py
test/test_key_id_access_key_delete_request.py
test/test_key_id_access_key_delete_request_allow.py
test/test_key_id_access_key_delete_request_deny.py
test/test_key_import_post_request.py
test/test_key_info.py
test/test_key_info_buckets_inner.py
test/test_key_info_buckets_inner_permissions.py
test/test_key_info_permissions.py
test/test_layout_api.py
test/test_layout_version.py
test/test_list_keys200_response_inner.py
test/test_membership_api.py
test/test_node_cluster_info.py
test/test_node_network_info.py
test/test_status_get200_response.py
tox.ini

View file

@ -10,4 +10,4 @@ install:
- "pip install -r requirements.txt"
- "pip install -r test-requirements.txt"
# command to run tests
script: pytest --cov=openapi_client
script: pytest --cov=garage_admin_sdk

View file

@ -1,4 +1,4 @@
# openapi-client
# garage-admin-sdk
Administrate your Garage cluster programatically, including status, layout, keys, buckets, and maintainance tasks.
*Disclaimer: The API is not stable yet, hence its v0 tag. The API can change at any time, and changes can include breaking backward compatibility. Read the changelog and upgrade your scripts before upgrading. Additionnaly, this specification is very early stage and can contain bugs, especially on error return codes/types that are not tested yet. Do not expect a well finished and polished product!*
@ -7,7 +7,7 @@ Administrate your Garage cluster programatically, including status, layout, keys
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: v0.7.3
- Package version: 1.0.0
- Package version: 0.7.3
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
## Requirements.
@ -26,7 +26,7 @@ pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git
Then import the package:
```python
import openapi_client
import garage_admin_sdk
```
### Setuptools
@ -40,7 +40,7 @@ python setup.py install --user
Then import the package:
```python
import openapi_client
import garage_admin_sdk
```
## Getting Started
@ -50,17 +50,17 @@ Please follow the [installation procedure](#installation--usage) and then run th
```python
import time
import openapi_client
import garage_admin_sdk
from pprint import pprint
from openapi_client.api import key_api
from openapi_client.model.key_get_request import KeyGetRequest
from openapi_client.model.key_id_access_key_delete_request import KeyIdAccessKeyDeleteRequest
from openapi_client.model.key_import_post_request import KeyImportPostRequest
from openapi_client.model.key_info import KeyInfo
from openapi_client.model.list_keys200_response_inner import ListKeys200ResponseInner
from garage_admin_sdk.api import key_api
from garage_admin_sdk.model.key_get_request import KeyGetRequest
from garage_admin_sdk.model.key_id_access_key_delete_request import KeyIdAccessKeyDeleteRequest
from garage_admin_sdk.model.key_import_post_request import KeyImportPostRequest
from garage_admin_sdk.model.key_info import KeyInfo
from garage_admin_sdk.model.list_keys200_response_inner import ListKeys200ResponseInner
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -70,13 +70,13 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = key_api.KeyApi(api_client)
key_import_post_request = KeyImportPostRequest(
@ -89,7 +89,7 @@ with openapi_client.ApiClient(configuration) as api_client:
# Import an existing key
api_response = api_instance.key_import_post(key_import_post_request=key_import_post_request)
pprint(api_response)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling KeyApi->key_import_post: %s\n" % e)
```
@ -121,6 +121,7 @@ Class | Method | HTTP request | Description
- [KeyGetRequest](docs/KeyGetRequest.md)
- [KeyIdAccessKeyDeleteRequest](docs/KeyIdAccessKeyDeleteRequest.md)
- [KeyIdAccessKeyDeleteRequestAllow](docs/KeyIdAccessKeyDeleteRequestAllow.md)
- [KeyIdAccessKeyDeleteRequestDeny](docs/KeyIdAccessKeyDeleteRequestDeny.md)
- [KeyImportPostRequest](docs/KeyImportPostRequest.md)
- [KeyInfo](docs/KeyInfo.md)
- [KeyInfoBucketsInner](docs/KeyInfoBucketsInner.md)
@ -147,21 +148,21 @@ Class | Method | HTTP request | Description
## Notes for Large OpenAPI documents
If the OpenAPI document is large, imports in openapi_client.apis and openapi_client.models may fail with a
If the OpenAPI document is large, imports in garage_admin_sdk.apis and garage_admin_sdk.models may fail with a
RecursionError indicating the maximum recursion limit has been exceeded. In that case, there are a couple of solutions:
Solution 1:
Use specific imports for apis and models like:
- `from openapi_client.api.default_api import DefaultApi`
- `from openapi_client.model.pet import Pet`
- `from garage_admin_sdk.api.default_api import DefaultApi`
- `from garage_admin_sdk.model.pet import Pet`
Solution 2:
Before importing the package, adjust the maximum recursion limit as shown below:
```
import sys
sys.setrecursionlimit(1500)
import openapi_client
from openapi_client.apis import *
from openapi_client.models import *
import garage_admin_sdk
from garage_admin_sdk.apis import *
from garage_admin_sdk.models import *
```

View file

@ -1,4 +1,4 @@
# openapi_client.KeyApi
# garage_admin_sdk.KeyApi
All URIs are relative to *http://localhost:3903/v0*
@ -26,14 +26,14 @@ Imports an existing API key. This feature must only be used for migrations and b
```python
import time
import openapi_client
from openapi_client.api import key_api
from openapi_client.model.key_import_post_request import KeyImportPostRequest
from openapi_client.model.key_info import KeyInfo
import garage_admin_sdk
from garage_admin_sdk.api import key_api
from garage_admin_sdk.model.key_import_post_request import KeyImportPostRequest
from garage_admin_sdk.model.key_info import KeyInfo
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -43,12 +43,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = key_api.KeyApi(api_client)
key_import_post_request = KeyImportPostRequest(
@ -63,7 +63,7 @@ with openapi_client.ApiClient(configuration) as api_client:
# Import an existing key
api_response = api_instance.key_import_post(key_import_post_request=key_import_post_request)
pprint(api_response)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling KeyApi->key_import_post: %s\n" % e)
```
@ -111,14 +111,14 @@ Creates a new API access key.
```python
import time
import openapi_client
from openapi_client.api import key_api
from openapi_client.model.key_get_request import KeyGetRequest
from openapi_client.model.key_info import KeyInfo
import garage_admin_sdk
from garage_admin_sdk.api import key_api
from garage_admin_sdk.model.key_get_request import KeyGetRequest
from garage_admin_sdk.model.key_info import KeyInfo
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -128,12 +128,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = key_api.KeyApi(api_client)
key_get_request = KeyGetRequest(
@ -146,7 +146,7 @@ with openapi_client.ApiClient(configuration) as api_client:
# Create a new API key
api_response = api_instance.key_post(key_get_request=key_get_request)
pprint(api_response)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling KeyApi->key_post: %s\n" % e)
```
@ -192,12 +192,12 @@ Delete a key
```python
import time
import openapi_client
from openapi_client.api import key_api
import garage_admin_sdk
from garage_admin_sdk.api import key_api
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -207,12 +207,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = key_api.KeyApi(api_client)
access_key = "GK31c2f218a2e44f485b94239e" # str | The exact API access key generated by Garage
@ -221,7 +221,7 @@ with openapi_client.ApiClient(configuration) as api_client:
try:
# Delete a key
api_instance.keyidaccess_key_delete(access_key)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling KeyApi->keyidaccess_key_delete: %s\n" % e)
```
@ -268,13 +268,13 @@ Return information about a specific key and return its information
```python
import time
import openapi_client
from openapi_client.api import key_api
from openapi_client.model.key_info import KeyInfo
import garage_admin_sdk
from garage_admin_sdk.api import key_api
from garage_admin_sdk.model.key_info import KeyInfo
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -284,12 +284,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = key_api.KeyApi(api_client)
access_key = "GK31c2f218a2e44f485b94239e" # str | The exact API access key generated by Garage
@ -299,7 +299,7 @@ with openapi_client.ApiClient(configuration) as api_client:
# Get key information
api_response = api_instance.keyidaccess_key_get(access_key)
pprint(api_response)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling KeyApi->keyidaccess_key_get: %s\n" % e)
```
@ -346,14 +346,14 @@ Updates information about the specified API access key.
```python
import time
import openapi_client
from openapi_client.api import key_api
from openapi_client.model.key_id_access_key_delete_request import KeyIdAccessKeyDeleteRequest
from openapi_client.model.key_info import KeyInfo
import garage_admin_sdk
from garage_admin_sdk.api import key_api
from garage_admin_sdk.model.key_id_access_key_delete_request import KeyIdAccessKeyDeleteRequest
from garage_admin_sdk.model.key_info import KeyInfo
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -363,12 +363,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = key_api.KeyApi(api_client)
access_key = "GK31c2f218a2e44f485b94239e" # str | The exact API access key generated by Garage
@ -377,7 +377,7 @@ with openapi_client.ApiClient(configuration) as api_client:
allow=KeyIdAccessKeyDeleteRequestAllow(
create_bucket=True,
),
deny=KeyIdAccessKeyDeleteRequestAllow(
deny=KeyIdAccessKeyDeleteRequestDeny(
create_bucket=True,
),
) # KeyIdAccessKeyDeleteRequest | For a given key, provide a first set with the permissions to grant, and a second set with the permissions to remove (optional)
@ -387,7 +387,7 @@ with openapi_client.ApiClient(configuration) as api_client:
# Update a key
api_response = api_instance.keyidaccess_key_post(access_key)
pprint(api_response)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling KeyApi->keyidaccess_key_post: %s\n" % e)
# example passing only required values which don't have defaults set
@ -396,7 +396,7 @@ with openapi_client.ApiClient(configuration) as api_client:
# Update a key
api_response = api_instance.keyidaccess_key_post(access_key, key_id_access_key_delete_request=key_id_access_key_delete_request)
pprint(api_response)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling KeyApi->keyidaccess_key_post: %s\n" % e)
```
@ -445,13 +445,13 @@ Find the first key matching the given pattern based on its identifier aor friend
```python
import time
import openapi_client
from openapi_client.api import key_api
from openapi_client.model.key_info import KeyInfo
import garage_admin_sdk
from garage_admin_sdk.api import key_api
from garage_admin_sdk.model.key_info import KeyInfo
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -461,12 +461,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = key_api.KeyApi(api_client)
pattern = "test-k" # str | A pattern (beginning or full string) corresponding to a key identifier or friendly name
@ -476,7 +476,7 @@ with openapi_client.ApiClient(configuration) as api_client:
# Select key by pattern
api_response = api_instance.keysearchpattern_get(pattern)
pprint(api_response)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling KeyApi->keysearchpattern_get: %s\n" % e)
```
@ -523,13 +523,13 @@ Returns all API access keys in the cluster.
```python
import time
import openapi_client
from openapi_client.api import key_api
from openapi_client.model.list_keys200_response_inner import ListKeys200ResponseInner
import garage_admin_sdk
from garage_admin_sdk.api import key_api
from garage_admin_sdk.model.list_keys200_response_inner import ListKeys200ResponseInner
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -539,12 +539,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = key_api.KeyApi(api_client)
@ -553,7 +553,7 @@ with openapi_client.ApiClient(configuration) as api_client:
# List all keys
api_response = api_instance.list_keys()
pprint(api_response)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling KeyApi->list_keys: %s\n" % e)
```

View file

@ -6,7 +6,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**name** | **str** | | [optional]
**allow** | [**KeyIdAccessKeyDeleteRequestAllow**](KeyIdAccessKeyDeleteRequestAllow.md) | | [optional]
**deny** | [**KeyIdAccessKeyDeleteRequestAllow**](KeyIdAccessKeyDeleteRequestAllow.md) | | [optional]
**deny** | [**KeyIdAccessKeyDeleteRequestDeny**](KeyIdAccessKeyDeleteRequestDeny.md) | | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View file

@ -0,0 +1,12 @@
# KeyIdAccessKeyDeleteRequestDeny
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**create_bucket** | **bool** | | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View file

@ -1,4 +1,4 @@
# openapi_client.LayoutApi
# garage_admin_sdk.LayoutApi
All URIs are relative to *http://localhost:3903/v0*
@ -23,13 +23,13 @@ Applies to the cluster the layout changes currently registered as staged layout
```python
import time
import openapi_client
from openapi_client.api import layout_api
from openapi_client.model.layout_version import LayoutVersion
import garage_admin_sdk
from garage_admin_sdk.api import layout_api
from garage_admin_sdk.model.layout_version import LayoutVersion
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -39,12 +39,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = layout_api.LayoutApi(api_client)
layout_version = LayoutVersion(
@ -56,7 +56,7 @@ with openapi_client.ApiClient(configuration) as api_client:
try:
# Apply staged layout
api_instance.layout_apply_post(layout_version=layout_version)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling LayoutApi->layout_apply_post: %s\n" % e)
```
@ -104,13 +104,13 @@ Returns the cluster's current layout, including: - Currently configured cluste
```python
import time
import openapi_client
from openapi_client.api import layout_api
from openapi_client.model.cluster_layout import ClusterLayout
import garage_admin_sdk
from garage_admin_sdk.api import layout_api
from garage_admin_sdk.model.cluster_layout import ClusterLayout
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -120,12 +120,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = layout_api.LayoutApi(api_client)
@ -134,7 +134,7 @@ with openapi_client.ApiClient(configuration) as api_client:
# Details on the current and staged layout
api_response = api_instance.layout_get()
pprint(api_response)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling LayoutApi->layout_get: %s\n" % e)
```
@ -178,13 +178,13 @@ Send modifications to the cluster layout. These modifications will be included i
```python
import time
import openapi_client
from openapi_client.api import layout_api
from openapi_client.model.node_cluster_info import NodeClusterInfo
import garage_admin_sdk
from garage_admin_sdk.api import layout_api
from garage_admin_sdk.model.node_cluster_info import NodeClusterInfo
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -194,12 +194,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = layout_api.LayoutApi(api_client)
request_body = {
@ -211,7 +211,7 @@ with openapi_client.ApiClient(configuration) as api_client:
try:
# Send modifications to the cluster layout
api_instance.layout_post(request_body=request_body)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling LayoutApi->layout_post: %s\n" % e)
```
@ -259,13 +259,13 @@ Clears all of the staged layout changes.
```python
import time
import openapi_client
from openapi_client.api import layout_api
from openapi_client.model.layout_version import LayoutVersion
import garage_admin_sdk
from garage_admin_sdk.api import layout_api
from garage_admin_sdk.model.layout_version import LayoutVersion
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -275,12 +275,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = layout_api.LayoutApi(api_client)
layout_version = LayoutVersion(
@ -292,7 +292,7 @@ with openapi_client.ApiClient(configuration) as api_client:
try:
# Clear staged layout
api_instance.layout_revert_post(layout_version=layout_version)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling LayoutApi->layout_revert_post: %s\n" % e)
```

View file

@ -1,4 +1,4 @@
# openapi_client.MembershipApi
# garage_admin_sdk.MembershipApi
All URIs are relative to *http://localhost:3903/v0*
@ -21,13 +21,13 @@ Instructs this Garage node to connect to other Garage nodes at specified `<node_
```python
import time
import openapi_client
from openapi_client.api import membership_api
from openapi_client.model.connect_post200_response_inner import ConnectPost200ResponseInner
import garage_admin_sdk
from garage_admin_sdk.api import membership_api
from garage_admin_sdk.model.connect_post200_response_inner import ConnectPost200ResponseInner
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -37,12 +37,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = membership_api.MembershipApi(api_client)
request_body = ["ec79480e0ce52ae26fd00c9da684e4fa56658d9c64cdcecb094e936de0bfe71f@10.0.0.11:3901","4a6ae5a1d0d33bf895f5bb4f0a418b7dc94c47c0dd2eb108d1158f3c8f60b0ff@10.0.0.12:3901"] # [str] | (optional)
@ -53,7 +53,7 @@ with openapi_client.ApiClient(configuration) as api_client:
# Connect target node to other Garage nodes
api_response = api_instance.connect_post(request_body=request_body)
pprint(api_response)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling MembershipApi->connect_post: %s\n" % e)
```
@ -101,13 +101,13 @@ Returns the cluster's current status, including: - ID of the node being queried
```python
import time
import openapi_client
from openapi_client.api import membership_api
from openapi_client.model.status_get200_response import StatusGet200Response
import garage_admin_sdk
from garage_admin_sdk.api import membership_api
from garage_admin_sdk.model.status_get200_response import StatusGet200Response
from pprint import pprint
# Defining the host is optional and defaults to http://localhost:3903/v0
# See configuration.py for a list of all supported configuration parameters.
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
host = "http://localhost:3903/v0"
)
@ -117,12 +117,12 @@ configuration = openapi_client.Configuration(
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = openapi_client.Configuration(
configuration = garage_admin_sdk.Configuration(
access_token = 'YOUR_BEARER_TOKEN'
)
# Enter a context with an instance of the API client
with openapi_client.ApiClient(configuration) as api_client:
with garage_admin_sdk.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = membership_api.MembershipApi(api_client)
@ -131,7 +131,7 @@ with openapi_client.ApiClient(configuration) as api_client:
# Status of this node and other nodes in the cluster
api_response = api_instance.status_get()
pprint(api_response)
except openapi_client.ApiException as e:
except garage_admin_sdk.ApiException as e:
print("Exception when calling MembershipApi->status_get: %s\n" % e)
```

View file

@ -10,18 +10,18 @@
"""
__version__ = "1.0.0"
__version__ = "0.7.3"
# import ApiClient
from openapi_client.api_client import ApiClient
from garage_admin_sdk.api_client import ApiClient
# import Configuration
from openapi_client.configuration import Configuration
from garage_admin_sdk.configuration import Configuration
# import exceptions
from openapi_client.exceptions import OpenApiException
from openapi_client.exceptions import ApiAttributeError
from openapi_client.exceptions import ApiTypeError
from openapi_client.exceptions import ApiValueError
from openapi_client.exceptions import ApiKeyError
from openapi_client.exceptions import ApiException
from garage_admin_sdk.exceptions import OpenApiException
from garage_admin_sdk.exceptions import ApiAttributeError
from garage_admin_sdk.exceptions import ApiTypeError
from garage_admin_sdk.exceptions import ApiValueError
from garage_admin_sdk.exceptions import ApiKeyError
from garage_admin_sdk.exceptions import ApiException

View file

@ -1,3 +1,3 @@
# do not import all apis into this module because that uses a lot of memory and stack frames
# if you need the ability to import all apis from one package, import them with
# from openapi_client.apis import KeyApi
# from garage_admin_sdk.apis import KeyApi

View file

@ -11,8 +11,8 @@
import re # noqa: F401
import sys # noqa: F401
from openapi_client.api_client import ApiClient, Endpoint as _Endpoint
from openapi_client.model_utils import ( # noqa: F401
from garage_admin_sdk.api_client import ApiClient, Endpoint as _Endpoint
from garage_admin_sdk.model_utils import ( # noqa: F401
check_allowed_values,
check_validations,
date,
@ -21,11 +21,11 @@ from openapi_client.model_utils import ( # noqa: F401
none_type,
validate_and_convert_types
)
from openapi_client.model.key_get_request import KeyGetRequest
from openapi_client.model.key_id_access_key_delete_request import KeyIdAccessKeyDeleteRequest
from openapi_client.model.key_import_post_request import KeyImportPostRequest
from openapi_client.model.key_info import KeyInfo
from openapi_client.model.list_keys200_response_inner import ListKeys200ResponseInner
from garage_admin_sdk.model.key_get_request import KeyGetRequest
from garage_admin_sdk.model.key_id_access_key_delete_request import KeyIdAccessKeyDeleteRequest
from garage_admin_sdk.model.key_import_post_request import KeyImportPostRequest
from garage_admin_sdk.model.key_info import KeyInfo
from garage_admin_sdk.model.list_keys200_response_inner import ListKeys200ResponseInner
class KeyApi(object):

View file

@ -11,8 +11,8 @@
import re # noqa: F401
import sys # noqa: F401
from openapi_client.api_client import ApiClient, Endpoint as _Endpoint
from openapi_client.model_utils import ( # noqa: F401
from garage_admin_sdk.api_client import ApiClient, Endpoint as _Endpoint
from garage_admin_sdk.model_utils import ( # noqa: F401
check_allowed_values,
check_validations,
date,
@ -21,9 +21,9 @@ from openapi_client.model_utils import ( # noqa: F401
none_type,
validate_and_convert_types
)
from openapi_client.model.cluster_layout import ClusterLayout
from openapi_client.model.layout_version import LayoutVersion
from openapi_client.model.node_cluster_info import NodeClusterInfo
from garage_admin_sdk.model.cluster_layout import ClusterLayout
from garage_admin_sdk.model.layout_version import LayoutVersion
from garage_admin_sdk.model.node_cluster_info import NodeClusterInfo
class LayoutApi(object):

View file

@ -11,8 +11,8 @@
import re # noqa: F401
import sys # noqa: F401
from openapi_client.api_client import ApiClient, Endpoint as _Endpoint
from openapi_client.model_utils import ( # noqa: F401
from garage_admin_sdk.api_client import ApiClient, Endpoint as _Endpoint
from garage_admin_sdk.model_utils import ( # noqa: F401
check_allowed_values,
check_validations,
date,
@ -21,8 +21,8 @@ from openapi_client.model_utils import ( # noqa: F401
none_type,
validate_and_convert_types
)
from openapi_client.model.connect_post200_response_inner import ConnectPost200ResponseInner
from openapi_client.model.status_get200_response import StatusGet200Response
from garage_admin_sdk.model.connect_post200_response_inner import ConnectPost200ResponseInner
from garage_admin_sdk.model.status_get200_response import StatusGet200Response
class MembershipApi(object):

View file

@ -20,10 +20,10 @@ from urllib.parse import quote
from urllib3.fields import RequestField
from openapi_client import rest
from openapi_client.configuration import Configuration
from openapi_client.exceptions import ApiTypeError, ApiValueError, ApiException
from openapi_client.model_utils import (
from garage_admin_sdk import rest
from garage_admin_sdk.configuration import Configuration
from garage_admin_sdk.exceptions import ApiTypeError, ApiValueError, ApiException
from garage_admin_sdk.model_utils import (
ModelNormal,
ModelSimple,
ModelComposed,
@ -76,7 +76,7 @@ class ApiClient(object):
self.default_headers[header_name] = header_value
self.cookie = cookie
# Set default User-Agent.
self.user_agent = 'OpenAPI-Generator/1.0.0/python'
self.user_agent = 'OpenAPI-Generator/0.7.3/python'
def __enter__(self):
return self

View file

@ -6,7 +6,7 @@
# raise a `RecursionError`.
# In order to avoid this, import only the API that you directly need like:
#
# from openapi_client.api.key_api import KeyApi
# from garage_admin_sdk.api.key_api import KeyApi
#
# or import this package, but before doing it, use:
#
@ -14,6 +14,6 @@
# sys.setrecursionlimit(n)
# Import APIs into API package:
from openapi_client.api.key_api import KeyApi
from openapi_client.api.layout_api import LayoutApi
from openapi_client.api.membership_api import MembershipApi
from garage_admin_sdk.api.key_api import KeyApi
from garage_admin_sdk.api.layout_api import LayoutApi
from garage_admin_sdk.api.membership_api import MembershipApi

View file

@ -15,7 +15,7 @@ import sys
import urllib3
from http import client as http_client
from openapi_client.exceptions import ApiValueError
from garage_admin_sdk.exceptions import ApiValueError
JSON_SCHEMA_VALIDATION_KEYWORDS = {
@ -133,7 +133,7 @@ class Configuration(object):
self.logger = {}
"""Logging Settings
"""
self.logger["package_logger"] = logging.getLogger("openapi_client")
self.logger["package_logger"] = logging.getLogger("garage_admin_sdk")
self.logger["urllib3_logger"] = logging.getLogger("urllib3")
self.logger_format = '%(asctime)s %(levelname)s %(message)s'
"""Log format
@ -388,7 +388,7 @@ class Configuration(object):
"OS: {env}\n"\
"Python Version: {pyversion}\n"\
"Version of the API: v0.7.3\n"\
"SDK Package Version: 1.0.0".\
"SDK Package Version: 0.7.3".\
format(env=sys.platform, pyversion=sys.version)
def get_host_settings(self):

View file

@ -2,4 +2,4 @@
# reference which would not work in python2
# do not import all models into this module because that uses a lot of memory and stack frames
# if you need the ability to import all models from one package, import them with
# from openapi_client.models import ModelA, ModelB
# from garage_admin_sdk.models import ModelA, ModelB

View file

@ -11,7 +11,7 @@
import re # noqa: F401
import sys # noqa: F401
from openapi_client.model_utils import ( # noqa: F401
from garage_admin_sdk.model_utils import ( # noqa: F401
ApiTypeError,
ModelComposed,
ModelNormal,
@ -26,11 +26,11 @@ from openapi_client.model_utils import ( # noqa: F401
validate_get_composed_info,
OpenApiModel
)
from openapi_client.exceptions import ApiAttributeError
from garage_admin_sdk.exceptions import ApiAttributeError
def lazy_import():
from openapi_client.model.node_cluster_info import NodeClusterInfo
from garage_admin_sdk.model.node_cluster_info import NodeClusterInfo
globals()['NodeClusterInfo'] = NodeClusterInfo

View file

@ -11,7 +11,7 @@
import re # noqa: F401
import sys # noqa: F401
from openapi_client.model_utils import ( # noqa: F401
from garage_admin_sdk.model_utils import ( # noqa: F401
ApiTypeError,
ModelComposed,
ModelNormal,
@ -26,7 +26,7 @@ from openapi_client.model_utils import ( # noqa: F401
validate_get_composed_info,
OpenApiModel
)
from openapi_client.exceptions import ApiAttributeError
from garage_admin_sdk.exceptions import ApiAttributeError

View file

@ -11,7 +11,7 @@
import re # noqa: F401
import sys # noqa: F401
from openapi_client.model_utils import ( # noqa: F401
from garage_admin_sdk.model_utils import ( # noqa: F401
ApiTypeError,
ModelComposed,
ModelNormal,
@ -26,7 +26,7 @@ from openapi_client.model_utils import ( # noqa: F401
validate_get_composed_info,
OpenApiModel
)
from openapi_client.exceptions import ApiAttributeError
from garage_admin_sdk.exceptions import ApiAttributeError

View file

@ -11,7 +11,7 @@
import re # noqa: F401
import sys # noqa: F401
from openapi_client.model_utils import ( # noqa: F401
from garage_admin_sdk.model_utils import ( # noqa: F401
ApiTypeError,
ModelComposed,
ModelNormal,
@ -26,12 +26,14 @@ from openapi_client.model_utils import ( # noqa: F401
validate_get_composed_info,
OpenApiModel
)
from openapi_client.exceptions import ApiAttributeError
from garage_admin_sdk.exceptions import ApiAttributeError
def lazy_import():
from openapi_client.model.key_id_access_key_delete_request_allow import KeyIdAccessKeyDeleteRequestAllow
from garage_admin_sdk.model.key_id_access_key_delete_request_allow import KeyIdAccessKeyDeleteRequestAllow
from garage_admin_sdk.model.key_id_access_key_delete_request_deny import KeyIdAccessKeyDeleteRequestDeny
globals()['KeyIdAccessKeyDeleteRequestAllow'] = KeyIdAccessKeyDeleteRequestAllow
globals()['KeyIdAccessKeyDeleteRequestDeny'] = KeyIdAccessKeyDeleteRequestDeny
class KeyIdAccessKeyDeleteRequest(ModelNormal):
@ -89,7 +91,7 @@ class KeyIdAccessKeyDeleteRequest(ModelNormal):
return {
'name': (str,), # noqa: E501
'allow': (KeyIdAccessKeyDeleteRequestAllow,), # noqa: E501
'deny': (KeyIdAccessKeyDeleteRequestAllow,), # noqa: E501
'deny': (KeyIdAccessKeyDeleteRequestDeny,), # noqa: E501
}
@cached_property
@ -146,7 +148,7 @@ class KeyIdAccessKeyDeleteRequest(ModelNormal):
_visited_composed_classes = (Animal,)
name (str): [optional] # noqa: E501
allow (KeyIdAccessKeyDeleteRequestAllow): [optional] # noqa: E501
deny (KeyIdAccessKeyDeleteRequestAllow): [optional] # noqa: E501
deny (KeyIdAccessKeyDeleteRequestDeny): [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
@ -234,7 +236,7 @@ class KeyIdAccessKeyDeleteRequest(ModelNormal):
_visited_composed_classes = (Animal,)
name (str): [optional] # noqa: E501
allow (KeyIdAccessKeyDeleteRequestAllow): [optional] # noqa: E501
deny (KeyIdAccessKeyDeleteRequestAllow): [optional] # noqa: E501
deny (KeyIdAccessKeyDeleteRequestDeny): [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)

View file

@ -11,7 +11,7 @@
import re # noqa: F401
import sys # noqa: F401
from openapi_client.model_utils import ( # noqa: F401
from garage_admin_sdk.model_utils import ( # noqa: F401
ApiTypeError,
ModelComposed,
ModelNormal,
@ -26,7 +26,7 @@ from openapi_client.model_utils import ( # noqa: F401
validate_get_composed_info,
OpenApiModel
)
from openapi_client.exceptions import ApiAttributeError
from garage_admin_sdk.exceptions import ApiAttributeError

View file

@ -0,0 +1,263 @@
"""
Garage Administration API v0+garage-v0.7.3
Administrate your Garage cluster programatically, including status, layout, keys, buckets, and maintainance tasks. *Disclaimer: The API is not stable yet, hence its v0 tag. The API can change at any time, and changes can include breaking backward compatibility. Read the changelog and upgrade your scripts before upgrading. Additionnaly, this specification is very early stage and can contain bugs, especially on error return codes/types that are not tested yet. Do not expect a well finished and polished product!* # noqa: E501
The version of the OpenAPI document: v0.7.3
Generated by: https://openapi-generator.tech
"""
import re # noqa: F401
import sys # noqa: F401
from garage_admin_sdk.model_utils import ( # noqa: F401
ApiTypeError,
ModelComposed,
ModelNormal,
ModelSimple,
cached_property,
change_keys_js_to_python,
convert_js_args_to_python_args,
date,
datetime,
file_type,
none_type,
validate_get_composed_info,
OpenApiModel
)
from garage_admin_sdk.exceptions import ApiAttributeError
class KeyIdAccessKeyDeleteRequestDeny(ModelNormal):
"""NOTE: This class is auto generated by OpenAPI Generator.
Ref: https://openapi-generator.tech
Do not edit the class manually.
Attributes:
allowed_values (dict): The key is the tuple path to the attribute
and the for var_name this is (var_name,). The value is a dict
with a capitalized key describing the allowed value and an allowed
value. These dicts store the allowed enum values.
attribute_map (dict): The key is attribute name
and the value is json key in definition.
discriminator_value_class_map (dict): A dict to go from the discriminator
variable value to the discriminator class name.
validations (dict): The key is the tuple path to the attribute
and the for var_name this is (var_name,). The value is a dict
that stores validations for max_length, min_length, max_items,
min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
inclusive_minimum, and regex.
additional_properties_type (tuple): A tuple of classes accepted
as additional properties values.
"""
allowed_values = {
}
validations = {
}
@cached_property
def additional_properties_type():
"""
This must be a method because a model may have properties that are
of type self, this must run after the class is loaded
"""
return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
_nullable = False
@cached_property
def openapi_types():
"""
This must be a method because a model may have properties that are
of type self, this must run after the class is loaded
Returns
openapi_types (dict): The key is attribute name
and the value is attribute type.
"""
return {
'create_bucket': (bool,), # noqa: E501
}
@cached_property
def discriminator():
return None
attribute_map = {
'create_bucket': '