feat: Add new gcloud commands, API clients, and third-party libraries across various services.

This commit is contained in:
2026-01-01 20:26:35 +01:00
parent 5e23cbece0
commit a19e592eb7
25221 changed files with 8324611 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
## Long-running Operations API
This package contains the definition of an abstract interface that
manages long running operations with API services.
### Operation
The primary message to understand within LRO is the `Operation` message.
Operations have a unique name (in the context of a particular endpoint).
Additionally, a service (called `Operations` -- plural) defines the interface
for querying the state of any given operation.
APIs that implement a concept of long-running operations are encouraged
to follow this pattern: When a caller invokes an API backend to start a job...
* The API backend starts asychronous work to fulfill the caller's
request, and generates a unique name (the `Operation` name) to refer
to the ongoing asychronous work.
* The API backend immediately returns the `Operation` back to the caller.
* The caller can invoke the API methods defined in the `Operations` service
to get the current status of the asychronous work, and also to
discover the final result (success or error).
For Google APIs, the implementation of this pattern and the use of this
proto are part of our [design rules][operations-rules]. Additionally, our
[API client tooling][gapic-generator] seeks to be intelligent about these, to
improve the client API consumption experience. Therefore, APIs outside of
Google can also benefit by following this same pattern.
[operations-rules]: https://cloud.google.com/apis/design/design_patterns#long_running_operations
[gapic-generator]: https://github.com/googleapis/gapic-generator

View File

@@ -0,0 +1,20 @@
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This module is provided for backwards compatibility with
# googleapis-common-protos <= 1.5.0, where this was the import path.
from __future__ import absolute_import
from google.longrunning.operations_grpc_pb2 import * # noqa: F401, F403

View File

@@ -0,0 +1,16 @@
# This module is provided for backwards compatibility with
# googleapis-common-protos <= 1.52.0, where this import path contained
# all of the message and gRPC definitions.
from google.longrunning.operations_pb2_grpc import *
from google.longrunning.operations_proto_pb2 import *
from google.longrunning.operations_proto_pb2 import (
_CANCELOPERATIONREQUEST,
_DELETEOPERATIONREQUEST,
_GETOPERATIONREQUEST,
_LISTOPERATIONSREQUEST,
_LISTOPERATIONSRESPONSE,
_OPERATION,
_OPERATIONINFO,
_OPERATIONS,
)

View File

