Skip to content

Commit d642552

Browse files
authored
Add CreateClusterFromBackup on ClusterService (#151)
It enables creation of a new cluster from existing backup. If no error occur, the response contains the cluster details in the same schema as when creating a new cluster from the scratch.
1 parent 629429f commit d642552

11 files changed

Lines changed: 511 additions & 70 deletions

File tree

gen/go/qdrant/cloud/cluster/v1/cluster.pb.go

Lines changed: 166 additions & 41 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/go/qdrant/cloud/cluster/v1/cluster_grpc.pb.go

Lines changed: 55 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/openapiv2/qdrant/cloud/cluster/v1/cluster.swagger.json

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,52 @@
1616
"application/json"
1717
],
1818
"paths": {
19+
"/api/cluster/v1/accounts/{accountId}/backups/{backupId}/clusters": {
20+
"post": {
21+
"summary": "Create a new cluster from an existing backup\nRequired permissions (both):\n- admin:backups\n- write:clusters",
22+
"operationId": "ClusterService_CreateClusterFromBackup",
23+
"responses": {
24+
"200": {
25+
"description": "A successful response.",
26+
"schema": {
27+
"$ref": "#/definitions/v1CreateClusterFromBackupResponse"
28+
}
29+
},
30+
"default": {
31+
"description": "An unexpected error response.",
32+
"schema": {
33+
"$ref": "#/definitions/googlerpcStatus"
34+
}
35+
}
36+
},
37+
"parameters": [
38+
{
39+
"name": "accountId",
40+
"description": "The identifier of the account (in GUID format).\nThis is a required field.",
41+
"in": "path",
42+
"required": true,
43+
"type": "string"
44+
},
45+
{
46+
"name": "backupId",
47+
"description": "The identifier of the backup (in GUID format).\nThis is a required field.",
48+
"in": "path",
49+
"required": true,
50+
"type": "string"
51+
},
52+
{
53+
"name": "clusterName",
54+
"description": "Name of the new cluster",
55+
"in": "query",
56+
"required": false,
57+
"type": "string"
58+
}
59+
],
60+
"tags": [
61+
"ClusterService"
62+
]
63+
}
64+
},
1965
"/api/cluster/v1/accounts/{accountId}/clusters": {
2066
"get": {
2167
"summary": "Lists all clusters in the account identified by the given ID.\nRequired permissions:\n- read:clusters",
@@ -856,6 +902,16 @@
856902
},
857903
"description": "ClusterState represents the current state of a cluster\nAll fields in this message are read-only."
858904
},
905+
"v1CreateClusterFromBackupResponse": {
906+
"type": "object",
907+
"properties": {
908+
"cluster": {
909+
"$ref": "#/definitions/v1Cluster",
910+
"title": "Cluster created from the backup"
911+
}
912+
},
913+
"description": "CreateClusterFromBackupResponse is the response for the CreateCluster function."
914+
},
859915
"v1CreateClusterResponse": {
860916
"type": "object",
861917
"properties": {

gen/python/qdrant/cloud/cluster/v1/cluster_pb2.py

Lines changed: 33 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gen/python/qdrant/cloud/cluster/v1/cluster_pb2.pyi

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,3 +472,19 @@ class QdrantRelease(_message.Message):
472472
end_of_life: bool
473473
unavailable: bool
474474
def __init__(self, version: _Optional[str] = ..., default: bool = ..., release_notes_url: _Optional[str] = ..., remarks: _Optional[str] = ..., end_of_life: bool = ..., unavailable: bool = ...) -> None: ...
475+
476+
class CreateClusterFromBackupRequest(_message.Message):
477+
__slots__ = ("account_id", "backup_id", "cluster_name")
478+
ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int]
479+
BACKUP_ID_FIELD_NUMBER: _ClassVar[int]
480+
CLUSTER_NAME_FIELD_NUMBER: _ClassVar[int]
481+
account_id: str
482+
backup_id: str
483+
cluster_name: str
484+
def __init__(self, account_id: _Optional[str] = ..., backup_id: _Optional[str] = ..., cluster_name: _Optional[str] = ...) -> None: ...
485+
486+
class CreateClusterFromBackupResponse(_message.Message):
487+
__slots__ = ("cluster",)
488+
CLUSTER_FIELD_NUMBER: _ClassVar[int]
489+
cluster: Cluster
490+
def __init__(self, cluster: _Optional[_Union[Cluster, _Mapping]] = ...) -> None: ...

gen/python/qdrant/cloud/cluster/v1/cluster_pb2_grpc.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ def __init__(self, channel):
3030
request_serializer=qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.CreateClusterRequest.SerializeToString,
3131
response_deserializer=qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.CreateClusterResponse.FromString,
3232
_registered_method=True)
33+
self.CreateClusterFromBackup = channel.unary_unary(
34+
'/qdrant.cloud.cluster.v1.ClusterService/CreateClusterFromBackup',
35+
request_serializer=qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.CreateClusterFromBackupRequest.SerializeToString,
36+
response_deserializer=qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.CreateClusterFromBackupResponse.FromString,
37+
_registered_method=True)
3338
self.UpdateCluster = channel.unary_unary(
3439
'/qdrant.cloud.cluster.v1.ClusterService/UpdateCluster',
3540
request_serializer=qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.UpdateClusterRequest.SerializeToString,
@@ -93,6 +98,16 @@ def CreateCluster(self, request, context):
9398
context.set_details('Method not implemented!')
9499
raise NotImplementedError('Method not implemented!')
95100

101+
def CreateClusterFromBackup(self, request, context):
102+
"""Create a new cluster from an existing backup
103+
Required permissions (both):
104+
- admin:backups
105+
- write:clusters
106+
"""
107+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
108+
context.set_details('Method not implemented!')
109+
raise NotImplementedError('Method not implemented!')
110+
96111
def UpdateCluster(self, request, context):
97112
"""Updates a cluster in the account identified by the given ID.
98113
Required permissions:
@@ -167,6 +182,11 @@ def add_ClusterServiceServicer_to_server(servicer, server):
167182
request_deserializer=qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.CreateClusterRequest.FromString,
168183
response_serializer=qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.CreateClusterResponse.SerializeToString,
169184
),
185+
'CreateClusterFromBackup': grpc.unary_unary_rpc_method_handler(
186+
servicer.CreateClusterFromBackup,
187+
request_deserializer=qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.CreateClusterFromBackupRequest.FromString,
188+
response_serializer=qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.CreateClusterFromBackupResponse.SerializeToString,
189+
),
170190
'UpdateCluster': grpc.unary_unary_rpc_method_handler(
171191
servicer.UpdateCluster,
172192
request_deserializer=qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.UpdateClusterRequest.FromString,
@@ -290,6 +310,33 @@ def CreateCluster(request,
290310
metadata,
291311
_registered_method=True)
292312

313+
@staticmethod
314+
def CreateClusterFromBackup(request,
315+
target,
316+
options=(),
317+
channel_credentials=None,
318+
call_credentials=None,
319+
insecure=False,
320+
compression=None,
321+
wait_for_ready=None,
322+
timeout=None,
323+
metadata=None):
324+
return grpc.experimental.unary_unary(
325+
request,
326+
target,
327+
'/qdrant.cloud.cluster.v1.ClusterService/CreateClusterFromBackup',
328+
qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.CreateClusterFromBackupRequest.SerializeToString,
329+
qdrant_dot_cloud_dot_cluster_dot_v1_dot_cluster__pb2.CreateClusterFromBackupResponse.FromString,
330+
options,
331+
channel_credentials,
332+
insecure,
333+
call_credentials,
334+
compression,
335+
wait_for_ready,
336+
timeout,
337+
metadata,
338+
_registered_method=True)
339+
293340
@staticmethod
294341
def UpdateCluster(request,
295342
target,

gen/typescript/qdrant/cloud/cluster/v1/cluster-ClusterService_connectquery.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,15 @@ export const getCluster: typeof ClusterService["method"]["getCluster"];
2828
* @generated from rpc qdrant.cloud.cluster.v1.ClusterService.CreateCluster
2929
*/
3030
export const createCluster: typeof ClusterService["method"]["createCluster"];
31+
/**
32+
* Create a new cluster from an existing backup
33+
* Required permissions (both):
34+
* - admin:backups
35+
* - write:clusters
36+
*
37+
* @generated from rpc qdrant.cloud.cluster.v1.ClusterService.CreateClusterFromBackup
38+
*/
39+
export const createClusterFromBackup: typeof ClusterService["method"]["createClusterFromBackup"];
3140
/**
3241
* Updates a cluster in the account identified by the given ID.
3342
* Required permissions:

gen/typescript/qdrant/cloud/cluster/v1/cluster-ClusterService_connectquery.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ export const getCluster = ClusterService.method.getCluster;
3131
*/
3232
export const createCluster = ClusterService.method.createCluster;
3333

34+
/**
35+
* Create a new cluster from an existing backup
36+
* Required permissions (both):
37+
* - admin:backups
38+
* - write:clusters
39+
*
40+
* @generated from rpc qdrant.cloud.cluster.v1.ClusterService.CreateClusterFromBackup
41+
*/
42+
export const createClusterFromBackup = ClusterService.method.createClusterFromBackup;
43+
3444
/**
3545
* Updates a cluster in the account identified by the given ID.
3646
* Required permissions:

gen/typescript/qdrant/cloud/cluster/v1/cluster_pb.d.ts

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,6 +1289,62 @@ export declare type QdrantRelease = Message<"qdrant.cloud.cluster.v1.QdrantRelea
12891289
*/
12901290
export declare const QdrantReleaseSchema: GenMessage<QdrantRelease>;
12911291

1292+
/**
1293+
* CreateClusterFromBackupRequest is the request for the CreateCluster function.
1294+
*
1295+
* @generated from message qdrant.cloud.cluster.v1.CreateClusterFromBackupRequest
1296+
*/
1297+
export declare type CreateClusterFromBackupRequest = Message<"qdrant.cloud.cluster.v1.CreateClusterFromBackupRequest"> & {
1298+
/**
1299+
* The identifier of the account (in GUID format).
1300+
* This is a required field.
1301+
*
1302+
* @generated from field: string account_id = 1;
1303+
*/
1304+
accountId: string;
1305+
1306+
/**
1307+
* The identifier of the backup (in GUID format).
1308+
* This is a required field.
1309+
*
1310+
* @generated from field: string backup_id = 2;
1311+
*/
1312+
backupId: string;
1313+
1314+
/**
1315+
* Name of the new cluster
1316+
*
1317+
* @generated from field: string cluster_name = 3;
1318+
*/
1319+
clusterName: string;
1320+
};
1321+
1322+
/**
1323+
* Describes the message qdrant.cloud.cluster.v1.CreateClusterFromBackupRequest.
1324+
* Use `create(CreateClusterFromBackupRequestSchema)` to create a new message.
1325+
*/
1326+
export declare const CreateClusterFromBackupRequestSchema: GenMessage<CreateClusterFromBackupRequest>;
1327+
1328+
/**
1329+
* CreateClusterFromBackupResponse is the response for the CreateCluster function.
1330+
*
1331+
* @generated from message qdrant.cloud.cluster.v1.CreateClusterFromBackupResponse
1332+
*/
1333+
export declare type CreateClusterFromBackupResponse = Message<"qdrant.cloud.cluster.v1.CreateClusterFromBackupResponse"> & {
1334+
/**
1335+
* Cluster created from the backup
1336+
*
1337+
* @generated from field: qdrant.cloud.cluster.v1.Cluster cluster = 1;
1338+
*/
1339+
cluster?: Cluster;
1340+
};
1341+
1342+
/**
1343+
* Describes the message qdrant.cloud.cluster.v1.CreateClusterFromBackupResponse.
1344+
* Use `create(CreateClusterFromBackupResponseSchema)` to create a new message.
1345+
*/
1346+
export declare const CreateClusterFromBackupResponseSchema: GenMessage<CreateClusterFromBackupResponse>;
1347+
12921348
/**
12931349
* ClusterConfigurationGpuType defines GPU types available for clusters.
12941350
*
@@ -1752,6 +1808,19 @@ export declare const ClusterService: GenService<{
17521808
input: typeof CreateClusterRequestSchema;
17531809
output: typeof CreateClusterResponseSchema;
17541810
},
1811+
/**
1812+
* Create a new cluster from an existing backup
1813+
* Required permissions (both):
1814+
* - admin:backups
1815+
* - write:clusters
1816+
*
1817+
* @generated from rpc qdrant.cloud.cluster.v1.ClusterService.CreateClusterFromBackup
1818+
*/
1819+
createClusterFromBackup: {
1820+
methodKind: "unary";
1821+
input: typeof CreateClusterFromBackupRequestSchema;
1822+
output: typeof CreateClusterFromBackupResponseSchema;
1823+
},
17551824
/**
17561825
* Updates a cluster in the account identified by the given ID.
17571826
* Required permissions:

0 commit comments

Comments
 (0)