diff --git a/README.md b/README.md index 1419987..a3dcd48 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ a large range of the API are provided. Thanks in advance :-) ```bash git clone ... -git submodule init +git submodule update --init ``` ### (Re)generate libraries diff --git a/garage b/garage index 5a7675c..008119e 160000 --- a/garage +++ b/garage @@ -1 +1 @@ -Subproject commit 5a7675cf7cda7c92e016a183cdc921ef97554759 +Subproject commit 008119e1ba24f19f8f8fdaec7a451b209ef56a12 diff --git a/python/README.md b/python/README.md index c5492c6..8799b6b 100644 --- a/python/README.md +++ b/python/README.md @@ -81,11 +81,11 @@ with garage_admin_sdk.ApiClient(configuration) as api_client: api_instance = key_api.KeyApi(api_client) add_key_request = AddKeyRequest( name="test-key", - ) # AddKeyRequest | \"You can optionnaly set a friendly name for this key\" (optional) + ) # AddKeyRequest | \"You can set a friendly name for this key, send an empty string instead\" try: # Create a new API key - api_response = api_instance.add_key(add_key_request=add_key_request) + api_response = api_instance.add_key(add_key_request) pprint(api_response) except garage_admin_sdk.ApiException as e: print("Exception when calling KeyApi->add_key: %s\n" % e) diff --git a/python/docs/ClusterLayout.md b/python/docs/ClusterLayout.md index 341bf8a..b8491d2 100644 --- a/python/docs/ClusterLayout.md +++ b/python/docs/ClusterLayout.md @@ -4,9 +4,9 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**version** | **int** | | [optional] -**roles** | [**{str: (NodeClusterInfo,)}**](NodeClusterInfo.md) | | [optional] -**staged_role_changes** | [**{str: (NodeClusterInfo,)}**](NodeClusterInfo.md) | | [optional] +**version** | **int** | | +**roles** | [**{str: (NodeClusterInfo,)}**](NodeClusterInfo.md) | | +**staged_role_changes** | [**{str: (NodeClusterInfo,)}**](NodeClusterInfo.md) | | **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) diff --git a/python/docs/GetNodes200Response.md b/python/docs/GetNodes200Response.md index 1d8261e..85586f5 100644 --- a/python/docs/GetNodes200Response.md +++ b/python/docs/GetNodes200Response.md @@ -4,10 +4,10 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**node** | **str** | | [optional] -**garage_version** | **str** | | [optional] -**known_nodes** | [**{str: (NodeNetworkInfo,)}**](NodeNetworkInfo.md) | | [optional] -**layout** | [**ClusterLayout**](ClusterLayout.md) | | [optional] +**node** | **str** | | +**garage_version** | **str** | | +**known_nodes** | [**{str: (NodeNetworkInfo,)}**](NodeNetworkInfo.md) | | +**layout** | [**ClusterLayout**](ClusterLayout.md) | | **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) diff --git a/python/docs/ImportKeyRequest.md b/python/docs/ImportKeyRequest.md index 3ff1d0c..9e1035a 100644 --- a/python/docs/ImportKeyRequest.md +++ b/python/docs/ImportKeyRequest.md @@ -4,9 +4,9 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**name** | **str** | | [optional] -**access_key_id** | **str** | | [optional] -**secret_access_key** | **str** | | [optional] +**name** | **str** | | +**access_key_id** | **str** | | +**secret_access_key** | **str** | | **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) diff --git a/python/docs/KeyApi.md b/python/docs/KeyApi.md index a994f1e..2dd050b 100644 --- a/python/docs/KeyApi.md +++ b/python/docs/KeyApi.md @@ -14,7 +14,7 @@ Method | HTTP request | Description # **add_key** -> KeyInfo add_key() +> KeyInfo add_key(add_key_request) Create a new API key @@ -53,13 +53,12 @@ with garage_admin_sdk.ApiClient(configuration) as api_client: api_instance = key_api.KeyApi(api_client) add_key_request = AddKeyRequest( name="test-key", - ) # AddKeyRequest | \"You can optionnaly set a friendly name for this key\" (optional) + ) # AddKeyRequest | \"You can set a friendly name for this key, send an empty string instead\" # example passing only required values which don't have defaults set - # and optional values try: # Create a new API key - api_response = api_instance.add_key(add_key_request=add_key_request) + api_response = api_instance.add_key(add_key_request) pprint(api_response) except garage_admin_sdk.ApiException as e: print("Exception when calling KeyApi->add_key: %s\n" % e) @@ -70,7 +69,7 @@ with garage_admin_sdk.ApiClient(configuration) as api_client: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **add_key_request** | [**AddKeyRequest**](AddKeyRequest.md)| \"You can optionnaly set a friendly name for this key\" | [optional] + **add_key_request** | [**AddKeyRequest**](AddKeyRequest.md)| \"You can set a friendly name for this key, send an empty string instead\" | ### Return type @@ -251,7 +250,7 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **import_key** -> KeyInfo import_key() +> KeyInfo import_key(import_key_request) Import an existing key @@ -292,13 +291,12 @@ with garage_admin_sdk.ApiClient(configuration) as api_client: name="test-key", access_key_id="GK31c2f218a2e44f485b94239e", secret_access_key="b892c0665f0ada8a4755dae98baa3b133590e11dae3bcc1f9d769d67f16c3835", - ) # ImportKeyRequest | Information on the key to import (optional) + ) # ImportKeyRequest | Information on the key to import # example passing only required values which don't have defaults set - # and optional values try: # Import an existing key - api_response = api_instance.import_key(import_key_request=import_key_request) + api_response = api_instance.import_key(import_key_request) pprint(api_response) except garage_admin_sdk.ApiException as e: print("Exception when calling KeyApi->import_key: %s\n" % e) @@ -309,7 +307,7 @@ with garage_admin_sdk.ApiClient(configuration) as api_client: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **import_key_request** | [**ImportKeyRequest**](ImportKeyRequest.md)| Information on the key to import | [optional] + **import_key_request** | [**ImportKeyRequest**](ImportKeyRequest.md)| Information on the key to import | ### Return type diff --git a/python/docs/LayoutApi.md b/python/docs/LayoutApi.md index f76901d..f9f8ab4 100644 --- a/python/docs/LayoutApi.md +++ b/python/docs/LayoutApi.md @@ -11,7 +11,7 @@ Method | HTTP request | Description # **add_layout** -> add_layout() +> add_layout(request_body) Send modifications to the cluster layout @@ -48,14 +48,17 @@ 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 = { - "key": NodeClusterInfo(None), - } # {str: (NodeClusterInfo,)} | To add a new node to the layout or to change the configuration of an existing node, simply set the values you want. To remove a node, set it to `null` instead of passing a configuration 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. (optional) + "key": NodeClusterInfo( + zone="dc1", + capacity=4, + tags=["gateway","fast"], + ), + } # {str: (NodeClusterInfo,)} | To add a new node to the layout or to change the configuration of an existing node, simply set the values you want. To remove a node, set it to `null` instead of passing a configuration 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. # example passing only required values which don't have defaults set - # and optional values try: # Send modifications to the cluster layout - api_instance.add_layout(request_body=request_body) + api_instance.add_layout(request_body) except garage_admin_sdk.ApiException as e: print("Exception when calling LayoutApi->add_layout: %s\n" % e) ``` @@ -65,7 +68,7 @@ with garage_admin_sdk.ApiClient(configuration) as api_client: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **request_body** | [**{str: (NodeClusterInfo,)}**](NodeClusterInfo.md)| To add a new node to the layout or to change the configuration of an existing node, simply set the values you want. To remove a node, set it to `null` instead of passing a configuration 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. | [optional] + **request_body** | [**{str: (NodeClusterInfo,)}**](NodeClusterInfo.md)| To add a new node to the layout or to change the configuration of an existing node, simply set the values you want. To remove a node, set it to `null` instead of passing a configuration 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. | ### Return type @@ -92,7 +95,7 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **apply_layout** -> apply_layout() +> apply_layout(layout_version) Apply staged layout @@ -130,13 +133,12 @@ with garage_admin_sdk.ApiClient(configuration) as api_client: api_instance = layout_api.LayoutApi(api_client) layout_version = LayoutVersion( version=13, - ) # 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. (optional) + ) # 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. # example passing only required values which don't have defaults set - # and optional values try: # Apply staged layout - api_instance.apply_layout(layout_version=layout_version) + api_instance.apply_layout(layout_version) except garage_admin_sdk.ApiException as e: print("Exception when calling LayoutApi->apply_layout: %s\n" % e) ``` @@ -146,7 +148,7 @@ with garage_admin_sdk.ApiClient(configuration) as api_client: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **layout_version** | [**LayoutVersion**](LayoutVersion.md)| 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. | [optional] + **layout_version** | [**LayoutVersion**](LayoutVersion.md)| 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. | ### Return type @@ -247,7 +249,7 @@ This endpoint does not need any parameter. [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) # **revert_layout** -> revert_layout() +> revert_layout(layout_version) Clear staged layout @@ -285,13 +287,12 @@ with garage_admin_sdk.ApiClient(configuration) as api_client: api_instance = layout_api.LayoutApi(api_client) layout_version = LayoutVersion( version=13, - ) # 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. (optional) + ) # 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. # example passing only required values which don't have defaults set - # and optional values try: # Clear staged layout - api_instance.revert_layout(layout_version=layout_version) + api_instance.revert_layout(layout_version) except garage_admin_sdk.ApiException as e: print("Exception when calling LayoutApi->revert_layout: %s\n" % e) ``` @@ -301,7 +302,7 @@ with garage_admin_sdk.ApiClient(configuration) as api_client: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **layout_version** | [**LayoutVersion**](LayoutVersion.md)| 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. | [optional] + **layout_version** | [**LayoutVersion**](LayoutVersion.md)| 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. | ### Return type diff --git a/python/docs/ListKeys200ResponseInner.md b/python/docs/ListKeys200ResponseInner.md index 43883f8..216d4b6 100644 --- a/python/docs/ListKeys200ResponseInner.md +++ b/python/docs/ListKeys200ResponseInner.md @@ -4,7 +4,7 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**id** | **str** | | [optional] +**id** | **str** | | **name** | **str** | | [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] diff --git a/python/docs/NodeClusterInfo.md b/python/docs/NodeClusterInfo.md index a378fea..ce78df0 100644 --- a/python/docs/NodeClusterInfo.md +++ b/python/docs/NodeClusterInfo.md @@ -4,9 +4,9 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**zone** | **str** | | [optional] -**capacity** | **int** | | [optional] -**tags** | **[str]** | User defined tags, put whatever makes sense for you, these tags are not interpreted by Garage | [optional] +**zone** | **str** | | +**capacity** | **int** | | +**tags** | **[str]** | User defined tags, put whatever makes sense for you, these tags are not interpreted by Garage | **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) diff --git a/python/docs/NodeNetworkInfo.md b/python/docs/NodeNetworkInfo.md index 4274116..8f03e93 100644 --- a/python/docs/NodeNetworkInfo.md +++ b/python/docs/NodeNetworkInfo.md @@ -4,10 +4,10 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**addr** | **str** | | [optional] -**is_up** | **bool** | | [optional] -**last_seen_secs_ago** | **int** | | [optional] -**hostname** | **str** | | [optional] +**addr** | **str** | | +**is_up** | **bool** | | +**last_seen_secs_ago** | **int, none_type** | | +**hostname** | **str** | | **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) diff --git a/python/docs/NodesApi.md b/python/docs/NodesApi.md index e652ebd..d1103d6 100644 --- a/python/docs/NodesApi.md +++ b/python/docs/NodesApi.md @@ -9,7 +9,7 @@ Method | HTTP request | Description # **add_node** -> [AddNode200ResponseInner] add_node() +> [AddNode200ResponseInner] add_node(request_body) Connect target node to other Garage nodes @@ -45,13 +45,12 @@ configuration = garage_admin_sdk.Configuration( with garage_admin_sdk.ApiClient(configuration) as api_client: # Create an instance of the API class api_instance = nodes_api.NodesApi(api_client) - request_body = ["ec79480e0ce52ae26fd00c9da684e4fa56658d9c64cdcecb094e936de0bfe71f@10.0.0.11:3901","4a6ae5a1d0d33bf895f5bb4f0a418b7dc94c47c0dd2eb108d1158f3c8f60b0ff@10.0.0.12:3901"] # [str] | (optional) + request_body = ["ec79480e0ce52ae26fd00c9da684e4fa56658d9c64cdcecb094e936de0bfe71f@10.0.0.11:3901","4a6ae5a1d0d33bf895f5bb4f0a418b7dc94c47c0dd2eb108d1158f3c8f60b0ff@10.0.0.12:3901"] # [str] | # example passing only required values which don't have defaults set - # and optional values try: # Connect target node to other Garage nodes - api_response = api_instance.add_node(request_body=request_body) + api_response = api_instance.add_node(request_body) pprint(api_response) except garage_admin_sdk.ApiException as e: print("Exception when calling NodesApi->add_node: %s\n" % e) @@ -62,7 +61,7 @@ with garage_admin_sdk.ApiClient(configuration) as api_client: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **request_body** | **[str]**| | [optional] + **request_body** | **[str]**| | ### Return type diff --git a/python/garage_admin_sdk/api/key_api.py b/python/garage_admin_sdk/api/key_api.py index 3b10830..6373d57 100644 --- a/python/garage_admin_sdk/api/key_api.py +++ b/python/garage_admin_sdk/api/key_api.py @@ -54,7 +54,9 @@ class KeyApi(object): 'all': [ 'add_key_request', ], - 'required': [], + 'required': [ + 'add_key_request', + ], 'nullable': [ ], 'enum': [ @@ -204,7 +206,9 @@ class KeyApi(object): 'all': [ 'import_key_request', ], - 'required': [], + 'required': [ + 'import_key_request', + ], 'nullable': [ ], 'enum': [ @@ -394,6 +398,7 @@ class KeyApi(object): def add_key( self, + add_key_request, **kwargs ): """Create a new API key # noqa: E501 @@ -402,12 +407,13 @@ class KeyApi(object): This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.add_key(async_req=True) + >>> thread = api.add_key(add_key_request, async_req=True) >>> result = thread.get() + Args: + add_key_request (AddKeyRequest): \"You can set a friendly name for this key, send an empty string instead\" Keyword Args: - add_key_request (AddKeyRequest): \"You can optionnaly set a friendly name for this key\" . [optional] _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 @@ -469,6 +475,8 @@ class KeyApi(object): '_content_type') kwargs['_host_index'] = kwargs.get('_host_index') kwargs['_request_auths'] = kwargs.get('_request_auths', None) + kwargs['add_key_request'] = \ + add_key_request return self.add_key_endpoint.call_with_http_info(**kwargs) def delete_key( @@ -639,6 +647,7 @@ class KeyApi(object): def import_key( self, + import_key_request, **kwargs ): """Import an existing key # noqa: E501 @@ -647,12 +656,13 @@ class KeyApi(object): This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.import_key(async_req=True) + >>> thread = api.import_key(import_key_request, async_req=True) >>> result = thread.get() + Args: + import_key_request (ImportKeyRequest): Information on the key to import Keyword Args: - import_key_request (ImportKeyRequest): Information on the key to import . [optional] _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 @@ -714,6 +724,8 @@ class KeyApi(object): '_content_type') kwargs['_host_index'] = kwargs.get('_host_index') kwargs['_request_auths'] = kwargs.get('_request_auths', None) + kwargs['import_key_request'] = \ + import_key_request return self.import_key_endpoint.call_with_http_info(**kwargs) def list_keys( diff --git a/python/garage_admin_sdk/api/layout_api.py b/python/garage_admin_sdk/api/layout_api.py index a3d3594..dd51a73 100644 --- a/python/garage_admin_sdk/api/layout_api.py +++ b/python/garage_admin_sdk/api/layout_api.py @@ -52,7 +52,9 @@ class LayoutApi(object): 'all': [ 'request_body', ], - 'required': [], + 'required': [ + 'request_body', + ], 'nullable': [ ], 'enum': [ @@ -100,7 +102,9 @@ class LayoutApi(object): 'all': [ 'layout_version', ], - 'required': [], + 'required': [ + 'layout_version', + ], 'nullable': [ ], 'enum': [ @@ -192,7 +196,9 @@ class LayoutApi(object): 'all': [ 'layout_version', ], - 'required': [], + 'required': [ + 'layout_version', + ], 'nullable': [ ], 'enum': [ @@ -228,6 +234,7 @@ class LayoutApi(object): def add_layout( self, + request_body, **kwargs ): """Send modifications to the cluster layout # noqa: E501 @@ -236,12 +243,13 @@ class LayoutApi(object): This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.add_layout(async_req=True) + >>> thread = api.add_layout(request_body, async_req=True) >>> result = thread.get() + Args: + request_body ({str: (NodeClusterInfo,)}): To add a new node to the layout or to change the configuration of an existing node, simply set the values you want. To remove a node, set it to `null` instead of passing a configuration 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: - request_body ({str: (NodeClusterInfo,)}): To add a new node to the layout or to change the configuration of an existing node, simply set the values you want. To remove a node, set it to `null` instead of passing a configuration 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. . [optional] _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 @@ -303,10 +311,13 @@ class LayoutApi(object): '_content_type') kwargs['_host_index'] = kwargs.get('_host_index') kwargs['_request_auths'] = kwargs.get('_request_auths', None) + kwargs['request_body'] = \ + request_body return self.add_layout_endpoint.call_with_http_info(**kwargs) def apply_layout( self, + layout_version, **kwargs ): """Apply staged layout # noqa: E501 @@ -315,12 +326,13 @@ class LayoutApi(object): This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.apply_layout(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: - 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. . [optional] _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 @@ -382,6 +394,8 @@ class LayoutApi(object): '_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( @@ -464,6 +478,7 @@ class LayoutApi(object): def revert_layout( self, + layout_version, **kwargs ): """Clear staged layout # noqa: E501 @@ -472,12 +487,13 @@ class LayoutApi(object): This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.revert_layout(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: - 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. . [optional] _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 @@ -539,5 +555,7 @@ class LayoutApi(object): '_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) diff --git a/python/garage_admin_sdk/api/nodes_api.py b/python/garage_admin_sdk/api/nodes_api.py index e6bb1bd..835fd9c 100644 --- a/python/garage_admin_sdk/api/nodes_api.py +++ b/python/garage_admin_sdk/api/nodes_api.py @@ -51,7 +51,9 @@ class NodesApi(object): 'all': [ 'request_body', ], - 'required': [], + 'required': [ + 'request_body', + ], 'nullable': [ ], 'enum': [ @@ -133,6 +135,7 @@ class NodesApi(object): def add_node( self, + request_body, **kwargs ): """Connect target node to other Garage nodes # noqa: E501 @@ -141,12 +144,13 @@ class NodesApi(object): This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True - >>> thread = api.add_node(async_req=True) + >>> thread = api.add_node(request_body, async_req=True) >>> result = thread.get() + Args: + request_body ([str]): Keyword Args: - request_body ([str]): [optional] _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 @@ -208,6 +212,8 @@ class NodesApi(object): '_content_type') kwargs['_host_index'] = kwargs.get('_host_index') kwargs['_request_auths'] = kwargs.get('_request_auths', None) + kwargs['request_body'] = \ + request_body return self.add_node_endpoint.call_with_http_info(**kwargs) def get_nodes( diff --git a/python/garage_admin_sdk/model/cluster_layout.py b/python/garage_admin_sdk/model/cluster_layout.py index 84898fa..482e106 100644 --- a/python/garage_admin_sdk/model/cluster_layout.py +++ b/python/garage_admin_sdk/model/cluster_layout.py @@ -110,9 +110,14 @@ class ClusterLayout(ModelNormal): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, version, roles, staged_role_changes, *args, **kwargs): # noqa: E501 """ClusterLayout - a model defined in OpenAPI + Args: + version (int): + roles ({str: (NodeClusterInfo,)}): + staged_role_changes ({str: (NodeClusterInfo,)}): + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -144,9 +149,6 @@ class ClusterLayout(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - version (int): [optional] # noqa: E501 - roles ({str: (NodeClusterInfo,)}): [optional] # noqa: E501 - staged_role_changes ({str: (NodeClusterInfo,)}): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -178,6 +180,9 @@ class ClusterLayout(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.version = version + self.roles = roles + self.staged_role_changes = staged_role_changes for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ @@ -198,9 +203,14 @@ class ClusterLayout(ModelNormal): ]) @convert_js_args_to_python_args - def __init__(self, *args, **kwargs): # noqa: E501 + def __init__(self, version, roles, staged_role_changes, *args, **kwargs): # noqa: E501 """ClusterLayout - a model defined in OpenAPI + Args: + version (int): + roles ({str: (NodeClusterInfo,)}): + staged_role_changes ({str: (NodeClusterInfo,)}): + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -232,9 +242,6 @@ class ClusterLayout(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - version (int): [optional] # noqa: E501 - roles ({str: (NodeClusterInfo,)}): [optional] # noqa: E501 - staged_role_changes ({str: (NodeClusterInfo,)}): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -264,6 +271,9 @@ class ClusterLayout(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.version = version + self.roles = roles + self.staged_role_changes = staged_role_changes for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/python/garage_admin_sdk/model/get_nodes200_response.py b/python/garage_admin_sdk/model/get_nodes200_response.py index 2570080..5d057ac 100644 --- a/python/garage_admin_sdk/model/get_nodes200_response.py +++ b/python/garage_admin_sdk/model/get_nodes200_response.py @@ -114,9 +114,15 @@ class GetNodes200Response(ModelNormal): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, node, garage_version, known_nodes, layout, *args, **kwargs): # noqa: E501 """GetNodes200Response - a model defined in OpenAPI + Args: + node (str): + garage_version (str): + known_nodes ({str: (NodeNetworkInfo,)}): + layout (ClusterLayout): + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -148,10 +154,6 @@ class GetNodes200Response(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - node (str): [optional] # noqa: E501 - garage_version (str): [optional] # noqa: E501 - known_nodes ({str: (NodeNetworkInfo,)}): [optional] # noqa: E501 - layout (ClusterLayout): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -183,6 +185,10 @@ class GetNodes200Response(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.node = node + self.garage_version = garage_version + self.known_nodes = known_nodes + self.layout = layout for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ @@ -203,9 +209,15 @@ class GetNodes200Response(ModelNormal): ]) @convert_js_args_to_python_args - def __init__(self, *args, **kwargs): # noqa: E501 + def __init__(self, node, garage_version, known_nodes, layout, *args, **kwargs): # noqa: E501 """GetNodes200Response - a model defined in OpenAPI + Args: + node (str): + garage_version (str): + known_nodes ({str: (NodeNetworkInfo,)}): + layout (ClusterLayout): + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -237,10 +249,6 @@ class GetNodes200Response(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - node (str): [optional] # noqa: E501 - garage_version (str): [optional] # noqa: E501 - known_nodes ({str: (NodeNetworkInfo,)}): [optional] # noqa: E501 - layout (ClusterLayout): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -270,6 +278,10 @@ class GetNodes200Response(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.node = node + self.garage_version = garage_version + self.known_nodes = known_nodes + self.layout = layout for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/python/garage_admin_sdk/model/import_key_request.py b/python/garage_admin_sdk/model/import_key_request.py index 3359eb0..8f488cf 100644 --- a/python/garage_admin_sdk/model/import_key_request.py +++ b/python/garage_admin_sdk/model/import_key_request.py @@ -104,9 +104,14 @@ class ImportKeyRequest(ModelNormal): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, name, access_key_id, secret_access_key, *args, **kwargs): # noqa: E501 """ImportKeyRequest - a model defined in OpenAPI + Args: + name (str): + access_key_id (str): + secret_access_key (str): + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -138,9 +143,6 @@ class ImportKeyRequest(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - name (str): [optional] # noqa: E501 - access_key_id (str): [optional] # noqa: E501 - secret_access_key (str): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -172,6 +174,9 @@ class ImportKeyRequest(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.name = name + self.access_key_id = access_key_id + self.secret_access_key = secret_access_key for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ @@ -192,9 +197,14 @@ class ImportKeyRequest(ModelNormal): ]) @convert_js_args_to_python_args - def __init__(self, *args, **kwargs): # noqa: E501 + def __init__(self, name, access_key_id, secret_access_key, *args, **kwargs): # noqa: E501 """ImportKeyRequest - a model defined in OpenAPI + Args: + name (str): + access_key_id (str): + secret_access_key (str): + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -226,9 +236,6 @@ class ImportKeyRequest(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - name (str): [optional] # noqa: E501 - access_key_id (str): [optional] # noqa: E501 - secret_access_key (str): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -258,6 +265,9 @@ class ImportKeyRequest(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.name = name + self.access_key_id = access_key_id + self.secret_access_key = secret_access_key for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/python/garage_admin_sdk/model/list_keys200_response_inner.py b/python/garage_admin_sdk/model/list_keys200_response_inner.py index 4a2daec..2b0d72e 100644 --- a/python/garage_admin_sdk/model/list_keys200_response_inner.py +++ b/python/garage_admin_sdk/model/list_keys200_response_inner.py @@ -102,9 +102,12 @@ class ListKeys200ResponseInner(ModelNormal): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, id, *args, **kwargs): # noqa: E501 """ListKeys200ResponseInner - a model defined in OpenAPI + Args: + id (str): + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -136,7 +139,6 @@ class ListKeys200ResponseInner(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - id (str): [optional] # noqa: E501 name (str): [optional] # noqa: E501 """ @@ -169,6 +171,7 @@ class ListKeys200ResponseInner(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.id = id for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ @@ -189,9 +192,12 @@ class ListKeys200ResponseInner(ModelNormal): ]) @convert_js_args_to_python_args - def __init__(self, *args, **kwargs): # noqa: E501 + def __init__(self, id, *args, **kwargs): # noqa: E501 """ListKeys200ResponseInner - a model defined in OpenAPI + Args: + id (str): + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -223,7 +229,6 @@ class ListKeys200ResponseInner(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - id (str): [optional] # noqa: E501 name (str): [optional] # noqa: E501 """ @@ -254,6 +259,7 @@ class ListKeys200ResponseInner(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.id = id for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/python/garage_admin_sdk/model/node_cluster_info.py b/python/garage_admin_sdk/model/node_cluster_info.py index d73568f..5a182c5 100644 --- a/python/garage_admin_sdk/model/node_cluster_info.py +++ b/python/garage_admin_sdk/model/node_cluster_info.py @@ -104,9 +104,14 @@ class NodeClusterInfo(ModelNormal): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, zone, capacity, tags, *args, **kwargs): # noqa: E501 """NodeClusterInfo - a model defined in OpenAPI + Args: + zone (str): + capacity (int): + tags ([str]): User defined tags, put whatever makes sense for you, these tags are not interpreted by Garage + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -138,9 +143,6 @@ class NodeClusterInfo(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - zone (str): [optional] # noqa: E501 - capacity (int): [optional] # noqa: E501 - tags ([str]): User defined tags, put whatever makes sense for you, these tags are not interpreted by Garage . [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -172,6 +174,9 @@ class NodeClusterInfo(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.zone = zone + self.capacity = capacity + self.tags = tags for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ @@ -192,9 +197,14 @@ class NodeClusterInfo(ModelNormal): ]) @convert_js_args_to_python_args - def __init__(self, *args, **kwargs): # noqa: E501 + def __init__(self, zone, capacity, tags, *args, **kwargs): # noqa: E501 """NodeClusterInfo - a model defined in OpenAPI + Args: + zone (str): + capacity (int): + tags ([str]): User defined tags, put whatever makes sense for you, these tags are not interpreted by Garage + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -226,9 +236,6 @@ class NodeClusterInfo(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - zone (str): [optional] # noqa: E501 - capacity (int): [optional] # noqa: E501 - tags ([str]): User defined tags, put whatever makes sense for you, these tags are not interpreted by Garage . [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -258,6 +265,9 @@ class NodeClusterInfo(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.zone = zone + self.capacity = capacity + self.tags = tags for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/python/garage_admin_sdk/model/node_network_info.py b/python/garage_admin_sdk/model/node_network_info.py index c4696cb..537747a 100644 --- a/python/garage_admin_sdk/model/node_network_info.py +++ b/python/garage_admin_sdk/model/node_network_info.py @@ -83,7 +83,7 @@ class NodeNetworkInfo(ModelNormal): return { 'addr': (str,), # noqa: E501 'is_up': (bool,), # noqa: E501 - 'last_seen_secs_ago': (int,), # noqa: E501 + 'last_seen_secs_ago': (int, none_type,), # noqa: E501 'hostname': (str,), # noqa: E501 } @@ -106,9 +106,15 @@ class NodeNetworkInfo(ModelNormal): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, addr, is_up, last_seen_secs_ago, hostname, *args, **kwargs): # noqa: E501 """NodeNetworkInfo - a model defined in OpenAPI + Args: + addr (str): + is_up (bool): + last_seen_secs_ago (int, none_type): + hostname (str): + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -140,10 +146,6 @@ class NodeNetworkInfo(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - addr (str): [optional] # noqa: E501 - is_up (bool): [optional] # noqa: E501 - last_seen_secs_ago (int): [optional] # noqa: E501 - hostname (str): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -175,6 +177,10 @@ class NodeNetworkInfo(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.addr = addr + self.is_up = is_up + self.last_seen_secs_ago = last_seen_secs_ago + self.hostname = hostname for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ @@ -195,9 +201,15 @@ class NodeNetworkInfo(ModelNormal): ]) @convert_js_args_to_python_args - def __init__(self, *args, **kwargs): # noqa: E501 + def __init__(self, addr, is_up, last_seen_secs_ago, hostname, *args, **kwargs): # noqa: E501 """NodeNetworkInfo - a model defined in OpenAPI + Args: + addr (str): + is_up (bool): + last_seen_secs_ago (int, none_type): + hostname (str): + Keyword Args: _check_type (bool): if True, values for parameters in openapi_types will be type checked and a TypeError will be @@ -229,10 +241,6 @@ class NodeNetworkInfo(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - addr (str): [optional] # noqa: E501 - is_up (bool): [optional] # noqa: E501 - last_seen_secs_ago (int): [optional] # noqa: E501 - hostname (str): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -262,6 +270,10 @@ class NodeNetworkInfo(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.addr = addr + self.is_up = is_up + self.last_seen_secs_ago = last_seen_secs_ago + self.hostname = hostname for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \