garage-admin-sdk-python/garage_admin_sdk/api/layout_api.py

567 lines
23 KiB
Python
Raw Normal View History

2022-11-13 13:21:12 +00:00
"""
2023-11-22 17:26:20 +00:00
Garage Administration API v0+garage-v0.9.0
2022-11-13 13:21:12 +00:00
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
2023-11-22 17:26:20 +00:00
The version of the OpenAPI document: v0.9.0
2022-11-13 13:21:12 +00:00
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
)
2023-11-22 17:26:20 +00:00
from garage_admin_sdk.model.apply_layout200_response import ApplyLayout200Response
2022-11-13 13:21:12 +00:00
from garage_admin_sdk.model.cluster_layout import ClusterLayout
from garage_admin_sdk.model.layout_version import LayoutVersion
2023-11-22 17:26:20 +00:00
from garage_admin_sdk.model.node_role_change import NodeRoleChange
2022-11-13 13:21:12 +00:00
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={
2023-11-22 17:26:20 +00:00
'response_type': (ClusterLayout,),
2022-11-13 13:21:12 +00:00
'auth': [
'bearerAuth'
],
'endpoint_path': '/layout',
'operation_id': 'add_layout',
'http_method': 'POST',
'servers': None,
},
params_map={
'all': [
2023-11-22 17:26:20 +00:00
'node_role_change',
2022-11-13 13:21:12 +00:00
],
'required': [
2023-11-22 17:26:20 +00:00
'node_role_change',
2022-11-13 13:21:12 +00:00
],
'nullable': [
],
'enum': [
],
'validation': [
]
},
root_map={
'validations': {
},
'allowed_values': {
},
'openapi_types': {
2023-11-22 17:26:20 +00:00
'node_role_change':
([NodeRoleChange],),
2022-11-13 13:21:12 +00:00
},
'attribute_map': {
},
'location_map': {
2023-11-22 17:26:20 +00:00
'node_role_change': 'body',
2022-11-13 13:21:12 +00:00
},
'collection_format_map': {
}
},
headers_map={
2023-11-22 17:26:20 +00:00
'accept': [
'application/json'
],
2022-11-13 13:21:12 +00:00
'content_type': [
'application/json'
]
},
api_client=api_client
)
self.apply_layout_endpoint = _Endpoint(
settings={
2023-11-22 17:26:20 +00:00
'response_type': (ApplyLayout200Response,),
2022-11-13 13:21:12 +00:00
'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={
2023-11-22 17:26:20 +00:00
'accept': [
'application/json'
],
2022-11-13 13:21:12 +00:00
'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,
2023-11-22 17:26:20 +00:00
node_role_change,
2022-11-13 13:21:12 +00:00
**kwargs
):
"""Send modifications to the cluster layout # noqa: E501
2023-11-22 17:26:20 +00:00
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
2022-11-13 13:21:12 +00:00
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please pass async_req=True
2023-11-22 17:26:20 +00:00
>>> thread = api.add_layout(node_role_change, async_req=True)
2022-11-13 13:21:12 +00:00
>>> result = thread.get()
Args:
2023-11-22 17:26:20 +00:00
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.
2022-11-13 13:21:12 +00:00
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:
2023-11-22 17:26:20 +00:00
ClusterLayout
2022-11-13 13:21:12 +00:00
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)
2023-11-22 17:26:20 +00:00
kwargs['node_role_change'] = \
node_role_change
2022-11-13 13:21:12 +00:00
return self.add_layout_endpoint.call_with_http_info(**kwargs)
def apply_layout(
self,
layout_version,
**kwargs
):
"""Apply staged layout # noqa: E501
2023-11-22 17:26:20 +00:00
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
2022-11-13 13:21:12 +00:00
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:
2023-11-22 17:26:20 +00:00
ApplyLayout200Response
2022-11-13 13:21:12 +00:00
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
2023-11-22 17:26:20 +00:00
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
2022-11-13 13:21:12 +00:00
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)