566 lines
23 KiB
Python
566 lines
23 KiB
Python
"""
|
|
Garage Administration API v0+garage-v0.9.0
|
|
|
|
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.9.0
|
|
Generated by: https://openapi-generator.tech
|
|
"""
|
|
|
|
|
|
import re # noqa: F401
|
|
import sys # 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,
|
|
datetime,
|
|
file_type,
|
|
none_type,
|
|
validate_and_convert_types
|
|
)
|
|
from garage_admin_sdk.model.apply_layout200_response import ApplyLayout200Response
|
|
from garage_admin_sdk.model.cluster_layout import ClusterLayout
|
|
from garage_admin_sdk.model.layout_version import LayoutVersion
|
|
from garage_admin_sdk.model.node_role_change import NodeRoleChange
|
|
|
|
|
|
class LayoutApi(object):
|
|
"""NOTE: This class is auto generated by OpenAPI Generator
|
|
Ref: https://openapi-generator.tech
|
|
|
|
Do not edit the class manually.
|
|
"""
|
|
|
|
def __init__(self, api_client=None):
|
|
if api_client is None:
|
|
api_client = ApiClient()
|
|
self.api_client = api_client
|
|
self.add_layout_endpoint = _Endpoint(
|
|
settings={
|
|
'response_type': (ClusterLayout,),
|
|
'auth': [
|
|
'bearerAuth'
|
|
],
|
|
'endpoint_path': '/layout',
|
|
'operation_id': 'add_layout',
|
|
'http_method': 'POST',
|
|
'servers': None,
|
|
},
|
|
params_map={
|
|
'all': [
|
|
'node_role_change',
|
|
],
|
|
'required': [
|
|
'node_role_change',
|
|
],
|
|
'nullable': [
|
|
],
|
|
'enum': [
|
|
],
|
|
'validation': [
|
|
]
|
|
},
|
|
root_map={
|
|
'validations': {
|
|
},
|
|
'allowed_values': {
|
|
},
|
|
'openapi_types': {
|
|
'node_role_change':
|
|
([NodeRoleChange],),
|
|
},
|
|
'attribute_map': {
|
|
},
|
|
'location_map': {
|
|
'node_role_change': 'body',
|
|
},
|
|
'collection_format_map': {
|
|
}
|
|
},
|
|
headers_map={
|
|
'accept': [
|
|
'application/json'
|
|
],
|
|
'content_type': [
|
|
'application/json'
|
|
]
|
|
},
|
|
api_client=api_client
|
|
)
|
|
self.apply_layout_endpoint = _Endpoint(
|
|
settings={
|
|
'response_type': (ApplyLayout200Response,),
|
|
'auth': [
|
|
'bearerAuth'
|
|
],
|
|
'endpoint_path': '/layout/apply',
|
|
'operation_id': 'apply_layout',
|
|
'http_method': 'POST',
|
|
'servers': None,
|
|
},
|
|
params_map={
|
|
'all': [
|
|
'layout_version',
|
|
],
|
|
'required': [
|
|
'layout_version',
|
|
],
|
|
'nullable': [
|
|
],
|
|
'enum': [
|
|
],
|
|
'validation': [
|
|
]
|
|
},
|
|
root_map={
|
|
'validations': {
|
|
},
|
|
'allowed_values': {
|
|
},
|
|
'openapi_types': {
|
|
'layout_version':
|
|
(LayoutVersion,),
|
|
},
|
|
'attribute_map': {
|
|
},
|
|
'location_map': {
|
|
'layout_version': 'body',
|
|
},
|
|
'collection_format_map': {
|
|
}
|
|
},
|
|
headers_map={
|
|
'accept': [
|
|
'application/json'
|
|
],
|
|
'content_type': [
|
|
'application/json'
|
|
]
|
|
},
|
|
api_client=api_client
|
|
)
|
|
self.get_layout_endpoint = _Endpoint(
|
|
settings={
|
|
'response_type': (ClusterLayout,),
|
|
'auth': [
|
|
'bearerAuth'
|
|
],
|
|
'endpoint_path': '/layout',
|
|
'operation_id': 'get_layout',
|
|
'http_method': 'GET',
|
|
'servers': None,
|
|
},
|
|
params_map={
|
|
'all': [
|
|
],
|
|
'required': [],
|
|
'nullable': [
|
|
],
|
|
'enum': [
|
|
],
|
|
'validation': [
|
|
]
|
|
},
|
|
root_map={
|
|
'validations': {
|
|
},
|
|
'allowed_values': {
|
|
},
|
|
'openapi_types': {
|
|
},
|
|
'attribute_map': {
|
|
},
|
|
'location_map': {
|
|
},
|
|
'collection_format_map': {
|
|
}
|
|
},
|
|
headers_map={
|
|
'accept': [
|
|
'application/json'
|
|
],
|
|
'content_type': [],
|
|
},
|
|
api_client=api_client
|
|
)
|
|
self.revert_layout_endpoint = _Endpoint(
|
|
settings={
|
|
'response_type': None,
|
|
'auth': [
|
|
'bearerAuth'
|
|
],
|
|
'endpoint_path': '/layout/revert',
|
|
'operation_id': 'revert_layout',
|
|
'http_method': 'POST',
|
|
'servers': None,
|
|
},
|
|
params_map={
|
|
'all': [
|
|
'layout_version',
|
|
],
|
|
'required': [
|
|
'layout_version',
|
|
],
|
|
'nullable': [
|
|
],
|
|
'enum': [
|
|
],
|
|
'validation': [
|
|
]
|
|
},
|
|
root_map={
|
|
'validations': {
|
|
},
|
|
'allowed_values': {
|
|
},
|
|
'openapi_types': {
|
|
'layout_version':
|
|
(LayoutVersion,),
|
|
},
|
|
'attribute_map': {
|
|
},
|
|
'location_map': {
|
|
'layout_version': 'body',
|
|
},
|
|
'collection_format_map': {
|
|
}
|
|
},
|
|
headers_map={
|
|
'accept': [],
|
|
'content_type': [
|
|
'application/json'
|
|
]
|
|
},
|
|
api_client=api_client
|
|
)
|
|
|
|
def add_layout(
|
|
self,
|
|
node_role_change,
|
|
**kwargs
|
|
):
|
|
"""Send modifications to the cluster layout # noqa: E501
|
|
|
|
Send modifications to the cluster layout. These modifications will be included in the staged role changes, visible in subsequent calls of `GET /layout`. Once the set of staged changes is satisfactory, the user may call `POST /layout/apply` to apply the changed changes, or `POST /layout/revert` to clear all of the staged changes in the layout. Setting the capacity to `null` will configure the node as a gateway. Otherwise, capacity must be now set in bytes (before Garage 0.9 it was arbitrary weights). For example to declare 100GB, you must set `capacity: 100000000000`. Garage uses internally the International System of Units (SI), it assumes that 1kB = 1000 bytes, and displays storage as kB, MB, GB (and not KiB, MiB, GiB that assume 1KiB = 1024 bytes). # noqa: E501
|
|
This method makes a synchronous HTTP request by default. To make an
|
|
asynchronous HTTP request, please pass async_req=True
|
|
|
|
>>> thread = api.add_layout(node_role_change, async_req=True)
|
|
>>> result = thread.get()
|
|
|
|
Args:
|
|
node_role_change ([NodeRoleChange]): To add a new node to the layout or to change the configuration of an existing node, simply set the values you want (`zone`, `capacity`, and `tags`). To remove a node, simply pass the `remove: true` field. This logic is represented in OpenAPI with a \"One Of\" object. Contrary to the CLI that may update only a subset of the fields capacity, zone and tags, when calling this API all of these values must be specified.
|
|
|
|
Keyword Args:
|
|
_return_http_data_only (bool): response data without head status
|
|
code and headers. Default is True.
|
|
_preload_content (bool): if False, the urllib3.HTTPResponse object
|
|
will be returned without reading/decoding response data.
|
|
Default is True.
|
|
_request_timeout (int/float/tuple): timeout setting for this request. If
|
|
one number provided, it will be total request timeout. It can also
|
|
be a pair (tuple) of (connection, read) timeouts.
|
|
Default is None.
|
|
_check_input_type (bool): specifies if type checking
|
|
should be done one the data sent to the server.
|
|
Default is True.
|
|
_check_return_type (bool): specifies if type checking
|
|
should be done one the data received from the server.
|
|
Default is True.
|
|
_spec_property_naming (bool): True if the variable names in the input data
|
|
are serialized names, as specified in the OpenAPI document.
|
|
False if the variable names in the input data
|
|
are pythonic names, e.g. snake case (default)
|
|
_content_type (str/None): force body content-type.
|
|
Default is None and content-type will be predicted by allowed
|
|
content-types and body.
|
|
_host_index (int/None): specifies the index of the server
|
|
that we want to use.
|
|
Default is read from the configuration.
|
|
_request_auths (list): set to override the auth_settings for an a single
|
|
request; this effectively ignores the authentication
|
|
in the spec for a single request.
|
|
Default is None
|
|
async_req (bool): execute request asynchronously
|
|
|
|
Returns:
|
|
ClusterLayout
|
|
If the method is called asynchronously, returns the request
|
|
thread.
|
|
"""
|
|
kwargs['async_req'] = kwargs.get(
|
|
'async_req', False
|
|
)
|
|
kwargs['_return_http_data_only'] = kwargs.get(
|
|
'_return_http_data_only', True
|
|
)
|
|
kwargs['_preload_content'] = kwargs.get(
|
|
'_preload_content', True
|
|
)
|
|
kwargs['_request_timeout'] = kwargs.get(
|
|
'_request_timeout', None
|
|
)
|
|
kwargs['_check_input_type'] = kwargs.get(
|
|
'_check_input_type', True
|
|
)
|
|
kwargs['_check_return_type'] = kwargs.get(
|
|
'_check_return_type', True
|
|
)
|
|
kwargs['_spec_property_naming'] = kwargs.get(
|
|
'_spec_property_naming', False
|
|
)
|
|
kwargs['_content_type'] = kwargs.get(
|
|
'_content_type')
|
|
kwargs['_host_index'] = kwargs.get('_host_index')
|
|
kwargs['_request_auths'] = kwargs.get('_request_auths', None)
|
|
kwargs['node_role_change'] = \
|
|
node_role_change
|
|
return self.add_layout_endpoint.call_with_http_info(**kwargs)
|
|
|
|
def apply_layout(
|
|
self,
|
|
layout_version,
|
|
**kwargs
|
|
):
|
|
"""Apply staged layout # noqa: E501
|
|
|
|
Applies to the cluster the layout changes currently registered as staged layout changes. *Note: do not try to parse the `message` field of the response, it is given as an array of string specifically because its format is not stable.* # noqa: E501
|
|
This method makes a synchronous HTTP request by default. To make an
|
|
asynchronous HTTP request, please pass async_req=True
|
|
|
|
>>> thread = api.apply_layout(layout_version, async_req=True)
|
|
>>> result = thread.get()
|
|
|
|
Args:
|
|
layout_version (LayoutVersion): Similarly to the CLI, the body must include the version of the new layout that will be created, which MUST be 1 + the value of the currently existing layout in the cluster.
|
|
|
|
Keyword Args:
|
|
_return_http_data_only (bool): response data without head status
|
|
code and headers. Default is True.
|
|
_preload_content (bool): if False, the urllib3.HTTPResponse object
|
|
will be returned without reading/decoding response data.
|
|
Default is True.
|
|
_request_timeout (int/float/tuple): timeout setting for this request. If
|
|
one number provided, it will be total request timeout. It can also
|
|
be a pair (tuple) of (connection, read) timeouts.
|
|
Default is None.
|
|
_check_input_type (bool): specifies if type checking
|
|
should be done one the data sent to the server.
|
|
Default is True.
|
|
_check_return_type (bool): specifies if type checking
|
|
should be done one the data received from the server.
|
|
Default is True.
|
|
_spec_property_naming (bool): True if the variable names in the input data
|
|
are serialized names, as specified in the OpenAPI document.
|
|
False if the variable names in the input data
|
|
are pythonic names, e.g. snake case (default)
|
|
_content_type (str/None): force body content-type.
|
|
Default is None and content-type will be predicted by allowed
|
|
content-types and body.
|
|
_host_index (int/None): specifies the index of the server
|
|
that we want to use.
|
|
Default is read from the configuration.
|
|
_request_auths (list): set to override the auth_settings for an a single
|
|
request; this effectively ignores the authentication
|
|
in the spec for a single request.
|
|
Default is None
|
|
async_req (bool): execute request asynchronously
|
|
|
|
Returns:
|
|
ApplyLayout200Response
|
|
If the method is called asynchronously, returns the request
|
|
thread.
|
|
"""
|
|
kwargs['async_req'] = kwargs.get(
|
|
'async_req', False
|
|
)
|
|
kwargs['_return_http_data_only'] = kwargs.get(
|
|
'_return_http_data_only', True
|
|
)
|
|
kwargs['_preload_content'] = kwargs.get(
|
|
'_preload_content', True
|
|
)
|
|
kwargs['_request_timeout'] = kwargs.get(
|
|
'_request_timeout', None
|
|
)
|
|
kwargs['_check_input_type'] = kwargs.get(
|
|
'_check_input_type', True
|
|
)
|
|
kwargs['_check_return_type'] = kwargs.get(
|
|
'_check_return_type', True
|
|
)
|
|
kwargs['_spec_property_naming'] = kwargs.get(
|
|
'_spec_property_naming', False
|
|
)
|
|
kwargs['_content_type'] = kwargs.get(
|
|
'_content_type')
|
|
kwargs['_host_index'] = kwargs.get('_host_index')
|
|
kwargs['_request_auths'] = kwargs.get('_request_auths', None)
|
|
kwargs['layout_version'] = \
|
|
layout_version
|
|
return self.apply_layout_endpoint.call_with_http_info(**kwargs)
|
|
|
|
def get_layout(
|
|
self,
|
|
**kwargs
|
|
):
|
|
"""Details on the current and staged layout # noqa: E501
|
|
|
|
Returns the cluster's current layout, including: - Currently configured cluster layout - Staged changes to the cluster layout *Capacity is given in bytes* *The info returned by this endpoint is a subset of the info returned by `GET /status`.* # noqa: E501
|
|
This method makes a synchronous HTTP request by default. To make an
|
|
asynchronous HTTP request, please pass async_req=True
|
|
|
|
>>> thread = api.get_layout(async_req=True)
|
|
>>> result = thread.get()
|
|
|
|
|
|
Keyword Args:
|
|
_return_http_data_only (bool): response data without head status
|
|
code and headers. Default is True.
|
|
_preload_content (bool): if False, the urllib3.HTTPResponse object
|
|
will be returned without reading/decoding response data.
|
|
Default is True.
|
|
_request_timeout (int/float/tuple): timeout setting for this request. If
|
|
one number provided, it will be total request timeout. It can also
|
|
be a pair (tuple) of (connection, read) timeouts.
|
|
Default is None.
|
|
_check_input_type (bool): specifies if type checking
|
|
should be done one the data sent to the server.
|
|
Default is True.
|
|
_check_return_type (bool): specifies if type checking
|
|
should be done one the data received from the server.
|
|
Default is True.
|
|
_spec_property_naming (bool): True if the variable names in the input data
|
|
are serialized names, as specified in the OpenAPI document.
|
|
False if the variable names in the input data
|
|
are pythonic names, e.g. snake case (default)
|
|
_content_type (str/None): force body content-type.
|
|
Default is None and content-type will be predicted by allowed
|
|
content-types and body.
|
|
_host_index (int/None): specifies the index of the server
|
|
that we want to use.
|
|
Default is read from the configuration.
|
|
_request_auths (list): set to override the auth_settings for an a single
|
|
request; this effectively ignores the authentication
|
|
in the spec for a single request.
|
|
Default is None
|
|
async_req (bool): execute request asynchronously
|
|
|
|
Returns:
|
|
ClusterLayout
|
|
If the method is called asynchronously, returns the request
|
|
thread.
|
|
"""
|
|
kwargs['async_req'] = kwargs.get(
|
|
'async_req', False
|
|
)
|
|
kwargs['_return_http_data_only'] = kwargs.get(
|
|
'_return_http_data_only', True
|
|
)
|
|
kwargs['_preload_content'] = kwargs.get(
|
|
'_preload_content', True
|
|
)
|
|
kwargs['_request_timeout'] = kwargs.get(
|
|
'_request_timeout', None
|
|
)
|
|
kwargs['_check_input_type'] = kwargs.get(
|
|
'_check_input_type', True
|
|
)
|
|
kwargs['_check_return_type'] = kwargs.get(
|
|
'_check_return_type', True
|
|
)
|
|
kwargs['_spec_property_naming'] = kwargs.get(
|
|
'_spec_property_naming', False
|
|
)
|
|
kwargs['_content_type'] = kwargs.get(
|
|
'_content_type')
|
|
kwargs['_host_index'] = kwargs.get('_host_index')
|
|
kwargs['_request_auths'] = kwargs.get('_request_auths', None)
|
|
return self.get_layout_endpoint.call_with_http_info(**kwargs)
|
|
|
|
def revert_layout(
|
|
self,
|
|
layout_version,
|
|
**kwargs
|
|
):
|
|
"""Clear staged layout # noqa: E501
|
|
|
|
Clears all of the staged layout changes. # noqa: E501
|
|
This method makes a synchronous HTTP request by default. To make an
|
|
asynchronous HTTP request, please pass async_req=True
|
|
|
|
>>> thread = api.revert_layout(layout_version, async_req=True)
|
|
>>> result = thread.get()
|
|
|
|
Args:
|
|
layout_version (LayoutVersion): Reverting the staged changes is done by incrementing the version number and clearing the contents of the staged change list. Similarly to the CLI, the body must include the incremented version number, which MUST be 1 + the value of the currently existing layout in the cluster.
|
|
|
|
Keyword Args:
|
|
_return_http_data_only (bool): response data without head status
|
|
code and headers. Default is True.
|
|
_preload_content (bool): if False, the urllib3.HTTPResponse object
|
|
will be returned without reading/decoding response data.
|
|
Default is True.
|
|
_request_timeout (int/float/tuple): timeout setting for this request. If
|
|
one number provided, it will be total request timeout. It can also
|
|
be a pair (tuple) of (connection, read) timeouts.
|
|
Default is None.
|
|
_check_input_type (bool): specifies if type checking
|
|
should be done one the data sent to the server.
|
|
Default is True.
|
|
_check_return_type (bool): specifies if type checking
|
|
should be done one the data received from the server.
|
|
Default is True.
|
|
_spec_property_naming (bool): True if the variable names in the input data
|
|
are serialized names, as specified in the OpenAPI document.
|
|
False if the variable names in the input data
|
|
are pythonic names, e.g. snake case (default)
|
|
_content_type (str/None): force body content-type.
|
|
Default is None and content-type will be predicted by allowed
|
|
content-types and body.
|
|
_host_index (int/None): specifies the index of the server
|
|
that we want to use.
|
|
Default is read from the configuration.
|
|
_request_auths (list): set to override the auth_settings for an a single
|
|
request; this effectively ignores the authentication
|
|
in the spec for a single request.
|
|
Default is None
|
|
async_req (bool): execute request asynchronously
|
|
|
|
Returns:
|
|
None
|
|
If the method is called asynchronously, returns the request
|
|
thread.
|
|
"""
|
|
kwargs['async_req'] = kwargs.get(
|
|
'async_req', False
|
|
)
|
|
kwargs['_return_http_data_only'] = kwargs.get(
|
|
'_return_http_data_only', True
|
|
)
|
|
kwargs['_preload_content'] = kwargs.get(
|
|
'_preload_content', True
|
|
)
|
|
kwargs['_request_timeout'] = kwargs.get(
|
|
'_request_timeout', None
|
|
)
|
|
kwargs['_check_input_type'] = kwargs.get(
|
|
'_check_input_type', True
|
|
)
|
|
kwargs['_check_return_type'] = kwargs.get(
|
|
'_check_return_type', True
|
|
)
|
|
kwargs['_spec_property_naming'] = kwargs.get(
|
|
'_spec_property_naming', False
|
|
)
|
|
kwargs['_content_type'] = kwargs.get(
|
|
'_content_type')
|
|
kwargs['_host_index'] = kwargs.get('_host_index')
|
|
kwargs['_request_auths'] = kwargs.get('_request_auths', None)
|
|
kwargs['layout_version'] = \
|
|
layout_version
|
|
return self.revert_layout_endpoint.call_with_http_info(**kwargs)
|
|
|