From 08fef3b74cc4d6ec803391ee7d5eb5b5da8bcf6b Mon Sep 17 00:00:00 2001 From: "eric.delanghe" Date: Fri, 11 Oct 2024 16:09:25 +0200 Subject: [PATCH 01/23] Use requirements .in instead of .txt in setuptools Refactoring `load_reqs` allow us more flexibility in the format of requirements we want to define and make usage of .in possible instead of the .txt. For example we can now define `protobuf>=5.28.2,<6` --- setup.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/setup.py b/setup.py index 361f8fa6..3e084309 100644 --- a/setup.py +++ b/setup.py @@ -14,14 +14,11 @@ def load_reqs(filename): with open(filename) as reqs_file: - return [ - re.sub('==', '>=', line) for line in reqs_file.readlines() - if not re.match(r'(\s*#|-r)', line) - ] + lines = [line.split("#")[0].strip() for line in reqs_file.readlines()] + return [line for line in lines if line != "" and not line.startswith("-r")] - -requirements = load_reqs('requirements/base.txt') -test_requirements = load_reqs('requirements/test.txt') +requirements = load_reqs('requirements/base.in') +test_requirements = load_reqs('requirements/test.in') setup( name='etcd3', From 83fc13aa4d54c9c0b024600011011c470ee85d8f Mon Sep 17 00:00:00 2001 From: "eric.delanghe" Date: Fri, 11 Oct 2024 16:12:09 +0200 Subject: [PATCH 02/23] Bump dependencies to use protobuf v5 Using: pip-compile-multi I tried to use the arg `--no-upgrade` but it failed to find correct dependencies. --- requirements/base.in | 5 +- requirements/base.txt | 12 ++- requirements/test.in | 2 +- requirements/test.txt | 171 ++++++++++++++++++++---------------------- 4 files changed, 89 insertions(+), 101 deletions(-) diff --git a/requirements/base.in b/requirements/base.in index 03dbe219..dba74d6c 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -1,2 +1,3 @@ -grpcio>=1.2.0 -protobuf>=3.6.1 +grpcio>=1.66.2 +protobuf>=5.27.1,<6 +six>=1.16.0 diff --git a/requirements/base.txt b/requirements/base.txt index 4a789a44..739a4269 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,15 +1,13 @@ -# SHA1:04cc27ab2e85f48da5bc4b15b5820b244a61578a +# SHA1:ff08bff9a8ebdb06497fdb93a80767c4e40ad0d1 # # This file is autogenerated by pip-compile-multi # To update, run: # # pip-compile-multi # -grpcio==1.38.0 +grpcio==1.68.1 # via -r requirements/base.in -protobuf==3.17.0 +protobuf==5.29.1 + # via -r requirements/base.in +six==1.17.0 # via -r requirements/base.in -six==1.16.0 - # via - # grpcio - # protobuf diff --git a/requirements/test.in b/requirements/test.in index 003b21e8..c2645a60 100644 --- a/requirements/test.in +++ b/requirements/test.in @@ -5,7 +5,7 @@ bumpversion>=0.5.3 coverage flake8-import-order flake8 -grpcio-tools +grpcio-tools>=1.66.2 hypothesis more-itertools<6 # python2.7 pytest>=4.6.5 diff --git a/requirements/test.txt b/requirements/test.txt index 748a9767..5c32e111 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -1,4 +1,4 @@ -# SHA1:925716a635eb5e8d454086bef081ecfa689eff02 +# SHA1:4c15bbd6ea27b17533a13bca9b47deb0ad304933 # # This file is autogenerated by pip-compile-multi # To update, run: @@ -6,178 +6,167 @@ # pip-compile-multi # -r base.txt -alabaster==0.7.12 +alabaster==1.0.0 # via sphinx -appdirs==1.4.4 - # via virtualenv -argparse==1.4.0 - # via unittest2 -attrs==21.2.0 - # via - # hypothesis - # pytest -babel==2.9.1 +attrs==24.3.0 + # via hypothesis +babel==2.16.0 # via sphinx bump2version==1.0.1 # via bumpversion bumpversion==0.6.0 # via -r requirements/test.in -certifi==2020.12.5 +cachetools==5.5.0 + # via tox +certifi==2024.12.14 # via requests -cffi==1.14.5 +cffi==1.17.1 # via xattr -chardet==4.0.0 +chardet==5.2.0 + # via tox +charset-normalizer==3.4.0 # via requests -click==8.0.1 +click==8.1.7 # via pifpaf -coverage[toml]==5.5 +colorama==0.4.6 + # via tox +coverage[toml]==7.6.9 # via # -r requirements/test.in # pytest-cov -daiquiri==3.0.0 +daiquiri==3.3.0 # via pifpaf -distlib==0.3.1 +distlib==0.3.9 # via virtualenv -docutils==0.17.1 +docutils==0.21.2 # via sphinx -extras==1.0.0 - # via testtools -filelock==3.0.12 +exceptiongroup==1.2.2 + # via + # hypothesis + # pytest +filelock==3.16.1 # via # tox # virtualenv -fixtures==3.0.0 - # via - # pifpaf - # testtools -flake8-docstrings==1.6.0 - # via -r requirements/test.in -flake8-import-order==0.18.1 - # via -r requirements/test.in -flake8==3.9.2 +fixtures==4.1.0 + # via pifpaf +flake8==7.1.1 # via # -r requirements/test.in # flake8-docstrings -grpcio-tools==1.38.0 +flake8-docstrings==1.7.0 + # via -r requirements/test.in +flake8-import-order==0.18.2 # via -r requirements/test.in -hypothesis==6.13.1 +grpcio-tools==1.68.1 # via -r requirements/test.in -idna==2.10 +hypothesis==6.122.3 + # via -r requirements/test.in +idna==3.10 # via requests -imagesize==1.2.0 +imagesize==1.4.1 # via sphinx -iniconfig==1.1.1 +iniconfig==2.0.0 # via pytest -jinja2==3.0.1 +jinja2==3.1.4 # via # pifpaf # sphinx -linecache2==1.0.0 - # via traceback2 -markupsafe==2.0.1 +markupsafe==3.0.2 # via jinja2 -mccabe==0.6.1 +mccabe==0.7.0 # via flake8 -mock==4.0.3 +mock==5.1.0 # via -r requirements/test.in more-itertools==5.0.0 # via -r requirements/test.in -packaging==20.9 +packaging==24.2 # via + # pifpaf + # pyproject-api # pytest # sphinx # tox -pbr==5.6.0 - # via - # fixtures - # pifpaf - # testtools -pifpaf==3.1.5 +pbr==6.1.0 + # via fixtures +pifpaf==3.2.3 # via -r requirements/test.in -pluggy==0.13.1 +platformdirs==4.3.6 # via - # pytest # tox -psutil==5.8.0 - # via pifpaf -py==1.10.0 + # virtualenv +pluggy==1.5.0 # via # pytest # tox -pycodestyle==2.7.0 +psutil==6.1.0 + # via pifpaf +pycodestyle==2.12.1 # via # flake8 # flake8-import-order -pycparser==2.20 +pycparser==2.22 # via cffi pydocstyle==3.0.0 # via # -r requirements/test.in # flake8-docstrings -pyflakes==2.3.1 +pyflakes==3.2.0 # via flake8 -pygments==2.9.0 +pygments==2.18.0 # via sphinx -pyparsing==2.4.7 - # via packaging -pytest-cov==2.12.0 - # via -r requirements/test.in -pytest==6.2.4 +pyproject-api==1.8.0 + # via tox +pytest==8.3.4 # via # -r requirements/test.in # pytest-cov -python-json-logger==2.0.1 +pytest-cov==6.0.0 + # via -r requirements/test.in +python-json-logger==3.2.1 # via daiquiri -python-mimeparse==1.6.0 - # via testtools -pytz==2021.1 - # via babel -pyyaml==5.4.1 +pyyaml==6.0.2 # via -r requirements/test.in -requests==2.25.1 +requests==2.32.3 # via sphinx -snowballstemmer==2.1.0 +snowballstemmer==2.2.0 # via # pydocstyle # sphinx sortedcontainers==2.4.0 # via hypothesis -sphinx==4.0.2 +sphinx==8.1.3 # via -r requirements/test.in -sphinxcontrib-applehelp==1.0.2 +sphinxcontrib-applehelp==2.0.0 # via sphinx -sphinxcontrib-devhelp==1.0.2 +sphinxcontrib-devhelp==2.0.0 # via sphinx -sphinxcontrib-htmlhelp==1.0.3 +sphinxcontrib-htmlhelp==2.1.0 # via sphinx sphinxcontrib-jsmath==1.0.1 # via sphinx -sphinxcontrib-qthelp==1.0.3 +sphinxcontrib-qthelp==2.0.0 # via sphinx -sphinxcontrib-serializinghtml==1.1.4 +sphinxcontrib-serializinghtml==2.0.0 # via sphinx -tenacity==7.0.0 +tenacity==9.0.0 # via -r requirements/test.in -testtools==2.4.0 - # via fixtures -toml==0.10.2 +tomli==2.2.1 # via # coverage + # pyproject-api # pytest + # sphinx # tox -tox==3.23.1 +tox==4.23.2 # via -r requirements/test.in -traceback2==1.4.0 - # via - # testtools - # unittest2 -unittest2==1.1.0 - # via testtools -urllib3==1.26.4 +typing-extensions==4.12.2 + # via tox +urllib3==2.2.3 # via requests -virtualenv==20.4.6 +virtualenv==20.28.0 # via tox -xattr==0.9.7 +xattr==1.1.0 # via pifpaf # The following packages are considered to be unsafe in a requirements file: From 429db8804e7c6366b053a6257e193dcb2ae52128 Mon Sep 17 00:00:00 2001 From: "eric.delanghe" Date: Tue, 17 Dec 2024 14:10:54 +0100 Subject: [PATCH 03/23] Re-generate protobuf stubs Using: tox -e genstubs --- etcd3/etcdrpc/auth_pb2.py | 67 +- etcd3/etcdrpc/kv_pb2.py | 55 +- etcd3/etcdrpc/rpc_pb2.py | 1091 +++++++-------------------------- etcd3/etcdrpc/rpc_pb2_grpc.py | 710 ++++++++++++++++----- 4 files changed, 818 insertions(+), 1105 deletions(-) diff --git a/etcd3/etcdrpc/auth_pb2.py b/etcd3/etcdrpc/auth_pb2.py index b8abc39e..e6ff470d 100644 --- a/etcd3/etcdrpc/auth_pb2.py +++ b/etcd3/etcdrpc/auth_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: auth.proto +# Protobuf Python Version: 5.28.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 1, + '', + 'auth.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -16,43 +26,18 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nauth.proto\x12\x06\x61uthpb\"5\n\x04User\x12\x0c\n\x04name\x18\x01 \x01(\x0c\x12\x10\n\x08password\x18\x02 \x01(\x0c\x12\r\n\x05roles\x18\x03 \x03(\t\"\x83\x01\n\nPermission\x12)\n\x08permType\x18\x01 \x01(\x0e\x32\x17.authpb.Permission.Type\x12\x0b\n\x03key\x18\x02 \x01(\x0c\x12\x11\n\trange_end\x18\x03 \x01(\x0c\"*\n\x04Type\x12\x08\n\x04READ\x10\x00\x12\t\n\x05WRITE\x10\x01\x12\r\n\tREADWRITE\x10\x02\"?\n\x04Role\x12\x0c\n\x04name\x18\x01 \x01(\x0c\x12)\n\rkeyPermission\x18\x02 \x03(\x0b\x32\x12.authpb.PermissionB\x15\n\x11io.etcd.jetcd.apiP\x01\x62\x06proto3') - - -_USER = DESCRIPTOR.message_types_by_name['User'] -_PERMISSION = DESCRIPTOR.message_types_by_name['Permission'] -_ROLE = DESCRIPTOR.message_types_by_name['Role'] -_PERMISSION_TYPE = _PERMISSION.enum_types_by_name['Type'] -User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), { - 'DESCRIPTOR' : _USER, - '__module__' : 'auth_pb2' - # @@protoc_insertion_point(class_scope:authpb.User) - }) -_sym_db.RegisterMessage(User) - -Permission = _reflection.GeneratedProtocolMessageType('Permission', (_message.Message,), { - 'DESCRIPTOR' : _PERMISSION, - '__module__' : 'auth_pb2' - # @@protoc_insertion_point(class_scope:authpb.Permission) - }) -_sym_db.RegisterMessage(Permission) - -Role = _reflection.GeneratedProtocolMessageType('Role', (_message.Message,), { - 'DESCRIPTOR' : _ROLE, - '__module__' : 'auth_pb2' - # @@protoc_insertion_point(class_scope:authpb.Role) - }) -_sym_db.RegisterMessage(Role) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\021io.etcd.jetcd.apiP\001' - _USER._serialized_start=22 - _USER._serialized_end=75 - _PERMISSION._serialized_start=78 - _PERMISSION._serialized_end=209 - _PERMISSION_TYPE._serialized_start=167 - _PERMISSION_TYPE._serialized_end=209 - _ROLE._serialized_start=211 - _ROLE._serialized_end=274 +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'auth_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\021io.etcd.jetcd.apiP\001' + _globals['_USER']._serialized_start=22 + _globals['_USER']._serialized_end=75 + _globals['_PERMISSION']._serialized_start=78 + _globals['_PERMISSION']._serialized_end=209 + _globals['_PERMISSION_TYPE']._serialized_start=167 + _globals['_PERMISSION_TYPE']._serialized_end=209 + _globals['_ROLE']._serialized_start=211 + _globals['_ROLE']._serialized_end=274 # @@protoc_insertion_point(module_scope) diff --git a/etcd3/etcdrpc/kv_pb2.py b/etcd3/etcdrpc/kv_pb2.py index ea354832..093c299d 100644 --- a/etcd3/etcdrpc/kv_pb2.py +++ b/etcd3/etcdrpc/kv_pb2.py @@ -1,12 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: kv.proto +# Protobuf Python Version: 5.28.1 """Generated protocol buffer code.""" from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 1, + '', + 'kv.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -16,33 +26,16 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x08kv.proto\x12\x06mvccpb\"u\n\x08KeyValue\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x17\n\x0f\x63reate_revision\x18\x02 \x01(\x03\x12\x14\n\x0cmod_revision\x18\x03 \x01(\x03\x12\x0f\n\x07version\x18\x04 \x01(\x03\x12\r\n\x05value\x18\x05 \x01(\x0c\x12\r\n\x05lease\x18\x06 \x01(\x03\"\x91\x01\n\x05\x45vent\x12%\n\x04type\x18\x01 \x01(\x0e\x32\x17.mvccpb.Event.EventType\x12\x1c\n\x02kv\x18\x02 \x01(\x0b\x32\x10.mvccpb.KeyValue\x12!\n\x07prev_kv\x18\x03 \x01(\x0b\x32\x10.mvccpb.KeyValue\" \n\tEventType\x12\x07\n\x03PUT\x10\x00\x12\n\n\x06\x44\x45LETE\x10\x01\x42\x15\n\x11io.etcd.jetcd.apiP\x01\x62\x06proto3') - - -_KEYVALUE = DESCRIPTOR.message_types_by_name['KeyValue'] -_EVENT = DESCRIPTOR.message_types_by_name['Event'] -_EVENT_EVENTTYPE = _EVENT.enum_types_by_name['EventType'] -KeyValue = _reflection.GeneratedProtocolMessageType('KeyValue', (_message.Message,), { - 'DESCRIPTOR' : _KEYVALUE, - '__module__' : 'kv_pb2' - # @@protoc_insertion_point(class_scope:mvccpb.KeyValue) - }) -_sym_db.RegisterMessage(KeyValue) - -Event = _reflection.GeneratedProtocolMessageType('Event', (_message.Message,), { - 'DESCRIPTOR' : _EVENT, - '__module__' : 'kv_pb2' - # @@protoc_insertion_point(class_scope:mvccpb.Event) - }) -_sym_db.RegisterMessage(Event) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\021io.etcd.jetcd.apiP\001' - _KEYVALUE._serialized_start=20 - _KEYVALUE._serialized_end=137 - _EVENT._serialized_start=140 - _EVENT._serialized_end=285 - _EVENT_EVENTTYPE._serialized_start=253 - _EVENT_EVENTTYPE._serialized_end=285 +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'kv_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\021io.etcd.jetcd.apiP\001' + _globals['_KEYVALUE']._serialized_start=20 + _globals['_KEYVALUE']._serialized_end=137 + _globals['_EVENT']._serialized_start=140 + _globals['_EVENT']._serialized_end=285 + _globals['_EVENT_EVENTTYPE']._serialized_start=253 + _globals['_EVENT_EVENTTYPE']._serialized_end=285 # @@protoc_insertion_point(module_scope) diff --git a/etcd3/etcdrpc/rpc_pb2.py b/etcd3/etcdrpc/rpc_pb2.py index 7eb99440..0a9de62b 100644 --- a/etcd3/etcdrpc/rpc_pb2.py +++ b/etcd3/etcdrpc/rpc_pb2.py @@ -1,13 +1,22 @@ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE # source: rpc.proto +# Protobuf Python Version: 5.28.1 """Generated protocol buffer code.""" -from google.protobuf.internal import enum_type_wrapper from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection +from google.protobuf import runtime_version as _runtime_version from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 5, + 28, + 1, + '', + 'rpc.proto' +) # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() @@ -19,882 +28,202 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\trpc.proto\x12\x0c\x65tcdserverpb\x1a\x08kv.proto\x1a\nauth.proto\"\\\n\x0eResponseHeader\x12\x12\n\ncluster_id\x18\x01 \x01(\x04\x12\x11\n\tmember_id\x18\x02 \x01(\x04\x12\x10\n\x08revision\x18\x03 \x01(\x03\x12\x11\n\traft_term\x18\x04 \x01(\x04\"\xe4\x03\n\x0cRangeRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x11\n\trange_end\x18\x02 \x01(\x0c\x12\r\n\x05limit\x18\x03 \x01(\x03\x12\x10\n\x08revision\x18\x04 \x01(\x03\x12\x38\n\nsort_order\x18\x05 \x01(\x0e\x32$.etcdserverpb.RangeRequest.SortOrder\x12:\n\x0bsort_target\x18\x06 \x01(\x0e\x32%.etcdserverpb.RangeRequest.SortTarget\x12\x14\n\x0cserializable\x18\x07 \x01(\x08\x12\x11\n\tkeys_only\x18\x08 \x01(\x08\x12\x12\n\ncount_only\x18\t \x01(\x08\x12\x18\n\x10min_mod_revision\x18\n \x01(\x03\x12\x18\n\x10max_mod_revision\x18\x0b \x01(\x03\x12\x1b\n\x13min_create_revision\x18\x0c \x01(\x03\x12\x1b\n\x13max_create_revision\x18\r \x01(\x03\".\n\tSortOrder\x12\x08\n\x04NONE\x10\x00\x12\n\n\x06\x41SCEND\x10\x01\x12\x0b\n\x07\x44\x45SCEND\x10\x02\"B\n\nSortTarget\x12\x07\n\x03KEY\x10\x00\x12\x0b\n\x07VERSION\x10\x01\x12\n\n\x06\x43REATE\x10\x02\x12\x07\n\x03MOD\x10\x03\x12\t\n\x05VALUE\x10\x04\"y\n\rRangeResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x1d\n\x03kvs\x18\x02 \x03(\x0b\x32\x10.mvccpb.KeyValue\x12\x0c\n\x04more\x18\x03 \x01(\x08\x12\r\n\x05\x63ount\x18\x04 \x01(\x03\"t\n\nPutRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\r\n\x05value\x18\x02 \x01(\x0c\x12\r\n\x05lease\x18\x03 \x01(\x03\x12\x0f\n\x07prev_kv\x18\x04 \x01(\x08\x12\x14\n\x0cignore_value\x18\x05 \x01(\x08\x12\x14\n\x0cignore_lease\x18\x06 \x01(\x08\"^\n\x0bPutResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12!\n\x07prev_kv\x18\x02 \x01(\x0b\x32\x10.mvccpb.KeyValue\"E\n\x12\x44\x65leteRangeRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x11\n\trange_end\x18\x02 \x01(\x0c\x12\x0f\n\x07prev_kv\x18\x03 \x01(\x08\"x\n\x13\x44\x65leteRangeResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x0f\n\x07\x64\x65leted\x18\x02 \x01(\x03\x12\"\n\x08prev_kvs\x18\x03 \x03(\x0b\x32\x10.mvccpb.KeyValue\"\xef\x01\n\tRequestOp\x12\x33\n\rrequest_range\x18\x01 \x01(\x0b\x32\x1a.etcdserverpb.RangeRequestH\x00\x12/\n\x0brequest_put\x18\x02 \x01(\x0b\x32\x18.etcdserverpb.PutRequestH\x00\x12@\n\x14request_delete_range\x18\x03 \x01(\x0b\x32 .etcdserverpb.DeleteRangeRequestH\x00\x12/\n\x0brequest_txn\x18\x04 \x01(\x0b\x32\x18.etcdserverpb.TxnRequestH\x00\x42\t\n\x07request\"\xf9\x01\n\nResponseOp\x12\x35\n\x0eresponse_range\x18\x01 \x01(\x0b\x32\x1b.etcdserverpb.RangeResponseH\x00\x12\x31\n\x0cresponse_put\x18\x02 \x01(\x0b\x32\x19.etcdserverpb.PutResponseH\x00\x12\x42\n\x15response_delete_range\x18\x03 \x01(\x0b\x32!.etcdserverpb.DeleteRangeResponseH\x00\x12\x31\n\x0cresponse_txn\x18\x04 \x01(\x0b\x32\x19.etcdserverpb.TxnResponseH\x00\x42\n\n\x08response\"\x96\x03\n\x07\x43ompare\x12\x33\n\x06result\x18\x01 \x01(\x0e\x32#.etcdserverpb.Compare.CompareResult\x12\x33\n\x06target\x18\x02 \x01(\x0e\x32#.etcdserverpb.Compare.CompareTarget\x12\x0b\n\x03key\x18\x03 \x01(\x0c\x12\x11\n\x07version\x18\x04 \x01(\x03H\x00\x12\x19\n\x0f\x63reate_revision\x18\x05 \x01(\x03H\x00\x12\x16\n\x0cmod_revision\x18\x06 \x01(\x03H\x00\x12\x0f\n\x05value\x18\x07 \x01(\x0cH\x00\x12\x0f\n\x05lease\x18\x08 \x01(\x03H\x00\x12\x11\n\trange_end\x18@ \x01(\x0c\"@\n\rCompareResult\x12\t\n\x05\x45QUAL\x10\x00\x12\x0b\n\x07GREATER\x10\x01\x12\x08\n\x04LESS\x10\x02\x12\r\n\tNOT_EQUAL\x10\x03\"G\n\rCompareTarget\x12\x0b\n\x07VERSION\x10\x00\x12\n\n\x06\x43REATE\x10\x01\x12\x07\n\x03MOD\x10\x02\x12\t\n\x05VALUE\x10\x03\x12\t\n\x05LEASE\x10\x04\x42\x0e\n\x0ctarget_union\"\x88\x01\n\nTxnRequest\x12&\n\x07\x63ompare\x18\x01 \x03(\x0b\x32\x15.etcdserverpb.Compare\x12(\n\x07success\x18\x02 \x03(\x0b\x32\x17.etcdserverpb.RequestOp\x12(\n\x07\x66\x61ilure\x18\x03 \x03(\x0b\x32\x17.etcdserverpb.RequestOp\"{\n\x0bTxnResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x11\n\tsucceeded\x18\x02 \x01(\x08\x12+\n\tresponses\x18\x03 \x03(\x0b\x32\x18.etcdserverpb.ResponseOp\"7\n\x11\x43ompactionRequest\x12\x10\n\x08revision\x18\x01 \x01(\x03\x12\x10\n\x08physical\x18\x02 \x01(\x08\"B\n\x12\x43ompactionResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"\r\n\x0bHashRequest\"J\n\x0cHashResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x0c\n\x04hash\x18\x02 \x01(\r\"!\n\rHashKVRequest\x12\x10\n\x08revision\x18\x01 \x01(\x03\"f\n\x0eHashKVResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x0c\n\x04hash\x18\x02 \x01(\r\x12\x18\n\x10\x63ompact_revision\x18\x03 \x01(\x03\"\x11\n\x0fSnapshotRequest\"g\n\x10SnapshotResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x17\n\x0fremaining_bytes\x18\x02 \x01(\x04\x12\x0c\n\x04\x62lob\x18\x03 \x01(\x0c\"\xd7\x01\n\x0cWatchRequest\x12:\n\x0e\x63reate_request\x18\x01 \x01(\x0b\x32 .etcdserverpb.WatchCreateRequestH\x00\x12:\n\x0e\x63\x61ncel_request\x18\x02 \x01(\x0b\x32 .etcdserverpb.WatchCancelRequestH\x00\x12>\n\x10progress_request\x18\x03 \x01(\x0b\x32\".etcdserverpb.WatchProgressRequestH\x00\x42\x0f\n\rrequest_union\"\xdb\x01\n\x12WatchCreateRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x11\n\trange_end\x18\x02 \x01(\x0c\x12\x16\n\x0estart_revision\x18\x03 \x01(\x03\x12\x17\n\x0fprogress_notify\x18\x04 \x01(\x08\x12<\n\x07\x66ilters\x18\x05 \x03(\x0e\x32+.etcdserverpb.WatchCreateRequest.FilterType\x12\x0f\n\x07prev_kv\x18\x06 \x01(\x08\"%\n\nFilterType\x12\t\n\x05NOPUT\x10\x00\x12\x0c\n\x08NODELETE\x10\x01\"&\n\x12WatchCancelRequest\x12\x10\n\x08watch_id\x18\x01 \x01(\x03\"\x16\n\x14WatchProgressRequest\"\xc2\x01\n\rWatchResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x10\n\x08watch_id\x18\x02 \x01(\x03\x12\x0f\n\x07\x63reated\x18\x03 \x01(\x08\x12\x10\n\x08\x63\x61nceled\x18\x04 \x01(\x08\x12\x18\n\x10\x63ompact_revision\x18\x05 \x01(\x03\x12\x15\n\rcancel_reason\x18\x06 \x01(\t\x12\x1d\n\x06\x65vents\x18\x0b \x03(\x0b\x32\r.mvccpb.Event\",\n\x11LeaseGrantRequest\x12\x0b\n\x03TTL\x18\x01 \x01(\x03\x12\n\n\x02ID\x18\x02 \x01(\x03\"j\n\x12LeaseGrantResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\n\n\x02ID\x18\x02 \x01(\x03\x12\x0b\n\x03TTL\x18\x03 \x01(\x03\x12\r\n\x05\x65rror\x18\x04 \x01(\t\" \n\x12LeaseRevokeRequest\x12\n\n\x02ID\x18\x01 \x01(\x03\"C\n\x13LeaseRevokeResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"#\n\x15LeaseKeepAliveRequest\x12\n\n\x02ID\x18\x01 \x01(\x03\"_\n\x16LeaseKeepAliveResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\n\n\x02ID\x18\x02 \x01(\x03\x12\x0b\n\x03TTL\x18\x03 \x01(\x03\"2\n\x16LeaseTimeToLiveRequest\x12\n\n\x02ID\x18\x01 \x01(\x03\x12\x0c\n\x04keys\x18\x02 \x01(\x08\"\x82\x01\n\x17LeaseTimeToLiveResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\n\n\x02ID\x18\x02 \x01(\x03\x12\x0b\n\x03TTL\x18\x03 \x01(\x03\x12\x12\n\ngrantedTTL\x18\x04 \x01(\x03\x12\x0c\n\x04keys\x18\x05 \x03(\x0c\"H\n\x06Member\x12\n\n\x02ID\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08peerURLs\x18\x03 \x03(\t\x12\x12\n\nclientURLs\x18\x04 \x03(\t\"$\n\x10MemberAddRequest\x12\x10\n\x08peerURLs\x18\x01 \x03(\t\"\x8e\x01\n\x11MemberAddResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12$\n\x06member\x18\x02 \x01(\x0b\x32\x14.etcdserverpb.Member\x12%\n\x07members\x18\x03 \x03(\x0b\x32\x14.etcdserverpb.Member\"!\n\x13MemberRemoveRequest\x12\n\n\x02ID\x18\x01 \x01(\x04\"k\n\x14MemberRemoveResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12%\n\x07members\x18\x02 \x03(\x0b\x32\x14.etcdserverpb.Member\"3\n\x13MemberUpdateRequest\x12\n\n\x02ID\x18\x01 \x01(\x04\x12\x10\n\x08peerURLs\x18\x02 \x03(\t\"k\n\x14MemberUpdateResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12%\n\x07members\x18\x02 \x03(\x0b\x32\x14.etcdserverpb.Member\"\x13\n\x11MemberListRequest\"i\n\x12MemberListResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12%\n\x07members\x18\x02 \x03(\x0b\x32\x14.etcdserverpb.Member\"\x13\n\x11\x44\x65\x66ragmentRequest\"B\n\x12\x44\x65\x66ragmentResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"%\n\x11MoveLeaderRequest\x12\x10\n\x08targetID\x18\x01 \x01(\x04\"B\n\x12MoveLeaderResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"\xb6\x01\n\x0c\x41larmRequest\x12\x36\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32&.etcdserverpb.AlarmRequest.AlarmAction\x12\x10\n\x08memberID\x18\x02 \x01(\x04\x12&\n\x05\x61larm\x18\x03 \x01(\x0e\x32\x17.etcdserverpb.AlarmType\"4\n\x0b\x41larmAction\x12\x07\n\x03GET\x10\x00\x12\x0c\n\x08\x41\x43TIVATE\x10\x01\x12\x0e\n\nDEACTIVATE\x10\x02\"G\n\x0b\x41larmMember\x12\x10\n\x08memberID\x18\x01 \x01(\x04\x12&\n\x05\x61larm\x18\x02 \x01(\x0e\x32\x17.etcdserverpb.AlarmType\"h\n\rAlarmResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12)\n\x06\x61larms\x18\x02 \x03(\x0b\x32\x19.etcdserverpb.AlarmMember\"\x0f\n\rStatusRequest\"\x94\x01\n\x0eStatusResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x0e\n\x06\x64\x62Size\x18\x03 \x01(\x03\x12\x0e\n\x06leader\x18\x04 \x01(\x04\x12\x11\n\traftIndex\x18\x05 \x01(\x04\x12\x10\n\x08raftTerm\x18\x06 \x01(\x04\"\x13\n\x11\x41uthEnableRequest\"\x14\n\x12\x41uthDisableRequest\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"4\n\x12\x41uthUserAddRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"\"\n\x12\x41uthUserGetRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"%\n\x15\x41uthUserDeleteRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"?\n\x1d\x41uthUserChangePasswordRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"6\n\x18\x41uthUserGrantRoleRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x0c\n\x04role\x18\x02 \x01(\t\"7\n\x19\x41uthUserRevokeRoleRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04role\x18\x02 \x01(\t\"\"\n\x12\x41uthRoleAddRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\"\n\x12\x41uthRoleGetRequest\x12\x0c\n\x04role\x18\x01 \x01(\t\"\x15\n\x13\x41uthUserListRequest\"\x15\n\x13\x41uthRoleListRequest\"%\n\x15\x41uthRoleDeleteRequest\x12\x0c\n\x04role\x18\x01 \x01(\t\"P\n\x1e\x41uthRoleGrantPermissionRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12 \n\x04perm\x18\x02 \x01(\x0b\x32\x12.authpb.Permission\"O\n\x1f\x41uthRoleRevokePermissionRequest\x12\x0c\n\x04role\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x11\n\trange_end\x18\x03 \x01(\t\"B\n\x12\x41uthEnableResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"C\n\x13\x41uthDisableResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"S\n\x14\x41uthenticateResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\r\n\x05token\x18\x02 \x01(\t\"C\n\x13\x41uthUserAddResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"R\n\x13\x41uthUserGetResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\r\n\x05roles\x18\x02 \x03(\t\"F\n\x16\x41uthUserDeleteResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"N\n\x1e\x41uthUserChangePasswordResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"I\n\x19\x41uthUserGrantRoleResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"J\n\x1a\x41uthUserRevokeRoleResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"C\n\x13\x41uthRoleAddResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"e\n\x13\x41uthRoleGetResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12 \n\x04perm\x18\x02 \x03(\x0b\x32\x12.authpb.Permission\"S\n\x14\x41uthRoleListResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\r\n\x05roles\x18\x02 \x03(\t\"S\n\x14\x41uthUserListResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\r\n\x05users\x18\x02 \x03(\t\"F\n\x16\x41uthRoleDeleteResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"O\n\x1f\x41uthRoleGrantPermissionResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"P\n AuthRoleRevokePermissionResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader*\"\n\tAlarmType\x12\x08\n\x04NONE\x10\x00\x12\x0b\n\x07NOSPACE\x10\x01\x32\xea\x02\n\x02KV\x12\x42\n\x05Range\x12\x1a.etcdserverpb.RangeRequest\x1a\x1b.etcdserverpb.RangeResponse\"\x00\x12<\n\x03Put\x12\x18.etcdserverpb.PutRequest\x1a\x19.etcdserverpb.PutResponse\"\x00\x12T\n\x0b\x44\x65leteRange\x12 .etcdserverpb.DeleteRangeRequest\x1a!.etcdserverpb.DeleteRangeResponse\"\x00\x12<\n\x03Txn\x12\x18.etcdserverpb.TxnRequest\x1a\x19.etcdserverpb.TxnResponse\"\x00\x12N\n\x07\x43ompact\x12\x1f.etcdserverpb.CompactionRequest\x1a .etcdserverpb.CompactionResponse\"\x00\x32\x9e\x01\n\x05Watch\x12M\n\x08Progress\x12\".etcdserverpb.WatchProgressRequest\x1a\x1b.etcdserverpb.WatchResponse\"\x00\x12\x46\n\x05Watch\x12\x1a.etcdserverpb.WatchRequest\x1a\x1b.etcdserverpb.WatchResponse\"\x00(\x01\x30\x01\x32\xf5\x02\n\x05Lease\x12Q\n\nLeaseGrant\x12\x1f.etcdserverpb.LeaseGrantRequest\x1a .etcdserverpb.LeaseGrantResponse\"\x00\x12T\n\x0bLeaseRevoke\x12 .etcdserverpb.LeaseRevokeRequest\x1a!.etcdserverpb.LeaseRevokeResponse\"\x00\x12\x61\n\x0eLeaseKeepAlive\x12#.etcdserverpb.LeaseKeepAliveRequest\x1a$.etcdserverpb.LeaseKeepAliveResponse\"\x00(\x01\x30\x01\x12`\n\x0fLeaseTimeToLive\x12$.etcdserverpb.LeaseTimeToLiveRequest\x1a%.etcdserverpb.LeaseTimeToLiveResponse\"\x00\x32\xde\x02\n\x07\x43luster\x12N\n\tMemberAdd\x12\x1e.etcdserverpb.MemberAddRequest\x1a\x1f.etcdserverpb.MemberAddResponse\"\x00\x12W\n\x0cMemberRemove\x12!.etcdserverpb.MemberRemoveRequest\x1a\".etcdserverpb.MemberRemoveResponse\"\x00\x12W\n\x0cMemberUpdate\x12!.etcdserverpb.MemberUpdateRequest\x1a\".etcdserverpb.MemberUpdateResponse\"\x00\x12Q\n\nMemberList\x12\x1f.etcdserverpb.MemberListRequest\x1a .etcdserverpb.MemberListResponse\"\x00\x32\x95\x04\n\x0bMaintenance\x12\x42\n\x05\x41larm\x12\x1a.etcdserverpb.AlarmRequest\x1a\x1b.etcdserverpb.AlarmResponse\"\x00\x12\x45\n\x06Status\x12\x1b.etcdserverpb.StatusRequest\x1a\x1c.etcdserverpb.StatusResponse\"\x00\x12Q\n\nDefragment\x12\x1f.etcdserverpb.DefragmentRequest\x1a .etcdserverpb.DefragmentResponse\"\x00\x12?\n\x04Hash\x12\x19.etcdserverpb.HashRequest\x1a\x1a.etcdserverpb.HashResponse\"\x00\x12\x45\n\x06HashKV\x12\x1b.etcdserverpb.HashKVRequest\x1a\x1c.etcdserverpb.HashKVResponse\"\x00\x12M\n\x08Snapshot\x12\x1d.etcdserverpb.SnapshotRequest\x1a\x1e.etcdserverpb.SnapshotResponse\"\x00\x30\x01\x12Q\n\nMoveLeader\x12\x1f.etcdserverpb.MoveLeaderRequest\x1a .etcdserverpb.MoveLeaderResponse\"\x00\x32\xdd\x0b\n\x04\x41uth\x12Q\n\nAuthEnable\x12\x1f.etcdserverpb.AuthEnableRequest\x1a .etcdserverpb.AuthEnableResponse\"\x00\x12T\n\x0b\x41uthDisable\x12 .etcdserverpb.AuthDisableRequest\x1a!.etcdserverpb.AuthDisableResponse\"\x00\x12W\n\x0c\x41uthenticate\x12!.etcdserverpb.AuthenticateRequest\x1a\".etcdserverpb.AuthenticateResponse\"\x00\x12P\n\x07UserAdd\x12 .etcdserverpb.AuthUserAddRequest\x1a!.etcdserverpb.AuthUserAddResponse\"\x00\x12P\n\x07UserGet\x12 .etcdserverpb.AuthUserGetRequest\x1a!.etcdserverpb.AuthUserGetResponse\"\x00\x12S\n\x08UserList\x12!.etcdserverpb.AuthUserListRequest\x1a\".etcdserverpb.AuthUserListResponse\"\x00\x12Y\n\nUserDelete\x12#.etcdserverpb.AuthUserDeleteRequest\x1a$.etcdserverpb.AuthUserDeleteResponse\"\x00\x12q\n\x12UserChangePassword\x12+.etcdserverpb.AuthUserChangePasswordRequest\x1a,.etcdserverpb.AuthUserChangePasswordResponse\"\x00\x12\x62\n\rUserGrantRole\x12&.etcdserverpb.AuthUserGrantRoleRequest\x1a\'.etcdserverpb.AuthUserGrantRoleResponse\"\x00\x12\x65\n\x0eUserRevokeRole\x12\'.etcdserverpb.AuthUserRevokeRoleRequest\x1a(.etcdserverpb.AuthUserRevokeRoleResponse\"\x00\x12P\n\x07RoleAdd\x12 .etcdserverpb.AuthRoleAddRequest\x1a!.etcdserverpb.AuthRoleAddResponse\"\x00\x12P\n\x07RoleGet\x12 .etcdserverpb.AuthRoleGetRequest\x1a!.etcdserverpb.AuthRoleGetResponse\"\x00\x12S\n\x08RoleList\x12!.etcdserverpb.AuthRoleListRequest\x1a\".etcdserverpb.AuthRoleListResponse\"\x00\x12Y\n\nRoleDelete\x12#.etcdserverpb.AuthRoleDeleteRequest\x1a$.etcdserverpb.AuthRoleDeleteResponse\"\x00\x12t\n\x13RoleGrantPermission\x12,.etcdserverpb.AuthRoleGrantPermissionRequest\x1a-.etcdserverpb.AuthRoleGrantPermissionResponse\"\x00\x12w\n\x14RoleRevokePermission\x12-.etcdserverpb.AuthRoleRevokePermissionRequest\x1a..etcdserverpb.AuthRoleRevokePermissionResponse\"\x00\x42)\n\x11io.etcd.jetcd.apiB\nJetcdProtoP\x01\xa2\x02\x05Jetcdb\x06proto3') -_ALARMTYPE = DESCRIPTOR.enum_types_by_name['AlarmType'] -AlarmType = enum_type_wrapper.EnumTypeWrapper(_ALARMTYPE) -NONE = 0 -NOSPACE = 1 - - -_RESPONSEHEADER = DESCRIPTOR.message_types_by_name['ResponseHeader'] -_RANGEREQUEST = DESCRIPTOR.message_types_by_name['RangeRequest'] -_RANGERESPONSE = DESCRIPTOR.message_types_by_name['RangeResponse'] -_PUTREQUEST = DESCRIPTOR.message_types_by_name['PutRequest'] -_PUTRESPONSE = DESCRIPTOR.message_types_by_name['PutResponse'] -_DELETERANGEREQUEST = DESCRIPTOR.message_types_by_name['DeleteRangeRequest'] -_DELETERANGERESPONSE = DESCRIPTOR.message_types_by_name['DeleteRangeResponse'] -_REQUESTOP = DESCRIPTOR.message_types_by_name['RequestOp'] -_RESPONSEOP = DESCRIPTOR.message_types_by_name['ResponseOp'] -_COMPARE = DESCRIPTOR.message_types_by_name['Compare'] -_TXNREQUEST = DESCRIPTOR.message_types_by_name['TxnRequest'] -_TXNRESPONSE = DESCRIPTOR.message_types_by_name['TxnResponse'] -_COMPACTIONREQUEST = DESCRIPTOR.message_types_by_name['CompactionRequest'] -_COMPACTIONRESPONSE = DESCRIPTOR.message_types_by_name['CompactionResponse'] -_HASHREQUEST = DESCRIPTOR.message_types_by_name['HashRequest'] -_HASHRESPONSE = DESCRIPTOR.message_types_by_name['HashResponse'] -_HASHKVREQUEST = DESCRIPTOR.message_types_by_name['HashKVRequest'] -_HASHKVRESPONSE = DESCRIPTOR.message_types_by_name['HashKVResponse'] -_SNAPSHOTREQUEST = DESCRIPTOR.message_types_by_name['SnapshotRequest'] -_SNAPSHOTRESPONSE = DESCRIPTOR.message_types_by_name['SnapshotResponse'] -_WATCHREQUEST = DESCRIPTOR.message_types_by_name['WatchRequest'] -_WATCHCREATEREQUEST = DESCRIPTOR.message_types_by_name['WatchCreateRequest'] -_WATCHCANCELREQUEST = DESCRIPTOR.message_types_by_name['WatchCancelRequest'] -_WATCHPROGRESSREQUEST = DESCRIPTOR.message_types_by_name['WatchProgressRequest'] -_WATCHRESPONSE = DESCRIPTOR.message_types_by_name['WatchResponse'] -_LEASEGRANTREQUEST = DESCRIPTOR.message_types_by_name['LeaseGrantRequest'] -_LEASEGRANTRESPONSE = DESCRIPTOR.message_types_by_name['LeaseGrantResponse'] -_LEASEREVOKEREQUEST = DESCRIPTOR.message_types_by_name['LeaseRevokeRequest'] -_LEASEREVOKERESPONSE = DESCRIPTOR.message_types_by_name['LeaseRevokeResponse'] -_LEASEKEEPALIVEREQUEST = DESCRIPTOR.message_types_by_name['LeaseKeepAliveRequest'] -_LEASEKEEPALIVERESPONSE = DESCRIPTOR.message_types_by_name['LeaseKeepAliveResponse'] -_LEASETIMETOLIVEREQUEST = DESCRIPTOR.message_types_by_name['LeaseTimeToLiveRequest'] -_LEASETIMETOLIVERESPONSE = DESCRIPTOR.message_types_by_name['LeaseTimeToLiveResponse'] -_MEMBER = DESCRIPTOR.message_types_by_name['Member'] -_MEMBERADDREQUEST = DESCRIPTOR.message_types_by_name['MemberAddRequest'] -_MEMBERADDRESPONSE = DESCRIPTOR.message_types_by_name['MemberAddResponse'] -_MEMBERREMOVEREQUEST = DESCRIPTOR.message_types_by_name['MemberRemoveRequest'] -_MEMBERREMOVERESPONSE = DESCRIPTOR.message_types_by_name['MemberRemoveResponse'] -_MEMBERUPDATEREQUEST = DESCRIPTOR.message_types_by_name['MemberUpdateRequest'] -_MEMBERUPDATERESPONSE = DESCRIPTOR.message_types_by_name['MemberUpdateResponse'] -_MEMBERLISTREQUEST = DESCRIPTOR.message_types_by_name['MemberListRequest'] -_MEMBERLISTRESPONSE = DESCRIPTOR.message_types_by_name['MemberListResponse'] -_DEFRAGMENTREQUEST = DESCRIPTOR.message_types_by_name['DefragmentRequest'] -_DEFRAGMENTRESPONSE = DESCRIPTOR.message_types_by_name['DefragmentResponse'] -_MOVELEADERREQUEST = DESCRIPTOR.message_types_by_name['MoveLeaderRequest'] -_MOVELEADERRESPONSE = DESCRIPTOR.message_types_by_name['MoveLeaderResponse'] -_ALARMREQUEST = DESCRIPTOR.message_types_by_name['AlarmRequest'] -_ALARMMEMBER = DESCRIPTOR.message_types_by_name['AlarmMember'] -_ALARMRESPONSE = DESCRIPTOR.message_types_by_name['AlarmResponse'] -_STATUSREQUEST = DESCRIPTOR.message_types_by_name['StatusRequest'] -_STATUSRESPONSE = DESCRIPTOR.message_types_by_name['StatusResponse'] -_AUTHENABLEREQUEST = DESCRIPTOR.message_types_by_name['AuthEnableRequest'] -_AUTHDISABLEREQUEST = DESCRIPTOR.message_types_by_name['AuthDisableRequest'] -_AUTHENTICATEREQUEST = DESCRIPTOR.message_types_by_name['AuthenticateRequest'] -_AUTHUSERADDREQUEST = DESCRIPTOR.message_types_by_name['AuthUserAddRequest'] -_AUTHUSERGETREQUEST = DESCRIPTOR.message_types_by_name['AuthUserGetRequest'] -_AUTHUSERDELETEREQUEST = DESCRIPTOR.message_types_by_name['AuthUserDeleteRequest'] -_AUTHUSERCHANGEPASSWORDREQUEST = DESCRIPTOR.message_types_by_name['AuthUserChangePasswordRequest'] -_AUTHUSERGRANTROLEREQUEST = DESCRIPTOR.message_types_by_name['AuthUserGrantRoleRequest'] -_AUTHUSERREVOKEROLEREQUEST = DESCRIPTOR.message_types_by_name['AuthUserRevokeRoleRequest'] -_AUTHROLEADDREQUEST = DESCRIPTOR.message_types_by_name['AuthRoleAddRequest'] -_AUTHROLEGETREQUEST = DESCRIPTOR.message_types_by_name['AuthRoleGetRequest'] -_AUTHUSERLISTREQUEST = DESCRIPTOR.message_types_by_name['AuthUserListRequest'] -_AUTHROLELISTREQUEST = DESCRIPTOR.message_types_by_name['AuthRoleListRequest'] -_AUTHROLEDELETEREQUEST = DESCRIPTOR.message_types_by_name['AuthRoleDeleteRequest'] -_AUTHROLEGRANTPERMISSIONREQUEST = DESCRIPTOR.message_types_by_name['AuthRoleGrantPermissionRequest'] -_AUTHROLEREVOKEPERMISSIONREQUEST = DESCRIPTOR.message_types_by_name['AuthRoleRevokePermissionRequest'] -_AUTHENABLERESPONSE = DESCRIPTOR.message_types_by_name['AuthEnableResponse'] -_AUTHDISABLERESPONSE = DESCRIPTOR.message_types_by_name['AuthDisableResponse'] -_AUTHENTICATERESPONSE = DESCRIPTOR.message_types_by_name['AuthenticateResponse'] -_AUTHUSERADDRESPONSE = DESCRIPTOR.message_types_by_name['AuthUserAddResponse'] -_AUTHUSERGETRESPONSE = DESCRIPTOR.message_types_by_name['AuthUserGetResponse'] -_AUTHUSERDELETERESPONSE = DESCRIPTOR.message_types_by_name['AuthUserDeleteResponse'] -_AUTHUSERCHANGEPASSWORDRESPONSE = DESCRIPTOR.message_types_by_name['AuthUserChangePasswordResponse'] -_AUTHUSERGRANTROLERESPONSE = DESCRIPTOR.message_types_by_name['AuthUserGrantRoleResponse'] -_AUTHUSERREVOKEROLERESPONSE = DESCRIPTOR.message_types_by_name['AuthUserRevokeRoleResponse'] -_AUTHROLEADDRESPONSE = DESCRIPTOR.message_types_by_name['AuthRoleAddResponse'] -_AUTHROLEGETRESPONSE = DESCRIPTOR.message_types_by_name['AuthRoleGetResponse'] -_AUTHROLELISTRESPONSE = DESCRIPTOR.message_types_by_name['AuthRoleListResponse'] -_AUTHUSERLISTRESPONSE = DESCRIPTOR.message_types_by_name['AuthUserListResponse'] -_AUTHROLEDELETERESPONSE = DESCRIPTOR.message_types_by_name['AuthRoleDeleteResponse'] -_AUTHROLEGRANTPERMISSIONRESPONSE = DESCRIPTOR.message_types_by_name['AuthRoleGrantPermissionResponse'] -_AUTHROLEREVOKEPERMISSIONRESPONSE = DESCRIPTOR.message_types_by_name['AuthRoleRevokePermissionResponse'] -_RANGEREQUEST_SORTORDER = _RANGEREQUEST.enum_types_by_name['SortOrder'] -_RANGEREQUEST_SORTTARGET = _RANGEREQUEST.enum_types_by_name['SortTarget'] -_COMPARE_COMPARERESULT = _COMPARE.enum_types_by_name['CompareResult'] -_COMPARE_COMPARETARGET = _COMPARE.enum_types_by_name['CompareTarget'] -_WATCHCREATEREQUEST_FILTERTYPE = _WATCHCREATEREQUEST.enum_types_by_name['FilterType'] -_ALARMREQUEST_ALARMACTION = _ALARMREQUEST.enum_types_by_name['AlarmAction'] -ResponseHeader = _reflection.GeneratedProtocolMessageType('ResponseHeader', (_message.Message,), { - 'DESCRIPTOR' : _RESPONSEHEADER, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.ResponseHeader) - }) -_sym_db.RegisterMessage(ResponseHeader) - -RangeRequest = _reflection.GeneratedProtocolMessageType('RangeRequest', (_message.Message,), { - 'DESCRIPTOR' : _RANGEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.RangeRequest) - }) -_sym_db.RegisterMessage(RangeRequest) - -RangeResponse = _reflection.GeneratedProtocolMessageType('RangeResponse', (_message.Message,), { - 'DESCRIPTOR' : _RANGERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.RangeResponse) - }) -_sym_db.RegisterMessage(RangeResponse) - -PutRequest = _reflection.GeneratedProtocolMessageType('PutRequest', (_message.Message,), { - 'DESCRIPTOR' : _PUTREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.PutRequest) - }) -_sym_db.RegisterMessage(PutRequest) - -PutResponse = _reflection.GeneratedProtocolMessageType('PutResponse', (_message.Message,), { - 'DESCRIPTOR' : _PUTRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.PutResponse) - }) -_sym_db.RegisterMessage(PutResponse) - -DeleteRangeRequest = _reflection.GeneratedProtocolMessageType('DeleteRangeRequest', (_message.Message,), { - 'DESCRIPTOR' : _DELETERANGEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.DeleteRangeRequest) - }) -_sym_db.RegisterMessage(DeleteRangeRequest) - -DeleteRangeResponse = _reflection.GeneratedProtocolMessageType('DeleteRangeResponse', (_message.Message,), { - 'DESCRIPTOR' : _DELETERANGERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.DeleteRangeResponse) - }) -_sym_db.RegisterMessage(DeleteRangeResponse) - -RequestOp = _reflection.GeneratedProtocolMessageType('RequestOp', (_message.Message,), { - 'DESCRIPTOR' : _REQUESTOP, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.RequestOp) - }) -_sym_db.RegisterMessage(RequestOp) - -ResponseOp = _reflection.GeneratedProtocolMessageType('ResponseOp', (_message.Message,), { - 'DESCRIPTOR' : _RESPONSEOP, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.ResponseOp) - }) -_sym_db.RegisterMessage(ResponseOp) - -Compare = _reflection.GeneratedProtocolMessageType('Compare', (_message.Message,), { - 'DESCRIPTOR' : _COMPARE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.Compare) - }) -_sym_db.RegisterMessage(Compare) - -TxnRequest = _reflection.GeneratedProtocolMessageType('TxnRequest', (_message.Message,), { - 'DESCRIPTOR' : _TXNREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.TxnRequest) - }) -_sym_db.RegisterMessage(TxnRequest) - -TxnResponse = _reflection.GeneratedProtocolMessageType('TxnResponse', (_message.Message,), { - 'DESCRIPTOR' : _TXNRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.TxnResponse) - }) -_sym_db.RegisterMessage(TxnResponse) - -CompactionRequest = _reflection.GeneratedProtocolMessageType('CompactionRequest', (_message.Message,), { - 'DESCRIPTOR' : _COMPACTIONREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.CompactionRequest) - }) -_sym_db.RegisterMessage(CompactionRequest) - -CompactionResponse = _reflection.GeneratedProtocolMessageType('CompactionResponse', (_message.Message,), { - 'DESCRIPTOR' : _COMPACTIONRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.CompactionResponse) - }) -_sym_db.RegisterMessage(CompactionResponse) - -HashRequest = _reflection.GeneratedProtocolMessageType('HashRequest', (_message.Message,), { - 'DESCRIPTOR' : _HASHREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.HashRequest) - }) -_sym_db.RegisterMessage(HashRequest) - -HashResponse = _reflection.GeneratedProtocolMessageType('HashResponse', (_message.Message,), { - 'DESCRIPTOR' : _HASHRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.HashResponse) - }) -_sym_db.RegisterMessage(HashResponse) - -HashKVRequest = _reflection.GeneratedProtocolMessageType('HashKVRequest', (_message.Message,), { - 'DESCRIPTOR' : _HASHKVREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.HashKVRequest) - }) -_sym_db.RegisterMessage(HashKVRequest) - -HashKVResponse = _reflection.GeneratedProtocolMessageType('HashKVResponse', (_message.Message,), { - 'DESCRIPTOR' : _HASHKVRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.HashKVResponse) - }) -_sym_db.RegisterMessage(HashKVResponse) - -SnapshotRequest = _reflection.GeneratedProtocolMessageType('SnapshotRequest', (_message.Message,), { - 'DESCRIPTOR' : _SNAPSHOTREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.SnapshotRequest) - }) -_sym_db.RegisterMessage(SnapshotRequest) - -SnapshotResponse = _reflection.GeneratedProtocolMessageType('SnapshotResponse', (_message.Message,), { - 'DESCRIPTOR' : _SNAPSHOTRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.SnapshotResponse) - }) -_sym_db.RegisterMessage(SnapshotResponse) - -WatchRequest = _reflection.GeneratedProtocolMessageType('WatchRequest', (_message.Message,), { - 'DESCRIPTOR' : _WATCHREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.WatchRequest) - }) -_sym_db.RegisterMessage(WatchRequest) - -WatchCreateRequest = _reflection.GeneratedProtocolMessageType('WatchCreateRequest', (_message.Message,), { - 'DESCRIPTOR' : _WATCHCREATEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.WatchCreateRequest) - }) -_sym_db.RegisterMessage(WatchCreateRequest) - -WatchCancelRequest = _reflection.GeneratedProtocolMessageType('WatchCancelRequest', (_message.Message,), { - 'DESCRIPTOR' : _WATCHCANCELREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.WatchCancelRequest) - }) -_sym_db.RegisterMessage(WatchCancelRequest) - -WatchProgressRequest = _reflection.GeneratedProtocolMessageType('WatchProgressRequest', (_message.Message,), { - 'DESCRIPTOR' : _WATCHPROGRESSREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.WatchProgressRequest) - }) -_sym_db.RegisterMessage(WatchProgressRequest) - -WatchResponse = _reflection.GeneratedProtocolMessageType('WatchResponse', (_message.Message,), { - 'DESCRIPTOR' : _WATCHRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.WatchResponse) - }) -_sym_db.RegisterMessage(WatchResponse) - -LeaseGrantRequest = _reflection.GeneratedProtocolMessageType('LeaseGrantRequest', (_message.Message,), { - 'DESCRIPTOR' : _LEASEGRANTREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.LeaseGrantRequest) - }) -_sym_db.RegisterMessage(LeaseGrantRequest) - -LeaseGrantResponse = _reflection.GeneratedProtocolMessageType('LeaseGrantResponse', (_message.Message,), { - 'DESCRIPTOR' : _LEASEGRANTRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.LeaseGrantResponse) - }) -_sym_db.RegisterMessage(LeaseGrantResponse) - -LeaseRevokeRequest = _reflection.GeneratedProtocolMessageType('LeaseRevokeRequest', (_message.Message,), { - 'DESCRIPTOR' : _LEASEREVOKEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.LeaseRevokeRequest) - }) -_sym_db.RegisterMessage(LeaseRevokeRequest) - -LeaseRevokeResponse = _reflection.GeneratedProtocolMessageType('LeaseRevokeResponse', (_message.Message,), { - 'DESCRIPTOR' : _LEASEREVOKERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.LeaseRevokeResponse) - }) -_sym_db.RegisterMessage(LeaseRevokeResponse) - -LeaseKeepAliveRequest = _reflection.GeneratedProtocolMessageType('LeaseKeepAliveRequest', (_message.Message,), { - 'DESCRIPTOR' : _LEASEKEEPALIVEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.LeaseKeepAliveRequest) - }) -_sym_db.RegisterMessage(LeaseKeepAliveRequest) - -LeaseKeepAliveResponse = _reflection.GeneratedProtocolMessageType('LeaseKeepAliveResponse', (_message.Message,), { - 'DESCRIPTOR' : _LEASEKEEPALIVERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.LeaseKeepAliveResponse) - }) -_sym_db.RegisterMessage(LeaseKeepAliveResponse) - -LeaseTimeToLiveRequest = _reflection.GeneratedProtocolMessageType('LeaseTimeToLiveRequest', (_message.Message,), { - 'DESCRIPTOR' : _LEASETIMETOLIVEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.LeaseTimeToLiveRequest) - }) -_sym_db.RegisterMessage(LeaseTimeToLiveRequest) - -LeaseTimeToLiveResponse = _reflection.GeneratedProtocolMessageType('LeaseTimeToLiveResponse', (_message.Message,), { - 'DESCRIPTOR' : _LEASETIMETOLIVERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.LeaseTimeToLiveResponse) - }) -_sym_db.RegisterMessage(LeaseTimeToLiveResponse) - -Member = _reflection.GeneratedProtocolMessageType('Member', (_message.Message,), { - 'DESCRIPTOR' : _MEMBER, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.Member) - }) -_sym_db.RegisterMessage(Member) - -MemberAddRequest = _reflection.GeneratedProtocolMessageType('MemberAddRequest', (_message.Message,), { - 'DESCRIPTOR' : _MEMBERADDREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.MemberAddRequest) - }) -_sym_db.RegisterMessage(MemberAddRequest) - -MemberAddResponse = _reflection.GeneratedProtocolMessageType('MemberAddResponse', (_message.Message,), { - 'DESCRIPTOR' : _MEMBERADDRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.MemberAddResponse) - }) -_sym_db.RegisterMessage(MemberAddResponse) - -MemberRemoveRequest = _reflection.GeneratedProtocolMessageType('MemberRemoveRequest', (_message.Message,), { - 'DESCRIPTOR' : _MEMBERREMOVEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.MemberRemoveRequest) - }) -_sym_db.RegisterMessage(MemberRemoveRequest) - -MemberRemoveResponse = _reflection.GeneratedProtocolMessageType('MemberRemoveResponse', (_message.Message,), { - 'DESCRIPTOR' : _MEMBERREMOVERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.MemberRemoveResponse) - }) -_sym_db.RegisterMessage(MemberRemoveResponse) - -MemberUpdateRequest = _reflection.GeneratedProtocolMessageType('MemberUpdateRequest', (_message.Message,), { - 'DESCRIPTOR' : _MEMBERUPDATEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.MemberUpdateRequest) - }) -_sym_db.RegisterMessage(MemberUpdateRequest) - -MemberUpdateResponse = _reflection.GeneratedProtocolMessageType('MemberUpdateResponse', (_message.Message,), { - 'DESCRIPTOR' : _MEMBERUPDATERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.MemberUpdateResponse) - }) -_sym_db.RegisterMessage(MemberUpdateResponse) - -MemberListRequest = _reflection.GeneratedProtocolMessageType('MemberListRequest', (_message.Message,), { - 'DESCRIPTOR' : _MEMBERLISTREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.MemberListRequest) - }) -_sym_db.RegisterMessage(MemberListRequest) - -MemberListResponse = _reflection.GeneratedProtocolMessageType('MemberListResponse', (_message.Message,), { - 'DESCRIPTOR' : _MEMBERLISTRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.MemberListResponse) - }) -_sym_db.RegisterMessage(MemberListResponse) - -DefragmentRequest = _reflection.GeneratedProtocolMessageType('DefragmentRequest', (_message.Message,), { - 'DESCRIPTOR' : _DEFRAGMENTREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.DefragmentRequest) - }) -_sym_db.RegisterMessage(DefragmentRequest) - -DefragmentResponse = _reflection.GeneratedProtocolMessageType('DefragmentResponse', (_message.Message,), { - 'DESCRIPTOR' : _DEFRAGMENTRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.DefragmentResponse) - }) -_sym_db.RegisterMessage(DefragmentResponse) - -MoveLeaderRequest = _reflection.GeneratedProtocolMessageType('MoveLeaderRequest', (_message.Message,), { - 'DESCRIPTOR' : _MOVELEADERREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.MoveLeaderRequest) - }) -_sym_db.RegisterMessage(MoveLeaderRequest) - -MoveLeaderResponse = _reflection.GeneratedProtocolMessageType('MoveLeaderResponse', (_message.Message,), { - 'DESCRIPTOR' : _MOVELEADERRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.MoveLeaderResponse) - }) -_sym_db.RegisterMessage(MoveLeaderResponse) - -AlarmRequest = _reflection.GeneratedProtocolMessageType('AlarmRequest', (_message.Message,), { - 'DESCRIPTOR' : _ALARMREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AlarmRequest) - }) -_sym_db.RegisterMessage(AlarmRequest) - -AlarmMember = _reflection.GeneratedProtocolMessageType('AlarmMember', (_message.Message,), { - 'DESCRIPTOR' : _ALARMMEMBER, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AlarmMember) - }) -_sym_db.RegisterMessage(AlarmMember) - -AlarmResponse = _reflection.GeneratedProtocolMessageType('AlarmResponse', (_message.Message,), { - 'DESCRIPTOR' : _ALARMRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AlarmResponse) - }) -_sym_db.RegisterMessage(AlarmResponse) - -StatusRequest = _reflection.GeneratedProtocolMessageType('StatusRequest', (_message.Message,), { - 'DESCRIPTOR' : _STATUSREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.StatusRequest) - }) -_sym_db.RegisterMessage(StatusRequest) - -StatusResponse = _reflection.GeneratedProtocolMessageType('StatusResponse', (_message.Message,), { - 'DESCRIPTOR' : _STATUSRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.StatusResponse) - }) -_sym_db.RegisterMessage(StatusResponse) - -AuthEnableRequest = _reflection.GeneratedProtocolMessageType('AuthEnableRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHENABLEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthEnableRequest) - }) -_sym_db.RegisterMessage(AuthEnableRequest) - -AuthDisableRequest = _reflection.GeneratedProtocolMessageType('AuthDisableRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHDISABLEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthDisableRequest) - }) -_sym_db.RegisterMessage(AuthDisableRequest) - -AuthenticateRequest = _reflection.GeneratedProtocolMessageType('AuthenticateRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHENTICATEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthenticateRequest) - }) -_sym_db.RegisterMessage(AuthenticateRequest) - -AuthUserAddRequest = _reflection.GeneratedProtocolMessageType('AuthUserAddRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERADDREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserAddRequest) - }) -_sym_db.RegisterMessage(AuthUserAddRequest) - -AuthUserGetRequest = _reflection.GeneratedProtocolMessageType('AuthUserGetRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERGETREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserGetRequest) - }) -_sym_db.RegisterMessage(AuthUserGetRequest) - -AuthUserDeleteRequest = _reflection.GeneratedProtocolMessageType('AuthUserDeleteRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERDELETEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserDeleteRequest) - }) -_sym_db.RegisterMessage(AuthUserDeleteRequest) - -AuthUserChangePasswordRequest = _reflection.GeneratedProtocolMessageType('AuthUserChangePasswordRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERCHANGEPASSWORDREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserChangePasswordRequest) - }) -_sym_db.RegisterMessage(AuthUserChangePasswordRequest) - -AuthUserGrantRoleRequest = _reflection.GeneratedProtocolMessageType('AuthUserGrantRoleRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERGRANTROLEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserGrantRoleRequest) - }) -_sym_db.RegisterMessage(AuthUserGrantRoleRequest) - -AuthUserRevokeRoleRequest = _reflection.GeneratedProtocolMessageType('AuthUserRevokeRoleRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERREVOKEROLEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserRevokeRoleRequest) - }) -_sym_db.RegisterMessage(AuthUserRevokeRoleRequest) - -AuthRoleAddRequest = _reflection.GeneratedProtocolMessageType('AuthRoleAddRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLEADDREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleAddRequest) - }) -_sym_db.RegisterMessage(AuthRoleAddRequest) - -AuthRoleGetRequest = _reflection.GeneratedProtocolMessageType('AuthRoleGetRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLEGETREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleGetRequest) - }) -_sym_db.RegisterMessage(AuthRoleGetRequest) - -AuthUserListRequest = _reflection.GeneratedProtocolMessageType('AuthUserListRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERLISTREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserListRequest) - }) -_sym_db.RegisterMessage(AuthUserListRequest) - -AuthRoleListRequest = _reflection.GeneratedProtocolMessageType('AuthRoleListRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLELISTREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleListRequest) - }) -_sym_db.RegisterMessage(AuthRoleListRequest) - -AuthRoleDeleteRequest = _reflection.GeneratedProtocolMessageType('AuthRoleDeleteRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLEDELETEREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleDeleteRequest) - }) -_sym_db.RegisterMessage(AuthRoleDeleteRequest) - -AuthRoleGrantPermissionRequest = _reflection.GeneratedProtocolMessageType('AuthRoleGrantPermissionRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLEGRANTPERMISSIONREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleGrantPermissionRequest) - }) -_sym_db.RegisterMessage(AuthRoleGrantPermissionRequest) - -AuthRoleRevokePermissionRequest = _reflection.GeneratedProtocolMessageType('AuthRoleRevokePermissionRequest', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLEREVOKEPERMISSIONREQUEST, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleRevokePermissionRequest) - }) -_sym_db.RegisterMessage(AuthRoleRevokePermissionRequest) - -AuthEnableResponse = _reflection.GeneratedProtocolMessageType('AuthEnableResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHENABLERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthEnableResponse) - }) -_sym_db.RegisterMessage(AuthEnableResponse) - -AuthDisableResponse = _reflection.GeneratedProtocolMessageType('AuthDisableResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHDISABLERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthDisableResponse) - }) -_sym_db.RegisterMessage(AuthDisableResponse) - -AuthenticateResponse = _reflection.GeneratedProtocolMessageType('AuthenticateResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHENTICATERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthenticateResponse) - }) -_sym_db.RegisterMessage(AuthenticateResponse) - -AuthUserAddResponse = _reflection.GeneratedProtocolMessageType('AuthUserAddResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERADDRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserAddResponse) - }) -_sym_db.RegisterMessage(AuthUserAddResponse) - -AuthUserGetResponse = _reflection.GeneratedProtocolMessageType('AuthUserGetResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERGETRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserGetResponse) - }) -_sym_db.RegisterMessage(AuthUserGetResponse) - -AuthUserDeleteResponse = _reflection.GeneratedProtocolMessageType('AuthUserDeleteResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERDELETERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserDeleteResponse) - }) -_sym_db.RegisterMessage(AuthUserDeleteResponse) - -AuthUserChangePasswordResponse = _reflection.GeneratedProtocolMessageType('AuthUserChangePasswordResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERCHANGEPASSWORDRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserChangePasswordResponse) - }) -_sym_db.RegisterMessage(AuthUserChangePasswordResponse) - -AuthUserGrantRoleResponse = _reflection.GeneratedProtocolMessageType('AuthUserGrantRoleResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERGRANTROLERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserGrantRoleResponse) - }) -_sym_db.RegisterMessage(AuthUserGrantRoleResponse) - -AuthUserRevokeRoleResponse = _reflection.GeneratedProtocolMessageType('AuthUserRevokeRoleResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERREVOKEROLERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserRevokeRoleResponse) - }) -_sym_db.RegisterMessage(AuthUserRevokeRoleResponse) - -AuthRoleAddResponse = _reflection.GeneratedProtocolMessageType('AuthRoleAddResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLEADDRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleAddResponse) - }) -_sym_db.RegisterMessage(AuthRoleAddResponse) - -AuthRoleGetResponse = _reflection.GeneratedProtocolMessageType('AuthRoleGetResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLEGETRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleGetResponse) - }) -_sym_db.RegisterMessage(AuthRoleGetResponse) - -AuthRoleListResponse = _reflection.GeneratedProtocolMessageType('AuthRoleListResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLELISTRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleListResponse) - }) -_sym_db.RegisterMessage(AuthRoleListResponse) - -AuthUserListResponse = _reflection.GeneratedProtocolMessageType('AuthUserListResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHUSERLISTRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthUserListResponse) - }) -_sym_db.RegisterMessage(AuthUserListResponse) - -AuthRoleDeleteResponse = _reflection.GeneratedProtocolMessageType('AuthRoleDeleteResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLEDELETERESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleDeleteResponse) - }) -_sym_db.RegisterMessage(AuthRoleDeleteResponse) - -AuthRoleGrantPermissionResponse = _reflection.GeneratedProtocolMessageType('AuthRoleGrantPermissionResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLEGRANTPERMISSIONRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleGrantPermissionResponse) - }) -_sym_db.RegisterMessage(AuthRoleGrantPermissionResponse) - -AuthRoleRevokePermissionResponse = _reflection.GeneratedProtocolMessageType('AuthRoleRevokePermissionResponse', (_message.Message,), { - 'DESCRIPTOR' : _AUTHROLEREVOKEPERMISSIONRESPONSE, - '__module__' : 'rpc_pb2' - # @@protoc_insertion_point(class_scope:etcdserverpb.AuthRoleRevokePermissionResponse) - }) -_sym_db.RegisterMessage(AuthRoleRevokePermissionResponse) - -_KV = DESCRIPTOR.services_by_name['KV'] -_WATCH = DESCRIPTOR.services_by_name['Watch'] -_LEASE = DESCRIPTOR.services_by_name['Lease'] -_CLUSTER = DESCRIPTOR.services_by_name['Cluster'] -_MAINTENANCE = DESCRIPTOR.services_by_name['Maintenance'] -_AUTH = DESCRIPTOR.services_by_name['Auth'] -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - DESCRIPTOR._serialized_options = b'\n\021io.etcd.jetcd.apiB\nJetcdProtoP\001\242\002\005Jetcd' - _ALARMTYPE._serialized_start=7482 - _ALARMTYPE._serialized_end=7516 - _RESPONSEHEADER._serialized_start=49 - _RESPONSEHEADER._serialized_end=141 - _RANGEREQUEST._serialized_start=144 - _RANGEREQUEST._serialized_end=628 - _RANGEREQUEST_SORTORDER._serialized_start=514 - _RANGEREQUEST_SORTORDER._serialized_end=560 - _RANGEREQUEST_SORTTARGET._serialized_start=562 - _RANGEREQUEST_SORTTARGET._serialized_end=628 - _RANGERESPONSE._serialized_start=630 - _RANGERESPONSE._serialized_end=751 - _PUTREQUEST._serialized_start=753 - _PUTREQUEST._serialized_end=869 - _PUTRESPONSE._serialized_start=871 - _PUTRESPONSE._serialized_end=965 - _DELETERANGEREQUEST._serialized_start=967 - _DELETERANGEREQUEST._serialized_end=1036 - _DELETERANGERESPONSE._serialized_start=1038 - _DELETERANGERESPONSE._serialized_end=1158 - _REQUESTOP._serialized_start=1161 - _REQUESTOP._serialized_end=1400 - _RESPONSEOP._serialized_start=1403 - _RESPONSEOP._serialized_end=1652 - _COMPARE._serialized_start=1655 - _COMPARE._serialized_end=2061 - _COMPARE_COMPARERESULT._serialized_start=1908 - _COMPARE_COMPARERESULT._serialized_end=1972 - _COMPARE_COMPARETARGET._serialized_start=1974 - _COMPARE_COMPARETARGET._serialized_end=2045 - _TXNREQUEST._serialized_start=2064 - _TXNREQUEST._serialized_end=2200 - _TXNRESPONSE._serialized_start=2202 - _TXNRESPONSE._serialized_end=2325 - _COMPACTIONREQUEST._serialized_start=2327 - _COMPACTIONREQUEST._serialized_end=2382 - _COMPACTIONRESPONSE._serialized_start=2384 - _COMPACTIONRESPONSE._serialized_end=2450 - _HASHREQUEST._serialized_start=2452 - _HASHREQUEST._serialized_end=2465 - _HASHRESPONSE._serialized_start=2467 - _HASHRESPONSE._serialized_end=2541 - _HASHKVREQUEST._serialized_start=2543 - _HASHKVREQUEST._serialized_end=2576 - _HASHKVRESPONSE._serialized_start=2578 - _HASHKVRESPONSE._serialized_end=2680 - _SNAPSHOTREQUEST._serialized_start=2682 - _SNAPSHOTREQUEST._serialized_end=2699 - _SNAPSHOTRESPONSE._serialized_start=2701 - _SNAPSHOTRESPONSE._serialized_end=2804 - _WATCHREQUEST._serialized_start=2807 - _WATCHREQUEST._serialized_end=3022 - _WATCHCREATEREQUEST._serialized_start=3025 - _WATCHCREATEREQUEST._serialized_end=3244 - _WATCHCREATEREQUEST_FILTERTYPE._serialized_start=3207 - _WATCHCREATEREQUEST_FILTERTYPE._serialized_end=3244 - _WATCHCANCELREQUEST._serialized_start=3246 - _WATCHCANCELREQUEST._serialized_end=3284 - _WATCHPROGRESSREQUEST._serialized_start=3286 - _WATCHPROGRESSREQUEST._serialized_end=3308 - _WATCHRESPONSE._serialized_start=3311 - _WATCHRESPONSE._serialized_end=3505 - _LEASEGRANTREQUEST._serialized_start=3507 - _LEASEGRANTREQUEST._serialized_end=3551 - _LEASEGRANTRESPONSE._serialized_start=3553 - _LEASEGRANTRESPONSE._serialized_end=3659 - _LEASEREVOKEREQUEST._serialized_start=3661 - _LEASEREVOKEREQUEST._serialized_end=3693 - _LEASEREVOKERESPONSE._serialized_start=3695 - _LEASEREVOKERESPONSE._serialized_end=3762 - _LEASEKEEPALIVEREQUEST._serialized_start=3764 - _LEASEKEEPALIVEREQUEST._serialized_end=3799 - _LEASEKEEPALIVERESPONSE._serialized_start=3801 - _LEASEKEEPALIVERESPONSE._serialized_end=3896 - _LEASETIMETOLIVEREQUEST._serialized_start=3898 - _LEASETIMETOLIVEREQUEST._serialized_end=3948 - _LEASETIMETOLIVERESPONSE._serialized_start=3951 - _LEASETIMETOLIVERESPONSE._serialized_end=4081 - _MEMBER._serialized_start=4083 - _MEMBER._serialized_end=4155 - _MEMBERADDREQUEST._serialized_start=4157 - _MEMBERADDREQUEST._serialized_end=4193 - _MEMBERADDRESPONSE._serialized_start=4196 - _MEMBERADDRESPONSE._serialized_end=4338 - _MEMBERREMOVEREQUEST._serialized_start=4340 - _MEMBERREMOVEREQUEST._serialized_end=4373 - _MEMBERREMOVERESPONSE._serialized_start=4375 - _MEMBERREMOVERESPONSE._serialized_end=4482 - _MEMBERUPDATEREQUEST._serialized_start=4484 - _MEMBERUPDATEREQUEST._serialized_end=4535 - _MEMBERUPDATERESPONSE._serialized_start=4537 - _MEMBERUPDATERESPONSE._serialized_end=4644 - _MEMBERLISTREQUEST._serialized_start=4646 - _MEMBERLISTREQUEST._serialized_end=4665 - _MEMBERLISTRESPONSE._serialized_start=4667 - _MEMBERLISTRESPONSE._serialized_end=4772 - _DEFRAGMENTREQUEST._serialized_start=4774 - _DEFRAGMENTREQUEST._serialized_end=4793 - _DEFRAGMENTRESPONSE._serialized_start=4795 - _DEFRAGMENTRESPONSE._serialized_end=4861 - _MOVELEADERREQUEST._serialized_start=4863 - _MOVELEADERREQUEST._serialized_end=4900 - _MOVELEADERRESPONSE._serialized_start=4902 - _MOVELEADERRESPONSE._serialized_end=4968 - _ALARMREQUEST._serialized_start=4971 - _ALARMREQUEST._serialized_end=5153 - _ALARMREQUEST_ALARMACTION._serialized_start=5101 - _ALARMREQUEST_ALARMACTION._serialized_end=5153 - _ALARMMEMBER._serialized_start=5155 - _ALARMMEMBER._serialized_end=5226 - _ALARMRESPONSE._serialized_start=5228 - _ALARMRESPONSE._serialized_end=5332 - _STATUSREQUEST._serialized_start=5334 - _STATUSREQUEST._serialized_end=5349 - _STATUSRESPONSE._serialized_start=5352 - _STATUSRESPONSE._serialized_end=5500 - _AUTHENABLEREQUEST._serialized_start=5502 - _AUTHENABLEREQUEST._serialized_end=5521 - _AUTHDISABLEREQUEST._serialized_start=5523 - _AUTHDISABLEREQUEST._serialized_end=5543 - _AUTHENTICATEREQUEST._serialized_start=5545 - _AUTHENTICATEREQUEST._serialized_end=5598 - _AUTHUSERADDREQUEST._serialized_start=5600 - _AUTHUSERADDREQUEST._serialized_end=5652 - _AUTHUSERGETREQUEST._serialized_start=5654 - _AUTHUSERGETREQUEST._serialized_end=5688 - _AUTHUSERDELETEREQUEST._serialized_start=5690 - _AUTHUSERDELETEREQUEST._serialized_end=5727 - _AUTHUSERCHANGEPASSWORDREQUEST._serialized_start=5729 - _AUTHUSERCHANGEPASSWORDREQUEST._serialized_end=5792 - _AUTHUSERGRANTROLEREQUEST._serialized_start=5794 - _AUTHUSERGRANTROLEREQUEST._serialized_end=5848 - _AUTHUSERREVOKEROLEREQUEST._serialized_start=5850 - _AUTHUSERREVOKEROLEREQUEST._serialized_end=5905 - _AUTHROLEADDREQUEST._serialized_start=5907 - _AUTHROLEADDREQUEST._serialized_end=5941 - _AUTHROLEGETREQUEST._serialized_start=5943 - _AUTHROLEGETREQUEST._serialized_end=5977 - _AUTHUSERLISTREQUEST._serialized_start=5979 - _AUTHUSERLISTREQUEST._serialized_end=6000 - _AUTHROLELISTREQUEST._serialized_start=6002 - _AUTHROLELISTREQUEST._serialized_end=6023 - _AUTHROLEDELETEREQUEST._serialized_start=6025 - _AUTHROLEDELETEREQUEST._serialized_end=6062 - _AUTHROLEGRANTPERMISSIONREQUEST._serialized_start=6064 - _AUTHROLEGRANTPERMISSIONREQUEST._serialized_end=6144 - _AUTHROLEREVOKEPERMISSIONREQUEST._serialized_start=6146 - _AUTHROLEREVOKEPERMISSIONREQUEST._serialized_end=6225 - _AUTHENABLERESPONSE._serialized_start=6227 - _AUTHENABLERESPONSE._serialized_end=6293 - _AUTHDISABLERESPONSE._serialized_start=6295 - _AUTHDISABLERESPONSE._serialized_end=6362 - _AUTHENTICATERESPONSE._serialized_start=6364 - _AUTHENTICATERESPONSE._serialized_end=6447 - _AUTHUSERADDRESPONSE._serialized_start=6449 - _AUTHUSERADDRESPONSE._serialized_end=6516 - _AUTHUSERGETRESPONSE._serialized_start=6518 - _AUTHUSERGETRESPONSE._serialized_end=6600 - _AUTHUSERDELETERESPONSE._serialized_start=6602 - _AUTHUSERDELETERESPONSE._serialized_end=6672 - _AUTHUSERCHANGEPASSWORDRESPONSE._serialized_start=6674 - _AUTHUSERCHANGEPASSWORDRESPONSE._serialized_end=6752 - _AUTHUSERGRANTROLERESPONSE._serialized_start=6754 - _AUTHUSERGRANTROLERESPONSE._serialized_end=6827 - _AUTHUSERREVOKEROLERESPONSE._serialized_start=6829 - _AUTHUSERREVOKEROLERESPONSE._serialized_end=6903 - _AUTHROLEADDRESPONSE._serialized_start=6905 - _AUTHROLEADDRESPONSE._serialized_end=6972 - _AUTHROLEGETRESPONSE._serialized_start=6974 - _AUTHROLEGETRESPONSE._serialized_end=7075 - _AUTHROLELISTRESPONSE._serialized_start=7077 - _AUTHROLELISTRESPONSE._serialized_end=7160 - _AUTHUSERLISTRESPONSE._serialized_start=7162 - _AUTHUSERLISTRESPONSE._serialized_end=7245 - _AUTHROLEDELETERESPONSE._serialized_start=7247 - _AUTHROLEDELETERESPONSE._serialized_end=7317 - _AUTHROLEGRANTPERMISSIONRESPONSE._serialized_start=7319 - _AUTHROLEGRANTPERMISSIONRESPONSE._serialized_end=7398 - _AUTHROLEREVOKEPERMISSIONRESPONSE._serialized_start=7400 - _AUTHROLEREVOKEPERMISSIONRESPONSE._serialized_end=7480 - _KV._serialized_start=7519 - _KV._serialized_end=7881 - _WATCH._serialized_start=7884 - _WATCH._serialized_end=8042 - _LEASE._serialized_start=8045 - _LEASE._serialized_end=8418 - _CLUSTER._serialized_start=8421 - _CLUSTER._serialized_end=8771 - _MAINTENANCE._serialized_start=8774 - _MAINTENANCE._serialized_end=9307 - _AUTH._serialized_start=9310 - _AUTH._serialized_end=10811 +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rpc_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + _globals['DESCRIPTOR']._loaded_options = None + _globals['DESCRIPTOR']._serialized_options = b'\n\021io.etcd.jetcd.apiB\nJetcdProtoP\001\242\002\005Jetcd' + _globals['_ALARMTYPE']._serialized_start=7482 + _globals['_ALARMTYPE']._serialized_end=7516 + _globals['_RESPONSEHEADER']._serialized_start=49 + _globals['_RESPONSEHEADER']._serialized_end=141 + _globals['_RANGEREQUEST']._serialized_start=144 + _globals['_RANGEREQUEST']._serialized_end=628 + _globals['_RANGEREQUEST_SORTORDER']._serialized_start=514 + _globals['_RANGEREQUEST_SORTORDER']._serialized_end=560 + _globals['_RANGEREQUEST_SORTTARGET']._serialized_start=562 + _globals['_RANGEREQUEST_SORTTARGET']._serialized_end=628 + _globals['_RANGERESPONSE']._serialized_start=630 + _globals['_RANGERESPONSE']._serialized_end=751 + _globals['_PUTREQUEST']._serialized_start=753 + _globals['_PUTREQUEST']._serialized_end=869 + _globals['_PUTRESPONSE']._serialized_start=871 + _globals['_PUTRESPONSE']._serialized_end=965 + _globals['_DELETERANGEREQUEST']._serialized_start=967 + _globals['_DELETERANGEREQUEST']._serialized_end=1036 + _globals['_DELETERANGERESPONSE']._serialized_start=1038 + _globals['_DELETERANGERESPONSE']._serialized_end=1158 + _globals['_REQUESTOP']._serialized_start=1161 + _globals['_REQUESTOP']._serialized_end=1400 + _globals['_RESPONSEOP']._serialized_start=1403 + _globals['_RESPONSEOP']._serialized_end=1652 + _globals['_COMPARE']._serialized_start=1655 + _globals['_COMPARE']._serialized_end=2061 + _globals['_COMPARE_COMPARERESULT']._serialized_start=1908 + _globals['_COMPARE_COMPARERESULT']._serialized_end=1972 + _globals['_COMPARE_COMPARETARGET']._serialized_start=1974 + _globals['_COMPARE_COMPARETARGET']._serialized_end=2045 + _globals['_TXNREQUEST']._serialized_start=2064 + _globals['_TXNREQUEST']._serialized_end=2200 + _globals['_TXNRESPONSE']._serialized_start=2202 + _globals['_TXNRESPONSE']._serialized_end=2325 + _globals['_COMPACTIONREQUEST']._serialized_start=2327 + _globals['_COMPACTIONREQUEST']._serialized_end=2382 + _globals['_COMPACTIONRESPONSE']._serialized_start=2384 + _globals['_COMPACTIONRESPONSE']._serialized_end=2450 + _globals['_HASHREQUEST']._serialized_start=2452 + _globals['_HASHREQUEST']._serialized_end=2465 + _globals['_HASHRESPONSE']._serialized_start=2467 + _globals['_HASHRESPONSE']._serialized_end=2541 + _globals['_HASHKVREQUEST']._serialized_start=2543 + _globals['_HASHKVREQUEST']._serialized_end=2576 + _globals['_HASHKVRESPONSE']._serialized_start=2578 + _globals['_HASHKVRESPONSE']._serialized_end=2680 + _globals['_SNAPSHOTREQUEST']._serialized_start=2682 + _globals['_SNAPSHOTREQUEST']._serialized_end=2699 + _globals['_SNAPSHOTRESPONSE']._serialized_start=2701 + _globals['_SNAPSHOTRESPONSE']._serialized_end=2804 + _globals['_WATCHREQUEST']._serialized_start=2807 + _globals['_WATCHREQUEST']._serialized_end=3022 + _globals['_WATCHCREATEREQUEST']._serialized_start=3025 + _globals['_WATCHCREATEREQUEST']._serialized_end=3244 + _globals['_WATCHCREATEREQUEST_FILTERTYPE']._serialized_start=3207 + _globals['_WATCHCREATEREQUEST_FILTERTYPE']._serialized_end=3244 + _globals['_WATCHCANCELREQUEST']._serialized_start=3246 + _globals['_WATCHCANCELREQUEST']._serialized_end=3284 + _globals['_WATCHPROGRESSREQUEST']._serialized_start=3286 + _globals['_WATCHPROGRESSREQUEST']._serialized_end=3308 + _globals['_WATCHRESPONSE']._serialized_start=3311 + _globals['_WATCHRESPONSE']._serialized_end=3505 + _globals['_LEASEGRANTREQUEST']._serialized_start=3507 + _globals['_LEASEGRANTREQUEST']._serialized_end=3551 + _globals['_LEASEGRANTRESPONSE']._serialized_start=3553 + _globals['_LEASEGRANTRESPONSE']._serialized_end=3659 + _globals['_LEASEREVOKEREQUEST']._serialized_start=3661 + _globals['_LEASEREVOKEREQUEST']._serialized_end=3693 + _globals['_LEASEREVOKERESPONSE']._serialized_start=3695 + _globals['_LEASEREVOKERESPONSE']._serialized_end=3762 + _globals['_LEASEKEEPALIVEREQUEST']._serialized_start=3764 + _globals['_LEASEKEEPALIVEREQUEST']._serialized_end=3799 + _globals['_LEASEKEEPALIVERESPONSE']._serialized_start=3801 + _globals['_LEASEKEEPALIVERESPONSE']._serialized_end=3896 + _globals['_LEASETIMETOLIVEREQUEST']._serialized_start=3898 + _globals['_LEASETIMETOLIVEREQUEST']._serialized_end=3948 + _globals['_LEASETIMETOLIVERESPONSE']._serialized_start=3951 + _globals['_LEASETIMETOLIVERESPONSE']._serialized_end=4081 + _globals['_MEMBER']._serialized_start=4083 + _globals['_MEMBER']._serialized_end=4155 + _globals['_MEMBERADDREQUEST']._serialized_start=4157 + _globals['_MEMBERADDREQUEST']._serialized_end=4193 + _globals['_MEMBERADDRESPONSE']._serialized_start=4196 + _globals['_MEMBERADDRESPONSE']._serialized_end=4338 + _globals['_MEMBERREMOVEREQUEST']._serialized_start=4340 + _globals['_MEMBERREMOVEREQUEST']._serialized_end=4373 + _globals['_MEMBERREMOVERESPONSE']._serialized_start=4375 + _globals['_MEMBERREMOVERESPONSE']._serialized_end=4482 + _globals['_MEMBERUPDATEREQUEST']._serialized_start=4484 + _globals['_MEMBERUPDATEREQUEST']._serialized_end=4535 + _globals['_MEMBERUPDATERESPONSE']._serialized_start=4537 + _globals['_MEMBERUPDATERESPONSE']._serialized_end=4644 + _globals['_MEMBERLISTREQUEST']._serialized_start=4646 + _globals['_MEMBERLISTREQUEST']._serialized_end=4665 + _globals['_MEMBERLISTRESPONSE']._serialized_start=4667 + _globals['_MEMBERLISTRESPONSE']._serialized_end=4772 + _globals['_DEFRAGMENTREQUEST']._serialized_start=4774 + _globals['_DEFRAGMENTREQUEST']._serialized_end=4793 + _globals['_DEFRAGMENTRESPONSE']._serialized_start=4795 + _globals['_DEFRAGMENTRESPONSE']._serialized_end=4861 + _globals['_MOVELEADERREQUEST']._serialized_start=4863 + _globals['_MOVELEADERREQUEST']._serialized_end=4900 + _globals['_MOVELEADERRESPONSE']._serialized_start=4902 + _globals['_MOVELEADERRESPONSE']._serialized_end=4968 + _globals['_ALARMREQUEST']._serialized_start=4971 + _globals['_ALARMREQUEST']._serialized_end=5153 + _globals['_ALARMREQUEST_ALARMACTION']._serialized_start=5101 + _globals['_ALARMREQUEST_ALARMACTION']._serialized_end=5153 + _globals['_ALARMMEMBER']._serialized_start=5155 + _globals['_ALARMMEMBER']._serialized_end=5226 + _globals['_ALARMRESPONSE']._serialized_start=5228 + _globals['_ALARMRESPONSE']._serialized_end=5332 + _globals['_STATUSREQUEST']._serialized_start=5334 + _globals['_STATUSREQUEST']._serialized_end=5349 + _globals['_STATUSRESPONSE']._serialized_start=5352 + _globals['_STATUSRESPONSE']._serialized_end=5500 + _globals['_AUTHENABLEREQUEST']._serialized_start=5502 + _globals['_AUTHENABLEREQUEST']._serialized_end=5521 + _globals['_AUTHDISABLEREQUEST']._serialized_start=5523 + _globals['_AUTHDISABLEREQUEST']._serialized_end=5543 + _globals['_AUTHENTICATEREQUEST']._serialized_start=5545 + _globals['_AUTHENTICATEREQUEST']._serialized_end=5598 + _globals['_AUTHUSERADDREQUEST']._serialized_start=5600 + _globals['_AUTHUSERADDREQUEST']._serialized_end=5652 + _globals['_AUTHUSERGETREQUEST']._serialized_start=5654 + _globals['_AUTHUSERGETREQUEST']._serialized_end=5688 + _globals['_AUTHUSERDELETEREQUEST']._serialized_start=5690 + _globals['_AUTHUSERDELETEREQUEST']._serialized_end=5727 + _globals['_AUTHUSERCHANGEPASSWORDREQUEST']._serialized_start=5729 + _globals['_AUTHUSERCHANGEPASSWORDREQUEST']._serialized_end=5792 + _globals['_AUTHUSERGRANTROLEREQUEST']._serialized_start=5794 + _globals['_AUTHUSERGRANTROLEREQUEST']._serialized_end=5848 + _globals['_AUTHUSERREVOKEROLEREQUEST']._serialized_start=5850 + _globals['_AUTHUSERREVOKEROLEREQUEST']._serialized_end=5905 + _globals['_AUTHROLEADDREQUEST']._serialized_start=5907 + _globals['_AUTHROLEADDREQUEST']._serialized_end=5941 + _globals['_AUTHROLEGETREQUEST']._serialized_start=5943 + _globals['_AUTHROLEGETREQUEST']._serialized_end=5977 + _globals['_AUTHUSERLISTREQUEST']._serialized_start=5979 + _globals['_AUTHUSERLISTREQUEST']._serialized_end=6000 + _globals['_AUTHROLELISTREQUEST']._serialized_start=6002 + _globals['_AUTHROLELISTREQUEST']._serialized_end=6023 + _globals['_AUTHROLEDELETEREQUEST']._serialized_start=6025 + _globals['_AUTHROLEDELETEREQUEST']._serialized_end=6062 + _globals['_AUTHROLEGRANTPERMISSIONREQUEST']._serialized_start=6064 + _globals['_AUTHROLEGRANTPERMISSIONREQUEST']._serialized_end=6144 + _globals['_AUTHROLEREVOKEPERMISSIONREQUEST']._serialized_start=6146 + _globals['_AUTHROLEREVOKEPERMISSIONREQUEST']._serialized_end=6225 + _globals['_AUTHENABLERESPONSE']._serialized_start=6227 + _globals['_AUTHENABLERESPONSE']._serialized_end=6293 + _globals['_AUTHDISABLERESPONSE']._serialized_start=6295 + _globals['_AUTHDISABLERESPONSE']._serialized_end=6362 + _globals['_AUTHENTICATERESPONSE']._serialized_start=6364 + _globals['_AUTHENTICATERESPONSE']._serialized_end=6447 + _globals['_AUTHUSERADDRESPONSE']._serialized_start=6449 + _globals['_AUTHUSERADDRESPONSE']._serialized_end=6516 + _globals['_AUTHUSERGETRESPONSE']._serialized_start=6518 + _globals['_AUTHUSERGETRESPONSE']._serialized_end=6600 + _globals['_AUTHUSERDELETERESPONSE']._serialized_start=6602 + _globals['_AUTHUSERDELETERESPONSE']._serialized_end=6672 + _globals['_AUTHUSERCHANGEPASSWORDRESPONSE']._serialized_start=6674 + _globals['_AUTHUSERCHANGEPASSWORDRESPONSE']._serialized_end=6752 + _globals['_AUTHUSERGRANTROLERESPONSE']._serialized_start=6754 + _globals['_AUTHUSERGRANTROLERESPONSE']._serialized_end=6827 + _globals['_AUTHUSERREVOKEROLERESPONSE']._serialized_start=6829 + _globals['_AUTHUSERREVOKEROLERESPONSE']._serialized_end=6903 + _globals['_AUTHROLEADDRESPONSE']._serialized_start=6905 + _globals['_AUTHROLEADDRESPONSE']._serialized_end=6972 + _globals['_AUTHROLEGETRESPONSE']._serialized_start=6974 + _globals['_AUTHROLEGETRESPONSE']._serialized_end=7075 + _globals['_AUTHROLELISTRESPONSE']._serialized_start=7077 + _globals['_AUTHROLELISTRESPONSE']._serialized_end=7160 + _globals['_AUTHUSERLISTRESPONSE']._serialized_start=7162 + _globals['_AUTHUSERLISTRESPONSE']._serialized_end=7245 + _globals['_AUTHROLEDELETERESPONSE']._serialized_start=7247 + _globals['_AUTHROLEDELETERESPONSE']._serialized_end=7317 + _globals['_AUTHROLEGRANTPERMISSIONRESPONSE']._serialized_start=7319 + _globals['_AUTHROLEGRANTPERMISSIONRESPONSE']._serialized_end=7398 + _globals['_AUTHROLEREVOKEPERMISSIONRESPONSE']._serialized_start=7400 + _globals['_AUTHROLEREVOKEPERMISSIONRESPONSE']._serialized_end=7480 + _globals['_KV']._serialized_start=7519 + _globals['_KV']._serialized_end=7881 + _globals['_WATCH']._serialized_start=7884 + _globals['_WATCH']._serialized_end=8042 + _globals['_LEASE']._serialized_start=8045 + _globals['_LEASE']._serialized_end=8418 + _globals['_CLUSTER']._serialized_start=8421 + _globals['_CLUSTER']._serialized_end=8771 + _globals['_MAINTENANCE']._serialized_start=8774 + _globals['_MAINTENANCE']._serialized_end=9307 + _globals['_AUTH']._serialized_start=9310 + _globals['_AUTH']._serialized_end=10811 # @@protoc_insertion_point(module_scope) diff --git a/etcd3/etcdrpc/rpc_pb2_grpc.py b/etcd3/etcdrpc/rpc_pb2_grpc.py index 7921151d..ffc11b96 100644 --- a/etcd3/etcdrpc/rpc_pb2_grpc.py +++ b/etcd3/etcdrpc/rpc_pb2_grpc.py @@ -1,9 +1,29 @@ # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! """Client and server classes corresponding to protobuf-defined services.""" import grpc +import warnings from etcd3.etcdrpc import rpc_pb2 as rpc__pb2 +GRPC_GENERATED_VERSION = '1.68.1' +GRPC_VERSION = grpc.__version__ +_version_not_supported = False + +try: + from grpc._utilities import first_version_is_lower + _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) +except ImportError: + _version_not_supported = True + +if _version_not_supported: + raise RuntimeError( + f'The grpc package installed is at version {GRPC_VERSION},' + + f' but the generated code in rpc_pb2_grpc.py depends on' + + f' grpcio>={GRPC_GENERATED_VERSION}.' + + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' + ) + class KVStub(object): """Missing associated documentation comment in .proto file.""" @@ -18,27 +38,27 @@ def __init__(self, channel): '/etcdserverpb.KV/Range', request_serializer=rpc__pb2.RangeRequest.SerializeToString, response_deserializer=rpc__pb2.RangeResponse.FromString, - ) + _registered_method=True) self.Put = channel.unary_unary( '/etcdserverpb.KV/Put', request_serializer=rpc__pb2.PutRequest.SerializeToString, response_deserializer=rpc__pb2.PutResponse.FromString, - ) + _registered_method=True) self.DeleteRange = channel.unary_unary( '/etcdserverpb.KV/DeleteRange', request_serializer=rpc__pb2.DeleteRangeRequest.SerializeToString, response_deserializer=rpc__pb2.DeleteRangeResponse.FromString, - ) + _registered_method=True) self.Txn = channel.unary_unary( '/etcdserverpb.KV/Txn', request_serializer=rpc__pb2.TxnRequest.SerializeToString, response_deserializer=rpc__pb2.TxnResponse.FromString, - ) + _registered_method=True) self.Compact = channel.unary_unary( '/etcdserverpb.KV/Compact', request_serializer=rpc__pb2.CompactionRequest.SerializeToString, response_deserializer=rpc__pb2.CompactionResponse.FromString, - ) + _registered_method=True) class KVServicer(object): @@ -120,6 +140,7 @@ def add_KVServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'etcdserverpb.KV', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('etcdserverpb.KV', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -137,11 +158,21 @@ def Range(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.KV/Range', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.KV/Range', rpc__pb2.RangeRequest.SerializeToString, rpc__pb2.RangeResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Put(request, @@ -154,11 +185,21 @@ def Put(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.KV/Put', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.KV/Put', rpc__pb2.PutRequest.SerializeToString, rpc__pb2.PutResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def DeleteRange(request, @@ -171,11 +212,21 @@ def DeleteRange(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.KV/DeleteRange', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.KV/DeleteRange', rpc__pb2.DeleteRangeRequest.SerializeToString, rpc__pb2.DeleteRangeResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Txn(request, @@ -188,11 +239,21 @@ def Txn(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.KV/Txn', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.KV/Txn', rpc__pb2.TxnRequest.SerializeToString, rpc__pb2.TxnResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Compact(request, @@ -205,11 +266,21 @@ def Compact(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.KV/Compact', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.KV/Compact', rpc__pb2.CompactionRequest.SerializeToString, rpc__pb2.CompactionResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) class WatchStub(object): @@ -225,12 +296,12 @@ def __init__(self, channel): '/etcdserverpb.Watch/Progress', request_serializer=rpc__pb2.WatchProgressRequest.SerializeToString, response_deserializer=rpc__pb2.WatchResponse.FromString, - ) + _registered_method=True) self.Watch = channel.stream_stream( '/etcdserverpb.Watch/Watch', request_serializer=rpc__pb2.WatchRequest.SerializeToString, response_deserializer=rpc__pb2.WatchResponse.FromString, - ) + _registered_method=True) class WatchServicer(object): @@ -275,6 +346,7 @@ def add_WatchServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'etcdserverpb.Watch', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('etcdserverpb.Watch', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -292,11 +364,21 @@ def Progress(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Watch/Progress', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Watch/Progress', rpc__pb2.WatchProgressRequest.SerializeToString, rpc__pb2.WatchResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Watch(request_iterator, @@ -309,11 +391,21 @@ def Watch(request_iterator, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.stream_stream(request_iterator, target, '/etcdserverpb.Watch/Watch', + return grpc.experimental.stream_stream( + request_iterator, + target, + '/etcdserverpb.Watch/Watch', rpc__pb2.WatchRequest.SerializeToString, rpc__pb2.WatchResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) class LeaseStub(object): @@ -329,22 +421,22 @@ def __init__(self, channel): '/etcdserverpb.Lease/LeaseGrant', request_serializer=rpc__pb2.LeaseGrantRequest.SerializeToString, response_deserializer=rpc__pb2.LeaseGrantResponse.FromString, - ) + _registered_method=True) self.LeaseRevoke = channel.unary_unary( '/etcdserverpb.Lease/LeaseRevoke', request_serializer=rpc__pb2.LeaseRevokeRequest.SerializeToString, response_deserializer=rpc__pb2.LeaseRevokeResponse.FromString, - ) + _registered_method=True) self.LeaseKeepAlive = channel.stream_stream( '/etcdserverpb.Lease/LeaseKeepAlive', request_serializer=rpc__pb2.LeaseKeepAliveRequest.SerializeToString, response_deserializer=rpc__pb2.LeaseKeepAliveResponse.FromString, - ) + _registered_method=True) self.LeaseTimeToLive = channel.unary_unary( '/etcdserverpb.Lease/LeaseTimeToLive', request_serializer=rpc__pb2.LeaseTimeToLiveRequest.SerializeToString, response_deserializer=rpc__pb2.LeaseTimeToLiveResponse.FromString, - ) + _registered_method=True) class LeaseServicer(object): @@ -408,6 +500,7 @@ def add_LeaseServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'etcdserverpb.Lease', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('etcdserverpb.Lease', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -425,11 +518,21 @@ def LeaseGrant(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Lease/LeaseGrant', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Lease/LeaseGrant', rpc__pb2.LeaseGrantRequest.SerializeToString, rpc__pb2.LeaseGrantResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def LeaseRevoke(request, @@ -442,11 +545,21 @@ def LeaseRevoke(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Lease/LeaseRevoke', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Lease/LeaseRevoke', rpc__pb2.LeaseRevokeRequest.SerializeToString, rpc__pb2.LeaseRevokeResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def LeaseKeepAlive(request_iterator, @@ -459,11 +572,21 @@ def LeaseKeepAlive(request_iterator, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.stream_stream(request_iterator, target, '/etcdserverpb.Lease/LeaseKeepAlive', + return grpc.experimental.stream_stream( + request_iterator, + target, + '/etcdserverpb.Lease/LeaseKeepAlive', rpc__pb2.LeaseKeepAliveRequest.SerializeToString, rpc__pb2.LeaseKeepAliveResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def LeaseTimeToLive(request, @@ -476,11 +599,21 @@ def LeaseTimeToLive(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Lease/LeaseTimeToLive', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Lease/LeaseTimeToLive', rpc__pb2.LeaseTimeToLiveRequest.SerializeToString, rpc__pb2.LeaseTimeToLiveResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) class ClusterStub(object): @@ -496,22 +629,22 @@ def __init__(self, channel): '/etcdserverpb.Cluster/MemberAdd', request_serializer=rpc__pb2.MemberAddRequest.SerializeToString, response_deserializer=rpc__pb2.MemberAddResponse.FromString, - ) + _registered_method=True) self.MemberRemove = channel.unary_unary( '/etcdserverpb.Cluster/MemberRemove', request_serializer=rpc__pb2.MemberRemoveRequest.SerializeToString, response_deserializer=rpc__pb2.MemberRemoveResponse.FromString, - ) + _registered_method=True) self.MemberUpdate = channel.unary_unary( '/etcdserverpb.Cluster/MemberUpdate', request_serializer=rpc__pb2.MemberUpdateRequest.SerializeToString, response_deserializer=rpc__pb2.MemberUpdateResponse.FromString, - ) + _registered_method=True) self.MemberList = channel.unary_unary( '/etcdserverpb.Cluster/MemberList', request_serializer=rpc__pb2.MemberListRequest.SerializeToString, response_deserializer=rpc__pb2.MemberListResponse.FromString, - ) + _registered_method=True) class ClusterServicer(object): @@ -572,6 +705,7 @@ def add_ClusterServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'etcdserverpb.Cluster', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('etcdserverpb.Cluster', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -589,11 +723,21 @@ def MemberAdd(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Cluster/MemberAdd', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Cluster/MemberAdd', rpc__pb2.MemberAddRequest.SerializeToString, rpc__pb2.MemberAddResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def MemberRemove(request, @@ -606,11 +750,21 @@ def MemberRemove(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Cluster/MemberRemove', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Cluster/MemberRemove', rpc__pb2.MemberRemoveRequest.SerializeToString, rpc__pb2.MemberRemoveResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def MemberUpdate(request, @@ -623,11 +777,21 @@ def MemberUpdate(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Cluster/MemberUpdate', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Cluster/MemberUpdate', rpc__pb2.MemberUpdateRequest.SerializeToString, rpc__pb2.MemberUpdateResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def MemberList(request, @@ -640,11 +804,21 @@ def MemberList(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Cluster/MemberList', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Cluster/MemberList', rpc__pb2.MemberListRequest.SerializeToString, rpc__pb2.MemberListResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) class MaintenanceStub(object): @@ -660,37 +834,37 @@ def __init__(self, channel): '/etcdserverpb.Maintenance/Alarm', request_serializer=rpc__pb2.AlarmRequest.SerializeToString, response_deserializer=rpc__pb2.AlarmResponse.FromString, - ) + _registered_method=True) self.Status = channel.unary_unary( '/etcdserverpb.Maintenance/Status', request_serializer=rpc__pb2.StatusRequest.SerializeToString, response_deserializer=rpc__pb2.StatusResponse.FromString, - ) + _registered_method=True) self.Defragment = channel.unary_unary( '/etcdserverpb.Maintenance/Defragment', request_serializer=rpc__pb2.DefragmentRequest.SerializeToString, response_deserializer=rpc__pb2.DefragmentResponse.FromString, - ) + _registered_method=True) self.Hash = channel.unary_unary( '/etcdserverpb.Maintenance/Hash', request_serializer=rpc__pb2.HashRequest.SerializeToString, response_deserializer=rpc__pb2.HashResponse.FromString, - ) + _registered_method=True) self.HashKV = channel.unary_unary( '/etcdserverpb.Maintenance/HashKV', request_serializer=rpc__pb2.HashKVRequest.SerializeToString, response_deserializer=rpc__pb2.HashKVResponse.FromString, - ) + _registered_method=True) self.Snapshot = channel.unary_stream( '/etcdserverpb.Maintenance/Snapshot', request_serializer=rpc__pb2.SnapshotRequest.SerializeToString, response_deserializer=rpc__pb2.SnapshotResponse.FromString, - ) + _registered_method=True) self.MoveLeader = channel.unary_unary( '/etcdserverpb.Maintenance/MoveLeader', request_serializer=rpc__pb2.MoveLeaderRequest.SerializeToString, response_deserializer=rpc__pb2.MoveLeaderResponse.FromString, - ) + _registered_method=True) class MaintenanceServicer(object): @@ -789,6 +963,7 @@ def add_MaintenanceServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'etcdserverpb.Maintenance', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('etcdserverpb.Maintenance', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -806,11 +981,21 @@ def Alarm(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Maintenance/Alarm', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Maintenance/Alarm', rpc__pb2.AlarmRequest.SerializeToString, rpc__pb2.AlarmResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Status(request, @@ -823,11 +1008,21 @@ def Status(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Maintenance/Status', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Maintenance/Status', rpc__pb2.StatusRequest.SerializeToString, rpc__pb2.StatusResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Defragment(request, @@ -840,11 +1035,21 @@ def Defragment(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Maintenance/Defragment', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Maintenance/Defragment', rpc__pb2.DefragmentRequest.SerializeToString, rpc__pb2.DefragmentResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Hash(request, @@ -857,11 +1062,21 @@ def Hash(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Maintenance/Hash', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Maintenance/Hash', rpc__pb2.HashRequest.SerializeToString, rpc__pb2.HashResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def HashKV(request, @@ -874,11 +1089,21 @@ def HashKV(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Maintenance/HashKV', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Maintenance/HashKV', rpc__pb2.HashKVRequest.SerializeToString, rpc__pb2.HashKVResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Snapshot(request, @@ -891,11 +1116,21 @@ def Snapshot(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_stream(request, target, '/etcdserverpb.Maintenance/Snapshot', + return grpc.experimental.unary_stream( + request, + target, + '/etcdserverpb.Maintenance/Snapshot', rpc__pb2.SnapshotRequest.SerializeToString, rpc__pb2.SnapshotResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def MoveLeader(request, @@ -908,11 +1143,21 @@ def MoveLeader(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Maintenance/MoveLeader', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Maintenance/MoveLeader', rpc__pb2.MoveLeaderRequest.SerializeToString, rpc__pb2.MoveLeaderResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) class AuthStub(object): @@ -928,82 +1173,82 @@ def __init__(self, channel): '/etcdserverpb.Auth/AuthEnable', request_serializer=rpc__pb2.AuthEnableRequest.SerializeToString, response_deserializer=rpc__pb2.AuthEnableResponse.FromString, - ) + _registered_method=True) self.AuthDisable = channel.unary_unary( '/etcdserverpb.Auth/AuthDisable', request_serializer=rpc__pb2.AuthDisableRequest.SerializeToString, response_deserializer=rpc__pb2.AuthDisableResponse.FromString, - ) + _registered_method=True) self.Authenticate = channel.unary_unary( '/etcdserverpb.Auth/Authenticate', request_serializer=rpc__pb2.AuthenticateRequest.SerializeToString, response_deserializer=rpc__pb2.AuthenticateResponse.FromString, - ) + _registered_method=True) self.UserAdd = channel.unary_unary( '/etcdserverpb.Auth/UserAdd', request_serializer=rpc__pb2.AuthUserAddRequest.SerializeToString, response_deserializer=rpc__pb2.AuthUserAddResponse.FromString, - ) + _registered_method=True) self.UserGet = channel.unary_unary( '/etcdserverpb.Auth/UserGet', request_serializer=rpc__pb2.AuthUserGetRequest.SerializeToString, response_deserializer=rpc__pb2.AuthUserGetResponse.FromString, - ) + _registered_method=True) self.UserList = channel.unary_unary( '/etcdserverpb.Auth/UserList', request_serializer=rpc__pb2.AuthUserListRequest.SerializeToString, response_deserializer=rpc__pb2.AuthUserListResponse.FromString, - ) + _registered_method=True) self.UserDelete = channel.unary_unary( '/etcdserverpb.Auth/UserDelete', request_serializer=rpc__pb2.AuthUserDeleteRequest.SerializeToString, response_deserializer=rpc__pb2.AuthUserDeleteResponse.FromString, - ) + _registered_method=True) self.UserChangePassword = channel.unary_unary( '/etcdserverpb.Auth/UserChangePassword', request_serializer=rpc__pb2.AuthUserChangePasswordRequest.SerializeToString, response_deserializer=rpc__pb2.AuthUserChangePasswordResponse.FromString, - ) + _registered_method=True) self.UserGrantRole = channel.unary_unary( '/etcdserverpb.Auth/UserGrantRole', request_serializer=rpc__pb2.AuthUserGrantRoleRequest.SerializeToString, response_deserializer=rpc__pb2.AuthUserGrantRoleResponse.FromString, - ) + _registered_method=True) self.UserRevokeRole = channel.unary_unary( '/etcdserverpb.Auth/UserRevokeRole', request_serializer=rpc__pb2.AuthUserRevokeRoleRequest.SerializeToString, response_deserializer=rpc__pb2.AuthUserRevokeRoleResponse.FromString, - ) + _registered_method=True) self.RoleAdd = channel.unary_unary( '/etcdserverpb.Auth/RoleAdd', request_serializer=rpc__pb2.AuthRoleAddRequest.SerializeToString, response_deserializer=rpc__pb2.AuthRoleAddResponse.FromString, - ) + _registered_method=True) self.RoleGet = channel.unary_unary( '/etcdserverpb.Auth/RoleGet', request_serializer=rpc__pb2.AuthRoleGetRequest.SerializeToString, response_deserializer=rpc__pb2.AuthRoleGetResponse.FromString, - ) + _registered_method=True) self.RoleList = channel.unary_unary( '/etcdserverpb.Auth/RoleList', request_serializer=rpc__pb2.AuthRoleListRequest.SerializeToString, response_deserializer=rpc__pb2.AuthRoleListResponse.FromString, - ) + _registered_method=True) self.RoleDelete = channel.unary_unary( '/etcdserverpb.Auth/RoleDelete', request_serializer=rpc__pb2.AuthRoleDeleteRequest.SerializeToString, response_deserializer=rpc__pb2.AuthRoleDeleteResponse.FromString, - ) + _registered_method=True) self.RoleGrantPermission = channel.unary_unary( '/etcdserverpb.Auth/RoleGrantPermission', request_serializer=rpc__pb2.AuthRoleGrantPermissionRequest.SerializeToString, response_deserializer=rpc__pb2.AuthRoleGrantPermissionResponse.FromString, - ) + _registered_method=True) self.RoleRevokePermission = channel.unary_unary( '/etcdserverpb.Auth/RoleRevokePermission', request_serializer=rpc__pb2.AuthRoleRevokePermissionRequest.SerializeToString, response_deserializer=rpc__pb2.AuthRoleRevokePermissionResponse.FromString, - ) + _registered_method=True) class AuthServicer(object): @@ -1208,6 +1453,7 @@ def add_AuthServicer_to_server(servicer, server): generic_handler = grpc.method_handlers_generic_handler( 'etcdserverpb.Auth', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) + server.add_registered_method_handlers('etcdserverpb.Auth', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. @@ -1225,11 +1471,21 @@ def AuthEnable(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/AuthEnable', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/AuthEnable', rpc__pb2.AuthEnableRequest.SerializeToString, rpc__pb2.AuthEnableResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def AuthDisable(request, @@ -1242,11 +1498,21 @@ def AuthDisable(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/AuthDisable', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/AuthDisable', rpc__pb2.AuthDisableRequest.SerializeToString, rpc__pb2.AuthDisableResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def Authenticate(request, @@ -1259,11 +1525,21 @@ def Authenticate(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/Authenticate', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/Authenticate', rpc__pb2.AuthenticateRequest.SerializeToString, rpc__pb2.AuthenticateResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def UserAdd(request, @@ -1276,11 +1552,21 @@ def UserAdd(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/UserAdd', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/UserAdd', rpc__pb2.AuthUserAddRequest.SerializeToString, rpc__pb2.AuthUserAddResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def UserGet(request, @@ -1293,11 +1579,21 @@ def UserGet(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/UserGet', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/UserGet', rpc__pb2.AuthUserGetRequest.SerializeToString, rpc__pb2.AuthUserGetResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def UserList(request, @@ -1310,11 +1606,21 @@ def UserList(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/UserList', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/UserList', rpc__pb2.AuthUserListRequest.SerializeToString, rpc__pb2.AuthUserListResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def UserDelete(request, @@ -1327,11 +1633,21 @@ def UserDelete(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/UserDelete', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/UserDelete', rpc__pb2.AuthUserDeleteRequest.SerializeToString, rpc__pb2.AuthUserDeleteResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def UserChangePassword(request, @@ -1344,11 +1660,21 @@ def UserChangePassword(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/UserChangePassword', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/UserChangePassword', rpc__pb2.AuthUserChangePasswordRequest.SerializeToString, rpc__pb2.AuthUserChangePasswordResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def UserGrantRole(request, @@ -1361,11 +1687,21 @@ def UserGrantRole(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/UserGrantRole', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/UserGrantRole', rpc__pb2.AuthUserGrantRoleRequest.SerializeToString, rpc__pb2.AuthUserGrantRoleResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def UserRevokeRole(request, @@ -1378,11 +1714,21 @@ def UserRevokeRole(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/UserRevokeRole', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/UserRevokeRole', rpc__pb2.AuthUserRevokeRoleRequest.SerializeToString, rpc__pb2.AuthUserRevokeRoleResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def RoleAdd(request, @@ -1395,11 +1741,21 @@ def RoleAdd(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/RoleAdd', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/RoleAdd', rpc__pb2.AuthRoleAddRequest.SerializeToString, rpc__pb2.AuthRoleAddResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def RoleGet(request, @@ -1412,11 +1768,21 @@ def RoleGet(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/RoleGet', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/RoleGet', rpc__pb2.AuthRoleGetRequest.SerializeToString, rpc__pb2.AuthRoleGetResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def RoleList(request, @@ -1429,11 +1795,21 @@ def RoleList(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/RoleList', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/RoleList', rpc__pb2.AuthRoleListRequest.SerializeToString, rpc__pb2.AuthRoleListResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def RoleDelete(request, @@ -1446,11 +1822,21 @@ def RoleDelete(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/RoleDelete', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/RoleDelete', rpc__pb2.AuthRoleDeleteRequest.SerializeToString, rpc__pb2.AuthRoleDeleteResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def RoleGrantPermission(request, @@ -1463,11 +1849,21 @@ def RoleGrantPermission(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/RoleGrantPermission', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/RoleGrantPermission', rpc__pb2.AuthRoleGrantPermissionRequest.SerializeToString, rpc__pb2.AuthRoleGrantPermissionResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) @staticmethod def RoleRevokePermission(request, @@ -1480,8 +1876,18 @@ def RoleRevokePermission(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_unary(request, target, '/etcdserverpb.Auth/RoleRevokePermission', + return grpc.experimental.unary_unary( + request, + target, + '/etcdserverpb.Auth/RoleRevokePermission', rpc__pb2.AuthRoleRevokePermissionRequest.SerializeToString, rpc__pb2.AuthRoleRevokePermissionResponse.FromString, - options, channel_credentials, - insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) From 907338e3aaec5b97a0c4d89c4a450669f9357d48 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 10:10:15 +0100 Subject: [PATCH 04/23] build: moving to pythonic build with tox --- etcd3/__init__.py | 9 +-- pyproject.toml | 83 ++++++++++++++++++++ requirements/base.in | 3 - requirements/base.txt | 13 ---- requirements/test.in | 18 ----- requirements/test.txt | 173 ------------------------------------------ setup.cfg | 20 ----- setup.py | 58 -------------- tox.ini | 55 +++++++++----- 9 files changed, 124 insertions(+), 308 deletions(-) create mode 100644 pyproject.toml delete mode 100644 requirements/base.in delete mode 100644 requirements/base.txt delete mode 100644 requirements/test.in delete mode 100644 requirements/test.txt delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/etcd3/__init__.py b/etcd3/__init__.py index abbc3cc8..dc0da32d 100644 --- a/etcd3/__init__.py +++ b/etcd3/__init__.py @@ -1,5 +1,4 @@ -from __future__ import absolute_import - +from importlib import metadata import etcd3.etcdrpc as etcdrpc from etcd3.client import Endpoint from etcd3.client import Etcd3Client @@ -11,9 +10,9 @@ from etcd3.locks import Lock from etcd3.members import Member -__author__ = 'Louis Taylor' -__email__ = 'louis@kragniz.eu' -__version__ = '0.12.0' +__version__ = metadata.version("protect-device") +__author__ = "Louis Taylor" +__email__ = "louis@kragniz.eu" __all__ = ( 'etcdrpc', diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..86b65607 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,83 @@ +[build-system] +requires = ["setuptools>=64", "setuptools_scm>=8"] +build-backend = "setuptools.build_meta" + +[project] +name = "etcd3" +description = "Python client for the etcd3 API" +dynamic = ["version"] +requires-python = ">=3.7" +readme = "README.rst" +license = {file = "LICENSE"} +authors = [ + {email = "Louis Taylor "}, + {email = "Ledger SAS "}, +] +dependencies = [ + "grpcio==1.66.2", + "protobuf>=5.27.1,<6", + "six==1.16.0", +] +classifiers = [ + "Development Status :: 2 - Pre-Alpha", + "Intended Audience :: Developers", + "License :: OSI Approved :: Apache Software License", + "Natural Language :: English", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Operating System :: OS Independent", +] + +[project.optional-dependencies] +tests = [ + "pifpaf", + "PyYAML>=5.1", + "bumpversion>=0.5.3", + "coverage", + "flake8-import-order", + "flake8", + "grpcio-tools>=1.66.2", + "hypothesis", + "pytest>=4.6.5", + "pytest-cov", + "flake8-docstrings>=1.3.0", + "mock>=2.0.0", + "tenacity>=5.0.2", +] +protoc = [ + "grpcio-tools", +] +doc = [ + "Sphinx>=1.8.2", +] + +[tool.isort] +profile = "black" + +[tool.mypy] +python_version = "3.10" +show_error_codes = true +check_untyped_defs = true +no_implicit_reexport = true +warn_redundant_casts = true +warn_unused_ignores = true +follow_untyped_imports = true + +[tool.bandit.assert_used] +skips = ["tests/*.py"] + +[tool.pydocstyle] +convention = "pep257" + +[tool.setuptools_scm] + +[tool.pytest.ini_options] +asyncio_default_fixture_loop_scope = "function" diff --git a/requirements/base.in b/requirements/base.in deleted file mode 100644 index dba74d6c..00000000 --- a/requirements/base.in +++ /dev/null @@ -1,3 +0,0 @@ -grpcio>=1.66.2 -protobuf>=5.27.1,<6 -six>=1.16.0 diff --git a/requirements/base.txt b/requirements/base.txt deleted file mode 100644 index 739a4269..00000000 --- a/requirements/base.txt +++ /dev/null @@ -1,13 +0,0 @@ -# SHA1:ff08bff9a8ebdb06497fdb93a80767c4e40ad0d1 -# -# This file is autogenerated by pip-compile-multi -# To update, run: -# -# pip-compile-multi -# -grpcio==1.68.1 - # via -r requirements/base.in -protobuf==5.29.1 - # via -r requirements/base.in -six==1.17.0 - # via -r requirements/base.in diff --git a/requirements/test.in b/requirements/test.in deleted file mode 100644 index c2645a60..00000000 --- a/requirements/test.in +++ /dev/null @@ -1,18 +0,0 @@ --r base.in -PyYAML>=5.1 -Sphinx>=1.8.2 -bumpversion>=0.5.3 -coverage -flake8-import-order -flake8 -grpcio-tools>=1.66.2 -hypothesis -more-itertools<6 # python2.7 -pytest>=4.6.5 -pytest-cov -tox>=3.5.3 -flake8-docstrings>=1.3.0 -pydocstyle<4 # python2.7 -mock>=2.0.0 -pifpaf -tenacity>=5.0.2 diff --git a/requirements/test.txt b/requirements/test.txt deleted file mode 100644 index 5c32e111..00000000 --- a/requirements/test.txt +++ /dev/null @@ -1,173 +0,0 @@ -# SHA1:4c15bbd6ea27b17533a13bca9b47deb0ad304933 -# -# This file is autogenerated by pip-compile-multi -# To update, run: -# -# pip-compile-multi -# --r base.txt -alabaster==1.0.0 - # via sphinx -attrs==24.3.0 - # via hypothesis -babel==2.16.0 - # via sphinx -bump2version==1.0.1 - # via bumpversion -bumpversion==0.6.0 - # via -r requirements/test.in -cachetools==5.5.0 - # via tox -certifi==2024.12.14 - # via requests -cffi==1.17.1 - # via xattr -chardet==5.2.0 - # via tox -charset-normalizer==3.4.0 - # via requests -click==8.1.7 - # via pifpaf -colorama==0.4.6 - # via tox -coverage[toml]==7.6.9 - # via - # -r requirements/test.in - # pytest-cov -daiquiri==3.3.0 - # via pifpaf -distlib==0.3.9 - # via virtualenv -docutils==0.21.2 - # via sphinx -exceptiongroup==1.2.2 - # via - # hypothesis - # pytest -filelock==3.16.1 - # via - # tox - # virtualenv -fixtures==4.1.0 - # via pifpaf -flake8==7.1.1 - # via - # -r requirements/test.in - # flake8-docstrings -flake8-docstrings==1.7.0 - # via -r requirements/test.in -flake8-import-order==0.18.2 - # via -r requirements/test.in -grpcio-tools==1.68.1 - # via -r requirements/test.in -hypothesis==6.122.3 - # via -r requirements/test.in -idna==3.10 - # via requests -imagesize==1.4.1 - # via sphinx -iniconfig==2.0.0 - # via pytest -jinja2==3.1.4 - # via - # pifpaf - # sphinx -markupsafe==3.0.2 - # via jinja2 -mccabe==0.7.0 - # via flake8 -mock==5.1.0 - # via -r requirements/test.in -more-itertools==5.0.0 - # via -r requirements/test.in -packaging==24.2 - # via - # pifpaf - # pyproject-api - # pytest - # sphinx - # tox -pbr==6.1.0 - # via fixtures -pifpaf==3.2.3 - # via -r requirements/test.in -platformdirs==4.3.6 - # via - # tox - # virtualenv -pluggy==1.5.0 - # via - # pytest - # tox -psutil==6.1.0 - # via pifpaf -pycodestyle==2.12.1 - # via - # flake8 - # flake8-import-order -pycparser==2.22 - # via cffi -pydocstyle==3.0.0 - # via - # -r requirements/test.in - # flake8-docstrings -pyflakes==3.2.0 - # via flake8 -pygments==2.18.0 - # via sphinx -pyproject-api==1.8.0 - # via tox -pytest==8.3.4 - # via - # -r requirements/test.in - # pytest-cov -pytest-cov==6.0.0 - # via -r requirements/test.in -python-json-logger==3.2.1 - # via daiquiri -pyyaml==6.0.2 - # via -r requirements/test.in -requests==2.32.3 - # via sphinx -snowballstemmer==2.2.0 - # via - # pydocstyle - # sphinx -sortedcontainers==2.4.0 - # via hypothesis -sphinx==8.1.3 - # via -r requirements/test.in -sphinxcontrib-applehelp==2.0.0 - # via sphinx -sphinxcontrib-devhelp==2.0.0 - # via sphinx -sphinxcontrib-htmlhelp==2.1.0 - # via sphinx -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==2.0.0 - # via sphinx -sphinxcontrib-serializinghtml==2.0.0 - # via sphinx -tenacity==9.0.0 - # via -r requirements/test.in -tomli==2.2.1 - # via - # coverage - # pyproject-api - # pytest - # sphinx - # tox -tox==4.23.2 - # via -r requirements/test.in -typing-extensions==4.12.2 - # via tox -urllib3==2.2.3 - # via requests -virtualenv==20.28.0 - # via tox -xattr==1.1.0 - # via pifpaf - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 0e49001b..00000000 --- a/setup.cfg +++ /dev/null @@ -1,20 +0,0 @@ -[bumpversion] -current_version = 0.12.0 -commit = True -tag = True -message = Release: {current_version} -> {new_version} - -[bumpversion:file:setup.py] - -[bumpversion:file:etcd3/__init__.py] - -[bdist_wheel] -universal = 1 - -[flake8] -exclude = docs -builtins = long - -[coverage:run] -omit = etcd3/etcdrpc/* - diff --git a/setup.py b/setup.py deleted file mode 100644 index 3e084309..00000000 --- a/setup.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -import re - -from setuptools import setup - -with open('README.rst') as readme_file: - readme = readme_file.read() - -with open('HISTORY.rst') as history_file: - history = history_file.read() - - -def load_reqs(filename): - with open(filename) as reqs_file: - lines = [line.split("#")[0].strip() for line in reqs_file.readlines()] - return [line for line in lines if line != "" and not line.startswith("-r")] - -requirements = load_reqs('requirements/base.in') -test_requirements = load_reqs('requirements/test.in') - -setup( - name='etcd3', - version='0.12.0', - description="Python client for the etcd3 API", - long_description=readme + '\n\n' + history, - author="Louis Taylor", - author_email='louis@kragniz.eu', - url='https://github.com/kragniz/python-etcd3', - packages=[ - 'etcd3', - 'etcd3.etcdrpc', - ], - package_dir={ - 'etcd3': 'etcd3', - 'etcd3.etcdrpc': 'etcd3/etcdrpc', - }, - include_package_data=True, - install_requires=requirements, - license="Apache Software License 2.0", - zip_safe=False, - keywords='etcd3', - classifiers=[ - 'Development Status :: 2 - Pre-Alpha', - 'Intended Audience :: Developers', - 'License :: OSI Approved :: Apache Software License', - 'Natural Language :: English', - "Programming Language :: Python :: 2", - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - ], - test_suite='tests', - tests_require=test_requirements -) diff --git a/tox.ini b/tox.ini index 0dcea40f..9a104db6 100644 --- a/tox.ini +++ b/tox.ini @@ -1,30 +1,46 @@ [tox] -envlist = py39, flake8 -skipsdist=True +min_version = 4.0 +env_list = + unittests + genproto + build +isolated_build = true -[testenv:flake8] -commands=flake8 {posargs} +[tox:.package] +basepython = python3 + +[testenv:build] +deps = + build + twine +commands = + python -m build + twine check dist/* -[testenv] -passenv = ETCD_ENDPOINT TEST_ETCD_VERSION -setenv = - PYTHONPATH = {toxinidir}:{toxinidir}/etcd3 -deps= - -r{toxinidir}/requirements/base.txt - -r{toxinidir}/requirements/test.txt +[testenv:unittests] +extras = tests +#passenv = ETCD_ENDPOINT,TEST_ETCD_VERSION +allowlist_externals = + wget + tar + gzip + cp +commands_pre = + wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz -O {env_tmp_dir}/etcd.tar.gz + tar xzvf {env_tmp_dir}/etcd.tar.gz -C {env_tmp_dir} + cp {env_tmp_dir}/etcd-v3.3.10-linux-amd64/etcd {envdir}/bin + cp {env_tmp_dir}/etcd-v3.3.10-linux-amd64/etcdctl {envdir}/bin commands = - pip install -U pip pifpaf -e PYTHON run etcd --cluster -- py.test --cov=etcd3 --cov-report= --basetemp={envtmpdir} {posargs} -[testenv:coverage] -deps= - -r{toxinidir}/requirements/base.txt - -r{toxinidir}/requirements/test.txt -commands = py.test --cov=etcd3 tests/ +[testenv:flake8] +commands=flake8 {posargs} [testenv:genproto] whitelist_externals = sed -deps = grpcio-tools +extras = protoc +allowlist_externals = + sed commands = sed -i -e '/gogoproto/d' etcd3/proto/rpc.proto sed -i -e 's/etcd\/mvcc\/mvccpb\/kv.proto/kv.proto/g' etcd3/proto/rpc.proto @@ -45,3 +61,6 @@ application-import-names = etcd3 max-complexity = 10 # TODO add docstrings for public methods, modules, etc ignore = D1, W503 + +[pytest] +tmp_path_retention_policy = none From 839a2a526d6edf49f2b6574f688a92f4f7a62be8 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 10:21:58 +0100 Subject: [PATCH 05/23] fix: moving soures to src standard directory --- {etcd3 => src/etcd3}/__init__.py | 0 {etcd3 => src/etcd3}/client.py | 0 {etcd3 => src/etcd3}/etcdrpc/__init__.py | 0 {etcd3 => src/etcd3}/etcdrpc/auth_pb2.py | 0 {etcd3 => src/etcd3}/etcdrpc/kv_pb2.py | 0 {etcd3 => src/etcd3}/etcdrpc/rpc_pb2.py | 0 {etcd3 => src/etcd3}/etcdrpc/rpc_pb2_grpc.py | 0 {etcd3 => src/etcd3}/events.py | 0 {etcd3 => src/etcd3}/exceptions.py | 0 {etcd3 => src/etcd3}/leases.py | 0 {etcd3 => src/etcd3}/locks.py | 0 {etcd3 => src/etcd3}/members.py | 0 {etcd3 => src/etcd3}/proto/auth.proto | 0 {etcd3 => src/etcd3}/proto/kv.proto | 0 {etcd3 => src/etcd3}/proto/rpc.proto | 0 {etcd3 => src/etcd3}/transactions.py | 0 {etcd3 => src/etcd3}/utils.py | 0 {etcd3 => src/etcd3}/watch.py | 0 18 files changed, 0 insertions(+), 0 deletions(-) rename {etcd3 => src/etcd3}/__init__.py (100%) rename {etcd3 => src/etcd3}/client.py (100%) rename {etcd3 => src/etcd3}/etcdrpc/__init__.py (100%) rename {etcd3 => src/etcd3}/etcdrpc/auth_pb2.py (100%) rename {etcd3 => src/etcd3}/etcdrpc/kv_pb2.py (100%) rename {etcd3 => src/etcd3}/etcdrpc/rpc_pb2.py (100%) rename {etcd3 => src/etcd3}/etcdrpc/rpc_pb2_grpc.py (100%) rename {etcd3 => src/etcd3}/events.py (100%) rename {etcd3 => src/etcd3}/exceptions.py (100%) rename {etcd3 => src/etcd3}/leases.py (100%) rename {etcd3 => src/etcd3}/locks.py (100%) rename {etcd3 => src/etcd3}/members.py (100%) rename {etcd3 => src/etcd3}/proto/auth.proto (100%) rename {etcd3 => src/etcd3}/proto/kv.proto (100%) rename {etcd3 => src/etcd3}/proto/rpc.proto (100%) rename {etcd3 => src/etcd3}/transactions.py (100%) rename {etcd3 => src/etcd3}/utils.py (100%) rename {etcd3 => src/etcd3}/watch.py (100%) diff --git a/etcd3/__init__.py b/src/etcd3/__init__.py similarity index 100% rename from etcd3/__init__.py rename to src/etcd3/__init__.py diff --git a/etcd3/client.py b/src/etcd3/client.py similarity index 100% rename from etcd3/client.py rename to src/etcd3/client.py diff --git a/etcd3/etcdrpc/__init__.py b/src/etcd3/etcdrpc/__init__.py similarity index 100% rename from etcd3/etcdrpc/__init__.py rename to src/etcd3/etcdrpc/__init__.py diff --git a/etcd3/etcdrpc/auth_pb2.py b/src/etcd3/etcdrpc/auth_pb2.py similarity index 100% rename from etcd3/etcdrpc/auth_pb2.py rename to src/etcd3/etcdrpc/auth_pb2.py diff --git a/etcd3/etcdrpc/kv_pb2.py b/src/etcd3/etcdrpc/kv_pb2.py similarity index 100% rename from etcd3/etcdrpc/kv_pb2.py rename to src/etcd3/etcdrpc/kv_pb2.py diff --git a/etcd3/etcdrpc/rpc_pb2.py b/src/etcd3/etcdrpc/rpc_pb2.py similarity index 100% rename from etcd3/etcdrpc/rpc_pb2.py rename to src/etcd3/etcdrpc/rpc_pb2.py diff --git a/etcd3/etcdrpc/rpc_pb2_grpc.py b/src/etcd3/etcdrpc/rpc_pb2_grpc.py similarity index 100% rename from etcd3/etcdrpc/rpc_pb2_grpc.py rename to src/etcd3/etcdrpc/rpc_pb2_grpc.py diff --git a/etcd3/events.py b/src/etcd3/events.py similarity index 100% rename from etcd3/events.py rename to src/etcd3/events.py diff --git a/etcd3/exceptions.py b/src/etcd3/exceptions.py similarity index 100% rename from etcd3/exceptions.py rename to src/etcd3/exceptions.py diff --git a/etcd3/leases.py b/src/etcd3/leases.py similarity index 100% rename from etcd3/leases.py rename to src/etcd3/leases.py diff --git a/etcd3/locks.py b/src/etcd3/locks.py similarity index 100% rename from etcd3/locks.py rename to src/etcd3/locks.py diff --git a/etcd3/members.py b/src/etcd3/members.py similarity index 100% rename from etcd3/members.py rename to src/etcd3/members.py diff --git a/etcd3/proto/auth.proto b/src/etcd3/proto/auth.proto similarity index 100% rename from etcd3/proto/auth.proto rename to src/etcd3/proto/auth.proto diff --git a/etcd3/proto/kv.proto b/src/etcd3/proto/kv.proto similarity index 100% rename from etcd3/proto/kv.proto rename to src/etcd3/proto/kv.proto diff --git a/etcd3/proto/rpc.proto b/src/etcd3/proto/rpc.proto similarity index 100% rename from etcd3/proto/rpc.proto rename to src/etcd3/proto/rpc.proto diff --git a/etcd3/transactions.py b/src/etcd3/transactions.py similarity index 100% rename from etcd3/transactions.py rename to src/etcd3/transactions.py diff --git a/etcd3/utils.py b/src/etcd3/utils.py similarity index 100% rename from etcd3/utils.py rename to src/etcd3/utils.py diff --git a/etcd3/watch.py b/src/etcd3/watch.py similarity index 100% rename from etcd3/watch.py rename to src/etcd3/watch.py From 7d460d1a03a5e1826f97984e201ba1c2b26abc12 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 10:58:36 +0100 Subject: [PATCH 06/23] fix: fully fixed unit testing fix typo in pyproject --- pyproject.toml | 5 +---- src/etcd3/__init__.py | 2 +- tests/test_etcd3.py | 2 +- tox.ini | 2 ++ 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 86b65607..d49536ca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ authors = [ {email = "Ledger SAS "}, ] dependencies = [ - "grpcio==1.66.2", + "grpcio>=1.68.1", "protobuf>=5.27.1,<6", "six==1.16.0", ] @@ -78,6 +78,3 @@ skips = ["tests/*.py"] convention = "pep257" [tool.setuptools_scm] - -[tool.pytest.ini_options] -asyncio_default_fixture_loop_scope = "function" diff --git a/src/etcd3/__init__.py b/src/etcd3/__init__.py index dc0da32d..3f378e21 100644 --- a/src/etcd3/__init__.py +++ b/src/etcd3/__init__.py @@ -10,7 +10,7 @@ from etcd3.locks import Lock from etcd3.members import Member -__version__ = metadata.version("protect-device") +__version__ = metadata.version("etcd3") __author__ = "Louis Taylor" __email__ = "louis@kragniz.eu" diff --git a/tests/test_etcd3.py b/tests/test_etcd3.py index b3b068ed..ff8038cd 100644 --- a/tests/test_etcd3.py +++ b/tests/test_etcd3.py @@ -1221,7 +1221,7 @@ def test_channel_with_no_cert(self): ) assert client.uses_secure_channel is False - @mock.patch('etcdrpc.AuthStub') + @mock.patch('etcd3.etcdrpc.AuthStub') def test_user_pwd_auth(self, auth_mock): auth_resp_mock = mock.MagicMock() auth_resp_mock.token = 'foo' diff --git a/tox.ini b/tox.ini index 9a104db6..f76ef564 100644 --- a/tox.ini +++ b/tox.ini @@ -32,6 +32,8 @@ commands_pre = cp {env_tmp_dir}/etcd-v3.3.10-linux-amd64/etcdctl {envdir}/bin commands = pifpaf -e PYTHON run etcd --cluster -- py.test --cov=etcd3 --cov-report= --basetemp={envtmpdir} {posargs} + coverage report -m + coverage xml [testenv:flake8] commands=flake8 {posargs} From 1527e4f8686dbfb0059150fa901ea22ae470fbb6 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 11:50:09 +0100 Subject: [PATCH 07/23] build: make python generation from protobuf automatic through tox --- genproto.sh | 16 ++++++++++++++++ tox.ini | 24 +++++++++++------------- 2 files changed, 27 insertions(+), 13 deletions(-) create mode 100755 genproto.sh diff --git a/genproto.sh b/genproto.sh new file mode 100755 index 00000000..43b15b7f --- /dev/null +++ b/genproto.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +set -e + +sed -i -e '/gogoproto/d' src/etcd3/proto/rpc.proto +sed -i -e 's/etcd\/mvcc\/mvccpb\/kv.proto/kv.proto/g' src/etcd3/proto/rpc.proto +sed -i -e 's/etcd\/auth\/authpb\/auth.proto/auth.proto/g' src/etcd3/proto/rpc.proto +sed -i -e '/google\/api\/annotations.proto/d' src/etcd3/proto/rpc.proto +sed -i -e '/option (google.api.http)/,+3d' src/etcd3/proto/rpc.proto +python -m grpc.tools.protoc -Isrc/etcd3/proto \ + --python_out=src/etcd3/etcdrpc/ \ + --grpc_python_out=src/etcd3/etcdrpc/ \ + src/etcd3/proto/rpc.proto src/etcd3/proto/auth.proto src/etcd3/proto/kv.proto +sed -i -e 's/import auth_pb2/from etcd3.etcdrpc import auth_pb2/g' src/etcd3/etcdrpc/rpc_pb2.py +sed -i -e 's/import kv_pb2/from etcd3.etcdrpc import kv_pb2/g' src/etcd3/etcdrpc/rpc_pb2.py +sed -i -e 's/import rpc_pb2/from etcd3.etcdrpc import rpc_pb2/g' src/etcd3/etcdrpc/rpc_pb2_grpc.py diff --git a/tox.ini b/tox.ini index f76ef564..8349d382 100644 --- a/tox.ini +++ b/tox.ini @@ -10,14 +10,20 @@ isolated_build = true basepython = python3 [testenv:build] +description = generate proto and build pacakge deps = build twine +extras = protoc +allowlist_externals = + {toxinidir}/genproto.sh commands = + {toxinidir}/genproto.sh python -m build twine check dist/* [testenv:unittests] +description = generate proto and run package unit tests extras = tests #passenv = ETCD_ENDPOINT,TEST_ETCD_VERSION allowlist_externals = @@ -25,7 +31,9 @@ allowlist_externals = tar gzip cp + {toxinidir}/genproto.sh commands_pre = + {toxinidir}/genproto.sh wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz -O {env_tmp_dir}/etcd.tar.gz tar xzvf {env_tmp_dir}/etcd.tar.gz -C {env_tmp_dir} cp {env_tmp_dir}/etcd-v3.3.10-linux-amd64/etcd {envdir}/bin @@ -39,23 +47,13 @@ commands = commands=flake8 {posargs} [testenv:genproto] +description = generate proto only whitelist_externals = sed extras = protoc allowlist_externals = - sed + {toxinidir}/genproto.sh commands = - sed -i -e '/gogoproto/d' etcd3/proto/rpc.proto - sed -i -e 's/etcd\/mvcc\/mvccpb\/kv.proto/kv.proto/g' etcd3/proto/rpc.proto - sed -i -e 's/etcd\/auth\/authpb\/auth.proto/auth.proto/g' etcd3/proto/rpc.proto - sed -i -e '/google\/api\/annotations.proto/d' etcd3/proto/rpc.proto - sed -i -e '/option (google.api.http)/,+3d' etcd3/proto/rpc.proto - python -m grpc.tools.protoc -Ietcd3/proto \ - --python_out=etcd3/etcdrpc/ \ - --grpc_python_out=etcd3/etcdrpc/ \ - etcd3/proto/rpc.proto etcd3/proto/auth.proto etcd3/proto/kv.proto - sed -i -e 's/import auth_pb2/from etcd3.etcdrpc import auth_pb2/g' etcd3/etcdrpc/rpc_pb2.py - sed -i -e 's/import kv_pb2/from etcd3.etcdrpc import kv_pb2/g' etcd3/etcdrpc/rpc_pb2.py - sed -i -e 's/import rpc_pb2/from etcd3.etcdrpc import rpc_pb2/g' etcd3/etcdrpc/rpc_pb2_grpc.py + {toxinidir}/genproto.sh [flake8] exclude = .venv,.git,.tox,dist,docs,*lib/python*,*egg,build,etcd3/etcdrpc/ From d4fb42d607773f0aa1ea9e2181a04e4a6b26ca09 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 11:58:50 +0100 Subject: [PATCH 08/23] fix: remove useless from manifest file --- MANIFEST.in | 4 ---- 1 file changed, 4 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 2395ef98..09407434 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -5,11 +5,7 @@ include CONTRIBUTING.rst include HISTORY.rst include LICENSE include README.rst -include requirements/base.txt -include requirements/test.txt recursive-include tests * -recursive-exclude * __pycache__ -recursive-exclude * *.py[co] recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif From f9e5d3cf4b1852870d045554247d30ba546ed951 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 12:05:51 +0100 Subject: [PATCH 09/23] build: adding lint target to tox --- tox.ini | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 8349d382..eb257e48 100644 --- a/tox.ini +++ b/tox.ini @@ -2,8 +2,8 @@ min_version = 4.0 env_list = unittests - genproto build + lint isolated_build = true [tox:.package] @@ -43,6 +43,13 @@ commands = coverage report -m coverage xml +[testenv:lint] +extras = tests +commands = + flake8 --docstring-convention=numpy + black --line-length 90 --check --diff . + + [testenv:flake8] commands=flake8 {posargs} @@ -61,6 +68,7 @@ application-import-names = etcd3 max-complexity = 10 # TODO add docstrings for public methods, modules, etc ignore = D1, W503 +max-line-length = 90 [pytest] tmp_path_retention_policy = none From 1af7d0e35ab16076393a29378043f350c1561aa4 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 13:21:03 +0100 Subject: [PATCH 10/23] fix: add doc generation target to tox --- docs/Makefile | 177 -------------------------------------- docs/_static/.placeholder | 0 tox.ini | 9 ++ 3 files changed, 9 insertions(+), 177 deletions(-) delete mode 100644 docs/Makefile create mode 100644 docs/_static/.placeholder diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index 6533884f..00000000 --- a/docs/Makefile +++ /dev/null @@ -1,177 +0,0 @@ -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -SPHINXBUILD = sphinx-build -PAPER = -BUILDDIR = _build - -# User-friendly check for sphinx-build -ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) -$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) -endif - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . -# the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . - -.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext - -help: - @echo "Please use \`make ' where is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " singlehtml to make a single large HTML file" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " devhelp to make HTML files and a Devhelp project" - @echo " epub to make an epub" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " latexpdf to make LaTeX files and run them through pdflatex" - @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" - @echo " text to make text files" - @echo " man to make manual pages" - @echo " texinfo to make Texinfo files" - @echo " info to make Texinfo files and run them through makeinfo" - @echo " gettext to make PO message catalogs" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " xml to make Docutils-native XML files" - @echo " pseudoxml to make pseudoxml-XML files for display purposes" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean: - rm -rf $(BUILDDIR)/* - -html: - $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -singlehtml: - $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml - @echo - @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." - -pickle: - $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/etcd3.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/etcd3.qhc" - -devhelp: - $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp - @echo - @echo "Build finished." - @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/etcd3" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/etcd3" - @echo "# devhelp" - -epub: - $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub - @echo - @echo "Build finished. The epub file is in $(BUILDDIR)/epub." - -latex: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make' in that directory to run these through (pdf)latex" \ - "(use \`make latexpdf' here to do that automatically)." - -latexpdf: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through pdflatex..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -latexpdfja: - $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo "Running LaTeX files through platex and dvipdfmx..." - $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja - @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." - -text: - $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text - @echo - @echo "Build finished. The text files are in $(BUILDDIR)/text." - -man: - $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man - @echo - @echo "Build finished. The manual pages are in $(BUILDDIR)/man." - -texinfo: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo - @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." - @echo "Run \`make' in that directory to run these through makeinfo" \ - "(use \`make info' here to do that automatically)." - -info: - $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo - @echo "Running Texinfo files through makeinfo..." - make -C $(BUILDDIR)/texinfo info - @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." - -gettext: - $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale - @echo - @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." - -changes: - $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -xml: - $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml - @echo - @echo "Build finished. The XML files are in $(BUILDDIR)/xml." - -pseudoxml: - $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml - @echo - @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/docs/_static/.placeholder b/docs/_static/.placeholder new file mode 100644 index 00000000..e69de29b diff --git a/tox.ini b/tox.ini index eb257e48..fbc99e09 100644 --- a/tox.ini +++ b/tox.ini @@ -4,6 +4,7 @@ env_list = unittests build lint + doc isolated_build = true [tox:.package] @@ -50,6 +51,14 @@ commands = black --line-length 90 --check --diff . +[testenv:doc] +extras = doc +allowlist_externals = + {toxinidir}/genproto.sh +commands = + {toxinidir}/genproto.sh + sphinx-build -b html -d docs/_build/doctress docs docs/_build + [testenv:flake8] commands=flake8 {posargs} From df2810a89e5d756f6440b1df297ae24d7ba18c63 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 13:28:23 +0100 Subject: [PATCH 11/23] ci: adding CI workflow with usual python jobs --- .github/workflows/ci.yml | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..455eee51 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,48 @@ +name: build package + +on: + pull_request: + branches: + - main + push: + tags: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.10' + - run: | + pip install tox + - name: Run linters + run: tox -e build || true + + test: + runs-on: ubuntu-latest + needs: build + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5.4.0 + with: + python-version: '3.10' + - run: | + pip install tox + - name: Run unittests + run: tox -e unittests + + lint: + runs-on: ubuntu-latest + needs: build + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.10' + - run: | + pip install tox + - name: Run linters + run: tox -e lint || true From 17b2385e2168eed171952b0766648042da5177ed Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 13:31:53 +0100 Subject: [PATCH 12/23] ci: ensure unit testing on various python versions used --- .github/workflows/ci.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 455eee51..f5393ff4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,11 +24,17 @@ jobs: test: runs-on: ubuntu-latest needs: build + strategy: + matrix: + pyversion: + - '3.6' + - '3.10' + - '3.12' steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5.4.0 with: - python-version: '3.10' + python-version: ${{ matrix.pyversion }} - run: | pip install tox - name: Run unittests From 08b3779ba19c82d491c803ce837d1f01cc83ac1e Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 14:08:10 +0100 Subject: [PATCH 13/23] ci: adding doc build --- .github/workflows/ci.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f5393ff4..d1a696ec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,3 +52,16 @@ jobs: pip install tox - name: Run linters run: tox -e lint || true + + doc: + runs-on: ubuntu-latest + needs: build + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.10' + - run: | + pip install tox + - name: Run linters + run: tox -e doc From f874aa56cec03952bbbe124f61a0870311ab23c9 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 14:13:01 +0100 Subject: [PATCH 14/23] fix: removing py36 test as no more supported at CI level --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d1a696ec..73a597a5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,7 +27,7 @@ jobs: strategy: matrix: pyversion: - - '3.6' + - '3.8' - '3.10' - '3.12' steps: From 68acc9f32018ff840e976fb4503f33c6d2f40787 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 14:17:43 +0100 Subject: [PATCH 15/23] build: fixing doc ToX target with missing deps --- tox.ini | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index fbc99e09..56002812 100644 --- a/tox.ini +++ b/tox.ini @@ -52,7 +52,10 @@ commands = [testenv:doc] -extras = doc +description = generate sphinx documentation +extras = + doc + protoc allowlist_externals = {toxinidir}/genproto.sh commands = From 13f9533fdd28a0e3159987d0bf81ac684c1c05c0 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 11 Mar 2025 14:44:21 +0100 Subject: [PATCH 16/23] ci: adding jfrog publication --- .github/workflows/publish.yml | 99 +++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 00000000..32f1eb36 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,99 @@ +name: build + +on: + push: + tags: + - '*' + +jobs: + publish: + runs-on: ledgerhq-shared-small + permissions: + id-token: write + contents: read + attestations: write + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.10' + - run: | + pip install tox + tox -e build + # initiate jfrog login and install jf + - name: Login to JFrog Ledger + uses: LedgerHQ/actions-security/actions/jfrog-login@actions/jfrog-login-1 + # upload package to jfrog + - name: upload package + run: jf rt u --build-name=python-etcd3-release --build-number=1 --module=etcd3 'dist/*.tar.gz' enclave-pypi-prod-green + # attest that the delivered package is authenticated as a CI build + - name: Attest + id: attest + uses: LedgerHQ/actions-security/actions/attest@actions/attest-1 + with: + subject-path: 'dist/*.tar.gz' + push-to-registry: false + - uses: LedgerHQ/actions/gemfury/publish@main + env: + PUSH_TOKEN: ${{ secrets.PYPI_PUSH_TOKEN }} + - uses: LedgerHQ/actions/nexus/publish@main + env: + GREEN_NEXUS_HOST: ${{ vars.GREEN_NEXUS_HOST }} + GREEN_NEXUS_USER: ${{ vars.GREEN_NEXUS_USER }} + GREEN_NEXUS_PASSWORD: ${{ secrets.GREEN_NEXUS_PASSWORD }} + - uses: actions/upload-artifact@v4 + with: + name: dist-${{ github.run_id }} + path: | + dist + retention-days: 2 + + validate: + runs-on: ledgerhq-shared-small + permissions: + id-token: write + contents: read + needs: + - publish + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + name: dist-${{ github.run_id }} + path: dist + - uses: actions/setup-python@v5 + with: + python-version: '3.10' + cache: 'pip' + - run: | + pip install build twine wheel-filename blob + # in order to allow test pip install after publish, get back pkg version + - name: get back local build version + id: get_pkg_version + run: | + from wheel_filename import parse_wheel_filename + import glob + import os + from random import choices + from string import ascii_letters + + whl = str(glob.glob('dist/*.whl')[0]); + pwf = parse_wheel_filename('dist/' + whl); + with open(os.environ["GITHUB_OUTPUT"], "a") as gh_output: + delimiter = "".join(choices(ascii_letters, k=16)) + gh_output.writelines([ + f"pkg_version<<{delimiter}\n", + f"{pwf.version}\n", + delimiter + "\n", + ]) + shell: python + - name: Login to JFrog Ledger + uses: LedgerHQ/actions-security/actions/jfrog-login@actions/jfrog-login-1 + # configure jfrog repo and test pip install from it for the delivered package + - name: set jfrog Repo URL + run: jf pipc --global --repo-resolve=enclave-pypi-virtual-green + - name: test install from jfrog + run: | + jf pip install etcd3==${{ steps.get_pkg_version.outputs.pkg_version }} + pip show etcd3 + shell: bash From e5553b6f24a4ba6b7990feab23d52d0d8b0be134 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Mon, 31 Mar 2025 13:07:23 +0200 Subject: [PATCH 17/23] ci: removing useless Nexus publishing --- .github/workflows/publish.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 32f1eb36..1d6798bb 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -36,11 +36,6 @@ jobs: - uses: LedgerHQ/actions/gemfury/publish@main env: PUSH_TOKEN: ${{ secrets.PYPI_PUSH_TOKEN }} - - uses: LedgerHQ/actions/nexus/publish@main - env: - GREEN_NEXUS_HOST: ${{ vars.GREEN_NEXUS_HOST }} - GREEN_NEXUS_USER: ${{ vars.GREEN_NEXUS_USER }} - GREEN_NEXUS_PASSWORD: ${{ secrets.GREEN_NEXUS_PASSWORD }} - uses: actions/upload-artifact@v4 with: name: dist-${{ github.run_id }} From 03f0b03124dd3dfd85de5f75f4e74ed82a28677c Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Mon, 31 Mar 2025 14:07:51 +0200 Subject: [PATCH 18/23] ci: update Ledger runner tag after renaming --- .github/workflows/publish.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 1d6798bb..637a0d8a 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -7,7 +7,7 @@ on: jobs: publish: - runs-on: ledgerhq-shared-small + runs-on: public-ledgerhq-shared-small permissions: id-token: write contents: read @@ -44,7 +44,7 @@ jobs: retention-days: 2 validate: - runs-on: ledgerhq-shared-small + runs-on: public-ledgerhq-shared-small permissions: id-token: write contents: read From 6f87906cc130137fdb953376cc376c18b86ec2cb Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Mon, 31 Mar 2025 15:40:43 +0200 Subject: [PATCH 19/23] build: removing generated files from gconf Tox is responsible for delivering these files using the build target. Moreover, if the working directory is dirty, ToX automatically increment the current version to a devX. instead of a given potential tag, to ensure that the delivered tarball do match the tag associated to a gconf state. This reason impose such a removing for proper delivery --- src/etcd3/etcdrpc/auth_pb2.py | 43 - src/etcd3/etcdrpc/kv_pb2.py | 41 - src/etcd3/etcdrpc/rpc_pb2.py | 229 ---- src/etcd3/etcdrpc/rpc_pb2_grpc.py | 1893 ----------------------------- 4 files changed, 2206 deletions(-) delete mode 100644 src/etcd3/etcdrpc/auth_pb2.py delete mode 100644 src/etcd3/etcdrpc/kv_pb2.py delete mode 100644 src/etcd3/etcdrpc/rpc_pb2.py delete mode 100644 src/etcd3/etcdrpc/rpc_pb2_grpc.py diff --git a/src/etcd3/etcdrpc/auth_pb2.py b/src/etcd3/etcdrpc/auth_pb2.py deleted file mode 100644 index e6ff470d..00000000 --- a/src/etcd3/etcdrpc/auth_pb2.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: auth.proto -# Protobuf Python Version: 5.28.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 5, - 28, - 1, - '', - 'auth.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\nauth.proto\x12\x06\x61uthpb\"5\n\x04User\x12\x0c\n\x04name\x18\x01 \x01(\x0c\x12\x10\n\x08password\x18\x02 \x01(\x0c\x12\r\n\x05roles\x18\x03 \x03(\t\"\x83\x01\n\nPermission\x12)\n\x08permType\x18\x01 \x01(\x0e\x32\x17.authpb.Permission.Type\x12\x0b\n\x03key\x18\x02 \x01(\x0c\x12\x11\n\trange_end\x18\x03 \x01(\x0c\"*\n\x04Type\x12\x08\n\x04READ\x10\x00\x12\t\n\x05WRITE\x10\x01\x12\r\n\tREADWRITE\x10\x02\"?\n\x04Role\x12\x0c\n\x04name\x18\x01 \x01(\x0c\x12)\n\rkeyPermission\x18\x02 \x03(\x0b\x32\x12.authpb.PermissionB\x15\n\x11io.etcd.jetcd.apiP\x01\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'auth_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\021io.etcd.jetcd.apiP\001' - _globals['_USER']._serialized_start=22 - _globals['_USER']._serialized_end=75 - _globals['_PERMISSION']._serialized_start=78 - _globals['_PERMISSION']._serialized_end=209 - _globals['_PERMISSION_TYPE']._serialized_start=167 - _globals['_PERMISSION_TYPE']._serialized_end=209 - _globals['_ROLE']._serialized_start=211 - _globals['_ROLE']._serialized_end=274 -# @@protoc_insertion_point(module_scope) diff --git a/src/etcd3/etcdrpc/kv_pb2.py b/src/etcd3/etcdrpc/kv_pb2.py deleted file mode 100644 index 093c299d..00000000 --- a/src/etcd3/etcdrpc/kv_pb2.py +++ /dev/null @@ -1,41 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: kv.proto -# Protobuf Python Version: 5.28.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 5, - 28, - 1, - '', - 'kv.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x08kv.proto\x12\x06mvccpb\"u\n\x08KeyValue\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x17\n\x0f\x63reate_revision\x18\x02 \x01(\x03\x12\x14\n\x0cmod_revision\x18\x03 \x01(\x03\x12\x0f\n\x07version\x18\x04 \x01(\x03\x12\r\n\x05value\x18\x05 \x01(\x0c\x12\r\n\x05lease\x18\x06 \x01(\x03\"\x91\x01\n\x05\x45vent\x12%\n\x04type\x18\x01 \x01(\x0e\x32\x17.mvccpb.Event.EventType\x12\x1c\n\x02kv\x18\x02 \x01(\x0b\x32\x10.mvccpb.KeyValue\x12!\n\x07prev_kv\x18\x03 \x01(\x0b\x32\x10.mvccpb.KeyValue\" \n\tEventType\x12\x07\n\x03PUT\x10\x00\x12\n\n\x06\x44\x45LETE\x10\x01\x42\x15\n\x11io.etcd.jetcd.apiP\x01\x62\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'kv_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\021io.etcd.jetcd.apiP\001' - _globals['_KEYVALUE']._serialized_start=20 - _globals['_KEYVALUE']._serialized_end=137 - _globals['_EVENT']._serialized_start=140 - _globals['_EVENT']._serialized_end=285 - _globals['_EVENT_EVENTTYPE']._serialized_start=253 - _globals['_EVENT_EVENTTYPE']._serialized_end=285 -# @@protoc_insertion_point(module_scope) diff --git a/src/etcd3/etcdrpc/rpc_pb2.py b/src/etcd3/etcdrpc/rpc_pb2.py deleted file mode 100644 index 0a9de62b..00000000 --- a/src/etcd3/etcdrpc/rpc_pb2.py +++ /dev/null @@ -1,229 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: rpc.proto -# Protobuf Python Version: 5.28.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 5, - 28, - 1, - '', - 'rpc.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from etcd3.etcdrpc import kv_pb2 as kv__pb2 -from etcd3.etcdrpc import auth_pb2 as auth__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\trpc.proto\x12\x0c\x65tcdserverpb\x1a\x08kv.proto\x1a\nauth.proto\"\\\n\x0eResponseHeader\x12\x12\n\ncluster_id\x18\x01 \x01(\x04\x12\x11\n\tmember_id\x18\x02 \x01(\x04\x12\x10\n\x08revision\x18\x03 \x01(\x03\x12\x11\n\traft_term\x18\x04 \x01(\x04\"\xe4\x03\n\x0cRangeRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x11\n\trange_end\x18\x02 \x01(\x0c\x12\r\n\x05limit\x18\x03 \x01(\x03\x12\x10\n\x08revision\x18\x04 \x01(\x03\x12\x38\n\nsort_order\x18\x05 \x01(\x0e\x32$.etcdserverpb.RangeRequest.SortOrder\x12:\n\x0bsort_target\x18\x06 \x01(\x0e\x32%.etcdserverpb.RangeRequest.SortTarget\x12\x14\n\x0cserializable\x18\x07 \x01(\x08\x12\x11\n\tkeys_only\x18\x08 \x01(\x08\x12\x12\n\ncount_only\x18\t \x01(\x08\x12\x18\n\x10min_mod_revision\x18\n \x01(\x03\x12\x18\n\x10max_mod_revision\x18\x0b \x01(\x03\x12\x1b\n\x13min_create_revision\x18\x0c \x01(\x03\x12\x1b\n\x13max_create_revision\x18\r \x01(\x03\".\n\tSortOrder\x12\x08\n\x04NONE\x10\x00\x12\n\n\x06\x41SCEND\x10\x01\x12\x0b\n\x07\x44\x45SCEND\x10\x02\"B\n\nSortTarget\x12\x07\n\x03KEY\x10\x00\x12\x0b\n\x07VERSION\x10\x01\x12\n\n\x06\x43REATE\x10\x02\x12\x07\n\x03MOD\x10\x03\x12\t\n\x05VALUE\x10\x04\"y\n\rRangeResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x1d\n\x03kvs\x18\x02 \x03(\x0b\x32\x10.mvccpb.KeyValue\x12\x0c\n\x04more\x18\x03 \x01(\x08\x12\r\n\x05\x63ount\x18\x04 \x01(\x03\"t\n\nPutRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\r\n\x05value\x18\x02 \x01(\x0c\x12\r\n\x05lease\x18\x03 \x01(\x03\x12\x0f\n\x07prev_kv\x18\x04 \x01(\x08\x12\x14\n\x0cignore_value\x18\x05 \x01(\x08\x12\x14\n\x0cignore_lease\x18\x06 \x01(\x08\"^\n\x0bPutResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12!\n\x07prev_kv\x18\x02 \x01(\x0b\x32\x10.mvccpb.KeyValue\"E\n\x12\x44\x65leteRangeRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x11\n\trange_end\x18\x02 \x01(\x0c\x12\x0f\n\x07prev_kv\x18\x03 \x01(\x08\"x\n\x13\x44\x65leteRangeResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x0f\n\x07\x64\x65leted\x18\x02 \x01(\x03\x12\"\n\x08prev_kvs\x18\x03 \x03(\x0b\x32\x10.mvccpb.KeyValue\"\xef\x01\n\tRequestOp\x12\x33\n\rrequest_range\x18\x01 \x01(\x0b\x32\x1a.etcdserverpb.RangeRequestH\x00\x12/\n\x0brequest_put\x18\x02 \x01(\x0b\x32\x18.etcdserverpb.PutRequestH\x00\x12@\n\x14request_delete_range\x18\x03 \x01(\x0b\x32 .etcdserverpb.DeleteRangeRequestH\x00\x12/\n\x0brequest_txn\x18\x04 \x01(\x0b\x32\x18.etcdserverpb.TxnRequestH\x00\x42\t\n\x07request\"\xf9\x01\n\nResponseOp\x12\x35\n\x0eresponse_range\x18\x01 \x01(\x0b\x32\x1b.etcdserverpb.RangeResponseH\x00\x12\x31\n\x0cresponse_put\x18\x02 \x01(\x0b\x32\x19.etcdserverpb.PutResponseH\x00\x12\x42\n\x15response_delete_range\x18\x03 \x01(\x0b\x32!.etcdserverpb.DeleteRangeResponseH\x00\x12\x31\n\x0cresponse_txn\x18\x04 \x01(\x0b\x32\x19.etcdserverpb.TxnResponseH\x00\x42\n\n\x08response\"\x96\x03\n\x07\x43ompare\x12\x33\n\x06result\x18\x01 \x01(\x0e\x32#.etcdserverpb.Compare.CompareResult\x12\x33\n\x06target\x18\x02 \x01(\x0e\x32#.etcdserverpb.Compare.CompareTarget\x12\x0b\n\x03key\x18\x03 \x01(\x0c\x12\x11\n\x07version\x18\x04 \x01(\x03H\x00\x12\x19\n\x0f\x63reate_revision\x18\x05 \x01(\x03H\x00\x12\x16\n\x0cmod_revision\x18\x06 \x01(\x03H\x00\x12\x0f\n\x05value\x18\x07 \x01(\x0cH\x00\x12\x0f\n\x05lease\x18\x08 \x01(\x03H\x00\x12\x11\n\trange_end\x18@ \x01(\x0c\"@\n\rCompareResult\x12\t\n\x05\x45QUAL\x10\x00\x12\x0b\n\x07GREATER\x10\x01\x12\x08\n\x04LESS\x10\x02\x12\r\n\tNOT_EQUAL\x10\x03\"G\n\rCompareTarget\x12\x0b\n\x07VERSION\x10\x00\x12\n\n\x06\x43REATE\x10\x01\x12\x07\n\x03MOD\x10\x02\x12\t\n\x05VALUE\x10\x03\x12\t\n\x05LEASE\x10\x04\x42\x0e\n\x0ctarget_union\"\x88\x01\n\nTxnRequest\x12&\n\x07\x63ompare\x18\x01 \x03(\x0b\x32\x15.etcdserverpb.Compare\x12(\n\x07success\x18\x02 \x03(\x0b\x32\x17.etcdserverpb.RequestOp\x12(\n\x07\x66\x61ilure\x18\x03 \x03(\x0b\x32\x17.etcdserverpb.RequestOp\"{\n\x0bTxnResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x11\n\tsucceeded\x18\x02 \x01(\x08\x12+\n\tresponses\x18\x03 \x03(\x0b\x32\x18.etcdserverpb.ResponseOp\"7\n\x11\x43ompactionRequest\x12\x10\n\x08revision\x18\x01 \x01(\x03\x12\x10\n\x08physical\x18\x02 \x01(\x08\"B\n\x12\x43ompactionResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"\r\n\x0bHashRequest\"J\n\x0cHashResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x0c\n\x04hash\x18\x02 \x01(\r\"!\n\rHashKVRequest\x12\x10\n\x08revision\x18\x01 \x01(\x03\"f\n\x0eHashKVResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x0c\n\x04hash\x18\x02 \x01(\r\x12\x18\n\x10\x63ompact_revision\x18\x03 \x01(\x03\"\x11\n\x0fSnapshotRequest\"g\n\x10SnapshotResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x17\n\x0fremaining_bytes\x18\x02 \x01(\x04\x12\x0c\n\x04\x62lob\x18\x03 \x01(\x0c\"\xd7\x01\n\x0cWatchRequest\x12:\n\x0e\x63reate_request\x18\x01 \x01(\x0b\x32 .etcdserverpb.WatchCreateRequestH\x00\x12:\n\x0e\x63\x61ncel_request\x18\x02 \x01(\x0b\x32 .etcdserverpb.WatchCancelRequestH\x00\x12>\n\x10progress_request\x18\x03 \x01(\x0b\x32\".etcdserverpb.WatchProgressRequestH\x00\x42\x0f\n\rrequest_union\"\xdb\x01\n\x12WatchCreateRequest\x12\x0b\n\x03key\x18\x01 \x01(\x0c\x12\x11\n\trange_end\x18\x02 \x01(\x0c\x12\x16\n\x0estart_revision\x18\x03 \x01(\x03\x12\x17\n\x0fprogress_notify\x18\x04 \x01(\x08\x12<\n\x07\x66ilters\x18\x05 \x03(\x0e\x32+.etcdserverpb.WatchCreateRequest.FilterType\x12\x0f\n\x07prev_kv\x18\x06 \x01(\x08\"%\n\nFilterType\x12\t\n\x05NOPUT\x10\x00\x12\x0c\n\x08NODELETE\x10\x01\"&\n\x12WatchCancelRequest\x12\x10\n\x08watch_id\x18\x01 \x01(\x03\"\x16\n\x14WatchProgressRequest\"\xc2\x01\n\rWatchResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x10\n\x08watch_id\x18\x02 \x01(\x03\x12\x0f\n\x07\x63reated\x18\x03 \x01(\x08\x12\x10\n\x08\x63\x61nceled\x18\x04 \x01(\x08\x12\x18\n\x10\x63ompact_revision\x18\x05 \x01(\x03\x12\x15\n\rcancel_reason\x18\x06 \x01(\t\x12\x1d\n\x06\x65vents\x18\x0b \x03(\x0b\x32\r.mvccpb.Event\",\n\x11LeaseGrantRequest\x12\x0b\n\x03TTL\x18\x01 \x01(\x03\x12\n\n\x02ID\x18\x02 \x01(\x03\"j\n\x12LeaseGrantResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\n\n\x02ID\x18\x02 \x01(\x03\x12\x0b\n\x03TTL\x18\x03 \x01(\x03\x12\r\n\x05\x65rror\x18\x04 \x01(\t\" \n\x12LeaseRevokeRequest\x12\n\n\x02ID\x18\x01 \x01(\x03\"C\n\x13LeaseRevokeResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"#\n\x15LeaseKeepAliveRequest\x12\n\n\x02ID\x18\x01 \x01(\x03\"_\n\x16LeaseKeepAliveResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\n\n\x02ID\x18\x02 \x01(\x03\x12\x0b\n\x03TTL\x18\x03 \x01(\x03\"2\n\x16LeaseTimeToLiveRequest\x12\n\n\x02ID\x18\x01 \x01(\x03\x12\x0c\n\x04keys\x18\x02 \x01(\x08\"\x82\x01\n\x17LeaseTimeToLiveResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\n\n\x02ID\x18\x02 \x01(\x03\x12\x0b\n\x03TTL\x18\x03 \x01(\x03\x12\x12\n\ngrantedTTL\x18\x04 \x01(\x03\x12\x0c\n\x04keys\x18\x05 \x03(\x0c\"H\n\x06Member\x12\n\n\x02ID\x18\x01 \x01(\x04\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x10\n\x08peerURLs\x18\x03 \x03(\t\x12\x12\n\nclientURLs\x18\x04 \x03(\t\"$\n\x10MemberAddRequest\x12\x10\n\x08peerURLs\x18\x01 \x03(\t\"\x8e\x01\n\x11MemberAddResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12$\n\x06member\x18\x02 \x01(\x0b\x32\x14.etcdserverpb.Member\x12%\n\x07members\x18\x03 \x03(\x0b\x32\x14.etcdserverpb.Member\"!\n\x13MemberRemoveRequest\x12\n\n\x02ID\x18\x01 \x01(\x04\"k\n\x14MemberRemoveResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12%\n\x07members\x18\x02 \x03(\x0b\x32\x14.etcdserverpb.Member\"3\n\x13MemberUpdateRequest\x12\n\n\x02ID\x18\x01 \x01(\x04\x12\x10\n\x08peerURLs\x18\x02 \x03(\t\"k\n\x14MemberUpdateResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12%\n\x07members\x18\x02 \x03(\x0b\x32\x14.etcdserverpb.Member\"\x13\n\x11MemberListRequest\"i\n\x12MemberListResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12%\n\x07members\x18\x02 \x03(\x0b\x32\x14.etcdserverpb.Member\"\x13\n\x11\x44\x65\x66ragmentRequest\"B\n\x12\x44\x65\x66ragmentResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"%\n\x11MoveLeaderRequest\x12\x10\n\x08targetID\x18\x01 \x01(\x04\"B\n\x12MoveLeaderResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"\xb6\x01\n\x0c\x41larmRequest\x12\x36\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32&.etcdserverpb.AlarmRequest.AlarmAction\x12\x10\n\x08memberID\x18\x02 \x01(\x04\x12&\n\x05\x61larm\x18\x03 \x01(\x0e\x32\x17.etcdserverpb.AlarmType\"4\n\x0b\x41larmAction\x12\x07\n\x03GET\x10\x00\x12\x0c\n\x08\x41\x43TIVATE\x10\x01\x12\x0e\n\nDEACTIVATE\x10\x02\"G\n\x0b\x41larmMember\x12\x10\n\x08memberID\x18\x01 \x01(\x04\x12&\n\x05\x61larm\x18\x02 \x01(\x0e\x32\x17.etcdserverpb.AlarmType\"h\n\rAlarmResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12)\n\x06\x61larms\x18\x02 \x03(\x0b\x32\x19.etcdserverpb.AlarmMember\"\x0f\n\rStatusRequest\"\x94\x01\n\x0eStatusResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x0e\n\x06\x64\x62Size\x18\x03 \x01(\x03\x12\x0e\n\x06leader\x18\x04 \x01(\x04\x12\x11\n\traftIndex\x18\x05 \x01(\x04\x12\x10\n\x08raftTerm\x18\x06 \x01(\x04\"\x13\n\x11\x41uthEnableRequest\"\x14\n\x12\x41uthDisableRequest\"5\n\x13\x41uthenticateRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"4\n\x12\x41uthUserAddRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"\"\n\x12\x41uthUserGetRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"%\n\x15\x41uthUserDeleteRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"?\n\x1d\x41uthUserChangePasswordRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"6\n\x18\x41uthUserGrantRoleRequest\x12\x0c\n\x04user\x18\x01 \x01(\t\x12\x0c\n\x04role\x18\x02 \x01(\t\"7\n\x19\x41uthUserRevokeRoleRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04role\x18\x02 \x01(\t\"\"\n\x12\x41uthRoleAddRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\"\"\n\x12\x41uthRoleGetRequest\x12\x0c\n\x04role\x18\x01 \x01(\t\"\x15\n\x13\x41uthUserListRequest\"\x15\n\x13\x41uthRoleListRequest\"%\n\x15\x41uthRoleDeleteRequest\x12\x0c\n\x04role\x18\x01 \x01(\t\"P\n\x1e\x41uthRoleGrantPermissionRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12 \n\x04perm\x18\x02 \x01(\x0b\x32\x12.authpb.Permission\"O\n\x1f\x41uthRoleRevokePermissionRequest\x12\x0c\n\x04role\x18\x01 \x01(\t\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x11\n\trange_end\x18\x03 \x01(\t\"B\n\x12\x41uthEnableResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"C\n\x13\x41uthDisableResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"S\n\x14\x41uthenticateResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\r\n\x05token\x18\x02 \x01(\t\"C\n\x13\x41uthUserAddResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"R\n\x13\x41uthUserGetResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\r\n\x05roles\x18\x02 \x03(\t\"F\n\x16\x41uthUserDeleteResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"N\n\x1e\x41uthUserChangePasswordResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"I\n\x19\x41uthUserGrantRoleResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"J\n\x1a\x41uthUserRevokeRoleResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"C\n\x13\x41uthRoleAddResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"e\n\x13\x41uthRoleGetResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12 \n\x04perm\x18\x02 \x03(\x0b\x32\x12.authpb.Permission\"S\n\x14\x41uthRoleListResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\r\n\x05roles\x18\x02 \x03(\t\"S\n\x14\x41uthUserListResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\x12\r\n\x05users\x18\x02 \x03(\t\"F\n\x16\x41uthRoleDeleteResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"O\n\x1f\x41uthRoleGrantPermissionResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader\"P\n AuthRoleRevokePermissionResponse\x12,\n\x06header\x18\x01 \x01(\x0b\x32\x1c.etcdserverpb.ResponseHeader*\"\n\tAlarmType\x12\x08\n\x04NONE\x10\x00\x12\x0b\n\x07NOSPACE\x10\x01\x32\xea\x02\n\x02KV\x12\x42\n\x05Range\x12\x1a.etcdserverpb.RangeRequest\x1a\x1b.etcdserverpb.RangeResponse\"\x00\x12<\n\x03Put\x12\x18.etcdserverpb.PutRequest\x1a\x19.etcdserverpb.PutResponse\"\x00\x12T\n\x0b\x44\x65leteRange\x12 .etcdserverpb.DeleteRangeRequest\x1a!.etcdserverpb.DeleteRangeResponse\"\x00\x12<\n\x03Txn\x12\x18.etcdserverpb.TxnRequest\x1a\x19.etcdserverpb.TxnResponse\"\x00\x12N\n\x07\x43ompact\x12\x1f.etcdserverpb.CompactionRequest\x1a .etcdserverpb.CompactionResponse\"\x00\x32\x9e\x01\n\x05Watch\x12M\n\x08Progress\x12\".etcdserverpb.WatchProgressRequest\x1a\x1b.etcdserverpb.WatchResponse\"\x00\x12\x46\n\x05Watch\x12\x1a.etcdserverpb.WatchRequest\x1a\x1b.etcdserverpb.WatchResponse\"\x00(\x01\x30\x01\x32\xf5\x02\n\x05Lease\x12Q\n\nLeaseGrant\x12\x1f.etcdserverpb.LeaseGrantRequest\x1a .etcdserverpb.LeaseGrantResponse\"\x00\x12T\n\x0bLeaseRevoke\x12 .etcdserverpb.LeaseRevokeRequest\x1a!.etcdserverpb.LeaseRevokeResponse\"\x00\x12\x61\n\x0eLeaseKeepAlive\x12#.etcdserverpb.LeaseKeepAliveRequest\x1a$.etcdserverpb.LeaseKeepAliveResponse\"\x00(\x01\x30\x01\x12`\n\x0fLeaseTimeToLive\x12$.etcdserverpb.LeaseTimeToLiveRequest\x1a%.etcdserverpb.LeaseTimeToLiveResponse\"\x00\x32\xde\x02\n\x07\x43luster\x12N\n\tMemberAdd\x12\x1e.etcdserverpb.MemberAddRequest\x1a\x1f.etcdserverpb.MemberAddResponse\"\x00\x12W\n\x0cMemberRemove\x12!.etcdserverpb.MemberRemoveRequest\x1a\".etcdserverpb.MemberRemoveResponse\"\x00\x12W\n\x0cMemberUpdate\x12!.etcdserverpb.MemberUpdateRequest\x1a\".etcdserverpb.MemberUpdateResponse\"\x00\x12Q\n\nMemberList\x12\x1f.etcdserverpb.MemberListRequest\x1a .etcdserverpb.MemberListResponse\"\x00\x32\x95\x04\n\x0bMaintenance\x12\x42\n\x05\x41larm\x12\x1a.etcdserverpb.AlarmRequest\x1a\x1b.etcdserverpb.AlarmResponse\"\x00\x12\x45\n\x06Status\x12\x1b.etcdserverpb.StatusRequest\x1a\x1c.etcdserverpb.StatusResponse\"\x00\x12Q\n\nDefragment\x12\x1f.etcdserverpb.DefragmentRequest\x1a .etcdserverpb.DefragmentResponse\"\x00\x12?\n\x04Hash\x12\x19.etcdserverpb.HashRequest\x1a\x1a.etcdserverpb.HashResponse\"\x00\x12\x45\n\x06HashKV\x12\x1b.etcdserverpb.HashKVRequest\x1a\x1c.etcdserverpb.HashKVResponse\"\x00\x12M\n\x08Snapshot\x12\x1d.etcdserverpb.SnapshotRequest\x1a\x1e.etcdserverpb.SnapshotResponse\"\x00\x30\x01\x12Q\n\nMoveLeader\x12\x1f.etcdserverpb.MoveLeaderRequest\x1a .etcdserverpb.MoveLeaderResponse\"\x00\x32\xdd\x0b\n\x04\x41uth\x12Q\n\nAuthEnable\x12\x1f.etcdserverpb.AuthEnableRequest\x1a .etcdserverpb.AuthEnableResponse\"\x00\x12T\n\x0b\x41uthDisable\x12 .etcdserverpb.AuthDisableRequest\x1a!.etcdserverpb.AuthDisableResponse\"\x00\x12W\n\x0c\x41uthenticate\x12!.etcdserverpb.AuthenticateRequest\x1a\".etcdserverpb.AuthenticateResponse\"\x00\x12P\n\x07UserAdd\x12 .etcdserverpb.AuthUserAddRequest\x1a!.etcdserverpb.AuthUserAddResponse\"\x00\x12P\n\x07UserGet\x12 .etcdserverpb.AuthUserGetRequest\x1a!.etcdserverpb.AuthUserGetResponse\"\x00\x12S\n\x08UserList\x12!.etcdserverpb.AuthUserListRequest\x1a\".etcdserverpb.AuthUserListResponse\"\x00\x12Y\n\nUserDelete\x12#.etcdserverpb.AuthUserDeleteRequest\x1a$.etcdserverpb.AuthUserDeleteResponse\"\x00\x12q\n\x12UserChangePassword\x12+.etcdserverpb.AuthUserChangePasswordRequest\x1a,.etcdserverpb.AuthUserChangePasswordResponse\"\x00\x12\x62\n\rUserGrantRole\x12&.etcdserverpb.AuthUserGrantRoleRequest\x1a\'.etcdserverpb.AuthUserGrantRoleResponse\"\x00\x12\x65\n\x0eUserRevokeRole\x12\'.etcdserverpb.AuthUserRevokeRoleRequest\x1a(.etcdserverpb.AuthUserRevokeRoleResponse\"\x00\x12P\n\x07RoleAdd\x12 .etcdserverpb.AuthRoleAddRequest\x1a!.etcdserverpb.AuthRoleAddResponse\"\x00\x12P\n\x07RoleGet\x12 .etcdserverpb.AuthRoleGetRequest\x1a!.etcdserverpb.AuthRoleGetResponse\"\x00\x12S\n\x08RoleList\x12!.etcdserverpb.AuthRoleListRequest\x1a\".etcdserverpb.AuthRoleListResponse\"\x00\x12Y\n\nRoleDelete\x12#.etcdserverpb.AuthRoleDeleteRequest\x1a$.etcdserverpb.AuthRoleDeleteResponse\"\x00\x12t\n\x13RoleGrantPermission\x12,.etcdserverpb.AuthRoleGrantPermissionRequest\x1a-.etcdserverpb.AuthRoleGrantPermissionResponse\"\x00\x12w\n\x14RoleRevokePermission\x12-.etcdserverpb.AuthRoleRevokePermissionRequest\x1a..etcdserverpb.AuthRoleRevokePermissionResponse\"\x00\x42)\n\x11io.etcd.jetcd.apiB\nJetcdProtoP\x01\xa2\x02\x05Jetcdb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rpc_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\021io.etcd.jetcd.apiB\nJetcdProtoP\001\242\002\005Jetcd' - _globals['_ALARMTYPE']._serialized_start=7482 - _globals['_ALARMTYPE']._serialized_end=7516 - _globals['_RESPONSEHEADER']._serialized_start=49 - _globals['_RESPONSEHEADER']._serialized_end=141 - _globals['_RANGEREQUEST']._serialized_start=144 - _globals['_RANGEREQUEST']._serialized_end=628 - _globals['_RANGEREQUEST_SORTORDER']._serialized_start=514 - _globals['_RANGEREQUEST_SORTORDER']._serialized_end=560 - _globals['_RANGEREQUEST_SORTTARGET']._serialized_start=562 - _globals['_RANGEREQUEST_SORTTARGET']._serialized_end=628 - _globals['_RANGERESPONSE']._serialized_start=630 - _globals['_RANGERESPONSE']._serialized_end=751 - _globals['_PUTREQUEST']._serialized_start=753 - _globals['_PUTREQUEST']._serialized_end=869 - _globals['_PUTRESPONSE']._serialized_start=871 - _globals['_PUTRESPONSE']._serialized_end=965 - _globals['_DELETERANGEREQUEST']._serialized_start=967 - _globals['_DELETERANGEREQUEST']._serialized_end=1036 - _globals['_DELETERANGERESPONSE']._serialized_start=1038 - _globals['_DELETERANGERESPONSE']._serialized_end=1158 - _globals['_REQUESTOP']._serialized_start=1161 - _globals['_REQUESTOP']._serialized_end=1400 - _globals['_RESPONSEOP']._serialized_start=1403 - _globals['_RESPONSEOP']._serialized_end=1652 - _globals['_COMPARE']._serialized_start=1655 - _globals['_COMPARE']._serialized_end=2061 - _globals['_COMPARE_COMPARERESULT']._serialized_start=1908 - _globals['_COMPARE_COMPARERESULT']._serialized_end=1972 - _globals['_COMPARE_COMPARETARGET']._serialized_start=1974 - _globals['_COMPARE_COMPARETARGET']._serialized_end=2045 - _globals['_TXNREQUEST']._serialized_start=2064 - _globals['_TXNREQUEST']._serialized_end=2200 - _globals['_TXNRESPONSE']._serialized_start=2202 - _globals['_TXNRESPONSE']._serialized_end=2325 - _globals['_COMPACTIONREQUEST']._serialized_start=2327 - _globals['_COMPACTIONREQUEST']._serialized_end=2382 - _globals['_COMPACTIONRESPONSE']._serialized_start=2384 - _globals['_COMPACTIONRESPONSE']._serialized_end=2450 - _globals['_HASHREQUEST']._serialized_start=2452 - _globals['_HASHREQUEST']._serialized_end=2465 - _globals['_HASHRESPONSE']._serialized_start=2467 - _globals['_HASHRESPONSE']._serialized_end=2541 - _globals['_HASHKVREQUEST']._serialized_start=2543 - _globals['_HASHKVREQUEST']._serialized_end=2576 - _globals['_HASHKVRESPONSE']._serialized_start=2578 - _globals['_HASHKVRESPONSE']._serialized_end=2680 - _globals['_SNAPSHOTREQUEST']._serialized_start=2682 - _globals['_SNAPSHOTREQUEST']._serialized_end=2699 - _globals['_SNAPSHOTRESPONSE']._serialized_start=2701 - _globals['_SNAPSHOTRESPONSE']._serialized_end=2804 - _globals['_WATCHREQUEST']._serialized_start=2807 - _globals['_WATCHREQUEST']._serialized_end=3022 - _globals['_WATCHCREATEREQUEST']._serialized_start=3025 - _globals['_WATCHCREATEREQUEST']._serialized_end=3244 - _globals['_WATCHCREATEREQUEST_FILTERTYPE']._serialized_start=3207 - _globals['_WATCHCREATEREQUEST_FILTERTYPE']._serialized_end=3244 - _globals['_WATCHCANCELREQUEST']._serialized_start=3246 - _globals['_WATCHCANCELREQUEST']._serialized_end=3284 - _globals['_WATCHPROGRESSREQUEST']._serialized_start=3286 - _globals['_WATCHPROGRESSREQUEST']._serialized_end=3308 - _globals['_WATCHRESPONSE']._serialized_start=3311 - _globals['_WATCHRESPONSE']._serialized_end=3505 - _globals['_LEASEGRANTREQUEST']._serialized_start=3507 - _globals['_LEASEGRANTREQUEST']._serialized_end=3551 - _globals['_LEASEGRANTRESPONSE']._serialized_start=3553 - _globals['_LEASEGRANTRESPONSE']._serialized_end=3659 - _globals['_LEASEREVOKEREQUEST']._serialized_start=3661 - _globals['_LEASEREVOKEREQUEST']._serialized_end=3693 - _globals['_LEASEREVOKERESPONSE']._serialized_start=3695 - _globals['_LEASEREVOKERESPONSE']._serialized_end=3762 - _globals['_LEASEKEEPALIVEREQUEST']._serialized_start=3764 - _globals['_LEASEKEEPALIVEREQUEST']._serialized_end=3799 - _globals['_LEASEKEEPALIVERESPONSE']._serialized_start=3801 - _globals['_LEASEKEEPALIVERESPONSE']._serialized_end=3896 - _globals['_LEASETIMETOLIVEREQUEST']._serialized_start=3898 - _globals['_LEASETIMETOLIVEREQUEST']._serialized_end=3948 - _globals['_LEASETIMETOLIVERESPONSE']._serialized_start=3951 - _globals['_LEASETIMETOLIVERESPONSE']._serialized_end=4081 - _globals['_MEMBER']._serialized_start=4083 - _globals['_MEMBER']._serialized_end=4155 - _globals['_MEMBERADDREQUEST']._serialized_start=4157 - _globals['_MEMBERADDREQUEST']._serialized_end=4193 - _globals['_MEMBERADDRESPONSE']._serialized_start=4196 - _globals['_MEMBERADDRESPONSE']._serialized_end=4338 - _globals['_MEMBERREMOVEREQUEST']._serialized_start=4340 - _globals['_MEMBERREMOVEREQUEST']._serialized_end=4373 - _globals['_MEMBERREMOVERESPONSE']._serialized_start=4375 - _globals['_MEMBERREMOVERESPONSE']._serialized_end=4482 - _globals['_MEMBERUPDATEREQUEST']._serialized_start=4484 - _globals['_MEMBERUPDATEREQUEST']._serialized_end=4535 - _globals['_MEMBERUPDATERESPONSE']._serialized_start=4537 - _globals['_MEMBERUPDATERESPONSE']._serialized_end=4644 - _globals['_MEMBERLISTREQUEST']._serialized_start=4646 - _globals['_MEMBERLISTREQUEST']._serialized_end=4665 - _globals['_MEMBERLISTRESPONSE']._serialized_start=4667 - _globals['_MEMBERLISTRESPONSE']._serialized_end=4772 - _globals['_DEFRAGMENTREQUEST']._serialized_start=4774 - _globals['_DEFRAGMENTREQUEST']._serialized_end=4793 - _globals['_DEFRAGMENTRESPONSE']._serialized_start=4795 - _globals['_DEFRAGMENTRESPONSE']._serialized_end=4861 - _globals['_MOVELEADERREQUEST']._serialized_start=4863 - _globals['_MOVELEADERREQUEST']._serialized_end=4900 - _globals['_MOVELEADERRESPONSE']._serialized_start=4902 - _globals['_MOVELEADERRESPONSE']._serialized_end=4968 - _globals['_ALARMREQUEST']._serialized_start=4971 - _globals['_ALARMREQUEST']._serialized_end=5153 - _globals['_ALARMREQUEST_ALARMACTION']._serialized_start=5101 - _globals['_ALARMREQUEST_ALARMACTION']._serialized_end=5153 - _globals['_ALARMMEMBER']._serialized_start=5155 - _globals['_ALARMMEMBER']._serialized_end=5226 - _globals['_ALARMRESPONSE']._serialized_start=5228 - _globals['_ALARMRESPONSE']._serialized_end=5332 - _globals['_STATUSREQUEST']._serialized_start=5334 - _globals['_STATUSREQUEST']._serialized_end=5349 - _globals['_STATUSRESPONSE']._serialized_start=5352 - _globals['_STATUSRESPONSE']._serialized_end=5500 - _globals['_AUTHENABLEREQUEST']._serialized_start=5502 - _globals['_AUTHENABLEREQUEST']._serialized_end=5521 - _globals['_AUTHDISABLEREQUEST']._serialized_start=5523 - _globals['_AUTHDISABLEREQUEST']._serialized_end=5543 - _globals['_AUTHENTICATEREQUEST']._serialized_start=5545 - _globals['_AUTHENTICATEREQUEST']._serialized_end=5598 - _globals['_AUTHUSERADDREQUEST']._serialized_start=5600 - _globals['_AUTHUSERADDREQUEST']._serialized_end=5652 - _globals['_AUTHUSERGETREQUEST']._serialized_start=5654 - _globals['_AUTHUSERGETREQUEST']._serialized_end=5688 - _globals['_AUTHUSERDELETEREQUEST']._serialized_start=5690 - _globals['_AUTHUSERDELETEREQUEST']._serialized_end=5727 - _globals['_AUTHUSERCHANGEPASSWORDREQUEST']._serialized_start=5729 - _globals['_AUTHUSERCHANGEPASSWORDREQUEST']._serialized_end=5792 - _globals['_AUTHUSERGRANTROLEREQUEST']._serialized_start=5794 - _globals['_AUTHUSERGRANTROLEREQUEST']._serialized_end=5848 - _globals['_AUTHUSERREVOKEROLEREQUEST']._serialized_start=5850 - _globals['_AUTHUSERREVOKEROLEREQUEST']._serialized_end=5905 - _globals['_AUTHROLEADDREQUEST']._serialized_start=5907 - _globals['_AUTHROLEADDREQUEST']._serialized_end=5941 - _globals['_AUTHROLEGETREQUEST']._serialized_start=5943 - _globals['_AUTHROLEGETREQUEST']._serialized_end=5977 - _globals['_AUTHUSERLISTREQUEST']._serialized_start=5979 - _globals['_AUTHUSERLISTREQUEST']._serialized_end=6000 - _globals['_AUTHROLELISTREQUEST']._serialized_start=6002 - _globals['_AUTHROLELISTREQUEST']._serialized_end=6023 - _globals['_AUTHROLEDELETEREQUEST']._serialized_start=6025 - _globals['_AUTHROLEDELETEREQUEST']._serialized_end=6062 - _globals['_AUTHROLEGRANTPERMISSIONREQUEST']._serialized_start=6064 - _globals['_AUTHROLEGRANTPERMISSIONREQUEST']._serialized_end=6144 - _globals['_AUTHROLEREVOKEPERMISSIONREQUEST']._serialized_start=6146 - _globals['_AUTHROLEREVOKEPERMISSIONREQUEST']._serialized_end=6225 - _globals['_AUTHENABLERESPONSE']._serialized_start=6227 - _globals['_AUTHENABLERESPONSE']._serialized_end=6293 - _globals['_AUTHDISABLERESPONSE']._serialized_start=6295 - _globals['_AUTHDISABLERESPONSE']._serialized_end=6362 - _globals['_AUTHENTICATERESPONSE']._serialized_start=6364 - _globals['_AUTHENTICATERESPONSE']._serialized_end=6447 - _globals['_AUTHUSERADDRESPONSE']._serialized_start=6449 - _globals['_AUTHUSERADDRESPONSE']._serialized_end=6516 - _globals['_AUTHUSERGETRESPONSE']._serialized_start=6518 - _globals['_AUTHUSERGETRESPONSE']._serialized_end=6600 - _globals['_AUTHUSERDELETERESPONSE']._serialized_start=6602 - _globals['_AUTHUSERDELETERESPONSE']._serialized_end=6672 - _globals['_AUTHUSERCHANGEPASSWORDRESPONSE']._serialized_start=6674 - _globals['_AUTHUSERCHANGEPASSWORDRESPONSE']._serialized_end=6752 - _globals['_AUTHUSERGRANTROLERESPONSE']._serialized_start=6754 - _globals['_AUTHUSERGRANTROLERESPONSE']._serialized_end=6827 - _globals['_AUTHUSERREVOKEROLERESPONSE']._serialized_start=6829 - _globals['_AUTHUSERREVOKEROLERESPONSE']._serialized_end=6903 - _globals['_AUTHROLEADDRESPONSE']._serialized_start=6905 - _globals['_AUTHROLEADDRESPONSE']._serialized_end=6972 - _globals['_AUTHROLEGETRESPONSE']._serialized_start=6974 - _globals['_AUTHROLEGETRESPONSE']._serialized_end=7075 - _globals['_AUTHROLELISTRESPONSE']._serialized_start=7077 - _globals['_AUTHROLELISTRESPONSE']._serialized_end=7160 - _globals['_AUTHUSERLISTRESPONSE']._serialized_start=7162 - _globals['_AUTHUSERLISTRESPONSE']._serialized_end=7245 - _globals['_AUTHROLEDELETERESPONSE']._serialized_start=7247 - _globals['_AUTHROLEDELETERESPONSE']._serialized_end=7317 - _globals['_AUTHROLEGRANTPERMISSIONRESPONSE']._serialized_start=7319 - _globals['_AUTHROLEGRANTPERMISSIONRESPONSE']._serialized_end=7398 - _globals['_AUTHROLEREVOKEPERMISSIONRESPONSE']._serialized_start=7400 - _globals['_AUTHROLEREVOKEPERMISSIONRESPONSE']._serialized_end=7480 - _globals['_KV']._serialized_start=7519 - _globals['_KV']._serialized_end=7881 - _globals['_WATCH']._serialized_start=7884 - _globals['_WATCH']._serialized_end=8042 - _globals['_LEASE']._serialized_start=8045 - _globals['_LEASE']._serialized_end=8418 - _globals['_CLUSTER']._serialized_start=8421 - _globals['_CLUSTER']._serialized_end=8771 - _globals['_MAINTENANCE']._serialized_start=8774 - _globals['_MAINTENANCE']._serialized_end=9307 - _globals['_AUTH']._serialized_start=9310 - _globals['_AUTH']._serialized_end=10811 -# @@protoc_insertion_point(module_scope) diff --git a/src/etcd3/etcdrpc/rpc_pb2_grpc.py b/src/etcd3/etcdrpc/rpc_pb2_grpc.py deleted file mode 100644 index ffc11b96..00000000 --- a/src/etcd3/etcdrpc/rpc_pb2_grpc.py +++ /dev/null @@ -1,1893 +0,0 @@ -# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT! -"""Client and server classes corresponding to protobuf-defined services.""" -import grpc -import warnings - -from etcd3.etcdrpc import rpc_pb2 as rpc__pb2 - -GRPC_GENERATED_VERSION = '1.68.1' -GRPC_VERSION = grpc.__version__ -_version_not_supported = False - -try: - from grpc._utilities import first_version_is_lower - _version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION) -except ImportError: - _version_not_supported = True - -if _version_not_supported: - raise RuntimeError( - f'The grpc package installed is at version {GRPC_VERSION},' - + f' but the generated code in rpc_pb2_grpc.py depends on' - + f' grpcio>={GRPC_GENERATED_VERSION}.' - + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' - + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' - ) - - -class KVStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.Range = channel.unary_unary( - '/etcdserverpb.KV/Range', - request_serializer=rpc__pb2.RangeRequest.SerializeToString, - response_deserializer=rpc__pb2.RangeResponse.FromString, - _registered_method=True) - self.Put = channel.unary_unary( - '/etcdserverpb.KV/Put', - request_serializer=rpc__pb2.PutRequest.SerializeToString, - response_deserializer=rpc__pb2.PutResponse.FromString, - _registered_method=True) - self.DeleteRange = channel.unary_unary( - '/etcdserverpb.KV/DeleteRange', - request_serializer=rpc__pb2.DeleteRangeRequest.SerializeToString, - response_deserializer=rpc__pb2.DeleteRangeResponse.FromString, - _registered_method=True) - self.Txn = channel.unary_unary( - '/etcdserverpb.KV/Txn', - request_serializer=rpc__pb2.TxnRequest.SerializeToString, - response_deserializer=rpc__pb2.TxnResponse.FromString, - _registered_method=True) - self.Compact = channel.unary_unary( - '/etcdserverpb.KV/Compact', - request_serializer=rpc__pb2.CompactionRequest.SerializeToString, - response_deserializer=rpc__pb2.CompactionResponse.FromString, - _registered_method=True) - - -class KVServicer(object): - """Missing associated documentation comment in .proto file.""" - - def Range(self, request, context): - """Range gets the keys in the range from the key-value store. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def Put(self, request, context): - """Put puts the given key into the key-value store. - A put request increments the revision of the key-value store - and generates one event in the event history. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def DeleteRange(self, request, context): - """DeleteRange deletes the given range from the key-value store. - A delete request increments the revision of the key-value store - and generates a delete event in the event history for every deleted key. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def Txn(self, request, context): - """Txn processes multiple requests in a single transaction. - A txn request increments the revision of the key-value store - and generates events with the same revision for every completed request. - It is not allowed to modify the same key several times within one txn. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def Compact(self, request, context): - """Compact compacts the event history in the etcd key-value store. The key-value - store should be periodically compacted or the event history will continue to grow - indefinitely. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_KVServicer_to_server(servicer, server): - rpc_method_handlers = { - 'Range': grpc.unary_unary_rpc_method_handler( - servicer.Range, - request_deserializer=rpc__pb2.RangeRequest.FromString, - response_serializer=rpc__pb2.RangeResponse.SerializeToString, - ), - 'Put': grpc.unary_unary_rpc_method_handler( - servicer.Put, - request_deserializer=rpc__pb2.PutRequest.FromString, - response_serializer=rpc__pb2.PutResponse.SerializeToString, - ), - 'DeleteRange': grpc.unary_unary_rpc_method_handler( - servicer.DeleteRange, - request_deserializer=rpc__pb2.DeleteRangeRequest.FromString, - response_serializer=rpc__pb2.DeleteRangeResponse.SerializeToString, - ), - 'Txn': grpc.unary_unary_rpc_method_handler( - servicer.Txn, - request_deserializer=rpc__pb2.TxnRequest.FromString, - response_serializer=rpc__pb2.TxnResponse.SerializeToString, - ), - 'Compact': grpc.unary_unary_rpc_method_handler( - servicer.Compact, - request_deserializer=rpc__pb2.CompactionRequest.FromString, - response_serializer=rpc__pb2.CompactionResponse.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'etcdserverpb.KV', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('etcdserverpb.KV', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class KV(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def Range(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.KV/Range', - rpc__pb2.RangeRequest.SerializeToString, - rpc__pb2.RangeResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def Put(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.KV/Put', - rpc__pb2.PutRequest.SerializeToString, - rpc__pb2.PutResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def DeleteRange(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.KV/DeleteRange', - rpc__pb2.DeleteRangeRequest.SerializeToString, - rpc__pb2.DeleteRangeResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def Txn(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.KV/Txn', - rpc__pb2.TxnRequest.SerializeToString, - rpc__pb2.TxnResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def Compact(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.KV/Compact', - rpc__pb2.CompactionRequest.SerializeToString, - rpc__pb2.CompactionResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - -class WatchStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.Progress = channel.unary_unary( - '/etcdserverpb.Watch/Progress', - request_serializer=rpc__pb2.WatchProgressRequest.SerializeToString, - response_deserializer=rpc__pb2.WatchResponse.FromString, - _registered_method=True) - self.Watch = channel.stream_stream( - '/etcdserverpb.Watch/Watch', - request_serializer=rpc__pb2.WatchRequest.SerializeToString, - response_deserializer=rpc__pb2.WatchResponse.FromString, - _registered_method=True) - - -class WatchServicer(object): - """Missing associated documentation comment in .proto file.""" - - def Progress(self, request, context): - """Progress requests that a watch stream progress status - be sent in the watch response stream as soon as possible. - For watch progress responses, the header.revision indicates progress. All future events - received in this stream are guaranteed to have a higher revision number than the - header.revision number. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def Watch(self, request_iterator, context): - """Watch watches for events happening or that have happened. Both input and output - are streams; the input stream is for creating and canceling watchers and the output - stream sends events. One watch RPC can watch on multiple key ranges, streaming events - for several watches at once. The entire event history can be watched starting from the - last compaction revision. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_WatchServicer_to_server(servicer, server): - rpc_method_handlers = { - 'Progress': grpc.unary_unary_rpc_method_handler( - servicer.Progress, - request_deserializer=rpc__pb2.WatchProgressRequest.FromString, - response_serializer=rpc__pb2.WatchResponse.SerializeToString, - ), - 'Watch': grpc.stream_stream_rpc_method_handler( - servicer.Watch, - request_deserializer=rpc__pb2.WatchRequest.FromString, - response_serializer=rpc__pb2.WatchResponse.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'etcdserverpb.Watch', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('etcdserverpb.Watch', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class Watch(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def Progress(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Watch/Progress', - rpc__pb2.WatchProgressRequest.SerializeToString, - rpc__pb2.WatchResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def Watch(request_iterator, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.stream_stream( - request_iterator, - target, - '/etcdserverpb.Watch/Watch', - rpc__pb2.WatchRequest.SerializeToString, - rpc__pb2.WatchResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - -class LeaseStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.LeaseGrant = channel.unary_unary( - '/etcdserverpb.Lease/LeaseGrant', - request_serializer=rpc__pb2.LeaseGrantRequest.SerializeToString, - response_deserializer=rpc__pb2.LeaseGrantResponse.FromString, - _registered_method=True) - self.LeaseRevoke = channel.unary_unary( - '/etcdserverpb.Lease/LeaseRevoke', - request_serializer=rpc__pb2.LeaseRevokeRequest.SerializeToString, - response_deserializer=rpc__pb2.LeaseRevokeResponse.FromString, - _registered_method=True) - self.LeaseKeepAlive = channel.stream_stream( - '/etcdserverpb.Lease/LeaseKeepAlive', - request_serializer=rpc__pb2.LeaseKeepAliveRequest.SerializeToString, - response_deserializer=rpc__pb2.LeaseKeepAliveResponse.FromString, - _registered_method=True) - self.LeaseTimeToLive = channel.unary_unary( - '/etcdserverpb.Lease/LeaseTimeToLive', - request_serializer=rpc__pb2.LeaseTimeToLiveRequest.SerializeToString, - response_deserializer=rpc__pb2.LeaseTimeToLiveResponse.FromString, - _registered_method=True) - - -class LeaseServicer(object): - """Missing associated documentation comment in .proto file.""" - - def LeaseGrant(self, request, context): - """LeaseGrant creates a lease which expires if the server does not receive a keepAlive - within a given time to live period. All keys attached to the lease will be expired and - deleted if the lease expires. Each expired key generates a delete event in the event history. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def LeaseRevoke(self, request, context): - """LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def LeaseKeepAlive(self, request_iterator, context): - """LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client - to the server and streaming keep alive responses from the server to the client. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def LeaseTimeToLive(self, request, context): - """LeaseTimeToLive retrieves lease information. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_LeaseServicer_to_server(servicer, server): - rpc_method_handlers = { - 'LeaseGrant': grpc.unary_unary_rpc_method_handler( - servicer.LeaseGrant, - request_deserializer=rpc__pb2.LeaseGrantRequest.FromString, - response_serializer=rpc__pb2.LeaseGrantResponse.SerializeToString, - ), - 'LeaseRevoke': grpc.unary_unary_rpc_method_handler( - servicer.LeaseRevoke, - request_deserializer=rpc__pb2.LeaseRevokeRequest.FromString, - response_serializer=rpc__pb2.LeaseRevokeResponse.SerializeToString, - ), - 'LeaseKeepAlive': grpc.stream_stream_rpc_method_handler( - servicer.LeaseKeepAlive, - request_deserializer=rpc__pb2.LeaseKeepAliveRequest.FromString, - response_serializer=rpc__pb2.LeaseKeepAliveResponse.SerializeToString, - ), - 'LeaseTimeToLive': grpc.unary_unary_rpc_method_handler( - servicer.LeaseTimeToLive, - request_deserializer=rpc__pb2.LeaseTimeToLiveRequest.FromString, - response_serializer=rpc__pb2.LeaseTimeToLiveResponse.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'etcdserverpb.Lease', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('etcdserverpb.Lease', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class Lease(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def LeaseGrant(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Lease/LeaseGrant', - rpc__pb2.LeaseGrantRequest.SerializeToString, - rpc__pb2.LeaseGrantResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def LeaseRevoke(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Lease/LeaseRevoke', - rpc__pb2.LeaseRevokeRequest.SerializeToString, - rpc__pb2.LeaseRevokeResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def LeaseKeepAlive(request_iterator, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.stream_stream( - request_iterator, - target, - '/etcdserverpb.Lease/LeaseKeepAlive', - rpc__pb2.LeaseKeepAliveRequest.SerializeToString, - rpc__pb2.LeaseKeepAliveResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def LeaseTimeToLive(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Lease/LeaseTimeToLive', - rpc__pb2.LeaseTimeToLiveRequest.SerializeToString, - rpc__pb2.LeaseTimeToLiveResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - -class ClusterStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.MemberAdd = channel.unary_unary( - '/etcdserverpb.Cluster/MemberAdd', - request_serializer=rpc__pb2.MemberAddRequest.SerializeToString, - response_deserializer=rpc__pb2.MemberAddResponse.FromString, - _registered_method=True) - self.MemberRemove = channel.unary_unary( - '/etcdserverpb.Cluster/MemberRemove', - request_serializer=rpc__pb2.MemberRemoveRequest.SerializeToString, - response_deserializer=rpc__pb2.MemberRemoveResponse.FromString, - _registered_method=True) - self.MemberUpdate = channel.unary_unary( - '/etcdserverpb.Cluster/MemberUpdate', - request_serializer=rpc__pb2.MemberUpdateRequest.SerializeToString, - response_deserializer=rpc__pb2.MemberUpdateResponse.FromString, - _registered_method=True) - self.MemberList = channel.unary_unary( - '/etcdserverpb.Cluster/MemberList', - request_serializer=rpc__pb2.MemberListRequest.SerializeToString, - response_deserializer=rpc__pb2.MemberListResponse.FromString, - _registered_method=True) - - -class ClusterServicer(object): - """Missing associated documentation comment in .proto file.""" - - def MemberAdd(self, request, context): - """MemberAdd adds a member into the cluster. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def MemberRemove(self, request, context): - """MemberRemove removes an existing member from the cluster. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def MemberUpdate(self, request, context): - """MemberUpdate updates the member configuration. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def MemberList(self, request, context): - """MemberList lists all the members in the cluster. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_ClusterServicer_to_server(servicer, server): - rpc_method_handlers = { - 'MemberAdd': grpc.unary_unary_rpc_method_handler( - servicer.MemberAdd, - request_deserializer=rpc__pb2.MemberAddRequest.FromString, - response_serializer=rpc__pb2.MemberAddResponse.SerializeToString, - ), - 'MemberRemove': grpc.unary_unary_rpc_method_handler( - servicer.MemberRemove, - request_deserializer=rpc__pb2.MemberRemoveRequest.FromString, - response_serializer=rpc__pb2.MemberRemoveResponse.SerializeToString, - ), - 'MemberUpdate': grpc.unary_unary_rpc_method_handler( - servicer.MemberUpdate, - request_deserializer=rpc__pb2.MemberUpdateRequest.FromString, - response_serializer=rpc__pb2.MemberUpdateResponse.SerializeToString, - ), - 'MemberList': grpc.unary_unary_rpc_method_handler( - servicer.MemberList, - request_deserializer=rpc__pb2.MemberListRequest.FromString, - response_serializer=rpc__pb2.MemberListResponse.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'etcdserverpb.Cluster', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('etcdserverpb.Cluster', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class Cluster(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def MemberAdd(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Cluster/MemberAdd', - rpc__pb2.MemberAddRequest.SerializeToString, - rpc__pb2.MemberAddResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def MemberRemove(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Cluster/MemberRemove', - rpc__pb2.MemberRemoveRequest.SerializeToString, - rpc__pb2.MemberRemoveResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def MemberUpdate(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Cluster/MemberUpdate', - rpc__pb2.MemberUpdateRequest.SerializeToString, - rpc__pb2.MemberUpdateResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def MemberList(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Cluster/MemberList', - rpc__pb2.MemberListRequest.SerializeToString, - rpc__pb2.MemberListResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - -class MaintenanceStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.Alarm = channel.unary_unary( - '/etcdserverpb.Maintenance/Alarm', - request_serializer=rpc__pb2.AlarmRequest.SerializeToString, - response_deserializer=rpc__pb2.AlarmResponse.FromString, - _registered_method=True) - self.Status = channel.unary_unary( - '/etcdserverpb.Maintenance/Status', - request_serializer=rpc__pb2.StatusRequest.SerializeToString, - response_deserializer=rpc__pb2.StatusResponse.FromString, - _registered_method=True) - self.Defragment = channel.unary_unary( - '/etcdserverpb.Maintenance/Defragment', - request_serializer=rpc__pb2.DefragmentRequest.SerializeToString, - response_deserializer=rpc__pb2.DefragmentResponse.FromString, - _registered_method=True) - self.Hash = channel.unary_unary( - '/etcdserverpb.Maintenance/Hash', - request_serializer=rpc__pb2.HashRequest.SerializeToString, - response_deserializer=rpc__pb2.HashResponse.FromString, - _registered_method=True) - self.HashKV = channel.unary_unary( - '/etcdserverpb.Maintenance/HashKV', - request_serializer=rpc__pb2.HashKVRequest.SerializeToString, - response_deserializer=rpc__pb2.HashKVResponse.FromString, - _registered_method=True) - self.Snapshot = channel.unary_stream( - '/etcdserverpb.Maintenance/Snapshot', - request_serializer=rpc__pb2.SnapshotRequest.SerializeToString, - response_deserializer=rpc__pb2.SnapshotResponse.FromString, - _registered_method=True) - self.MoveLeader = channel.unary_unary( - '/etcdserverpb.Maintenance/MoveLeader', - request_serializer=rpc__pb2.MoveLeaderRequest.SerializeToString, - response_deserializer=rpc__pb2.MoveLeaderResponse.FromString, - _registered_method=True) - - -class MaintenanceServicer(object): - """Missing associated documentation comment in .proto file.""" - - def Alarm(self, request, context): - """Alarm activates, deactivates, and queries alarms regarding cluster health. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def Status(self, request, context): - """Status gets the status of the member. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def Defragment(self, request, context): - """Defragment defragments a member's backend database to recover storage space. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def Hash(self, request, context): - """Hash returns the hash of the local KV state for consistency checking purpose. - This is designed for testing; do not use this in production when there - are ongoing transactions. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def HashKV(self, request, context): - """HashKV computes the hash of all MVCC keys up to a given revision. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def Snapshot(self, request, context): - """Snapshot sends a snapshot of the entire backend from a member over a stream to a client. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def MoveLeader(self, request, context): - """MoveLeader requests current leader node to transfer its leadership to transferee. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_MaintenanceServicer_to_server(servicer, server): - rpc_method_handlers = { - 'Alarm': grpc.unary_unary_rpc_method_handler( - servicer.Alarm, - request_deserializer=rpc__pb2.AlarmRequest.FromString, - response_serializer=rpc__pb2.AlarmResponse.SerializeToString, - ), - 'Status': grpc.unary_unary_rpc_method_handler( - servicer.Status, - request_deserializer=rpc__pb2.StatusRequest.FromString, - response_serializer=rpc__pb2.StatusResponse.SerializeToString, - ), - 'Defragment': grpc.unary_unary_rpc_method_handler( - servicer.Defragment, - request_deserializer=rpc__pb2.DefragmentRequest.FromString, - response_serializer=rpc__pb2.DefragmentResponse.SerializeToString, - ), - 'Hash': grpc.unary_unary_rpc_method_handler( - servicer.Hash, - request_deserializer=rpc__pb2.HashRequest.FromString, - response_serializer=rpc__pb2.HashResponse.SerializeToString, - ), - 'HashKV': grpc.unary_unary_rpc_method_handler( - servicer.HashKV, - request_deserializer=rpc__pb2.HashKVRequest.FromString, - response_serializer=rpc__pb2.HashKVResponse.SerializeToString, - ), - 'Snapshot': grpc.unary_stream_rpc_method_handler( - servicer.Snapshot, - request_deserializer=rpc__pb2.SnapshotRequest.FromString, - response_serializer=rpc__pb2.SnapshotResponse.SerializeToString, - ), - 'MoveLeader': grpc.unary_unary_rpc_method_handler( - servicer.MoveLeader, - request_deserializer=rpc__pb2.MoveLeaderRequest.FromString, - response_serializer=rpc__pb2.MoveLeaderResponse.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'etcdserverpb.Maintenance', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('etcdserverpb.Maintenance', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class Maintenance(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def Alarm(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Maintenance/Alarm', - rpc__pb2.AlarmRequest.SerializeToString, - rpc__pb2.AlarmResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def Status(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Maintenance/Status', - rpc__pb2.StatusRequest.SerializeToString, - rpc__pb2.StatusResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def Defragment(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Maintenance/Defragment', - rpc__pb2.DefragmentRequest.SerializeToString, - rpc__pb2.DefragmentResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def Hash(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Maintenance/Hash', - rpc__pb2.HashRequest.SerializeToString, - rpc__pb2.HashResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def HashKV(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Maintenance/HashKV', - rpc__pb2.HashKVRequest.SerializeToString, - rpc__pb2.HashKVResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def Snapshot(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_stream( - request, - target, - '/etcdserverpb.Maintenance/Snapshot', - rpc__pb2.SnapshotRequest.SerializeToString, - rpc__pb2.SnapshotResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def MoveLeader(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Maintenance/MoveLeader', - rpc__pb2.MoveLeaderRequest.SerializeToString, - rpc__pb2.MoveLeaderResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - -class AuthStub(object): - """Missing associated documentation comment in .proto file.""" - - def __init__(self, channel): - """Constructor. - - Args: - channel: A grpc.Channel. - """ - self.AuthEnable = channel.unary_unary( - '/etcdserverpb.Auth/AuthEnable', - request_serializer=rpc__pb2.AuthEnableRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthEnableResponse.FromString, - _registered_method=True) - self.AuthDisable = channel.unary_unary( - '/etcdserverpb.Auth/AuthDisable', - request_serializer=rpc__pb2.AuthDisableRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthDisableResponse.FromString, - _registered_method=True) - self.Authenticate = channel.unary_unary( - '/etcdserverpb.Auth/Authenticate', - request_serializer=rpc__pb2.AuthenticateRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthenticateResponse.FromString, - _registered_method=True) - self.UserAdd = channel.unary_unary( - '/etcdserverpb.Auth/UserAdd', - request_serializer=rpc__pb2.AuthUserAddRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthUserAddResponse.FromString, - _registered_method=True) - self.UserGet = channel.unary_unary( - '/etcdserverpb.Auth/UserGet', - request_serializer=rpc__pb2.AuthUserGetRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthUserGetResponse.FromString, - _registered_method=True) - self.UserList = channel.unary_unary( - '/etcdserverpb.Auth/UserList', - request_serializer=rpc__pb2.AuthUserListRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthUserListResponse.FromString, - _registered_method=True) - self.UserDelete = channel.unary_unary( - '/etcdserverpb.Auth/UserDelete', - request_serializer=rpc__pb2.AuthUserDeleteRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthUserDeleteResponse.FromString, - _registered_method=True) - self.UserChangePassword = channel.unary_unary( - '/etcdserverpb.Auth/UserChangePassword', - request_serializer=rpc__pb2.AuthUserChangePasswordRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthUserChangePasswordResponse.FromString, - _registered_method=True) - self.UserGrantRole = channel.unary_unary( - '/etcdserverpb.Auth/UserGrantRole', - request_serializer=rpc__pb2.AuthUserGrantRoleRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthUserGrantRoleResponse.FromString, - _registered_method=True) - self.UserRevokeRole = channel.unary_unary( - '/etcdserverpb.Auth/UserRevokeRole', - request_serializer=rpc__pb2.AuthUserRevokeRoleRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthUserRevokeRoleResponse.FromString, - _registered_method=True) - self.RoleAdd = channel.unary_unary( - '/etcdserverpb.Auth/RoleAdd', - request_serializer=rpc__pb2.AuthRoleAddRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthRoleAddResponse.FromString, - _registered_method=True) - self.RoleGet = channel.unary_unary( - '/etcdserverpb.Auth/RoleGet', - request_serializer=rpc__pb2.AuthRoleGetRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthRoleGetResponse.FromString, - _registered_method=True) - self.RoleList = channel.unary_unary( - '/etcdserverpb.Auth/RoleList', - request_serializer=rpc__pb2.AuthRoleListRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthRoleListResponse.FromString, - _registered_method=True) - self.RoleDelete = channel.unary_unary( - '/etcdserverpb.Auth/RoleDelete', - request_serializer=rpc__pb2.AuthRoleDeleteRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthRoleDeleteResponse.FromString, - _registered_method=True) - self.RoleGrantPermission = channel.unary_unary( - '/etcdserverpb.Auth/RoleGrantPermission', - request_serializer=rpc__pb2.AuthRoleGrantPermissionRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthRoleGrantPermissionResponse.FromString, - _registered_method=True) - self.RoleRevokePermission = channel.unary_unary( - '/etcdserverpb.Auth/RoleRevokePermission', - request_serializer=rpc__pb2.AuthRoleRevokePermissionRequest.SerializeToString, - response_deserializer=rpc__pb2.AuthRoleRevokePermissionResponse.FromString, - _registered_method=True) - - -class AuthServicer(object): - """Missing associated documentation comment in .proto file.""" - - def AuthEnable(self, request, context): - """AuthEnable enables authentication. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def AuthDisable(self, request, context): - """AuthDisable disables authentication. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def Authenticate(self, request, context): - """Authenticate processes an authenticate request. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UserAdd(self, request, context): - """UserAdd adds a new user. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UserGet(self, request, context): - """UserGet gets detailed user information. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UserList(self, request, context): - """UserList gets a list of all users. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UserDelete(self, request, context): - """UserDelete deletes a specified user. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UserChangePassword(self, request, context): - """UserChangePassword changes the password of a specified user. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UserGrantRole(self, request, context): - """UserGrant grants a role to a specified user. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def UserRevokeRole(self, request, context): - """UserRevokeRole revokes a role of specified user. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def RoleAdd(self, request, context): - """RoleAdd adds a new role. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def RoleGet(self, request, context): - """RoleGet gets detailed role information. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def RoleList(self, request, context): - """RoleList gets lists of all roles. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def RoleDelete(self, request, context): - """RoleDelete deletes a specified role. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def RoleGrantPermission(self, request, context): - """RoleGrantPermission grants a permission of a specified key or range to a specified role. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - def RoleRevokePermission(self, request, context): - """RoleRevokePermission revokes a key or range permission of a specified role. - """ - context.set_code(grpc.StatusCode.UNIMPLEMENTED) - context.set_details('Method not implemented!') - raise NotImplementedError('Method not implemented!') - - -def add_AuthServicer_to_server(servicer, server): - rpc_method_handlers = { - 'AuthEnable': grpc.unary_unary_rpc_method_handler( - servicer.AuthEnable, - request_deserializer=rpc__pb2.AuthEnableRequest.FromString, - response_serializer=rpc__pb2.AuthEnableResponse.SerializeToString, - ), - 'AuthDisable': grpc.unary_unary_rpc_method_handler( - servicer.AuthDisable, - request_deserializer=rpc__pb2.AuthDisableRequest.FromString, - response_serializer=rpc__pb2.AuthDisableResponse.SerializeToString, - ), - 'Authenticate': grpc.unary_unary_rpc_method_handler( - servicer.Authenticate, - request_deserializer=rpc__pb2.AuthenticateRequest.FromString, - response_serializer=rpc__pb2.AuthenticateResponse.SerializeToString, - ), - 'UserAdd': grpc.unary_unary_rpc_method_handler( - servicer.UserAdd, - request_deserializer=rpc__pb2.AuthUserAddRequest.FromString, - response_serializer=rpc__pb2.AuthUserAddResponse.SerializeToString, - ), - 'UserGet': grpc.unary_unary_rpc_method_handler( - servicer.UserGet, - request_deserializer=rpc__pb2.AuthUserGetRequest.FromString, - response_serializer=rpc__pb2.AuthUserGetResponse.SerializeToString, - ), - 'UserList': grpc.unary_unary_rpc_method_handler( - servicer.UserList, - request_deserializer=rpc__pb2.AuthUserListRequest.FromString, - response_serializer=rpc__pb2.AuthUserListResponse.SerializeToString, - ), - 'UserDelete': grpc.unary_unary_rpc_method_handler( - servicer.UserDelete, - request_deserializer=rpc__pb2.AuthUserDeleteRequest.FromString, - response_serializer=rpc__pb2.AuthUserDeleteResponse.SerializeToString, - ), - 'UserChangePassword': grpc.unary_unary_rpc_method_handler( - servicer.UserChangePassword, - request_deserializer=rpc__pb2.AuthUserChangePasswordRequest.FromString, - response_serializer=rpc__pb2.AuthUserChangePasswordResponse.SerializeToString, - ), - 'UserGrantRole': grpc.unary_unary_rpc_method_handler( - servicer.UserGrantRole, - request_deserializer=rpc__pb2.AuthUserGrantRoleRequest.FromString, - response_serializer=rpc__pb2.AuthUserGrantRoleResponse.SerializeToString, - ), - 'UserRevokeRole': grpc.unary_unary_rpc_method_handler( - servicer.UserRevokeRole, - request_deserializer=rpc__pb2.AuthUserRevokeRoleRequest.FromString, - response_serializer=rpc__pb2.AuthUserRevokeRoleResponse.SerializeToString, - ), - 'RoleAdd': grpc.unary_unary_rpc_method_handler( - servicer.RoleAdd, - request_deserializer=rpc__pb2.AuthRoleAddRequest.FromString, - response_serializer=rpc__pb2.AuthRoleAddResponse.SerializeToString, - ), - 'RoleGet': grpc.unary_unary_rpc_method_handler( - servicer.RoleGet, - request_deserializer=rpc__pb2.AuthRoleGetRequest.FromString, - response_serializer=rpc__pb2.AuthRoleGetResponse.SerializeToString, - ), - 'RoleList': grpc.unary_unary_rpc_method_handler( - servicer.RoleList, - request_deserializer=rpc__pb2.AuthRoleListRequest.FromString, - response_serializer=rpc__pb2.AuthRoleListResponse.SerializeToString, - ), - 'RoleDelete': grpc.unary_unary_rpc_method_handler( - servicer.RoleDelete, - request_deserializer=rpc__pb2.AuthRoleDeleteRequest.FromString, - response_serializer=rpc__pb2.AuthRoleDeleteResponse.SerializeToString, - ), - 'RoleGrantPermission': grpc.unary_unary_rpc_method_handler( - servicer.RoleGrantPermission, - request_deserializer=rpc__pb2.AuthRoleGrantPermissionRequest.FromString, - response_serializer=rpc__pb2.AuthRoleGrantPermissionResponse.SerializeToString, - ), - 'RoleRevokePermission': grpc.unary_unary_rpc_method_handler( - servicer.RoleRevokePermission, - request_deserializer=rpc__pb2.AuthRoleRevokePermissionRequest.FromString, - response_serializer=rpc__pb2.AuthRoleRevokePermissionResponse.SerializeToString, - ), - } - generic_handler = grpc.method_handlers_generic_handler( - 'etcdserverpb.Auth', rpc_method_handlers) - server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('etcdserverpb.Auth', rpc_method_handlers) - - - # This class is part of an EXPERIMENTAL API. -class Auth(object): - """Missing associated documentation comment in .proto file.""" - - @staticmethod - def AuthEnable(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/AuthEnable', - rpc__pb2.AuthEnableRequest.SerializeToString, - rpc__pb2.AuthEnableResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def AuthDisable(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/AuthDisable', - rpc__pb2.AuthDisableRequest.SerializeToString, - rpc__pb2.AuthDisableResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def Authenticate(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/Authenticate', - rpc__pb2.AuthenticateRequest.SerializeToString, - rpc__pb2.AuthenticateResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def UserAdd(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/UserAdd', - rpc__pb2.AuthUserAddRequest.SerializeToString, - rpc__pb2.AuthUserAddResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def UserGet(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/UserGet', - rpc__pb2.AuthUserGetRequest.SerializeToString, - rpc__pb2.AuthUserGetResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def UserList(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/UserList', - rpc__pb2.AuthUserListRequest.SerializeToString, - rpc__pb2.AuthUserListResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def UserDelete(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/UserDelete', - rpc__pb2.AuthUserDeleteRequest.SerializeToString, - rpc__pb2.AuthUserDeleteResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def UserChangePassword(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/UserChangePassword', - rpc__pb2.AuthUserChangePasswordRequest.SerializeToString, - rpc__pb2.AuthUserChangePasswordResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def UserGrantRole(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/UserGrantRole', - rpc__pb2.AuthUserGrantRoleRequest.SerializeToString, - rpc__pb2.AuthUserGrantRoleResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def UserRevokeRole(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/UserRevokeRole', - rpc__pb2.AuthUserRevokeRoleRequest.SerializeToString, - rpc__pb2.AuthUserRevokeRoleResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def RoleAdd(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/RoleAdd', - rpc__pb2.AuthRoleAddRequest.SerializeToString, - rpc__pb2.AuthRoleAddResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def RoleGet(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/RoleGet', - rpc__pb2.AuthRoleGetRequest.SerializeToString, - rpc__pb2.AuthRoleGetResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def RoleList(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/RoleList', - rpc__pb2.AuthRoleListRequest.SerializeToString, - rpc__pb2.AuthRoleListResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def RoleDelete(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/RoleDelete', - rpc__pb2.AuthRoleDeleteRequest.SerializeToString, - rpc__pb2.AuthRoleDeleteResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def RoleGrantPermission(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/RoleGrantPermission', - rpc__pb2.AuthRoleGrantPermissionRequest.SerializeToString, - rpc__pb2.AuthRoleGrantPermissionResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) - - @staticmethod - def RoleRevokePermission(request, - target, - options=(), - channel_credentials=None, - call_credentials=None, - insecure=False, - compression=None, - wait_for_ready=None, - timeout=None, - metadata=None): - return grpc.experimental.unary_unary( - request, - target, - '/etcdserverpb.Auth/RoleRevokePermission', - rpc__pb2.AuthRoleRevokePermissionRequest.SerializeToString, - rpc__pb2.AuthRoleRevokePermissionResponse.FromString, - options, - channel_credentials, - insecure, - call_credentials, - compression, - wait_for_ready, - timeout, - metadata, - _registered_method=True) From eefc84297da8566cb19d622095250084009c8d29 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Mon, 31 Mar 2025 15:57:00 +0200 Subject: [PATCH 20/23] build: removing deprecated license field --- pyproject.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index d49536ca..a0f93de7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,6 @@ description = "Python client for the etcd3 API" dynamic = ["version"] requires-python = ">=3.7" readme = "README.rst" -license = {file = "LICENSE"} authors = [ {email = "Louis Taylor "}, {email = "Ledger SAS "}, @@ -21,7 +20,6 @@ dependencies = [ classifiers = [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", - "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", From 631e5b34c6d9c5d4e335885549e24473ed314959 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Mon, 31 Mar 2025 16:13:36 +0200 Subject: [PATCH 21/23] build: adding py file generation for unit testing --- .github/workflows/ci.yml | 16 ++++++++++++---- .github/workflows/publish.yml | 1 + tox.ini | 12 ++++-------- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 73a597a5..2e486658 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,9 @@ jobs: - run: | pip install tox - name: Run linters - run: tox -e build || true + run: | + tox -e genproto + tox -e build || true test: runs-on: ubuntu-latest @@ -38,7 +40,9 @@ jobs: - run: | pip install tox - name: Run unittests - run: tox -e unittests + run: | + tox -e genproto + tox -e unittests lint: runs-on: ubuntu-latest @@ -51,7 +55,9 @@ jobs: - run: | pip install tox - name: Run linters - run: tox -e lint || true + run: | + tox -e genproto + tox -e lint || true doc: runs-on: ubuntu-latest @@ -64,4 +70,6 @@ jobs: - run: | pip install tox - name: Run linters - run: tox -e doc + run: | + tox -e genproto + tox -e doc diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 637a0d8a..fddcf25e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -19,6 +19,7 @@ jobs: python-version: '3.10' - run: | pip install tox + tox -e genproto tox -e build # initiate jfrog login and install jf - name: Login to JFrog Ledger diff --git a/tox.ini b/tox.ini index 56002812..25dc0869 100644 --- a/tox.ini +++ b/tox.ini @@ -15,16 +15,15 @@ description = generate proto and build pacakge deps = build twine +depends = genproto extras = protoc -allowlist_externals = - {toxinidir}/genproto.sh commands = - {toxinidir}/genproto.sh python -m build twine check dist/* [testenv:unittests] description = generate proto and run package unit tests +depends = genproto extras = tests #passenv = ETCD_ENDPOINT,TEST_ETCD_VERSION allowlist_externals = @@ -32,9 +31,7 @@ allowlist_externals = tar gzip cp - {toxinidir}/genproto.sh commands_pre = - {toxinidir}/genproto.sh wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz -O {env_tmp_dir}/etcd.tar.gz tar xzvf {env_tmp_dir}/etcd.tar.gz -C {env_tmp_dir} cp {env_tmp_dir}/etcd-v3.3.10-linux-amd64/etcd {envdir}/bin @@ -46,6 +43,7 @@ commands = [testenv:lint] extras = tests +depends = genproto commands = flake8 --docstring-convention=numpy black --line-length 90 --check --diff . @@ -56,10 +54,8 @@ description = generate sphinx documentation extras = doc protoc -allowlist_externals = - {toxinidir}/genproto.sh +depends = genproto commands = - {toxinidir}/genproto.sh sphinx-build -b html -d docs/_build/doctress docs docs/_build [testenv:flake8] From cd1151bac995ed0f7551b0b0ea42124f1369bf3d Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Tue, 1 Apr 2025 09:10:44 +0200 Subject: [PATCH 22/23] doc: updating README to describes the tox-based production system --- README.rst | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 945a3dd8..437e9ea1 100644 --- a/README.rst +++ b/README.rst @@ -30,7 +30,29 @@ If you're interested in using this library, please get involved. * Free software: Apache Software License 2.0 * Documentation: https://python-etcd3.readthedocs.io. -Basic usage: + +Building python package +----------------------- + +The package build is made using the ToX orchestrator. +It is required to generate python files before building the package as they are +not kept in gconf. +You only need the ToX orchestrator to produce the package: + +``` +pip install tox +``` + +A typical build sequence is the folling: + +``` +tox -e genproto +tox -e build +``` + + +Basic usage +----------- .. code-block:: python From daa090c9142a2dc3f3a5283f6180922a4a9550e9 Mon Sep 17 00:00:00 2001 From: Philippe Thierry Date: Thu, 10 Apr 2025 16:01:05 +0200 Subject: [PATCH 23/23] fix: fixing minimum version of grpcio dep --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index a0f93de7..190848ee 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,6 +52,7 @@ tests = [ ] protoc = [ "grpcio-tools", + "grpcio==1.68.1", ] doc = [ "Sphinx>=1.8.2",