feat(spdk): support backing image in spdk

ref: longhorn/longhorn 6341

Signed-off-by: Jack Lin <jack.lin@suse.com>
This commit is contained in:
Jack Lin 2024-10-15 15:19:33 +08:00 committed by Derek Su
parent 9a7c220696
commit f6797e59f9
13 changed files with 4346 additions and 2001 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -165,6 +165,31 @@ class ProxyEngineServiceStub(object):
request_serializer=imrpc_dot_proxy__pb2.EngineReplicaModeUpdateRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.SPDKBackingImageCreate = channel.unary_unary(
'/imrpc.ProxyEngineService/SPDKBackingImageCreate',
request_serializer=imrpc_dot_proxy__pb2.SPDKBackingImageCreateRequest.SerializeToString,
response_deserializer=imrpc_dot_proxy__pb2.SPDKBackingImageResponse.FromString,
)
self.SPDKBackingImageDelete = channel.unary_unary(
'/imrpc.ProxyEngineService/SPDKBackingImageDelete',
request_serializer=imrpc_dot_proxy__pb2.SPDKBackingImageDeleteRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.SPDKBackingImageGet = channel.unary_unary(
'/imrpc.ProxyEngineService/SPDKBackingImageGet',
request_serializer=imrpc_dot_proxy__pb2.SPDKBackingImageGetRequest.SerializeToString,
response_deserializer=imrpc_dot_proxy__pb2.SPDKBackingImageResponse.FromString,
)
self.SPDKBackingImageList = channel.unary_unary(
'/imrpc.ProxyEngineService/SPDKBackingImageList',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
response_deserializer=imrpc_dot_proxy__pb2.SPDKBackingImageListResponse.FromString,
)
self.SPDKBackingImageWatch = channel.unary_stream(
'/imrpc.ProxyEngineService/SPDKBackingImageWatch',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.MetricsGet = channel.unary_unary(
'/imrpc.ProxyEngineService/MetricsGet',
request_serializer=imrpc_dot_proxy__pb2.ProxyEngineRequest.SerializeToString,
@ -361,6 +386,36 @@ class ProxyEngineServiceServicer(object):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def SPDKBackingImageCreate(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def SPDKBackingImageDelete(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def SPDKBackingImageGet(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def SPDKBackingImageList(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def SPDKBackingImageWatch(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def MetricsGet(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@ -526,6 +581,31 @@ def add_ProxyEngineServiceServicer_to_server(servicer, server):
request_deserializer=imrpc_dot_proxy__pb2.EngineReplicaModeUpdateRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'SPDKBackingImageCreate': grpc.unary_unary_rpc_method_handler(
servicer.SPDKBackingImageCreate,
request_deserializer=imrpc_dot_proxy__pb2.SPDKBackingImageCreateRequest.FromString,
response_serializer=imrpc_dot_proxy__pb2.SPDKBackingImageResponse.SerializeToString,
),
'SPDKBackingImageDelete': grpc.unary_unary_rpc_method_handler(
servicer.SPDKBackingImageDelete,
request_deserializer=imrpc_dot_proxy__pb2.SPDKBackingImageDeleteRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'SPDKBackingImageGet': grpc.unary_unary_rpc_method_handler(
servicer.SPDKBackingImageGet,
request_deserializer=imrpc_dot_proxy__pb2.SPDKBackingImageGetRequest.FromString,
response_serializer=imrpc_dot_proxy__pb2.SPDKBackingImageResponse.SerializeToString,
),
'SPDKBackingImageList': grpc.unary_unary_rpc_method_handler(
servicer.SPDKBackingImageList,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
response_serializer=imrpc_dot_proxy__pb2.SPDKBackingImageListResponse.SerializeToString,
),
'SPDKBackingImageWatch': grpc.unary_stream_rpc_method_handler(
servicer.SPDKBackingImageWatch,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'MetricsGet': grpc.unary_unary_rpc_method_handler(
servicer.MetricsGet,
request_deserializer=imrpc_dot_proxy__pb2.ProxyEngineRequest.FromString,
@ -1056,6 +1136,91 @@ class ProxyEngineService(object):
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def SPDKBackingImageCreate(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, '/imrpc.ProxyEngineService/SPDKBackingImageCreate',
imrpc_dot_proxy__pb2.SPDKBackingImageCreateRequest.SerializeToString,
imrpc_dot_proxy__pb2.SPDKBackingImageResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def SPDKBackingImageDelete(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, '/imrpc.ProxyEngineService/SPDKBackingImageDelete',
imrpc_dot_proxy__pb2.SPDKBackingImageDeleteRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def SPDKBackingImageGet(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, '/imrpc.ProxyEngineService/SPDKBackingImageGet',
imrpc_dot_proxy__pb2.SPDKBackingImageGetRequest.SerializeToString,
imrpc_dot_proxy__pb2.SPDKBackingImageResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def SPDKBackingImageList(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, '/imrpc.ProxyEngineService/SPDKBackingImageList',
google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
imrpc_dot_proxy__pb2.SPDKBackingImageListResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def SPDKBackingImageWatch(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, '/imrpc.ProxyEngineService/SPDKBackingImageWatch',
google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def MetricsGet(request,
target,

File diff suppressed because one or more lines are too long

View File

@ -245,6 +245,41 @@ class SPDKServiceStub(object):
request_serializer=spdkrpc_dot_spdk__pb2.RestoreStatusRequest.SerializeToString,
response_deserializer=spdkrpc_dot_spdk__pb2.RestoreStatusResponse.FromString,
)
self.BackingImageCreate = channel.unary_unary(
'/spdkrpc.SPDKService/BackingImageCreate',
request_serializer=spdkrpc_dot_spdk__pb2.BackingImageCreateRequest.SerializeToString,
response_deserializer=spdkrpc_dot_spdk__pb2.BackingImage.FromString,
)
self.BackingImageDelete = channel.unary_unary(
'/spdkrpc.SPDKService/BackingImageDelete',
request_serializer=spdkrpc_dot_spdk__pb2.BackingImageDeleteRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.BackingImageGet = channel.unary_unary(
'/spdkrpc.SPDKService/BackingImageGet',
request_serializer=spdkrpc_dot_spdk__pb2.BackingImageGetRequest.SerializeToString,
response_deserializer=spdkrpc_dot_spdk__pb2.BackingImage.FromString,
)
self.BackingImageList = channel.unary_unary(
'/spdkrpc.SPDKService/BackingImageList',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
response_deserializer=spdkrpc_dot_spdk__pb2.BackingImageListResponse.FromString,
)
self.BackingImageWatch = channel.unary_stream(
'/spdkrpc.SPDKService/BackingImageWatch',
request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.BackingImageExpose = channel.unary_unary(
'/spdkrpc.SPDKService/BackingImageExpose',
request_serializer=spdkrpc_dot_spdk__pb2.BackingImageGetRequest.SerializeToString,
response_deserializer=spdkrpc_dot_spdk__pb2.BackingImageExposeResponse.FromString,
)
self.BackingImageUnexpose = channel.unary_unary(
'/spdkrpc.SPDKService/BackingImageUnexpose',
request_serializer=spdkrpc_dot_spdk__pb2.BackingImageGetRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.DiskCreate = channel.unary_unary(
'/spdkrpc.SPDKService/DiskCreate',
request_serializer=spdkrpc_dot_spdk__pb2.DiskCreateRequest.SerializeToString,
@ -566,6 +601,48 @@ class SPDKServiceServicer(object):
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def BackingImageCreate(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def BackingImageDelete(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def BackingImageGet(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def BackingImageList(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def BackingImageWatch(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def BackingImageExpose(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def BackingImageUnexpose(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')
def DiskCreate(self, request, context):
"""Missing associated documentation comment in .proto file."""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@ -847,6 +924,41 @@ def add_SPDKServiceServicer_to_server(servicer, server):
request_deserializer=spdkrpc_dot_spdk__pb2.RestoreStatusRequest.FromString,
response_serializer=spdkrpc_dot_spdk__pb2.RestoreStatusResponse.SerializeToString,
),
'BackingImageCreate': grpc.unary_unary_rpc_method_handler(
servicer.BackingImageCreate,
request_deserializer=spdkrpc_dot_spdk__pb2.BackingImageCreateRequest.FromString,
response_serializer=spdkrpc_dot_spdk__pb2.BackingImage.SerializeToString,
),
'BackingImageDelete': grpc.unary_unary_rpc_method_handler(
servicer.BackingImageDelete,
request_deserializer=spdkrpc_dot_spdk__pb2.BackingImageDeleteRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'BackingImageGet': grpc.unary_unary_rpc_method_handler(
servicer.BackingImageGet,
request_deserializer=spdkrpc_dot_spdk__pb2.BackingImageGetRequest.FromString,
response_serializer=spdkrpc_dot_spdk__pb2.BackingImage.SerializeToString,
),
'BackingImageList': grpc.unary_unary_rpc_method_handler(
servicer.BackingImageList,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
response_serializer=spdkrpc_dot_spdk__pb2.BackingImageListResponse.SerializeToString,
),
'BackingImageWatch': grpc.unary_stream_rpc_method_handler(
servicer.BackingImageWatch,
request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'BackingImageExpose': grpc.unary_unary_rpc_method_handler(
servicer.BackingImageExpose,
request_deserializer=spdkrpc_dot_spdk__pb2.BackingImageGetRequest.FromString,
response_serializer=spdkrpc_dot_spdk__pb2.BackingImageExposeResponse.SerializeToString,
),
'BackingImageUnexpose': grpc.unary_unary_rpc_method_handler(
servicer.BackingImageUnexpose,
request_deserializer=spdkrpc_dot_spdk__pb2.BackingImageGetRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
'DiskCreate': grpc.unary_unary_rpc_method_handler(
servicer.DiskCreate,
request_deserializer=spdkrpc_dot_spdk__pb2.DiskCreateRequest.FromString,
@ -1679,6 +1791,125 @@ class SPDKService(object):
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def BackingImageCreate(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, '/spdkrpc.SPDKService/BackingImageCreate',
spdkrpc_dot_spdk__pb2.BackingImageCreateRequest.SerializeToString,
spdkrpc_dot_spdk__pb2.BackingImage.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def BackingImageDelete(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, '/spdkrpc.SPDKService/BackingImageDelete',
spdkrpc_dot_spdk__pb2.BackingImageDeleteRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def BackingImageGet(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, '/spdkrpc.SPDKService/BackingImageGet',
spdkrpc_dot_spdk__pb2.BackingImageGetRequest.SerializeToString,
spdkrpc_dot_spdk__pb2.BackingImage.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def BackingImageList(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, '/spdkrpc.SPDKService/BackingImageList',
google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
spdkrpc_dot_spdk__pb2.BackingImageListResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def BackingImageWatch(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, '/spdkrpc.SPDKService/BackingImageWatch',
google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def BackingImageExpose(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, '/spdkrpc.SPDKService/BackingImageExpose',
spdkrpc_dot_spdk__pb2.BackingImageGetRequest.SerializeToString,
spdkrpc_dot_spdk__pb2.BackingImageExposeResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def BackingImageUnexpose(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, '/spdkrpc.SPDKService/BackingImageUnexpose',
spdkrpc_dot_spdk__pb2.BackingImageGetRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
@staticmethod
def DiskCreate(request,
target,

View File

@ -88,6 +88,7 @@ type SpdkInstanceSpec struct {
ExposeRequired bool `protobuf:"varint,5,opt,name=expose_required,json=exposeRequired,proto3" json:"expose_required,omitempty"`
Frontend string `protobuf:"bytes,6,opt,name=frontend,proto3" json:"frontend,omitempty"`
SalvageRequested bool `protobuf:"varint,7,opt,name=salvage_requested,json=salvageRequested,proto3" json:"salvage_requested,omitempty"`
BackingImageName string `protobuf:"bytes,8,opt,name=backing_image_name,json=backingImageName,proto3" json:"backing_image_name,omitempty"`
}
func (x *SpdkInstanceSpec) Reset() {
@ -171,6 +172,13 @@ func (x *SpdkInstanceSpec) GetSalvageRequested() bool {
return false
}
func (x *SpdkInstanceSpec) GetBackingImageName() string {
if x != nil {
return x.BackingImageName
}
return ""
}
type InstanceSpec struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@ -1445,7 +1453,7 @@ var file_imrpc_instance_proto_rawDesc = []byte{
0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61,
0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79,
0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
0x61, 0x72, 0x67, 0x73, 0x22, 0xf8, 0x02, 0x0a, 0x10, 0x53, 0x70, 0x64, 0x6b, 0x49, 0x6e, 0x73,
0x61, 0x72, 0x67, 0x73, 0x22, 0xa6, 0x03, 0x0a, 0x10, 0x53, 0x70, 0x64, 0x6b, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5e, 0x0a, 0x13, 0x72, 0x65, 0x70,
0x6c, 0x69, 0x63, 0x61, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x53,
@ -1464,284 +1472,287 @@ var file_imrpc_instance_proto_rawDesc = []byte{
0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x12, 0x2b, 0x0a, 0x11,
0x73, 0x61, 0x6c, 0x76, 0x61, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65,
0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x61, 0x6c, 0x76, 0x61, 0x67, 0x65,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x44, 0x0a, 0x16, 0x52, 0x65, 0x70,
0x6c, 0x69, 0x63, 0x61, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
0xae, 0x04, 0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63,
0x12, 0x4f, 0x0a, 0x14, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72,
0x65, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19,
0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74,
0x6f, 0x72, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x62,
0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65,
0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x6f, 0x6c,
0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f,
0x72, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x72,
0x74, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f,
0x72, 0x74, 0x41, 0x72, 0x67, 0x73, 0x12, 0x4e, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73,
0x73, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18,
0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72,
0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65,
0x63, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x45, 0x0a, 0x12, 0x73, 0x70, 0x64, 0x6b, 0x5f, 0x69,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x64, 0x6b, 0x49,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x10, 0x73, 0x70, 0x64,
0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a,
0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x09, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45,
0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e,
0x65, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71,
0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x67,
0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11,
0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74,
0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x72,
0x67, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
0x22, 0xc9, 0x03, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72,
0x6f, 0x72, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72,
0x72, 0x6f, 0x72, 0x4d, 0x73, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73,
0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74,
0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e,
0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x64,
0x12, 0x45, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64,
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x6e,
0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65,
0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74,
0x61, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f,
0x72, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x61,
0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x73,
0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f,
0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16,
0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72,
0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x17, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62,
0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e,
0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79,
0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x64, 0x1a, 0x3d, 0x0a,
0x0f, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x40, 0x0a, 0x15,
0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74,
0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x8c,
0x02, 0x0a, 0x15, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x14, 0x62, 0x61, 0x63, 0x6b,
0x65, 0x6e, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x42,
0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65,
0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74,
0x6f, 0x72, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a,
0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
0x65, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x04,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x29,
0x0a, 0x10, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75,
0x70, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74,
0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11,
0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e,
0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0xc1, 0x01,
0x0a, 0x12, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x14, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f,
0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65,
0x6e, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x42, 0x02, 0x18,
0x01, 0x52, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44,
0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x61, 0x63,
0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x62, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x6d,
0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x44, 0x0a, 0x16, 0x52, 0x65, 0x70, 0x6c, 0x69,
0x63, 0x61, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xae, 0x04,
0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4f,
0x0a, 0x14, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f,
0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x69,
0x6d, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x6f, 0x72,
0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x62, 0x61, 0x63,
0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12,
0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d,
0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x6f,
0x6c, 0x75, 0x6d, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74,
0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6f,
0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f,
0x61, 0x72, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74,
0x41, 0x72, 0x67, 0x73, 0x12, 0x4e, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f,
0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x07, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x63,
0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52,
0x13, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x53, 0x70, 0x65, 0x63, 0x12, 0x45, 0x0a, 0x12, 0x73, 0x70, 0x64, 0x6b, 0x5f, 0x69, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x70, 0x64, 0x6b, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x10, 0x73, 0x70, 0x64, 0x6b, 0x49,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, 0x0b, 0x64,
0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67,
0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12,
0x29, 0x0a, 0x10, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69,
0x72, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x67, 0x72, 0x61,
0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e,
0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18,
0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x6f, 0x72,
0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65,
0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xc9,
0x03, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72,
0x5f, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x72, 0x72, 0x6f,
0x72, 0x4d, 0x73, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61,
0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x74,
0x61, 0x72, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x18,
0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x45,
0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x64, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x72,
0x74, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74,
0x5f, 0x65, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67,
0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x64, 0x12, 0x39, 0x0a, 0x19, 0x73, 0x74, 0x61,
0x6e, 0x64, 0x62, 0x79, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74,
0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x16, 0x73, 0x74,
0x61, 0x6e, 0x64, 0x62, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53,
0x74, 0x61, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x17, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x5f,
0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x18,
0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x62, 0x79, 0x54, 0x61,
0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x64, 0x1a, 0x3d, 0x0a, 0x0f, 0x43,
0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x40, 0x0a, 0x15, 0x49, 0x6e,
0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x13, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x8c, 0x02, 0x0a,
0x15, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x14, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e,
0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63,
0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x42,
0x02, 0x18, 0x01, 0x52, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x6f, 0x72,
0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74,
0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
0x1b, 0x0a, 0x09, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x64, 0x69, 0x73, 0x6b, 0x55, 0x75, 0x69, 0x64, 0x12, 0x29, 0x0a, 0x10,
0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x52,
0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69,
0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52,
0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x12,
0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x4f, 0x0a, 0x14, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x74,
0x6f, 0x72, 0x65, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64,
0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52,
0x12, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x72, 0x69,
0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x0b, 0x64,
0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67,
0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22,
0x84, 0x01, 0x0a, 0x10, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x13, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a,
0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e,
0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x0a, 0x07,
0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0xb7, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
0x48, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09,
0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x55, 0x0a, 0x0e, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x69,
0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
0x22, 0xc1, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x6f, 0x67,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x14, 0x62, 0x61, 0x63, 0x6b, 0x65,
0x6e, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61,
0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72,
0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x6f,
0x72, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65,
0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18,
0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61,
0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e,
0x67, 0x69, 0x6e, 0x65, 0x22, 0x6c, 0x0a, 0x16, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27,
0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x69,
0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65,
0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x65, 0x72, 0x6d, 0x69,
0x6e, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x53, 0x69, 0x67, 0x6e,
0x61, 0x6c, 0x22, 0x74, 0x0a, 0x16, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75,
0x73, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b,
0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e,
0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65,
0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x73, 0x0a, 0x15, 0x49, 0x6e, 0x73, 0x74,
0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44,
0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45,
0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a,
0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45,
0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e,
0x65, 0x22, 0x84, 0x01, 0x0a, 0x10, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12,
0x2d, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x15, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18,
0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x22, 0xb7, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x48, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x55, 0x0a, 0x0e, 0x49,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
0x38, 0x01, 0x22, 0xc1, 0x01, 0x0a, 0x12, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c,
0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x14, 0x62, 0x61, 0x63,
0x6b, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x64, 0x72, 0x69, 0x76, 0x65,
0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e,
0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x44, 0x72, 0x69, 0x76,
0x65, 0x72, 0x42, 0x02, 0x18, 0x01, 0x52, 0x12, 0x62, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53,
0x74, 0x6f, 0x72, 0x65, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12,
0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79,
0x70, 0x65, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e,
0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e,
0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61,
0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0x6c, 0x0a, 0x16, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
0x63, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x27, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53,
0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x65, 0x72,
0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x53, 0x69,
0x67, 0x6e, 0x61, 0x6c, 0x22, 0x74, 0x0a, 0x16, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32,
0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61,
0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69,
0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x73, 0x0a, 0x15, 0x49, 0x6e,
0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xa4, 0x01,
0x0a, 0x1f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68,
0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44,
0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45,
0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a,
0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41, 0x64, 0x64,
0x72, 0x65, 0x73, 0x73, 0x22, 0x79, 0x0a, 0x1b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69,
0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63,
0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74,
0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74,
0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22,
0xa4, 0x01, 0x0a, 0x1f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74,
0x63, 0x68, 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69,
0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63,
0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74,
0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74,
0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12,
0x25, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73,
0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x41,
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x79, 0x0a, 0x1b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65,
0x5e, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e,
0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72,
0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64,
0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a,
0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70,
0x65, 0x22, 0x5e, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69,
0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52,
0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c,
0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65,
0x6c, 0x22, 0x5e, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69,
0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52,
0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66,
0x6c, 0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67,
0x73, 0x22, 0x48, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f,
0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69,
0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52,
0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0x2b, 0x0a, 0x13, 0x4c,
0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x48, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x47,
0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32,
0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61,
0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69,
0x6e, 0x65, 0x22, 0x2b, 0x0a, 0x13, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61,
0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x32,
0x93, 0x09, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e,
0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74,
0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49,
0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
0x12, 0x1c, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17,
0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0b, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63,
0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74,
0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45,
0x0a, 0x0c, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16,
0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
0x65, 0x4c, 0x6f, 0x67, 0x12, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x0c, 0x2e, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30,
0x01, 0x12, 0x43, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x61, 0x74,
0x63, 0x68, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70,
0x74, 0x79, 0x22, 0x00, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
0x63, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x69, 0x6d, 0x72, 0x70,
0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63,
0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53,
0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x1d, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12,
0x48, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6d,
0x65, 0x12, 0x1c, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x18, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4f, 0x76, 0x65, 0x72, 0x54,
0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e,
0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4f, 0x76, 0x65, 0x72,
0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x14, 0x49, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12,
0x22, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76,
0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22,
0x5e, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e,
0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72,
0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64,
0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61,
0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22,
0x48, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e,
0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72,
0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64,
0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x22, 0x2b, 0x0a, 0x13, 0x4c, 0x6f, 0x67,
0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x48, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74,
0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0b,
0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x11, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e,
0x67, 0x69, 0x6e, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65,
0x22, 0x2b, 0x0a, 0x13, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x32, 0x93, 0x09,
0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
0x65, 0x12, 0x49, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65,
0x61, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74,
0x61, 0x6e, 0x63, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0e,
0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1c,
0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44,
0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69,
0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x47, 0x65, 0x74, 0x12, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e,
0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0c,
0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4c,
0x6f, 0x67, 0x12, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x4c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0c, 0x2e,
0x4c, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12,
0x43, 0x0a, 0x0d, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x61, 0x74, 0x63, 0x68,
0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
0x22, 0x00, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e,
0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x52,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49,
0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
0x00, 0x12, 0x4a, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x73,
0x70, 0x65, 0x6e, 0x64, 0x12, 0x1d, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73,
0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a,
0x0b, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x2e, 0x69,
0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c,
0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x48, 0x0a,
0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x12,
0x1c, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e,
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x18, 0x49, 0x6e, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x72,
0x67, 0x65, 0x74, 0x12, 0x26, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74,
0x61, 0x6e, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61,
0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x54, 0x0a, 0x14, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63,
0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x22, 0x2e,
0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65,
0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0b, 0x4c,
0x6f, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x2e, 0x69, 0x6d, 0x72,
0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x40, 0x0a,
0x0b, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x69,
0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12,
0x40, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x19,
0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x74, 0x46, 0x6c, 0x61,
0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x44, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19,
0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76,
0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6d, 0x72, 0x70,
0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x46,
0x6c, 0x61, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67,
0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x1a, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x46, 0x6c,
0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
0x79, 0x12, 0x44, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c,
0x12, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c,
0x65, 0x76, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6d,
0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x47, 0x65,
0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x19, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c,
0x6f, 0x67, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x1a, 0x2e, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x6f, 0x67, 0x47, 0x65, 0x74,
0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a,
0x0a, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x47, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
0x70, 0x74, 0x79, 0x1a, 0x10, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x68, 0x6f, 0x72, 0x6e, 0x2f, 0x74, 0x79, 0x70,
0x65, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64,
0x2f, 0x69, 0x6d, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x79, 0x1a, 0x10, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
0x6d, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x68, 0x6f, 0x72, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73,
0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2f, 0x69,
0x6d, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

File diff suppressed because it is too large Load Diff

View File

@ -50,6 +50,11 @@ const (
ProxyEngineService_ReplicaVerifyRebuild_FullMethodName = "/imrpc.ProxyEngineService/ReplicaVerifyRebuild"
ProxyEngineService_ReplicaRemove_FullMethodName = "/imrpc.ProxyEngineService/ReplicaRemove"
ProxyEngineService_ReplicaModeUpdate_FullMethodName = "/imrpc.ProxyEngineService/ReplicaModeUpdate"
ProxyEngineService_SPDKBackingImageCreate_FullMethodName = "/imrpc.ProxyEngineService/SPDKBackingImageCreate"
ProxyEngineService_SPDKBackingImageDelete_FullMethodName = "/imrpc.ProxyEngineService/SPDKBackingImageDelete"
ProxyEngineService_SPDKBackingImageGet_FullMethodName = "/imrpc.ProxyEngineService/SPDKBackingImageGet"
ProxyEngineService_SPDKBackingImageList_FullMethodName = "/imrpc.ProxyEngineService/SPDKBackingImageList"
ProxyEngineService_SPDKBackingImageWatch_FullMethodName = "/imrpc.ProxyEngineService/SPDKBackingImageWatch"
ProxyEngineService_MetricsGet_FullMethodName = "/imrpc.ProxyEngineService/MetricsGet"
ProxyEngineService_RemountReadOnlyVolume_FullMethodName = "/imrpc.ProxyEngineService/RemountReadOnlyVolume"
)
@ -88,6 +93,11 @@ type ProxyEngineServiceClient interface {
ReplicaVerifyRebuild(ctx context.Context, in *EngineReplicaVerifyRebuildRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
ReplicaRemove(ctx context.Context, in *EngineReplicaRemoveRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
ReplicaModeUpdate(ctx context.Context, in *EngineReplicaModeUpdateRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
SPDKBackingImageCreate(ctx context.Context, in *SPDKBackingImageCreateRequest, opts ...grpc.CallOption) (*SPDKBackingImageResponse, error)
SPDKBackingImageDelete(ctx context.Context, in *SPDKBackingImageDeleteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
SPDKBackingImageGet(ctx context.Context, in *SPDKBackingImageGetRequest, opts ...grpc.CallOption) (*SPDKBackingImageResponse, error)
SPDKBackingImageList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*SPDKBackingImageListResponse, error)
SPDKBackingImageWatch(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (ProxyEngineService_SPDKBackingImageWatchClient, error)
MetricsGet(ctx context.Context, in *ProxyEngineRequest, opts ...grpc.CallOption) (*EngineMetricsGetProxyResponse, error)
RemountReadOnlyVolume(ctx context.Context, in *RemountVolumeRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
}
@ -370,6 +380,74 @@ func (c *proxyEngineServiceClient) ReplicaModeUpdate(ctx context.Context, in *En
return out, nil
}
func (c *proxyEngineServiceClient) SPDKBackingImageCreate(ctx context.Context, in *SPDKBackingImageCreateRequest, opts ...grpc.CallOption) (*SPDKBackingImageResponse, error) {
out := new(SPDKBackingImageResponse)
err := c.cc.Invoke(ctx, ProxyEngineService_SPDKBackingImageCreate_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *proxyEngineServiceClient) SPDKBackingImageDelete(ctx context.Context, in *SPDKBackingImageDeleteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, ProxyEngineService_SPDKBackingImageDelete_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *proxyEngineServiceClient) SPDKBackingImageGet(ctx context.Context, in *SPDKBackingImageGetRequest, opts ...grpc.CallOption) (*SPDKBackingImageResponse, error) {
out := new(SPDKBackingImageResponse)
err := c.cc.Invoke(ctx, ProxyEngineService_SPDKBackingImageGet_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *proxyEngineServiceClient) SPDKBackingImageList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*SPDKBackingImageListResponse, error) {
out := new(SPDKBackingImageListResponse)
err := c.cc.Invoke(ctx, ProxyEngineService_SPDKBackingImageList_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *proxyEngineServiceClient) SPDKBackingImageWatch(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (ProxyEngineService_SPDKBackingImageWatchClient, error) {
stream, err := c.cc.NewStream(ctx, &ProxyEngineService_ServiceDesc.Streams[0], ProxyEngineService_SPDKBackingImageWatch_FullMethodName, opts...)
if err != nil {
return nil, err
}
x := &proxyEngineServiceSPDKBackingImageWatchClient{stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
if err := x.ClientStream.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
type ProxyEngineService_SPDKBackingImageWatchClient interface {
Recv() (*emptypb.Empty, error)
grpc.ClientStream
}
type proxyEngineServiceSPDKBackingImageWatchClient struct {
grpc.ClientStream
}
func (x *proxyEngineServiceSPDKBackingImageWatchClient) Recv() (*emptypb.Empty, error) {
m := new(emptypb.Empty)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func (c *proxyEngineServiceClient) MetricsGet(ctx context.Context, in *ProxyEngineRequest, opts ...grpc.CallOption) (*EngineMetricsGetProxyResponse, error) {
out := new(EngineMetricsGetProxyResponse)
err := c.cc.Invoke(ctx, ProxyEngineService_MetricsGet_FullMethodName, in, out, opts...)
@ -422,6 +500,11 @@ type ProxyEngineServiceServer interface {
ReplicaVerifyRebuild(context.Context, *EngineReplicaVerifyRebuildRequest) (*emptypb.Empty, error)
ReplicaRemove(context.Context, *EngineReplicaRemoveRequest) (*emptypb.Empty, error)
ReplicaModeUpdate(context.Context, *EngineReplicaModeUpdateRequest) (*emptypb.Empty, error)
SPDKBackingImageCreate(context.Context, *SPDKBackingImageCreateRequest) (*SPDKBackingImageResponse, error)
SPDKBackingImageDelete(context.Context, *SPDKBackingImageDeleteRequest) (*emptypb.Empty, error)
SPDKBackingImageGet(context.Context, *SPDKBackingImageGetRequest) (*SPDKBackingImageResponse, error)
SPDKBackingImageList(context.Context, *emptypb.Empty) (*SPDKBackingImageListResponse, error)
SPDKBackingImageWatch(*emptypb.Empty, ProxyEngineService_SPDKBackingImageWatchServer) error
MetricsGet(context.Context, *ProxyEngineRequest) (*EngineMetricsGetProxyResponse, error)
RemountReadOnlyVolume(context.Context, *RemountVolumeRequest) (*emptypb.Empty, error)
mustEmbedUnimplementedProxyEngineServiceServer()
@ -521,6 +604,21 @@ func (UnimplementedProxyEngineServiceServer) ReplicaRemove(context.Context, *Eng
func (UnimplementedProxyEngineServiceServer) ReplicaModeUpdate(context.Context, *EngineReplicaModeUpdateRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method ReplicaModeUpdate not implemented")
}
func (UnimplementedProxyEngineServiceServer) SPDKBackingImageCreate(context.Context, *SPDKBackingImageCreateRequest) (*SPDKBackingImageResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SPDKBackingImageCreate not implemented")
}
func (UnimplementedProxyEngineServiceServer) SPDKBackingImageDelete(context.Context, *SPDKBackingImageDeleteRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method SPDKBackingImageDelete not implemented")
}
func (UnimplementedProxyEngineServiceServer) SPDKBackingImageGet(context.Context, *SPDKBackingImageGetRequest) (*SPDKBackingImageResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SPDKBackingImageGet not implemented")
}
func (UnimplementedProxyEngineServiceServer) SPDKBackingImageList(context.Context, *emptypb.Empty) (*SPDKBackingImageListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method SPDKBackingImageList not implemented")
}
func (UnimplementedProxyEngineServiceServer) SPDKBackingImageWatch(*emptypb.Empty, ProxyEngineService_SPDKBackingImageWatchServer) error {
return status.Errorf(codes.Unimplemented, "method SPDKBackingImageWatch not implemented")
}
func (UnimplementedProxyEngineServiceServer) MetricsGet(context.Context, *ProxyEngineRequest) (*EngineMetricsGetProxyResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method MetricsGet not implemented")
}
@ -1080,6 +1178,99 @@ func _ProxyEngineService_ReplicaModeUpdate_Handler(srv interface{}, ctx context.
return interceptor(ctx, in, info, handler)
}
func _ProxyEngineService_SPDKBackingImageCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SPDKBackingImageCreateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ProxyEngineServiceServer).SPDKBackingImageCreate(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ProxyEngineService_SPDKBackingImageCreate_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ProxyEngineServiceServer).SPDKBackingImageCreate(ctx, req.(*SPDKBackingImageCreateRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ProxyEngineService_SPDKBackingImageDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SPDKBackingImageDeleteRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ProxyEngineServiceServer).SPDKBackingImageDelete(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ProxyEngineService_SPDKBackingImageDelete_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ProxyEngineServiceServer).SPDKBackingImageDelete(ctx, req.(*SPDKBackingImageDeleteRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ProxyEngineService_SPDKBackingImageGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SPDKBackingImageGetRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ProxyEngineServiceServer).SPDKBackingImageGet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ProxyEngineService_SPDKBackingImageGet_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ProxyEngineServiceServer).SPDKBackingImageGet(ctx, req.(*SPDKBackingImageGetRequest))
}
return interceptor(ctx, in, info, handler)
}
func _ProxyEngineService_SPDKBackingImageList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(emptypb.Empty)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ProxyEngineServiceServer).SPDKBackingImageList(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: ProxyEngineService_SPDKBackingImageList_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ProxyEngineServiceServer).SPDKBackingImageList(ctx, req.(*emptypb.Empty))
}
return interceptor(ctx, in, info, handler)
}
func _ProxyEngineService_SPDKBackingImageWatch_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(emptypb.Empty)
if err := stream.RecvMsg(m); err != nil {
return err
}
return srv.(ProxyEngineServiceServer).SPDKBackingImageWatch(m, &proxyEngineServiceSPDKBackingImageWatchServer{stream})
}
type ProxyEngineService_SPDKBackingImageWatchServer interface {
Send(*emptypb.Empty) error
grpc.ServerStream
}
type proxyEngineServiceSPDKBackingImageWatchServer struct {
grpc.ServerStream
}
func (x *proxyEngineServiceSPDKBackingImageWatchServer) Send(m *emptypb.Empty) error {
return x.ServerStream.SendMsg(m)
}
func _ProxyEngineService_MetricsGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ProxyEngineRequest)
if err := dec(in); err != nil {
@ -1243,6 +1434,22 @@ var ProxyEngineService_ServiceDesc = grpc.ServiceDesc{
MethodName: "ReplicaModeUpdate",
Handler: _ProxyEngineService_ReplicaModeUpdate_Handler,
},
{
MethodName: "SPDKBackingImageCreate",
Handler: _ProxyEngineService_SPDKBackingImageCreate_Handler,
},
{
MethodName: "SPDKBackingImageDelete",
Handler: _ProxyEngineService_SPDKBackingImageDelete_Handler,
},
{
MethodName: "SPDKBackingImageGet",
Handler: _ProxyEngineService_SPDKBackingImageGet_Handler,
},
{
MethodName: "SPDKBackingImageList",
Handler: _ProxyEngineService_SPDKBackingImageList_Handler,
},
{
MethodName: "MetricsGet",
Handler: _ProxyEngineService_MetricsGet_Handler,
@ -1252,6 +1459,12 @@ var ProxyEngineService_ServiceDesc = grpc.ServiceDesc{
Handler: _ProxyEngineService_RemountReadOnlyVolume_Handler,
},
},
Streams: []grpc.StreamDesc{},
Streams: []grpc.StreamDesc{
{
StreamName: "SPDKBackingImageWatch",
Handler: _ProxyEngineService_SPDKBackingImageWatch_Handler,
ServerStreams: true,
},
},
Metadata: "imrpc/proxy.proto",
}

File diff suppressed because it is too large Load Diff

View File

@ -66,6 +66,13 @@ const (
SPDKService_EngineBackupRestore_FullMethodName = "/spdkrpc.SPDKService/EngineBackupRestore"
SPDKService_EngineBackupRestoreFinish_FullMethodName = "/spdkrpc.SPDKService/EngineBackupRestoreFinish"
SPDKService_EngineRestoreStatus_FullMethodName = "/spdkrpc.SPDKService/EngineRestoreStatus"
SPDKService_BackingImageCreate_FullMethodName = "/spdkrpc.SPDKService/BackingImageCreate"
SPDKService_BackingImageDelete_FullMethodName = "/spdkrpc.SPDKService/BackingImageDelete"
SPDKService_BackingImageGet_FullMethodName = "/spdkrpc.SPDKService/BackingImageGet"
SPDKService_BackingImageList_FullMethodName = "/spdkrpc.SPDKService/BackingImageList"
SPDKService_BackingImageWatch_FullMethodName = "/spdkrpc.SPDKService/BackingImageWatch"
SPDKService_BackingImageExpose_FullMethodName = "/spdkrpc.SPDKService/BackingImageExpose"
SPDKService_BackingImageUnexpose_FullMethodName = "/spdkrpc.SPDKService/BackingImageUnexpose"
SPDKService_DiskCreate_FullMethodName = "/spdkrpc.SPDKService/DiskCreate"
SPDKService_DiskDelete_FullMethodName = "/spdkrpc.SPDKService/DiskDelete"
SPDKService_DiskGet_FullMethodName = "/spdkrpc.SPDKService/DiskGet"
@ -126,6 +133,13 @@ type SPDKServiceClient interface {
EngineBackupRestore(ctx context.Context, in *EngineBackupRestoreRequest, opts ...grpc.CallOption) (*EngineBackupRestoreResponse, error)
EngineBackupRestoreFinish(ctx context.Context, in *EngineBackupRestoreFinishRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
EngineRestoreStatus(ctx context.Context, in *RestoreStatusRequest, opts ...grpc.CallOption) (*RestoreStatusResponse, error)
BackingImageCreate(ctx context.Context, in *BackingImageCreateRequest, opts ...grpc.CallOption) (*BackingImage, error)
BackingImageDelete(ctx context.Context, in *BackingImageDeleteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
BackingImageGet(ctx context.Context, in *BackingImageGetRequest, opts ...grpc.CallOption) (*BackingImage, error)
BackingImageList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*BackingImageListResponse, error)
BackingImageWatch(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (SPDKService_BackingImageWatchClient, error)
BackingImageExpose(ctx context.Context, in *BackingImageGetRequest, opts ...grpc.CallOption) (*BackingImageExposeResponse, error)
BackingImageUnexpose(ctx context.Context, in *BackingImageGetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
DiskCreate(ctx context.Context, in *DiskCreateRequest, opts ...grpc.CallOption) (*Disk, error)
DiskDelete(ctx context.Context, in *DiskDeleteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
DiskGet(ctx context.Context, in *DiskGetRequest, opts ...grpc.CallOption) (*Disk, error)
@ -604,6 +618,92 @@ func (c *sPDKServiceClient) EngineRestoreStatus(ctx context.Context, in *Restore
return out, nil
}
func (c *sPDKServiceClient) BackingImageCreate(ctx context.Context, in *BackingImageCreateRequest, opts ...grpc.CallOption) (*BackingImage, error) {
out := new(BackingImage)
err := c.cc.Invoke(ctx, SPDKService_BackingImageCreate_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) BackingImageDelete(ctx context.Context, in *BackingImageDeleteRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, SPDKService_BackingImageDelete_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) BackingImageGet(ctx context.Context, in *BackingImageGetRequest, opts ...grpc.CallOption) (*BackingImage, error) {
out := new(BackingImage)
err := c.cc.Invoke(ctx, SPDKService_BackingImageGet_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) BackingImageList(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*BackingImageListResponse, error) {
out := new(BackingImageListResponse)
err := c.cc.Invoke(ctx, SPDKService_BackingImageList_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) BackingImageWatch(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (SPDKService_BackingImageWatchClient, error) {
stream, err := c.cc.NewStream(ctx, &SPDKService_ServiceDesc.Streams[2], SPDKService_BackingImageWatch_FullMethodName, opts...)
if err != nil {
return nil, err
}
x := &sPDKServiceBackingImageWatchClient{stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
if err := x.ClientStream.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
type SPDKService_BackingImageWatchClient interface {
Recv() (*emptypb.Empty, error)
grpc.ClientStream
}
type sPDKServiceBackingImageWatchClient struct {
grpc.ClientStream
}
func (x *sPDKServiceBackingImageWatchClient) Recv() (*emptypb.Empty, error) {
m := new(emptypb.Empty)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func (c *sPDKServiceClient) BackingImageExpose(ctx context.Context, in *BackingImageGetRequest, opts ...grpc.CallOption) (*BackingImageExposeResponse, error) {
out := new(BackingImageExposeResponse)
err := c.cc.Invoke(ctx, SPDKService_BackingImageExpose_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) BackingImageUnexpose(ctx context.Context, in *BackingImageGetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
out := new(emptypb.Empty)
err := c.cc.Invoke(ctx, SPDKService_BackingImageUnexpose_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *sPDKServiceClient) DiskCreate(ctx context.Context, in *DiskCreateRequest, opts ...grpc.CallOption) (*Disk, error) {
out := new(Disk)
err := c.cc.Invoke(ctx, SPDKService_DiskCreate_FullMethodName, in, out, opts...)
@ -726,6 +826,13 @@ type SPDKServiceServer interface {
EngineBackupRestore(context.Context, *EngineBackupRestoreRequest) (*EngineBackupRestoreResponse, error)
EngineBackupRestoreFinish(context.Context, *EngineBackupRestoreFinishRequest) (*emptypb.Empty, error)
EngineRestoreStatus(context.Context, *RestoreStatusRequest) (*RestoreStatusResponse, error)
BackingImageCreate(context.Context, *BackingImageCreateRequest) (*BackingImage, error)
BackingImageDelete(context.Context, *BackingImageDeleteRequest) (*emptypb.Empty, error)
BackingImageGet(context.Context, *BackingImageGetRequest) (*BackingImage, error)
BackingImageList(context.Context, *emptypb.Empty) (*BackingImageListResponse, error)
BackingImageWatch(*emptypb.Empty, SPDKService_BackingImageWatchServer) error
BackingImageExpose(context.Context, *BackingImageGetRequest) (*BackingImageExposeResponse, error)
BackingImageUnexpose(context.Context, *BackingImageGetRequest) (*emptypb.Empty, error)
DiskCreate(context.Context, *DiskCreateRequest) (*Disk, error)
DiskDelete(context.Context, *DiskDeleteRequest) (*emptypb.Empty, error)
DiskGet(context.Context, *DiskGetRequest) (*Disk, error)
@ -879,6 +986,27 @@ func (UnimplementedSPDKServiceServer) EngineBackupRestoreFinish(context.Context,
func (UnimplementedSPDKServiceServer) EngineRestoreStatus(context.Context, *RestoreStatusRequest) (*RestoreStatusResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method EngineRestoreStatus not implemented")
}
func (UnimplementedSPDKServiceServer) BackingImageCreate(context.Context, *BackingImageCreateRequest) (*BackingImage, error) {
return nil, status.Errorf(codes.Unimplemented, "method BackingImageCreate not implemented")
}
func (UnimplementedSPDKServiceServer) BackingImageDelete(context.Context, *BackingImageDeleteRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method BackingImageDelete not implemented")
}
func (UnimplementedSPDKServiceServer) BackingImageGet(context.Context, *BackingImageGetRequest) (*BackingImage, error) {
return nil, status.Errorf(codes.Unimplemented, "method BackingImageGet not implemented")
}
func (UnimplementedSPDKServiceServer) BackingImageList(context.Context, *emptypb.Empty) (*BackingImageListResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method BackingImageList not implemented")
}
func (UnimplementedSPDKServiceServer) BackingImageWatch(*emptypb.Empty, SPDKService_BackingImageWatchServer) error {
return status.Errorf(codes.Unimplemented, "method BackingImageWatch not implemented")
}
func (UnimplementedSPDKServiceServer) BackingImageExpose(context.Context, *BackingImageGetRequest) (*BackingImageExposeResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method BackingImageExpose not implemented")
}
func (UnimplementedSPDKServiceServer) BackingImageUnexpose(context.Context, *BackingImageGetRequest) (*emptypb.Empty, error) {
return nil, status.Errorf(codes.Unimplemented, "method BackingImageUnexpose not implemented")
}
func (UnimplementedSPDKServiceServer) DiskCreate(context.Context, *DiskCreateRequest) (*Disk, error) {
return nil, status.Errorf(codes.Unimplemented, "method DiskCreate not implemented")
}
@ -1750,6 +1878,135 @@ func _SPDKService_EngineRestoreStatus_Handler(srv interface{}, ctx context.Conte
return interceptor(ctx, in, info, handler)
}
func _SPDKService_BackingImageCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(BackingImageCreateRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).BackingImageCreate(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_BackingImageCreate_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).BackingImageCreate(ctx, req.(*BackingImageCreateRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_BackingImageDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(BackingImageDeleteRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).BackingImageDelete(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_BackingImageDelete_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).BackingImageDelete(ctx, req.(*BackingImageDeleteRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_BackingImageGet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(BackingImageGetRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).BackingImageGet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_BackingImageGet_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).BackingImageGet(ctx, req.(*BackingImageGetRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_BackingImageList_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(emptypb.Empty)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).BackingImageList(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_BackingImageList_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).BackingImageList(ctx, req.(*emptypb.Empty))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_BackingImageWatch_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(emptypb.Empty)
if err := stream.RecvMsg(m); err != nil {
return err
}
return srv.(SPDKServiceServer).BackingImageWatch(m, &sPDKServiceBackingImageWatchServer{stream})
}
type SPDKService_BackingImageWatchServer interface {
Send(*emptypb.Empty) error
grpc.ServerStream
}
type sPDKServiceBackingImageWatchServer struct {
grpc.ServerStream
}
func (x *sPDKServiceBackingImageWatchServer) Send(m *emptypb.Empty) error {
return x.ServerStream.SendMsg(m)
}
func _SPDKService_BackingImageExpose_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(BackingImageGetRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).BackingImageExpose(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_BackingImageExpose_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).BackingImageExpose(ctx, req.(*BackingImageGetRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_BackingImageUnexpose_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(BackingImageGetRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(SPDKServiceServer).BackingImageUnexpose(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: SPDKService_BackingImageUnexpose_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(SPDKServiceServer).BackingImageUnexpose(ctx, req.(*BackingImageGetRequest))
}
return interceptor(ctx, in, info, handler)
}
func _SPDKService_DiskCreate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(DiskCreateRequest)
if err := dec(in); err != nil {
@ -2077,6 +2334,30 @@ var SPDKService_ServiceDesc = grpc.ServiceDesc{
MethodName: "EngineRestoreStatus",
Handler: _SPDKService_EngineRestoreStatus_Handler,
},
{
MethodName: "BackingImageCreate",
Handler: _SPDKService_BackingImageCreate_Handler,
},
{
MethodName: "BackingImageDelete",
Handler: _SPDKService_BackingImageDelete_Handler,
},
{
MethodName: "BackingImageGet",
Handler: _SPDKService_BackingImageGet_Handler,
},
{
MethodName: "BackingImageList",
Handler: _SPDKService_BackingImageList_Handler,
},
{
MethodName: "BackingImageExpose",
Handler: _SPDKService_BackingImageExpose_Handler,
},
{
MethodName: "BackingImageUnexpose",
Handler: _SPDKService_BackingImageUnexpose_Handler,
},
{
MethodName: "DiskCreate",
Handler: _SPDKService_DiskCreate_Handler,
@ -2121,6 +2402,11 @@ var SPDKService_ServiceDesc = grpc.ServiceDesc{
Handler: _SPDKService_EngineWatch_Handler,
ServerStreams: true,
},
{
StreamName: "BackingImageWatch",
Handler: _SPDKService_BackingImageWatch_Handler,
ServerStreams: true,
},
},
Metadata: "spdkrpc/spdk.proto",
}

View File

@ -42,6 +42,7 @@ message SpdkInstanceSpec {
bool expose_required = 5;
string frontend = 6;
bool salvage_requested = 7;
string backing_image_name = 8;
}
message InstanceSpec {

View File

@ -10,300 +10,350 @@ import "ptypes/syncagent.proto";
import "imrpc/common.proto";
service ProxyEngineService {
rpc ServerVersionGet(ProxyEngineRequest) returns (EngineVersionProxyResponse);
rpc ServerVersionGet(ProxyEngineRequest) returns (EngineVersionProxyResponse);
rpc VolumeGet(ProxyEngineRequest) returns (EngineVolumeGetProxyResponse);
rpc VolumeExpand(EngineVolumeExpandRequest) returns (google.protobuf.Empty);
rpc VolumeFrontendStart(EngineVolumeFrontendStartRequest) returns (google.protobuf.Empty);
rpc VolumeFrontendShutdown(ProxyEngineRequest) returns (google.protobuf.Empty);
rpc VolumeUnmapMarkSnapChainRemovedSet(EngineVolumeUnmapMarkSnapChainRemovedSetRequest) returns (google.protobuf.Empty);
rpc VolumeSnapshotMaxCountSet(EngineVolumeSnapshotMaxCountSetRequest) returns (google.protobuf.Empty);
rpc VolumeSnapshotMaxSizeSet(EngineVolumeSnapshotMaxSizeSetRequest) returns (google.protobuf.Empty);
rpc VolumeGet(ProxyEngineRequest) returns (EngineVolumeGetProxyResponse);
rpc VolumeExpand(EngineVolumeExpandRequest) returns (google.protobuf.Empty);
rpc VolumeFrontendStart(EngineVolumeFrontendStartRequest) returns (google.protobuf.Empty);
rpc VolumeFrontendShutdown(ProxyEngineRequest) returns (google.protobuf.Empty);
rpc VolumeUnmapMarkSnapChainRemovedSet(EngineVolumeUnmapMarkSnapChainRemovedSetRequest) returns (google.protobuf.Empty);
rpc VolumeSnapshotMaxCountSet(EngineVolumeSnapshotMaxCountSetRequest) returns (google.protobuf.Empty);
rpc VolumeSnapshotMaxSizeSet(EngineVolumeSnapshotMaxSizeSetRequest) returns (google.protobuf.Empty);
rpc VolumeSnapshot(EngineVolumeSnapshotRequest) returns (EngineVolumeSnapshotProxyResponse);
rpc SnapshotList(ProxyEngineRequest) returns (EngineSnapshotListProxyResponse);
rpc SnapshotRevert(EngineSnapshotRevertRequest) returns (google.protobuf.Empty);
rpc SnapshotPurge(EngineSnapshotPurgeRequest) returns (google.protobuf.Empty);
rpc SnapshotPurgeStatus(ProxyEngineRequest) returns (EngineSnapshotPurgeStatusProxyResponse);
rpc SnapshotClone(EngineSnapshotCloneRequest) returns (google.protobuf.Empty);
rpc SnapshotCloneStatus(ProxyEngineRequest) returns (EngineSnapshotCloneStatusProxyResponse);
rpc SnapshotRemove(EngineSnapshotRemoveRequest) returns (google.protobuf.Empty);
rpc SnapshotHash(EngineSnapshotHashRequest) returns (google.protobuf.Empty);
rpc SnapshotHashStatus(EngineSnapshotHashStatusRequest) returns (EngineSnapshotHashStatusProxyResponse);
rpc VolumeSnapshot(EngineVolumeSnapshotRequest) returns (EngineVolumeSnapshotProxyResponse);
rpc SnapshotList(ProxyEngineRequest) returns (EngineSnapshotListProxyResponse);
rpc SnapshotRevert(EngineSnapshotRevertRequest) returns (google.protobuf.Empty);
rpc SnapshotPurge(EngineSnapshotPurgeRequest) returns (google.protobuf.Empty);
rpc SnapshotPurgeStatus(ProxyEngineRequest) returns (EngineSnapshotPurgeStatusProxyResponse);
rpc SnapshotClone(EngineSnapshotCloneRequest) returns (google.protobuf.Empty);
rpc SnapshotCloneStatus(ProxyEngineRequest) returns (EngineSnapshotCloneStatusProxyResponse);
rpc SnapshotRemove(EngineSnapshotRemoveRequest) returns (google.protobuf.Empty);
rpc SnapshotHash(EngineSnapshotHashRequest) returns (google.protobuf.Empty);
rpc SnapshotHashStatus(EngineSnapshotHashStatusRequest) returns (EngineSnapshotHashStatusProxyResponse);
rpc SnapshotBackup(EngineSnapshotBackupRequest) returns (EngineSnapshotBackupProxyResponse);
rpc SnapshotBackupStatus(EngineSnapshotBackupStatusRequest) returns (EngineSnapshotBackupStatusProxyResponse);
rpc BackupRestore(EngineBackupRestoreRequest) returns (EngineBackupRestoreProxyResponse);
rpc BackupRestoreStatus(ProxyEngineRequest) returns (EngineBackupRestoreStatusProxyResponse);
rpc BackupRestoreFinish(EngineBackupRestoreFinishRequest) returns (google.protobuf.Empty); // Deprecated: retained for compatibility with v1.7.x and earlier versions.
rpc CleanupBackupMountPoints(google.protobuf.Empty) returns (google.protobuf.Empty);
rpc SnapshotBackup(EngineSnapshotBackupRequest) returns (EngineSnapshotBackupProxyResponse);
rpc SnapshotBackupStatus(EngineSnapshotBackupStatusRequest) returns (EngineSnapshotBackupStatusProxyResponse);
rpc BackupRestore(EngineBackupRestoreRequest) returns (EngineBackupRestoreProxyResponse);
rpc BackupRestoreStatus(ProxyEngineRequest) returns (EngineBackupRestoreStatusProxyResponse);
rpc BackupRestoreFinish(EngineBackupRestoreFinishRequest) returns (google.protobuf.Empty); // Deprecated: retained for compatibility with v1.7.x and earlier versions.
rpc CleanupBackupMountPoints(google.protobuf.Empty) returns (google.protobuf.Empty);
rpc ReplicaAdd(EngineReplicaAddRequest) returns (google.protobuf.Empty);
rpc ReplicaList(ProxyEngineRequest) returns (EngineReplicaListProxyResponse);
rpc ReplicaRebuildingStatus(ProxyEngineRequest) returns (EngineReplicaRebuildStatusProxyResponse);
rpc ReplicaVerifyRebuild(EngineReplicaVerifyRebuildRequest) returns (google.protobuf.Empty);
rpc ReplicaRemove(EngineReplicaRemoveRequest) returns (google.protobuf.Empty);
rpc ReplicaModeUpdate(EngineReplicaModeUpdateRequest) returns (google.protobuf.Empty);
rpc ReplicaAdd(EngineReplicaAddRequest) returns (google.protobuf.Empty);
rpc ReplicaList(ProxyEngineRequest) returns (EngineReplicaListProxyResponse);
rpc ReplicaRebuildingStatus(ProxyEngineRequest) returns (EngineReplicaRebuildStatusProxyResponse);
rpc ReplicaVerifyRebuild(EngineReplicaVerifyRebuildRequest) returns (google.protobuf.Empty);
rpc ReplicaRemove(EngineReplicaRemoveRequest) returns (google.protobuf.Empty);
rpc ReplicaModeUpdate(EngineReplicaModeUpdateRequest) returns (google.protobuf.Empty);
rpc MetricsGet(ProxyEngineRequest) returns (EngineMetricsGetProxyResponse);
rpc RemountReadOnlyVolume(RemountVolumeRequest) returns (google.protobuf.Empty);
rpc SPDKBackingImageCreate(SPDKBackingImageCreateRequest) returns (SPDKBackingImageResponse);
rpc SPDKBackingImageDelete(SPDKBackingImageDeleteRequest) returns (google.protobuf.Empty);
rpc SPDKBackingImageGet(SPDKBackingImageGetRequest) returns (SPDKBackingImageResponse);
rpc SPDKBackingImageList(google.protobuf.Empty) returns (SPDKBackingImageListResponse);
rpc SPDKBackingImageWatch(google.protobuf.Empty) returns (stream google.protobuf.Empty) {}
rpc MetricsGet(ProxyEngineRequest) returns (EngineMetricsGetProxyResponse);
rpc RemountReadOnlyVolume(RemountVolumeRequest) returns (google.protobuf.Empty);
}
message ProxyEngineRequest{
string address = 1;
// Deprecated: Replaced by `data_engine`.
BackendStoreDriver backend_store_driver = 2 [deprecated=true];
string engine_name = 3;
string volume_name = 4;
DataEngine data_engine = 5;
string address = 1;
// Deprecated: Replaced by `data_engine`.
BackendStoreDriver backend_store_driver = 2 [deprecated=true];
string engine_name = 3;
string volume_name = 4;
DataEngine data_engine = 5;
}
message EngineVersionProxyResponse {
ptypes.VersionOutput version = 1;
ptypes.VersionOutput version = 1;
}
message EngineVolumeGetProxyResponse {
ptypes.Volume volume = 1;
ptypes.Volume volume = 1;
}
message EngineVolumeExpandRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
ptypes.VolumeExpandRequest expand = 2;
ptypes.VolumeExpandRequest expand = 2;
}
message EngineVolumeFrontendStartRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
ptypes.VolumeFrontendStartRequest frontend_start = 2;
ptypes.VolumeFrontendStartRequest frontend_start = 2;
}
message EngineVolumeSnapshotRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
ptypes.VolumeSnapshotRequest snapshot_volume = 2;
ptypes.VolumeSnapshotRequest snapshot_volume = 2;
}
message EngineVolumeSnapshotProxyResponse {
ptypes.VolumeSnapshotReply snapshot = 1;
ptypes.VolumeSnapshotReply snapshot = 1;
}
message EngineVolumeUnmapMarkSnapChainRemovedSetRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
ptypes.VolumeUnmapMarkSnapChainRemovedSetRequest unmap_mark_snap = 2;
ptypes.VolumeUnmapMarkSnapChainRemovedSetRequest unmap_mark_snap = 2;
}
message EngineVolumeSnapshotMaxCountSetRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
ptypes.VolumeSnapshotMaxCountSetRequest count = 2;
ptypes.VolumeSnapshotMaxCountSetRequest count = 2;
}
message EngineVolumeSnapshotMaxSizeSetRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
ptypes.VolumeSnapshotMaxSizeSetRequest size = 2;
ptypes.VolumeSnapshotMaxSizeSetRequest size = 2;
}
message EngineSnapshotListProxyResponse {
map<string, EngineSnapshotDiskInfo> disks = 1;
map<string, EngineSnapshotDiskInfo> disks = 1;
}
message EngineSnapshotDiskInfo {
string name = 1;
string parent = 2;
map<string, bool> children = 3;
bool removed = 4;
bool user_created = 5;
string created = 6;
string size = 7;
map<string, string> labels = 8;
string name = 1;
string parent = 2;
map<string, bool> children = 3;
bool removed = 4;
bool user_created = 5;
string created = 6;
string size = 7;
map<string, string> labels = 8;
}
message EngineSnapshotRevertRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
string name = 2;
string name = 2;
}
message EngineSnapshotPurgeRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
bool skip_if_in_progress = 2;
bool skip_if_in_progress = 2;
}
message EngineSnapshotPurgeStatusProxyResponse {
map<string, ptypes.SnapshotPurgeStatusResponse> status = 1;
map<string, ptypes.SnapshotPurgeStatusResponse> status = 1;
}
message EngineSnapshotCloneRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
string from_engine_address = 2;
string snapshot_name = 3;
bool export_backing_image_if_exist = 4;
int32 file_sync_http_client_timeout = 5;
string from_engine_name = 6;
string from_volume_name = 7;
int64 grpc_timeout_seconds = 9;
string from_engine_address = 2;
string snapshot_name = 3;
bool export_backing_image_if_exist = 4;
int32 file_sync_http_client_timeout = 5;
string from_engine_name = 6;
string from_volume_name = 7;
int64 grpc_timeout_seconds = 9;
}
message EngineSnapshotCloneStatusProxyResponse {
map<string, ptypes.SnapshotCloneStatusResponse> status = 1;
map<string, ptypes.SnapshotCloneStatusResponse> status = 1;
}
message EngineSnapshotRemoveRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
repeated string names = 2;
repeated string names = 2;
}
message EngineSnapshotBackupRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
repeated string envs = 8;
repeated string envs = 8;
string backup_name = 2;
string snapshot_name = 3;
string backup_target = 4;
string backing_image_name = 5;
string backing_image_checksum = 6;
map<string, string> labels = 7;
string compression_method = 9;
int32 concurrent_limit = 10;
string storage_class_name = 11;
map<string, string> parameters = 12;
string backup_name = 2;
string snapshot_name = 3;
string backup_target = 4;
string backing_image_name = 5;
string backing_image_checksum = 6;
map<string, string> labels = 7;
string compression_method = 9;
int32 concurrent_limit = 10;
string storage_class_name = 11;
map<string, string> parameters = 12;
}
message EngineSnapshotBackupProxyResponse {
string backup_id = 1;
string replica = 2;
bool is_incremental = 3;
string backup_id = 1;
string replica = 2;
bool is_incremental = 3;
}
message EngineSnapshotBackupStatusRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
string backup_name = 2;
string replica_address = 3;
string replica_name = 4;
string backup_name = 2;
string replica_address = 3;
string replica_name = 4;
}
message EngineSnapshotBackupStatusProxyResponse {
string backup_url = 1;
string error = 2;
int32 progress = 3;
string snapshot_name = 4;
string state = 5;
string backup_url = 1;
string error = 2;
int32 progress = 3;
string snapshot_name = 4;
string state = 5;
string replica_address = 6;
string replica_address = 6;
}
message EngineBackupRestoreRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
repeated string envs = 2;
repeated string envs = 2;
string url = 3;
string target = 4;
string volume_name = 5;
int32 concurrent_limit = 6;
string url = 3;
string target = 4;
string volume_name = 5;
int32 concurrent_limit = 6;
}
message EngineBackupRestoreProxyResponse {
bytes taskError = 1;
bytes taskError = 1;
}
message EngineBackupRestoreStatusProxyResponse {
map<string, EngineBackupRestoreStatus> status = 1;
map<string, EngineBackupRestoreStatus> status = 1;
}
message EngineBackupRestoreStatus {
bool is_restoring = 1;
string last_restored = 2;
string current_restoring_backup = 3;
int32 progress = 4;
string error = 5;
string filename = 6;
string state = 7;
string backup_url = 8;
bool is_restoring = 1;
string last_restored = 2;
string current_restoring_backup = 3;
int32 progress = 4;
string error = 5;
string filename = 6;
string state = 7;
string backup_url = 8;
}
// Deprecated: retained for compatibility with v1.7.x and earlier versions.
message EngineBackupRestoreFinishRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
}
message EngineReplicaAddRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
string replica_address = 2;
bool restore = 3;
int64 size = 4;
int64 current_size = 5;
bool fast_sync = 6;
int32 file_sync_http_client_timeout = 7;
string replica_name = 8;
int64 grpc_timeout_seconds = 9;
EngineReplicaLocalSync local_sync = 10;
string replica_address = 2;
bool restore = 3;
int64 size = 4;
int64 current_size = 5;
bool fast_sync = 6;
int32 file_sync_http_client_timeout = 7;
string replica_name = 8;
int64 grpc_timeout_seconds = 9;
EngineReplicaLocalSync local_sync = 10;
}
message EngineReplicaLocalSync {
string source_path = 1;
string target_path = 2;
string source_path = 1;
string target_path = 2;
}
message EngineReplicaListProxyResponse {
ptypes.ReplicaListReply replica_list = 1;
ptypes.ReplicaListReply replica_list = 1;
}
message EngineReplicaVerifyRebuildRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
string replica_address = 2;
string replica_name = 3;
string replica_address = 2;
string replica_name = 3;
}
message EngineReplicaRebuildStatusProxyResponse {
map<string, ptypes.ReplicaRebuildStatusResponse> status = 1;
map<string, ptypes.ReplicaRebuildStatusResponse> status = 1;
}
message EngineReplicaRemoveRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
string replica_address = 2;
string replica_name = 3;
string replica_address = 2;
string replica_name = 3;
}
message EngineReplicaModeUpdateRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
string replica_address = 2;
ptypes.ReplicaMode mode = 3;
string replica_address = 2;
ptypes.ReplicaMode mode = 3;
}
message EngineSnapshotHashRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
string snapshot_name = 2;
bool rehash = 3;
string snapshot_name = 2;
bool rehash = 3;
}
message EngineSnapshotHashStatusRequest {
ProxyEngineRequest proxy_engine_request = 1;
ProxyEngineRequest proxy_engine_request = 1;
string snapshot_name = 2;
string snapshot_name = 2;
}
message EngineSnapshotHashStatusProxyResponse {
map<string, ptypes.SnapshotHashStatusResponse> status = 1;
map<string, ptypes.SnapshotHashStatusResponse> status = 1;
}
message EngineMetricsGetProxyResponse {
ptypes.Metrics metrics = 1;
ptypes.Metrics metrics = 1;
}
message RemountVolumeRequest {
string volume_name = 1;
string volume_name = 1;
}
message SPDKBackingImageCreateRequest {
string name = 1;
string backing_image_uuid = 2;
string disk_uuid = 3;
uint64 size = 4;
string checksum = 5;
string from_address = 6;
string src_lvs_uuid = 7;
}
message SPDKBackingImageDeleteRequest {
string name = 1;
string disk_uuid = 2;
}
message SPDKBackingImageGetRequest {
string name = 1;
string disk_uuid = 2;
}
message SPDKBackingImageSpec {
string name = 1;
string backing_image_uuid = 2;
string disk_uuid = 3;
uint64 size = 4;
string checksum = 5;
}
message SPDKBackingImageStatus {
int32 progress = 1;
string state = 2;
string checksum = 3;
string error_msg = 4;
}
message SPDKBackingImageResponse {
SPDKBackingImageSpec spec = 1;
SPDKBackingImageStatus status = 2;
}
message SPDKBackingImageListResponse {
map<string, SPDKBackingImageResponse> backing_images = 1;
}

View File

@ -55,6 +55,14 @@ service SPDKService {
rpc EngineBackupRestoreFinish(EngineBackupRestoreFinishRequest) returns (google.protobuf.Empty) {} // Deprecated: retained for compatibility with v1.7.x and earlier versions.
rpc EngineRestoreStatus(RestoreStatusRequest) returns (RestoreStatusResponse) {}
rpc BackingImageCreate(BackingImageCreateRequest) returns (BackingImage);
rpc BackingImageDelete(BackingImageDeleteRequest) returns (google.protobuf.Empty);
rpc BackingImageGet(BackingImageGetRequest) returns (BackingImage);
rpc BackingImageList(google.protobuf.Empty) returns (BackingImageListResponse);
rpc BackingImageWatch(google.protobuf.Empty) returns (stream google.protobuf.Empty) {}
rpc BackingImageExpose(BackingImageGetRequest) returns (BackingImageExposeResponse) {}
rpc BackingImageUnexpose(BackingImageGetRequest) returns (google.protobuf.Empty) {}
rpc DiskCreate(DiskCreateRequest) returns (Disk);
rpc DiskDelete(DiskDeleteRequest) returns (google.protobuf.Empty);
rpc DiskGet(DiskGetRequest) returns (Disk);
@ -93,6 +101,7 @@ message Replica {
bool rebuilding = 11;
string state = 12;
string error_msg = 13;
string backing_image_name = 14;
}
message ReplicaCreateRequest {
@ -101,6 +110,7 @@ message ReplicaCreateRequest {
string lvs_uuid = 3;
uint64 spec_size = 4;
int32 port_count = 5;
string backing_image_name = 6;
}
message ReplicaDeleteRequest {
@ -427,6 +437,48 @@ message RestoreStatusResponse {
map<string, ReplicaRestoreStatusResponse> status = 1;
}
message BackingImage {
string name = 1;
string backing_image_uuid = 2;
string lvs_name = 3;
string lvs_uuid = 4;
uint64 size = 5;
string expectedChecksum = 6;
Lvol snapshot = 7;
int32 progress = 8;
string state = 9;
string currentChecksum = 10;
string error_msg = 11;
}
message BackingImageCreateRequest {
string name = 1;
string backing_image_uuid = 2;
string lvs_uuid = 3;
uint64 size = 4;
string checksum = 5;
string from_address = 6;
string src_lvs_uuid = 7;
}
message BackingImageDeleteRequest {
string name = 1;
string lvs_uuid = 2;
}
message BackingImageGetRequest {
string name = 1;
string lvs_uuid = 2;
}
message BackingImageListResponse {
map<string, BackingImage> backing_images = 1;
}
message BackingImageExposeResponse {
string exposed_snapshot_lvol_address = 1;
}
message Disk {
string id = 1;
string uuid = 2;