coordinode 3.0.0__tar.gz → 4.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {coordinode-3.0.0 → coordinode-4.0.1}/.gitignore +0 -6
- {coordinode-3.0.0 → coordinode-4.0.1}/PKG-INFO +15 -4
- {coordinode-3.0.0 → coordinode-4.0.1}/README.md +11 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/__init__.py +7 -3
- coordinode-4.0.1/coordinode/_proto/coordinode/internode/handshake_pb2.py +38 -0
- coordinode-4.0.1/coordinode/_proto/coordinode/internode/handshake_pb2.pyi +11 -0
- coordinode-4.0.1/coordinode/_proto/coordinode/internode/handshake_pb2_grpc.py +132 -0
- coordinode-4.0.1/coordinode/_proto/coordinode/v1/admin/cluster_pb2.py +77 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/admin/cluster_pb2.pyi +12 -6
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/admin/cluster_pb2_grpc.py +14 -13
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/common/pagination_pb2_grpc.py +1 -1
- coordinode-4.0.1/coordinode/_proto/coordinode/v1/common/types_pb2.py +58 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/common/types_pb2.pyi +7 -9
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/common/types_pb2_grpc.py +1 -1
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/graph/blob_pb2_grpc.py +1 -1
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/graph/graph_pb2_grpc.py +1 -1
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/health/health_pb2_grpc.py +1 -1
- coordinode-4.0.1/coordinode/_proto/coordinode/v1/query/cypher_pb2.py +89 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/query/cypher_pb2.pyi +12 -4
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/query/cypher_pb2_grpc.py +1 -1
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/query/text_pb2_grpc.py +1 -1
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/query/vector_pb2_grpc.py +1 -1
- coordinode-4.0.1/coordinode/_proto/coordinode/v1/replication/cdc_pb2.py +62 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/replication/cdc_pb2.pyi +56 -2
- coordinode-4.0.1/coordinode/_proto/coordinode/v1/replication/cdc_pb2_grpc.py +243 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/replication/consistency_pb2.py +5 -3
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/replication/consistency_pb2.pyi +11 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/replication/consistency_pb2_grpc.py +1 -1
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/replication/raft_pb2.py +6 -6
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/replication/raft_pb2.pyi +4 -2
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/replication/raft_pb2_grpc.py +51 -1
- coordinode-4.0.1/coordinode/_proto/coordinode/v1/replication/transfer_pb2.py +52 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/replication/transfer_pb2.pyi +4 -2
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/replication/transfer_pb2_grpc.py +1 -1
- coordinode-4.0.1/coordinode/_proto/coordinode/v1/session/session_pb2.py +91 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/session/session_pb2.pyi +92 -10
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/session/session_pb2_grpc.py +16 -10
- coordinode-4.0.1/coordinode/_proto/coordinode/v2/graph/__init__.py +0 -0
- coordinode-4.0.1/coordinode/_proto/coordinode/v2/graph/schema_pb2.py +167 -0
- coordinode-4.0.1/coordinode/_proto/coordinode/v2/graph/schema_pb2.pyi +538 -0
- coordinode-4.0.1/coordinode/_proto/coordinode/v2/graph/schema_pb2_grpc.py +825 -0
- coordinode-4.0.1/coordinode/_proto/google/__init__.py +0 -0
- coordinode-4.0.1/coordinode/_proto/google/api/__init__.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/google/api/annotations_pb2_grpc.py +1 -1
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/google/api/http_pb2_grpc.py +1 -1
- coordinode-4.0.1/coordinode/_proto/google/rpc/__init__.py +0 -0
- coordinode-4.0.1/coordinode/_proto/google/rpc/status_pb2.py +38 -0
- coordinode-4.0.1/coordinode/_proto/google/rpc/status_pb2.pyi +18 -0
- coordinode-4.0.1/coordinode/_proto/google/rpc/status_pb2_grpc.py +24 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_types.py +42 -6
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_version.py +2 -2
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/client.py +395 -117
- {coordinode-3.0.0 → coordinode-4.0.1}/pyproject.toml +5 -4
- coordinode-3.0.0/coordinode/_proto/coordinode/v1/admin/cluster_pb2.py +0 -77
- coordinode-3.0.0/coordinode/_proto/coordinode/v1/common/types_pb2.py +0 -58
- coordinode-3.0.0/coordinode/_proto/coordinode/v1/graph/schema_pb2.py +0 -75
- coordinode-3.0.0/coordinode/_proto/coordinode/v1/graph/schema_pb2.pyi +0 -181
- coordinode-3.0.0/coordinode/_proto/coordinode/v1/graph/schema_pb2_grpc.py +0 -233
- coordinode-3.0.0/coordinode/_proto/coordinode/v1/query/cypher_pb2.py +0 -89
- coordinode-3.0.0/coordinode/_proto/coordinode/v1/replication/cdc_pb2.py +0 -48
- coordinode-3.0.0/coordinode/_proto/coordinode/v1/replication/cdc_pb2_grpc.py +0 -127
- coordinode-3.0.0/coordinode/_proto/coordinode/v1/replication/transfer_pb2.py +0 -52
- coordinode-3.0.0/coordinode/_proto/coordinode/v1/session/session_pb2.py +0 -75
- {coordinode-3.0.0 → coordinode-4.0.1}/LICENSE +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/NOTICE +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/__init__.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/__init__.py +0 -0
- {coordinode-3.0.0/coordinode/_proto/coordinode/v1 → coordinode-4.0.1/coordinode/_proto/coordinode/internode}/__init__.py +0 -0
- {coordinode-3.0.0/coordinode/_proto/coordinode/v1/admin → coordinode-4.0.1/coordinode/_proto/coordinode/v1}/__init__.py +0 -0
- {coordinode-3.0.0/coordinode/_proto/coordinode/v1/common → coordinode-4.0.1/coordinode/_proto/coordinode/v1/admin}/__init__.py +0 -0
- {coordinode-3.0.0/coordinode/_proto/coordinode/v1/graph → coordinode-4.0.1/coordinode/_proto/coordinode/v1/common}/__init__.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/common/pagination_pb2.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/common/pagination_pb2.pyi +0 -0
- {coordinode-3.0.0/coordinode/_proto/coordinode/v1/health → coordinode-4.0.1/coordinode/_proto/coordinode/v1/graph}/__init__.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/graph/blob_pb2.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/graph/blob_pb2.pyi +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/graph/graph_pb2.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/graph/graph_pb2.pyi +0 -0
- {coordinode-3.0.0/coordinode/_proto/coordinode/v1/query → coordinode-4.0.1/coordinode/_proto/coordinode/v1/health}/__init__.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/health/health_pb2.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/health/health_pb2.pyi +0 -0
- {coordinode-3.0.0/coordinode/_proto/coordinode/v1/replication → coordinode-4.0.1/coordinode/_proto/coordinode/v1/query}/__init__.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/query/text_pb2.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/query/text_pb2.pyi +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/query/vector_pb2.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/query/vector_pb2.pyi +0 -0
- {coordinode-3.0.0/coordinode/_proto/coordinode/v1/session → coordinode-4.0.1/coordinode/_proto/coordinode/v1/replication}/__init__.py +0 -0
- {coordinode-3.0.0/coordinode/_proto/google → coordinode-4.0.1/coordinode/_proto/coordinode/v1/session}/__init__.py +0 -0
- {coordinode-3.0.0/coordinode/_proto/google/api → coordinode-4.0.1/coordinode/_proto/coordinode/v2}/__init__.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/google/api/annotations_pb2.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/google/api/annotations_pb2.pyi +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/google/api/http_pb2.py +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/google/api/http_pb2.pyi +0 -0
- {coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_source.py +0 -0
|
@@ -22,10 +22,4 @@ coordinode/coordinode/_version.py
|
|
|
22
22
|
langchain-coordinode/langchain_coordinode/_version.py
|
|
23
23
|
llama-index-coordinode/llama_index/graph_stores/coordinode/_version.py
|
|
24
24
|
|
|
25
|
-
# Local dev / arch docs — not part of the SDK
|
|
26
|
-
GAPS.md
|
|
27
|
-
CLAUDE.md
|
|
28
|
-
DEVLOG*.md
|
|
29
|
-
|
|
30
25
|
**/.ipynb_checkpoints/
|
|
31
|
-
.claude/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: coordinode
|
|
3
|
-
Version:
|
|
3
|
+
Version: 4.0.1
|
|
4
4
|
Summary: Python client for CoordiNode — graph + vector + full-text database
|
|
5
5
|
Project-URL: Homepage, https://github.com/structured-world/coordinode
|
|
6
6
|
Project-URL: Repository, https://github.com/structured-world/coordinode-python
|
|
@@ -21,13 +21,13 @@ Classifier: Topic :: Database
|
|
|
21
21
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
22
22
|
Requires-Python: >=3.11
|
|
23
23
|
Requires-Dist: googleapis-common-protos>=1.74.0
|
|
24
|
-
Requires-Dist: grpcio>=1.
|
|
24
|
+
Requires-Dist: grpcio>=1.84.0
|
|
25
25
|
Requires-Dist: protobuf>=7.35.1
|
|
26
26
|
Provides-Extra: dev
|
|
27
|
-
Requires-Dist: grpcio-tools>=1.
|
|
27
|
+
Requires-Dist: grpcio-tools>=1.84.0; extra == 'dev'
|
|
28
28
|
Requires-Dist: pytest-asyncio>=1.4; extra == 'dev'
|
|
29
29
|
Requires-Dist: pytest>=9; extra == 'dev'
|
|
30
|
-
Requires-Dist: ruff>=0.
|
|
30
|
+
Requires-Dist: ruff>=0.17.0; extra == 'dev'
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
|
|
33
33
|
# coordinode
|
|
@@ -231,6 +231,17 @@ Accepted values:
|
|
|
231
231
|
- ``read_concern``: ``local`` (default) · ``majority`` · ``linearizable`` · ``snapshot``. Causal reads (``after_index`` > 0) require ``majority`` here.
|
|
232
232
|
- ``write_concern``: ``"majority"`` (default) · a member count (``1`` leader only, ``0`` fire-and-forget) · ``WriteConcern(w, journal, timeout_ms)`` with ``journal`` one of ``journal`` (default) · ``cache`` · ``memory``. The volatile ``cache`` and ``memory`` states are accepted only with ``w`` of 0 or 1.
|
|
233
233
|
- ``read_preference``: ``primary`` (default) · ``primary_preferred`` · ``secondary`` · ``secondary_preferred`` · ``nearest``
|
|
234
|
+
- ``vector_consistency``: ``current`` (the index as it is: fastest, may include writes newer than the read) · ``snapshot`` (index candidates filtered at the read's snapshot) · ``exact`` (every vector of the label, without the index). Omitted, the mode the read concern implies. A ``vector_consistency`` hint in the query wins.
|
|
235
|
+
- ``vector_build_wait_ms``: how long a vector search waits for an index still being built; ``0`` refuses a building index at once. Omitted, the server's default.
|
|
236
|
+
|
|
237
|
+
```python
|
|
238
|
+
db.cypher(
|
|
239
|
+
"MATCH (d:Doc) RETURN d.title AS title ORDER BY vector_distance(d.embedding, $q) LIMIT 5",
|
|
240
|
+
params={"q": query_vector},
|
|
241
|
+
vector_consistency="exact",
|
|
242
|
+
vector_build_wait_ms=0,
|
|
243
|
+
)
|
|
244
|
+
```
|
|
234
245
|
|
|
235
246
|
## Related Packages
|
|
236
247
|
|
|
@@ -199,6 +199,17 @@ Accepted values:
|
|
|
199
199
|
- ``read_concern``: ``local`` (default) · ``majority`` · ``linearizable`` · ``snapshot``. Causal reads (``after_index`` > 0) require ``majority`` here.
|
|
200
200
|
- ``write_concern``: ``"majority"`` (default) · a member count (``1`` leader only, ``0`` fire-and-forget) · ``WriteConcern(w, journal, timeout_ms)`` with ``journal`` one of ``journal`` (default) · ``cache`` · ``memory``. The volatile ``cache`` and ``memory`` states are accepted only with ``w`` of 0 or 1.
|
|
201
201
|
- ``read_preference``: ``primary`` (default) · ``primary_preferred`` · ``secondary`` · ``secondary_preferred`` · ``nearest``
|
|
202
|
+
- ``vector_consistency``: ``current`` (the index as it is: fastest, may include writes newer than the read) · ``snapshot`` (index candidates filtered at the read's snapshot) · ``exact`` (every vector of the label, without the index). Omitted, the mode the read concern implies. A ``vector_consistency`` hint in the query wins.
|
|
203
|
+
- ``vector_build_wait_ms``: how long a vector search waits for an index still being built; ``0`` refuses a building index at once. Omitted, the server's default.
|
|
204
|
+
|
|
205
|
+
```python
|
|
206
|
+
db.cypher(
|
|
207
|
+
"MATCH (d:Doc) RETURN d.title AS title ORDER BY vector_distance(d.embedding, $q) LIMIT 5",
|
|
208
|
+
params={"q": query_vector},
|
|
209
|
+
vector_consistency="exact",
|
|
210
|
+
vector_build_wait_ms=0,
|
|
211
|
+
)
|
|
212
|
+
```
|
|
202
213
|
|
|
203
214
|
## Related Packages
|
|
204
215
|
|
|
@@ -18,10 +18,11 @@ Async::
|
|
|
18
18
|
result = await db.cypher("MATCH (n) RETURN count(n) AS total")
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
|
-
from coordinode._types import MultiVector, Path
|
|
21
|
+
from coordinode._types import MultiVector, Path, Timestamp
|
|
22
22
|
from coordinode.client import (
|
|
23
23
|
AsyncCoordinodeClient,
|
|
24
24
|
AsyncTransaction,
|
|
25
|
+
ConstraintInfo,
|
|
25
26
|
CoordinodeClient,
|
|
26
27
|
EdgeResult,
|
|
27
28
|
EdgeTypeInfo,
|
|
@@ -49,10 +50,12 @@ __all__ = [
|
|
|
49
50
|
"Transaction",
|
|
50
51
|
"AsyncTransaction",
|
|
51
52
|
# Values whose wire type only a tag can carry: a plain nested list encodes
|
|
52
|
-
# as a list
|
|
53
|
-
# requires the constructor, not just the shape.
|
|
53
|
+
# as a list, a plain dict as a map and a plain int as an integer, so
|
|
54
|
+
# sending one of these types requires the constructor, not just the shape.
|
|
55
|
+
# An aware datetime encodes as a timestamp too.
|
|
54
56
|
"MultiVector",
|
|
55
57
|
"Path",
|
|
58
|
+
"Timestamp",
|
|
56
59
|
# How a write is acknowledged: member count or majority, and how durably.
|
|
57
60
|
"WriteConcern",
|
|
58
61
|
"NodeResult",
|
|
@@ -62,6 +65,7 @@ __all__ = [
|
|
|
62
65
|
"LabelInfo",
|
|
63
66
|
"EdgeTypeInfo",
|
|
64
67
|
"PropertyDefinitionInfo",
|
|
68
|
+
"ConstraintInfo",
|
|
65
69
|
"TextIndexInfo",
|
|
66
70
|
"TraverseResult",
|
|
67
71
|
]
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
|
+
# source: coordinode/internode/handshake.proto
|
|
5
|
+
# Protobuf Python Version: 7.35.1
|
|
6
|
+
"""Generated protocol buffer code."""
|
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
|
14
|
+
7,
|
|
15
|
+
35,
|
|
16
|
+
1,
|
|
17
|
+
'',
|
|
18
|
+
'coordinode/internode/handshake.proto'
|
|
19
|
+
)
|
|
20
|
+
# @@protoc_insertion_point(imports)
|
|
21
|
+
|
|
22
|
+
_sym_db = _symbol_database.Default()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$coordinode/internode/handshake.proto\x12\x14\x63oordinode.internode\"!\n\x0fHandshakeRecord\x12\x0e\n\x06record\x18\x01 \x01(\x0c\x32l\n\x10VersionHandshake\x12X\n\x08\x45xchange\x12%.coordinode.internode.HandshakeRecord\x1a%.coordinode.internode.HandshakeRecordb\x06proto3')
|
|
28
|
+
|
|
29
|
+
_globals = globals()
|
|
30
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
31
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'coordinode.internode.handshake_pb2', _globals)
|
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
33
|
+
DESCRIPTOR._loaded_options = None
|
|
34
|
+
_globals['_HANDSHAKERECORD']._serialized_start=62
|
|
35
|
+
_globals['_HANDSHAKERECORD']._serialized_end=95
|
|
36
|
+
_globals['_VERSIONHANDSHAKE']._serialized_start=97
|
|
37
|
+
_globals['_VERSIONHANDSHAKE']._serialized_end=205
|
|
38
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from google.protobuf import descriptor as _descriptor
|
|
2
|
+
from google.protobuf import message as _message
|
|
3
|
+
from typing import ClassVar as _ClassVar, Optional as _Optional
|
|
4
|
+
|
|
5
|
+
DESCRIPTOR: _descriptor.FileDescriptor
|
|
6
|
+
|
|
7
|
+
class HandshakeRecord(_message.Message):
|
|
8
|
+
__slots__ = ("record",)
|
|
9
|
+
RECORD_FIELD_NUMBER: _ClassVar[int]
|
|
10
|
+
record: bytes
|
|
11
|
+
def __init__(self, record: _Optional[bytes] = ...) -> None: ...
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
|
2
|
+
"""Client and server classes corresponding to protobuf-defined services."""
|
|
3
|
+
import grpc
|
|
4
|
+
import warnings
|
|
5
|
+
|
|
6
|
+
from coordinode.internode import handshake_pb2 as coordinode_dot_internode_dot_handshake__pb2
|
|
7
|
+
|
|
8
|
+
GRPC_GENERATED_VERSION = '1.84.0'
|
|
9
|
+
GRPC_VERSION = grpc.__version__
|
|
10
|
+
_version_not_supported = False
|
|
11
|
+
|
|
12
|
+
try:
|
|
13
|
+
from grpc._utilities import first_version_is_lower
|
|
14
|
+
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
|
15
|
+
except ImportError:
|
|
16
|
+
_version_not_supported = True
|
|
17
|
+
|
|
18
|
+
if _version_not_supported:
|
|
19
|
+
raise RuntimeError(
|
|
20
|
+
f'The grpc package installed is at version {GRPC_VERSION},'
|
|
21
|
+
+ ' but the generated code in coordinode/internode/handshake_pb2_grpc.py depends on'
|
|
22
|
+
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
|
23
|
+
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
|
24
|
+
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class VersionHandshakeStub:
|
|
29
|
+
"""The version handshake between two members of a consensus group.
|
|
30
|
+
|
|
31
|
+
This file is frozen for the life of the product: its package, service,
|
|
32
|
+
method and messages never change, so that members of any two releases can
|
|
33
|
+
tell each other which version they run. Members whose versions differ
|
|
34
|
+
exchange nothing but this.
|
|
35
|
+
|
|
36
|
+
The same record also travels in the `cn-version-handshake-bin` request
|
|
37
|
+
and response metadata of every other inter-node call; a call whose record
|
|
38
|
+
does not match the receiver's version is refused before its payload is
|
|
39
|
+
read.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
def __init__(self, channel):
|
|
43
|
+
"""Constructor.
|
|
44
|
+
|
|
45
|
+
Args:
|
|
46
|
+
channel: A grpc.Channel.
|
|
47
|
+
"""
|
|
48
|
+
self.Exchange = channel.unary_unary(
|
|
49
|
+
'/coordinode.internode.VersionHandshake/Exchange',
|
|
50
|
+
request_serializer=coordinode_dot_internode_dot_handshake__pb2.HandshakeRecord.SerializeToString,
|
|
51
|
+
response_deserializer=coordinode_dot_internode_dot_handshake__pb2.HandshakeRecord.FromString,
|
|
52
|
+
_registered_method=True)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class VersionHandshakeServicer:
|
|
56
|
+
"""The version handshake between two members of a consensus group.
|
|
57
|
+
|
|
58
|
+
This file is frozen for the life of the product: its package, service,
|
|
59
|
+
method and messages never change, so that members of any two releases can
|
|
60
|
+
tell each other which version they run. Members whose versions differ
|
|
61
|
+
exchange nothing but this.
|
|
62
|
+
|
|
63
|
+
The same record also travels in the `cn-version-handshake-bin` request
|
|
64
|
+
and response metadata of every other inter-node call; a call whose record
|
|
65
|
+
does not match the receiver's version is refused before its payload is
|
|
66
|
+
read.
|
|
67
|
+
"""
|
|
68
|
+
|
|
69
|
+
def Exchange(self, request, context):
|
|
70
|
+
"""Exchange version records. Answered whether or not the two members
|
|
71
|
+
match; the caller compares the records itself.
|
|
72
|
+
"""
|
|
73
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
|
74
|
+
context.set_details('Method not implemented!')
|
|
75
|
+
raise NotImplementedError('Method not implemented!')
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def add_VersionHandshakeServicer_to_server(servicer, server):
|
|
79
|
+
rpc_method_handlers = {
|
|
80
|
+
'Exchange': grpc.unary_unary_rpc_method_handler(
|
|
81
|
+
servicer.Exchange,
|
|
82
|
+
request_deserializer=coordinode_dot_internode_dot_handshake__pb2.HandshakeRecord.FromString,
|
|
83
|
+
response_serializer=coordinode_dot_internode_dot_handshake__pb2.HandshakeRecord.SerializeToString,
|
|
84
|
+
),
|
|
85
|
+
}
|
|
86
|
+
generic_handler = grpc.method_handlers_generic_handler(
|
|
87
|
+
'coordinode.internode.VersionHandshake', rpc_method_handlers)
|
|
88
|
+
server.add_generic_rpc_handlers((generic_handler,))
|
|
89
|
+
server.add_registered_method_handlers('coordinode.internode.VersionHandshake', rpc_method_handlers)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
# This class is part of an EXPERIMENTAL API.
|
|
93
|
+
class VersionHandshake:
|
|
94
|
+
"""The version handshake between two members of a consensus group.
|
|
95
|
+
|
|
96
|
+
This file is frozen for the life of the product: its package, service,
|
|
97
|
+
method and messages never change, so that members of any two releases can
|
|
98
|
+
tell each other which version they run. Members whose versions differ
|
|
99
|
+
exchange nothing but this.
|
|
100
|
+
|
|
101
|
+
The same record also travels in the `cn-version-handshake-bin` request
|
|
102
|
+
and response metadata of every other inter-node call; a call whose record
|
|
103
|
+
does not match the receiver's version is refused before its payload is
|
|
104
|
+
read.
|
|
105
|
+
"""
|
|
106
|
+
|
|
107
|
+
@staticmethod
|
|
108
|
+
def Exchange(request,
|
|
109
|
+
target,
|
|
110
|
+
options=(),
|
|
111
|
+
channel_credentials=None,
|
|
112
|
+
call_credentials=None,
|
|
113
|
+
insecure=False,
|
|
114
|
+
compression=None,
|
|
115
|
+
wait_for_ready=None,
|
|
116
|
+
timeout=None,
|
|
117
|
+
metadata=None):
|
|
118
|
+
return grpc.experimental.unary_unary(
|
|
119
|
+
request,
|
|
120
|
+
target,
|
|
121
|
+
'/coordinode.internode.VersionHandshake/Exchange',
|
|
122
|
+
coordinode_dot_internode_dot_handshake__pb2.HandshakeRecord.SerializeToString,
|
|
123
|
+
coordinode_dot_internode_dot_handshake__pb2.HandshakeRecord.FromString,
|
|
124
|
+
options,
|
|
125
|
+
channel_credentials,
|
|
126
|
+
insecure,
|
|
127
|
+
call_credentials,
|
|
128
|
+
compression,
|
|
129
|
+
wait_for_ready,
|
|
130
|
+
timeout,
|
|
131
|
+
metadata,
|
|
132
|
+
_registered_method=True)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
|
+
# source: coordinode/v1/admin/cluster.proto
|
|
5
|
+
# Protobuf Python Version: 7.35.1
|
|
6
|
+
"""Generated protocol buffer code."""
|
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
|
14
|
+
7,
|
|
15
|
+
35,
|
|
16
|
+
1,
|
|
17
|
+
'',
|
|
18
|
+
'coordinode/v1/admin/cluster.proto'
|
|
19
|
+
)
|
|
20
|
+
# @@protoc_insertion_point(imports)
|
|
21
|
+
|
|
22
|
+
_sym_db = _symbol_database.Default()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!coordinode/v1/admin/cluster.proto\x12\x13\x63oordinode.v1.admin\x1a\x1cgoogle/api/annotations.proto\"\x19\n\x17GetClusterStatusRequest\"z\n\rClusterStatus\x12/\n\x05nodes\x18\x01 \x03(\x0b\x32 .coordinode.v1.admin.ClusterNode\x12\x11\n\tleader_id\x18\x02 \x01(\t\x12\x11\n\traft_term\x18\x03 \x01(\x04\x12\x12\n\ndeployment\x18\x04 \x01(\t\"\xb7\x01\n\x0b\x43lusterNode\x12\x0f\n\x07node_id\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12+\n\x04role\x18\x03 \x01(\x0e\x32\x1d.coordinode.v1.admin.NodeRole\x12-\n\x05state\x18\x04 \x01(\x0e\x32\x1e.coordinode.v1.admin.NodeState\x12\x13\n\x0blag_entries\x18\x05 \x01(\x04\x12\x15\n\rnode_identity\x18\x06 \x01(\t\"^\n\x0fJoinNodeRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12\x0f\n\x07\x61\x64\x64ress\x18\x02 \x01(\t\x12\x12\n\npre_seeded\x18\x03 \x01(\x08\x12\x15\n\rnode_identity\x18\x04 \x01(\t\"3\n\x10JoinNodeResponse\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12\x0e\n\x06status\x18\x02 \x01(\t\"&\n\x13JoinProgressRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\"\x83\x01\n\nJoinStatus\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12-\n\x05phase\x18\x02 \x01(\x0e\x32\x1e.coordinode.v1.admin.JoinPhase\x12\x13\n\x0blag_entries\x18\x03 \x01(\x04\x12\x0f\n\x07percent\x18\x04 \x01(\r\x12\x0f\n\x07message\x18\x05 \x01(\t\"!\n\x0e\x41\x64\x64NodeRequest\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\"$\n\x11RemoveNodeRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\t\"\x14\n\x12RemoveNodeResponse\"e\n\x17\x44\x65\x63ommissionNodeRequest\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12\x0f\n\x07pruning\x18\x02 \x01(\x08\x12\r\n\x05\x66orce\x18\x03 \x01(\x08\x12\x19\n\x11skip_confirmation\x18\x04 \x01(\x08\"_\n\x18\x44\x65\x63ommissionNodeResponse\x12\x0f\n\x07node_id\x18\x01 \x01(\x04\x12\x0f\n\x07message\x18\x02 \x01(\t\x12!\n\x19operator_cleanup_required\x18\x03 \x01(\x08*j\n\x08NodeRole\x12\x19\n\x15NODE_ROLE_UNSPECIFIED\x10\x00\x12\x14\n\x10NODE_ROLE_LEADER\x10\x01\x12\x16\n\x12NODE_ROLE_FOLLOWER\x10\x02\x12\x15\n\x11NODE_ROLE_LEARNER\x10\x03*m\n\tNodeState\x12\x1a\n\x16NODE_STATE_UNSPECIFIED\x10\x00\x12\x16\n\x12NODE_STATE_HEALTHY\x10\x01\x12\x17\n\x13NODE_STATE_DEGRADED\x10\x02\x12\x13\n\x0fNODE_STATE_DOWN\x10\x03*\xa5\x01\n\tJoinPhase\x12\x1a\n\x16JOIN_PHASE_UNSPECIFIED\x10\x00\x12\x16\n\x12JOIN_PHASE_LEARNER\x10\x01\x12\x1a\n\x16JOIN_PHASE_READY_CHECK\x10\x02\x12\x18\n\x14JOIN_PHASE_PROMOTING\x10\x03\x12\x17\n\x13JOIN_PHASE_COMPLETE\x10\x04\x12\x15\n\x11JOIN_PHASE_FAILED\x10\x05\x32\x92\x06\n\x0e\x43lusterService\x12\x86\x01\n\x10GetClusterStatus\x12,.coordinode.v1.admin.GetClusterStatusRequest\x1a\".coordinode.v1.admin.ClusterStatus\" \x82\xd3\xe4\x93\x02\x1a\x12\x18/v1/admin/cluster/status\x12z\n\x08JoinNode\x12$.coordinode.v1.admin.JoinNodeRequest\x1a%.coordinode.v1.admin.JoinNodeResponse\"!\x82\xd3\xe4\x93\x02\x1b\"\x16/v1/admin/cluster/join:\x01*\x12]\n\x0cJoinProgress\x12(.coordinode.v1.admin.JoinProgressRequest\x1a\x1f.coordinode.v1.admin.JoinStatus\"\x00\x30\x01\x12t\n\x07\x41\x64\x64Node\x12#.coordinode.v1.admin.AddNodeRequest\x1a .coordinode.v1.admin.ClusterNode\"\"\x82\xd3\xe4\x93\x02\x1c\"\x17/v1/admin/cluster/nodes:\x01*\x12\x88\x01\n\nRemoveNode\x12&.coordinode.v1.admin.RemoveNodeRequest\x1a\'.coordinode.v1.admin.RemoveNodeResponse\")\x82\xd3\xe4\x93\x02#*!/v1/admin/cluster/nodes/{node_id}\x12\x9a\x01\n\x10\x44\x65\x63ommissionNode\x12,.coordinode.v1.admin.DecommissionNodeRequest\x1a-.coordinode.v1.admin.DecommissionNodeResponse\")\x82\xd3\xe4\x93\x02#\"\x1e/v1/admin/cluster/decommission:\x01*b\x06proto3')
|
|
29
|
+
|
|
30
|
+
_globals = globals()
|
|
31
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
32
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'coordinode.v1.admin.cluster_pb2', _globals)
|
|
33
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
34
|
+
DESCRIPTOR._loaded_options = None
|
|
35
|
+
_globals['_CLUSTERSERVICE'].methods_by_name['GetClusterStatus']._loaded_options = None
|
|
36
|
+
_globals['_CLUSTERSERVICE'].methods_by_name['GetClusterStatus']._serialized_options = b'\202\323\344\223\002\032\022\030/v1/admin/cluster/status'
|
|
37
|
+
_globals['_CLUSTERSERVICE'].methods_by_name['JoinNode']._loaded_options = None
|
|
38
|
+
_globals['_CLUSTERSERVICE'].methods_by_name['JoinNode']._serialized_options = b'\202\323\344\223\002\033\"\026/v1/admin/cluster/join:\001*'
|
|
39
|
+
_globals['_CLUSTERSERVICE'].methods_by_name['AddNode']._loaded_options = None
|
|
40
|
+
_globals['_CLUSTERSERVICE'].methods_by_name['AddNode']._serialized_options = b'\202\323\344\223\002\034\"\027/v1/admin/cluster/nodes:\001*'
|
|
41
|
+
_globals['_CLUSTERSERVICE'].methods_by_name['RemoveNode']._loaded_options = None
|
|
42
|
+
_globals['_CLUSTERSERVICE'].methods_by_name['RemoveNode']._serialized_options = b'\202\323\344\223\002#*!/v1/admin/cluster/nodes/{node_id}'
|
|
43
|
+
_globals['_CLUSTERSERVICE'].methods_by_name['DecommissionNode']._loaded_options = None
|
|
44
|
+
_globals['_CLUSTERSERVICE'].methods_by_name['DecommissionNode']._serialized_options = b'\202\323\344\223\002#\"\036/v1/admin/cluster/decommission:\001*'
|
|
45
|
+
_globals['_NODEROLE']._serialized_start=1043
|
|
46
|
+
_globals['_NODEROLE']._serialized_end=1149
|
|
47
|
+
_globals['_NODESTATE']._serialized_start=1151
|
|
48
|
+
_globals['_NODESTATE']._serialized_end=1260
|
|
49
|
+
_globals['_JOINPHASE']._serialized_start=1263
|
|
50
|
+
_globals['_JOINPHASE']._serialized_end=1428
|
|
51
|
+
_globals['_GETCLUSTERSTATUSREQUEST']._serialized_start=88
|
|
52
|
+
_globals['_GETCLUSTERSTATUSREQUEST']._serialized_end=113
|
|
53
|
+
_globals['_CLUSTERSTATUS']._serialized_start=115
|
|
54
|
+
_globals['_CLUSTERSTATUS']._serialized_end=237
|
|
55
|
+
_globals['_CLUSTERNODE']._serialized_start=240
|
|
56
|
+
_globals['_CLUSTERNODE']._serialized_end=423
|
|
57
|
+
_globals['_JOINNODEREQUEST']._serialized_start=425
|
|
58
|
+
_globals['_JOINNODEREQUEST']._serialized_end=519
|
|
59
|
+
_globals['_JOINNODERESPONSE']._serialized_start=521
|
|
60
|
+
_globals['_JOINNODERESPONSE']._serialized_end=572
|
|
61
|
+
_globals['_JOINPROGRESSREQUEST']._serialized_start=574
|
|
62
|
+
_globals['_JOINPROGRESSREQUEST']._serialized_end=612
|
|
63
|
+
_globals['_JOINSTATUS']._serialized_start=615
|
|
64
|
+
_globals['_JOINSTATUS']._serialized_end=746
|
|
65
|
+
_globals['_ADDNODEREQUEST']._serialized_start=748
|
|
66
|
+
_globals['_ADDNODEREQUEST']._serialized_end=781
|
|
67
|
+
_globals['_REMOVENODEREQUEST']._serialized_start=783
|
|
68
|
+
_globals['_REMOVENODEREQUEST']._serialized_end=819
|
|
69
|
+
_globals['_REMOVENODERESPONSE']._serialized_start=821
|
|
70
|
+
_globals['_REMOVENODERESPONSE']._serialized_end=841
|
|
71
|
+
_globals['_DECOMMISSIONNODEREQUEST']._serialized_start=843
|
|
72
|
+
_globals['_DECOMMISSIONNODEREQUEST']._serialized_end=944
|
|
73
|
+
_globals['_DECOMMISSIONNODERESPONSE']._serialized_start=946
|
|
74
|
+
_globals['_DECOMMISSIONNODERESPONSE']._serialized_end=1041
|
|
75
|
+
_globals['_CLUSTERSERVICE']._serialized_start=1431
|
|
76
|
+
_globals['_CLUSTERSERVICE']._serialized_end=2217
|
|
77
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -50,38 +50,44 @@ class GetClusterStatusRequest(_message.Message):
|
|
|
50
50
|
def __init__(self) -> None: ...
|
|
51
51
|
|
|
52
52
|
class ClusterStatus(_message.Message):
|
|
53
|
-
__slots__ = ("nodes", "leader_id", "raft_term")
|
|
53
|
+
__slots__ = ("nodes", "leader_id", "raft_term", "deployment")
|
|
54
54
|
NODES_FIELD_NUMBER: _ClassVar[int]
|
|
55
55
|
LEADER_ID_FIELD_NUMBER: _ClassVar[int]
|
|
56
56
|
RAFT_TERM_FIELD_NUMBER: _ClassVar[int]
|
|
57
|
+
DEPLOYMENT_FIELD_NUMBER: _ClassVar[int]
|
|
57
58
|
nodes: _containers.RepeatedCompositeFieldContainer[ClusterNode]
|
|
58
59
|
leader_id: str
|
|
59
60
|
raft_term: int
|
|
60
|
-
|
|
61
|
+
deployment: str
|
|
62
|
+
def __init__(self, nodes: _Optional[_Iterable[_Union[ClusterNode, _Mapping]]] = ..., leader_id: _Optional[str] = ..., raft_term: _Optional[int] = ..., deployment: _Optional[str] = ...) -> None: ...
|
|
61
63
|
|
|
62
64
|
class ClusterNode(_message.Message):
|
|
63
|
-
__slots__ = ("node_id", "address", "role", "state", "lag_entries")
|
|
65
|
+
__slots__ = ("node_id", "address", "role", "state", "lag_entries", "node_identity")
|
|
64
66
|
NODE_ID_FIELD_NUMBER: _ClassVar[int]
|
|
65
67
|
ADDRESS_FIELD_NUMBER: _ClassVar[int]
|
|
66
68
|
ROLE_FIELD_NUMBER: _ClassVar[int]
|
|
67
69
|
STATE_FIELD_NUMBER: _ClassVar[int]
|
|
68
70
|
LAG_ENTRIES_FIELD_NUMBER: _ClassVar[int]
|
|
71
|
+
NODE_IDENTITY_FIELD_NUMBER: _ClassVar[int]
|
|
69
72
|
node_id: str
|
|
70
73
|
address: str
|
|
71
74
|
role: NodeRole
|
|
72
75
|
state: NodeState
|
|
73
76
|
lag_entries: int
|
|
74
|
-
|
|
77
|
+
node_identity: str
|
|
78
|
+
def __init__(self, node_id: _Optional[str] = ..., address: _Optional[str] = ..., role: _Optional[_Union[NodeRole, str]] = ..., state: _Optional[_Union[NodeState, str]] = ..., lag_entries: _Optional[int] = ..., node_identity: _Optional[str] = ...) -> None: ...
|
|
75
79
|
|
|
76
80
|
class JoinNodeRequest(_message.Message):
|
|
77
|
-
__slots__ = ("node_id", "address", "pre_seeded")
|
|
81
|
+
__slots__ = ("node_id", "address", "pre_seeded", "node_identity")
|
|
78
82
|
NODE_ID_FIELD_NUMBER: _ClassVar[int]
|
|
79
83
|
ADDRESS_FIELD_NUMBER: _ClassVar[int]
|
|
80
84
|
PRE_SEEDED_FIELD_NUMBER: _ClassVar[int]
|
|
85
|
+
NODE_IDENTITY_FIELD_NUMBER: _ClassVar[int]
|
|
81
86
|
node_id: int
|
|
82
87
|
address: str
|
|
83
88
|
pre_seeded: bool
|
|
84
|
-
|
|
89
|
+
node_identity: str
|
|
90
|
+
def __init__(self, node_id: _Optional[int] = ..., address: _Optional[str] = ..., pre_seeded: _Optional[bool] = ..., node_identity: _Optional[str] = ...) -> None: ...
|
|
85
91
|
|
|
86
92
|
class JoinNodeResponse(_message.Message):
|
|
87
93
|
__slots__ = ("node_id", "status")
|
{coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/admin/cluster_pb2_grpc.py
RENAMED
|
@@ -5,7 +5,7 @@ import warnings
|
|
|
5
5
|
|
|
6
6
|
from coordinode._proto.coordinode.v1.admin import cluster_pb2 as coordinode_dot_v1_dot_admin_dot_cluster__pb2
|
|
7
7
|
|
|
8
|
-
GRPC_GENERATED_VERSION = '1.
|
|
8
|
+
GRPC_GENERATED_VERSION = '1.84.0'
|
|
9
9
|
GRPC_VERSION = grpc.__version__
|
|
10
10
|
_version_not_supported = False
|
|
11
11
|
|
|
@@ -126,18 +126,19 @@ class ClusterServiceServicer:
|
|
|
126
126
|
def DecommissionNode(self, request, context):
|
|
127
127
|
"""Gracefully decommission a node from the cluster.
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
leadership
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
129
|
+
First the quorum gate: removing node_id must still leave at least 2
|
|
130
|
+
voters, otherwise the call aborts with FAILED_PRECONDITION.
|
|
131
|
+
|
|
132
|
+
Then the leadership transfer: if node_id is the current Raft leader,
|
|
133
|
+
leadership moves to a peer before removal. For self-decommission (the
|
|
134
|
+
leader removing itself) the request is forwarded to the new leader after
|
|
135
|
+
the transfer.
|
|
136
|
+
|
|
137
|
+
Last the membership remove, change_membership(remove: node_id): the node
|
|
138
|
+
stops receiving log replication and leaves the quorum.
|
|
139
|
+
|
|
140
|
+
CE behaviour: single Raft group, all nodes hold full data. Pruning is
|
|
141
|
+
advisory: the operator deletes data on the decommissioned node manually.
|
|
141
142
|
|
|
142
143
|
Must be called on the current Raft leader, or on the node being decommissioned
|
|
143
144
|
when that node is the leader (self-decommission path).
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
|
+
# source: coordinode/v1/common/types.proto
|
|
5
|
+
# Protobuf Python Version: 7.35.1
|
|
6
|
+
"""Generated protocol buffer code."""
|
|
7
|
+
from google.protobuf import descriptor as _descriptor
|
|
8
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
9
|
+
from google.protobuf import runtime_version as _runtime_version
|
|
10
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
11
|
+
from google.protobuf.internal import builder as _builder
|
|
12
|
+
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
|
+
_runtime_version.Domain.PUBLIC,
|
|
14
|
+
7,
|
|
15
|
+
35,
|
|
16
|
+
1,
|
|
17
|
+
'',
|
|
18
|
+
'coordinode/v1/common/types.proto'
|
|
19
|
+
)
|
|
20
|
+
# @@protoc_insertion_point(imports)
|
|
21
|
+
|
|
22
|
+
_sym_db = _symbol_database.Default()
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n coordinode/v1/common/types.proto\x12\x14\x63oordinode.v1.common\"\x14\n\x06NodeId\x12\n\n\x02id\x18\x01 \x01(\x04\"\x14\n\x06\x45\x64geId\x12\n\n\x02id\x18\x01 \x01(\x04\" \n\tTimestamp\x12\x13\n\x0bunix_micros\x18\x01 \x01(\x03\"\xe0\x03\n\rPropertyValue\x12\x13\n\tint_value\x18\x01 \x01(\x03H\x00\x12\x15\n\x0b\x66loat_value\x18\x02 \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x03 \x01(\tH\x00\x12\x14\n\nbool_value\x18\x04 \x01(\x08H\x00\x12\x15\n\x0b\x62ytes_value\x18\x05 \x01(\x0cH\x00\x12:\n\x0ftimestamp_value\x18\x06 \x01(\x0b\x32\x1f.coordinode.v1.common.TimestampH\x00\x12\x34\n\x0cvector_value\x18\x07 \x01(\x0b\x32\x1c.coordinode.v1.common.VectorH\x00\x12\x38\n\nlist_value\x18\x08 \x01(\x0b\x32\".coordinode.v1.common.PropertyListH\x00\x12\x36\n\tmap_value\x18\t \x01(\x0b\x32!.coordinode.v1.common.PropertyMapH\x00\x12?\n\x12multi_vector_value\x18\n \x01(\x0b\x32!.coordinode.v1.common.MultiVectorH\x00\x12\x30\n\npath_value\x18\x0b \x01(\x0b\x32\x1a.coordinode.v1.common.PathH\x00\x42\x07\n\x05value\"\x18\n\x06Vector\x12\x0e\n\x06values\x18\x01 \x03(\x02\"C\n\x0cPropertyList\x12\x33\n\x06values\x18\x01 \x03(\x0b\x32#.coordinode.v1.common.PropertyValue\"\xa3\x01\n\x0bPropertyMap\x12?\n\x07\x65ntries\x18\x01 \x03(\x0b\x32..coordinode.v1.common.PropertyMap.EntriesEntry\x1aS\n\x0c\x45ntriesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x32\n\x05value\x18\x02 \x01(\x0b\x32#.coordinode.v1.common.PropertyValue:\x02\x38\x01\"9\n\x0bMultiVector\x12*\n\x04rows\x18\x01 \x03(\x0b\x32\x1c.coordinode.v1.common.Vector\"B\n\x04Path\x12\r\n\x05nodes\x18\x01 \x03(\x04\x12+\n\x04rels\x18\x02 \x03(\x0b\x32\x1d.coordinode.v1.common.PathRel\"<\n\x07PathRel\x12\x11\n\tedge_type\x18\x01 \x01(\t\x12\x0e\n\x06source\x18\x02 \x01(\x04\x12\x0e\n\x06target\x18\x03 \x01(\x04\x62\x06proto3')
|
|
28
|
+
|
|
29
|
+
_globals = globals()
|
|
30
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
31
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'coordinode.v1.common.types_pb2', _globals)
|
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
33
|
+
DESCRIPTOR._loaded_options = None
|
|
34
|
+
_globals['_PROPERTYMAP_ENTRIESENTRY']._loaded_options = None
|
|
35
|
+
_globals['_PROPERTYMAP_ENTRIESENTRY']._serialized_options = b'8\001'
|
|
36
|
+
_globals['_NODEID']._serialized_start=58
|
|
37
|
+
_globals['_NODEID']._serialized_end=78
|
|
38
|
+
_globals['_EDGEID']._serialized_start=80
|
|
39
|
+
_globals['_EDGEID']._serialized_end=100
|
|
40
|
+
_globals['_TIMESTAMP']._serialized_start=102
|
|
41
|
+
_globals['_TIMESTAMP']._serialized_end=134
|
|
42
|
+
_globals['_PROPERTYVALUE']._serialized_start=137
|
|
43
|
+
_globals['_PROPERTYVALUE']._serialized_end=617
|
|
44
|
+
_globals['_VECTOR']._serialized_start=619
|
|
45
|
+
_globals['_VECTOR']._serialized_end=643
|
|
46
|
+
_globals['_PROPERTYLIST']._serialized_start=645
|
|
47
|
+
_globals['_PROPERTYLIST']._serialized_end=712
|
|
48
|
+
_globals['_PROPERTYMAP']._serialized_start=715
|
|
49
|
+
_globals['_PROPERTYMAP']._serialized_end=878
|
|
50
|
+
_globals['_PROPERTYMAP_ENTRIESENTRY']._serialized_start=795
|
|
51
|
+
_globals['_PROPERTYMAP_ENTRIESENTRY']._serialized_end=878
|
|
52
|
+
_globals['_MULTIVECTOR']._serialized_start=880
|
|
53
|
+
_globals['_MULTIVECTOR']._serialized_end=937
|
|
54
|
+
_globals['_PATH']._serialized_start=939
|
|
55
|
+
_globals['_PATH']._serialized_end=1005
|
|
56
|
+
_globals['_PATHREL']._serialized_start=1007
|
|
57
|
+
_globals['_PATHREL']._serialized_end=1067
|
|
58
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -18,13 +18,11 @@ class EdgeId(_message.Message):
|
|
|
18
18
|
id: int
|
|
19
19
|
def __init__(self, id: _Optional[int] = ...) -> None: ...
|
|
20
20
|
|
|
21
|
-
class
|
|
22
|
-
__slots__ = ("
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
logical: int
|
|
27
|
-
def __init__(self, wall_time: _Optional[int] = ..., logical: _Optional[int] = ...) -> None: ...
|
|
21
|
+
class Timestamp(_message.Message):
|
|
22
|
+
__slots__ = ("unix_micros",)
|
|
23
|
+
UNIX_MICROS_FIELD_NUMBER: _ClassVar[int]
|
|
24
|
+
unix_micros: int
|
|
25
|
+
def __init__(self, unix_micros: _Optional[int] = ...) -> None: ...
|
|
28
26
|
|
|
29
27
|
class PropertyValue(_message.Message):
|
|
30
28
|
__slots__ = ("int_value", "float_value", "string_value", "bool_value", "bytes_value", "timestamp_value", "vector_value", "list_value", "map_value", "multi_vector_value", "path_value")
|
|
@@ -44,13 +42,13 @@ class PropertyValue(_message.Message):
|
|
|
44
42
|
string_value: str
|
|
45
43
|
bool_value: bool
|
|
46
44
|
bytes_value: bytes
|
|
47
|
-
timestamp_value:
|
|
45
|
+
timestamp_value: Timestamp
|
|
48
46
|
vector_value: Vector
|
|
49
47
|
list_value: PropertyList
|
|
50
48
|
map_value: PropertyMap
|
|
51
49
|
multi_vector_value: MultiVector
|
|
52
50
|
path_value: Path
|
|
53
|
-
def __init__(self, int_value: _Optional[int] = ..., float_value: _Optional[float] = ..., string_value: _Optional[str] = ..., bool_value: _Optional[bool] = ..., bytes_value: _Optional[bytes] = ..., timestamp_value: _Optional[_Union[
|
|
51
|
+
def __init__(self, int_value: _Optional[int] = ..., float_value: _Optional[float] = ..., string_value: _Optional[str] = ..., bool_value: _Optional[bool] = ..., bytes_value: _Optional[bytes] = ..., timestamp_value: _Optional[_Union[Timestamp, _Mapping]] = ..., vector_value: _Optional[_Union[Vector, _Mapping]] = ..., list_value: _Optional[_Union[PropertyList, _Mapping]] = ..., map_value: _Optional[_Union[PropertyMap, _Mapping]] = ..., multi_vector_value: _Optional[_Union[MultiVector, _Mapping]] = ..., path_value: _Optional[_Union[Path, _Mapping]] = ...) -> None: ...
|
|
54
52
|
|
|
55
53
|
class Vector(_message.Message):
|
|
56
54
|
__slots__ = ("values",)
|
{coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/graph/blob_pb2_grpc.py
RENAMED
|
@@ -5,7 +5,7 @@ import warnings
|
|
|
5
5
|
|
|
6
6
|
from coordinode._proto.coordinode.v1.graph import blob_pb2 as coordinode_dot_v1_dot_graph_dot_blob__pb2
|
|
7
7
|
|
|
8
|
-
GRPC_GENERATED_VERSION = '1.
|
|
8
|
+
GRPC_GENERATED_VERSION = '1.84.0'
|
|
9
9
|
GRPC_VERSION = grpc.__version__
|
|
10
10
|
_version_not_supported = False
|
|
11
11
|
|
{coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/graph/graph_pb2_grpc.py
RENAMED
|
@@ -5,7 +5,7 @@ import warnings
|
|
|
5
5
|
|
|
6
6
|
from coordinode._proto.coordinode.v1.graph import graph_pb2 as coordinode_dot_v1_dot_graph_dot_graph__pb2
|
|
7
7
|
|
|
8
|
-
GRPC_GENERATED_VERSION = '1.
|
|
8
|
+
GRPC_GENERATED_VERSION = '1.84.0'
|
|
9
9
|
GRPC_VERSION = grpc.__version__
|
|
10
10
|
_version_not_supported = False
|
|
11
11
|
|
{coordinode-3.0.0 → coordinode-4.0.1}/coordinode/_proto/coordinode/v1/health/health_pb2_grpc.py
RENAMED
|
@@ -5,7 +5,7 @@ import warnings
|
|
|
5
5
|
|
|
6
6
|
from coordinode._proto.coordinode.v1.health import health_pb2 as coordinode_dot_v1_dot_health_dot_health__pb2
|
|
7
7
|
|
|
8
|
-
GRPC_GENERATED_VERSION = '1.
|
|
8
|
+
GRPC_GENERATED_VERSION = '1.84.0'
|
|
9
9
|
GRPC_VERSION = grpc.__version__
|
|
10
10
|
_version_not_supported = False
|
|
11
11
|
|