@@ -0,0 +1,45 @@
# Copyright 2016 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Safe implementation of long-running operations with and without gRPC.
Multiplexes between versions of long-running operations with and without gRPC.
The former is preferred, but not possible in all environments (such as Google
AppEngine Standard).
"""
try:
from google.longrunning.operations_grpc_pb2 import *
from google.longrunning.operations_grpc_pb2 import (
_CANCELOPERATIONREQUEST,
_DELETEOPERATIONREQUEST,
_GETOPERATIONREQUEST,
_LISTOPERATIONSREQUEST,
_LISTOPERATIONSRESPONSE,
_OPERATION,
_OPERATIONINFO,
_OPERATIONS,
)
except ImportError:
from google.longrunning.operations_proto_pb2 import *
from google.longrunning.operations_proto_pb2 import (
_CANCELOPERATIONREQUEST,
_DELETEOPERATIONREQUEST,
_GETOPERATIONREQUEST,
_LISTOPERATIONSREQUEST,
_LISTOPERATIONSRESPONSE,
_OPERATION,
_OPERATIONINFO,
_OPERATIONS,
)

View File

@@ -0,0 +1,339 @@
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc
from google.longrunning import (
operations_proto_pb2 as google_dot_longrunning_dot_operations__pb2,
)
from cloudsdk.google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
class OperationsStub(object):
"""Manages long-running operations with an API service.
When an API method normally takes long time to complete, it can be designed
to return [Operation][google.longrunning.Operation] to the client, and the client can use this
interface to receive the real response asynchronously by polling the
operation resource, or pass the operation resource to another API (such as
Google Cloud Pub/Sub API) to receive the response. Any API service that
returns long-running operations should implement the `Operations` interface
so developers can have a consistent client experience.
"""
def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.ListOperations = channel.unary_unary(
"/google.longrunning.Operations/ListOperations",
request_serializer=google_dot_longrunning_dot_operations__pb2.ListOperationsRequest.SerializeToString,
response_deserializer=google_dot_longrunning_dot_operations__pb2.ListOperationsResponse.FromString,
)
self.GetOperation = channel.unary_unary(
"/google.longrunning.Operations/GetOperation",
request_serializer=google_dot_longrunning_dot_operations__pb2.GetOperationRequest.SerializeToString,
response_deserializer=google_dot_longrunning_dot_operations__pb2.Operation.FromString,
)
self.DeleteOperation = channel.unary_unary(
"/google.longrunning.Operations/DeleteOperation",
request_serializer=google_dot_longrunning_dot_operations__pb2.DeleteOperationRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.CancelOperation = channel.unary_unary(
"/google.longrunning.Operations/CancelOperation",
request_serializer=google_dot_longrunning_dot_operations__pb2.CancelOperationRequest.SerializeToString,
response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
)
self.WaitOperation = channel.unary_unary(
"/google.longrunning.Operations/WaitOperation",
request_serializer=google_dot_longrunning_dot_operations__pb2.WaitOperationRequest.SerializeToString,
response_deserializer=google_dot_longrunning_dot_operations__pb2.Operation.FromString,
)
class OperationsServicer(object):
"""Manages long-running operations with an API service.
When an API method normally takes long time to complete, it can be designed
to return [Operation][google.longrunning.Operation] to the client, and the client can use this
interface to receive the real response asynchronously by polling the
operation resource, or pass the operation resource to another API (such as
Google Cloud Pub/Sub API) to receive the response. Any API service that
returns long-running operations should implement the `Operations` interface
so developers can have a consistent client experience.
"""
def ListOperations(self, request, context):
"""Lists operations that match the specified filter in the request. If the
server doesn't support this method, it returns `UNIMPLEMENTED`.
NOTE: the `name` binding allows API services to override the binding
to use different resource name schemes, such as `users/*/operations`. To
override the binding, API services can add a binding such as
`"/v1/{name=users/*}/operations"` to their service configuration.
For backwards compatibility, the default name includes the operations
collection id, however overriding users must ensure the name binding
is the parent resource, without the operations collection id.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def GetOperation(self, request, context):
"""Gets the latest state of a long-running operation. Clients can use this
method to poll the operation result at intervals as recommended by the API
service.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def DeleteOperation(self, request, context):
"""Deletes a long-running operation. This method indicates that the client is
no longer interested in the operation result. It does not cancel the
operation. If the server doesn't support this method, it returns
`google.rpc.Code.UNIMPLEMENTED`.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def CancelOperation(self, request, context):
"""Starts asynchronous cancellation on a long-running operation. The server
makes a best effort to cancel the operation, but success is not
guaranteed. If the server doesn't support this method, it returns
`google.rpc.Code.UNIMPLEMENTED`. Clients can use
[Operations.GetOperation][google.longrunning.Operations.GetOperation] or
other methods to check whether the cancellation succeeded or whether the
operation completed despite cancellation. On successful cancellation,
the operation is not deleted; instead, it becomes an operation with
an [Operation.error][google.longrunning.Operation.error] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
corresponding to `Code.CANCELLED`.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def WaitOperation(self, request, context):
"""Waits until the specified long-running operation is done or reaches at most
a specified timeout, returning the latest state. If the operation is
already done, the latest state is immediately returned. If the timeout
specified is greater than the default HTTP/RPC timeout, the HTTP/RPC
timeout is used. If the server does not support this method, it returns
`google.rpc.Code.UNIMPLEMENTED`.
Note that this method is on a best-effort basis. It may return the latest
state before the specified timeout (including immediately), meaning even an
immediate response is no guarantee that the operation is done.
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("Method not implemented!")
raise NotImplementedError("Method not implemented!")
def add_OperationsServicer_to_server(servicer, server):
rpc_method_handlers = {
"ListOperations": grpc.unary_unary_rpc_method_handler(
servicer.ListOperations,
request_deserializer=google_dot_longrunning_dot_operations__pb2.ListOperationsRequest.FromString,
response_serializer=google_dot_longrunning_dot_operations__pb2.ListOperationsResponse.SerializeToString,
),
"GetOperation": grpc.unary_unary_rpc_method_handler(
servicer.GetOperation,
request_deserializer=google_dot_longrunning_dot_operations__pb2.GetOperationRequest.FromString,
response_serializer=google_dot_longrunning_dot_operations__pb2.Operation.SerializeToString,
),
"DeleteOperation": grpc.unary_unary_rpc_method_handler(
servicer.DeleteOperation,
request_deserializer=google_dot_longrunning_dot_operations__pb2.DeleteOperationRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
"CancelOperation": grpc.unary_unary_rpc_method_handler(
servicer.CancelOperation,
request_deserializer=google_dot_longrunning_dot_operations__pb2.CancelOperationRequest.FromString,
response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
),
"WaitOperation": grpc.unary_unary_rpc_method_handler(
servicer.WaitOperation,
request_deserializer=google_dot_longrunning_dot_operations__pb2.WaitOperationRequest.FromString,
response_serializer=google_dot_longrunning_dot_operations__pb2.Operation.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
"google.longrunning.Operations", rpc_method_handlers
)
server.add_generic_rpc_handlers((generic_handler,))
# This class is part of an EXPERIMENTAL API.
class Operations(object):
"""Manages long-running operations with an API service.
When an API method normally takes long time to complete, it can be designed
to return [Operation][google.longrunning.Operation] to the client, and the client can use this
interface to receive the real response asynchronously by polling the
operation resource, or pass the operation resource to another API (such as
Google Cloud Pub/Sub API) to receive the response. Any API service that
returns long-running operations should implement the `Operations` interface
so developers can have a consistent client experience.
"""
@staticmethod
def ListOperations(
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,
"/google.longrunning.Operations/ListOperations",
google_dot_longrunning_dot_operations__pb2.ListOperationsRequest.SerializeToString,
google_dot_longrunning_dot_operations__pb2.ListOperationsResponse.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
)
@staticmethod
def GetOperation(
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,
"/google.longrunning.Operations/GetOperation",
google_dot_longrunning_dot_operations__pb2.GetOperationRequest.SerializeToString,
google_dot_longrunning_dot_operations__pb2.Operation.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
)
@staticmethod
def DeleteOperation(
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,
"/google.longrunning.Operations/DeleteOperation",
google_dot_longrunning_dot_operations__pb2.DeleteOperationRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
)
@staticmethod
def CancelOperation(
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,
"/google.longrunning.Operations/CancelOperation",
google_dot_longrunning_dot_operations__pb2.CancelOperationRequest.SerializeToString,
google_dot_protobuf_dot_empty__pb2.Empty.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
)
@staticmethod
def WaitOperation(
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,
"/google.longrunning.Operations/WaitOperation",
google_dot_longrunning_dot_operations__pb2.WaitOperationRequest.SerializeToString,
google_dot_longrunning_dot_operations__pb2.Operation.FromString,
options,
channel_credentials,
insecure,
call_credentials,
compression,
wait_for_ready,
timeout,
metadata,
)

View File

@@ -0,0 +1,6 @@
# This module is provided for backwards compatibility with
# googleapis-common-protos <= 1.5.0, where this was the import path.
from __future__ import absolute_import
from google.longrunning.operations_proto_pb2 import * # noqa: F401, F403

View File

@@ -0,0 +1,97 @@
# -*- coding: utf-8 -*-
# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: google/longrunning/operations.proto
# Protobuf Python Version: 4.25.3
"""Generated protocol buffer code."""
from cloudsdk.google.protobuf import descriptor as _descriptor
from cloudsdk.google.protobuf import descriptor_pool as _descriptor_pool
from cloudsdk.google.protobuf import symbol_database as _symbol_database
from cloudsdk.google.protobuf.internal import builder as _builder
# @@protoc_insertion_point(imports)
_sym_db = _symbol_database.Default()
from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
from google.api import client_pb2 as google_dot_api_dot_client__pb2
from cloudsdk.google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
from cloudsdk.google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
from cloudsdk.google.protobuf import duration_pb2 as google_dot_protobuf_dot_duration__pb2
from cloudsdk.google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
from google.rpc import status_pb2 as google_dot_rpc_dot_status__pb2
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(
b'\n#google/longrunning/operations.proto\x12\x12google.longrunning\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x19google/protobuf/any.proto\x1a google/protobuf/descriptor.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x17google/rpc/status.proto"\xa8\x01\n\tOperation\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\x08metadata\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x0c\n\x04\x64one\x18\x03 \x01(\x08\x12#\n\x05\x65rror\x18\x04 \x01(\x0b\x32\x12.google.rpc.StatusH\x00\x12(\n\x08response\x18\x05 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x42\x08\n\x06result"#\n\x13GetOperationRequest\x12\x0c\n\x04name\x18\x01 \x01(\t"\\\n\x15ListOperationsRequest\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x0e\n\x06\x66ilter\x18\x01 \x01(\t\x12\x11\n\tpage_size\x18\x02 \x01(\x05\x12\x12\n\npage_token\x18\x03 \x01(\t"d\n\x16ListOperationsResponse\x12\x31\n\noperations\x18\x01 \x03(\x0b\x32\x1d.google.longrunning.Operation\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t"&\n\x16\x43\x61ncelOperationRequest\x12\x0c\n\x04name\x18\x01 \x01(\t"&\n\x16\x44\x65leteOperationRequest\x12\x0c\n\x04name\x18\x01 \x01(\t"P\n\x14WaitOperationRequest\x12\x0c\n\x04name\x18\x01 \x01(\t\x12*\n\x07timeout\x18\x02 \x01(\x0b\x32\x19.google.protobuf.Duration"=\n\rOperationInfo\x12\x15\n\rresponse_type\x18\x01 \x01(\t\x12\x15\n\rmetadata_type\x18\x02 \x01(\t2\xaa\x05\n\nOperations\x12\x94\x01\n\x0eListOperations\x12).google.longrunning.ListOperationsRequest\x1a*.google.longrunning.ListOperationsResponse"+\xda\x41\x0bname,filter\x82\xd3\xe4\x93\x02\x17\x12\x15/v1/{name=operations}\x12\x7f\n\x0cGetOperation\x12\'.google.longrunning.GetOperationRequest\x1a\x1d.google.longrunning.Operation"\'\xda\x41\x04name\x82\xd3\xe4\x93\x02\x1a\x12\x18/v1/{name=operations/**}\x12~\n\x0f\x44\x65leteOperation\x12*.google.longrunning.DeleteOperationRequest\x1a\x16.google.protobuf.Empty"\'\xda\x41\x04name\x82\xd3\xe4\x93\x02\x1a*\x18/v1/{name=operations/**}\x12\x88\x01\n\x0f\x43\x61ncelOperation\x12*.google.longrunning.CancelOperationRequest\x1a\x16.google.protobuf.Empty"1\xda\x41\x04name\x82\xd3\xe4\x93\x02$"\x1f/v1/{name=operations/**}:cancel:\x01*\x12Z\n\rWaitOperation\x12(.google.longrunning.WaitOperationRequest\x1a\x1d.google.longrunning.Operation"\x00\x1a\x1d\xca\x41\x1alongrunning.googleapis.com:Z\n\x0eoperation_info\x12\x1e.google.protobuf.MethodOptions\x18\x99\x08 \x01(\x0b\x32!.google.longrunning.OperationInfoB\xa5\x01\n\x16\x63om.google.longrunningB\x0fOperationsProtoP\x01ZCcloud.google.com/go/longrunning/autogen/longrunningpb;longrunningpb\xf8\x01\x01\xa2\x02\x05GLRUN\xaa\x02\x12Google.LongRunning\xca\x02\x12Google\\LongRunningb\x06proto3'
)
_globals = globals()
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
_builder.BuildTopDescriptorsAndMessages(
DESCRIPTOR, "google.longrunning.operations_pb2", _globals
)
if _descriptor._USE_C_DESCRIPTORS == False:
_globals["DESCRIPTOR"]._options = None
_globals[
"DESCRIPTOR"
]._serialized_options = b"\n\026com.google.longrunningB\017OperationsProtoP\001ZCcloud.google.com/go/longrunning/autogen/longrunningpb;longrunningpb\370\001\001\242\002\005GLRUN\252\002\022Google.LongRunning\312\002\022Google\\LongRunning"
_globals["_OPERATIONS"]._options = None
_globals["_OPERATIONS"]._serialized_options = b"\312A\032longrunning.googleapis.com"
_globals["_OPERATIONS"].methods_by_name["ListOperations"]._options = None
_globals["_OPERATIONS"].methods_by_name[
"ListOperations"
]._serialized_options = (
b"\332A\013name,filter\202\323\344\223\002\027\022\025/v1/{name=operations}"
)
_globals["_OPERATIONS"].methods_by_name["GetOperation"]._options = None
_globals["_OPERATIONS"].methods_by_name[
"GetOperation"
]._serialized_options = (
b"\332A\004name\202\323\344\223\002\032\022\030/v1/{name=operations/**}"
)
_globals["_OPERATIONS"].methods_by_name["DeleteOperation"]._options = None
_globals["_OPERATIONS"].methods_by_name[
"DeleteOperation"
]._serialized_options = (
b"\332A\004name\202\323\344\223\002\032*\030/v1/{name=operations/**}"
)
_globals["_OPERATIONS"].methods_by_name["CancelOperation"]._options = None
_globals["_OPERATIONS"].methods_by_name[
"CancelOperation"
]._serialized_options = (
b'\332A\004name\202\323\344\223\002$"\037/v1/{name=operations/**}:cancel:\001*'
)
_globals["_OPERATION"]._serialized_start = 262
_globals["_OPERATION"]._serialized_end = 430
_globals["_GETOPERATIONREQUEST"]._serialized_start = 432
_globals["_GETOPERATIONREQUEST"]._serialized_end = 467
_globals["_LISTOPERATIONSREQUEST"]._serialized_start = 469
_globals["_LISTOPERATIONSREQUEST"]._serialized_end = 561
_globals["_LISTOPERATIONSRESPONSE"]._serialized_start = 563
_globals["_LISTOPERATIONSRESPONSE"]._serialized_end = 663
_globals["_CANCELOPERATIONREQUEST"]._serialized_start = 665
_globals["_CANCELOPERATIONREQUEST"]._serialized_end = 703
_globals["_DELETEOPERATIONREQUEST"]._serialized_start = 705
_globals["_DELETEOPERATIONREQUEST"]._serialized_end = 743
_globals["_WAITOPERATIONREQUEST"]._serialized_start = 745
_globals["_WAITOPERATIONREQUEST"]._serialized_end = 825
_globals["_OPERATIONINFO"]._serialized_start = 827
_globals["_OPERATIONINFO"]._serialized_end = 888
_globals["_OPERATIONS"]._serialized_start = 891
_globals["_OPERATIONS"]._serialized_end = 1573
# @@protoc_insertion_point(module_scope)