feat: added support for k8s_version field

docs: k8s_version field is not part of resource_options struct

Clients now generate the V1 or V1beta1 CRD based on Kubernetes server version.

PiperOrigin-RevId: 430569173
pull/705/head
Google APIs 3 years ago committed by Copybara-Service
parent 9e18f9c0fc
commit 3c17193603
  1. 229
      google/cloud/gkehub/v1beta1/membership.proto

@ -1,4 +1,4 @@
// Copyright 2021 Google LLC
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@ -33,7 +33,8 @@ option php_namespace = "Google\\Cloud\\GkeHub\\V1beta1";
option ruby_package = "Google::Cloud::GkeHub::V1beta1";
// The GKE Hub MembershipService handles the registration of many Kubernetes
// clusters to Google Cloud, represented with the [Membership][google.cloud.gkehub.v1beta1.Membership] resource.
// clusters to Google Cloud, represented with the
// [Membership][google.cloud.gkehub.v1beta1.Membership] resource.
//
// GKE Hub is currently only available in the global region.
//
@ -42,10 +43,12 @@ option ruby_package = "Google::Cloud::GkeHub::V1beta1";
// with Membership resources.
service GkeHubMembershipService {
option (google.api.default_host) = "gkehub.googleapis.com";
option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
option (google.api.oauth_scopes) =
"https://www.googleapis.com/auth/cloud-platform";
// Lists Memberships in a given project and location.
rpc ListMemberships(ListMembershipsRequest) returns (ListMembershipsResponse) {
rpc ListMemberships(ListMembershipsRequest)
returns (ListMembershipsResponse) {
option (google.api.http) = {
get: "/v1beta1/{parent=projects/*/locations/*}/memberships"
};
@ -65,7 +68,8 @@ service GkeHubMembershipService {
// **This is currently only supported for GKE clusters on Google Cloud**.
// To register other clusters, follow the instructions at
// https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster.
rpc CreateMembership(CreateMembershipRequest) returns (google.longrunning.Operation) {
rpc CreateMembership(CreateMembershipRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1beta1/{parent=projects/*/locations/*}/memberships"
body: "resource"
@ -82,7 +86,8 @@ service GkeHubMembershipService {
// **This is currently only supported for GKE clusters on Google Cloud**.
// To unregister other clusters, follow the instructions at
// https://cloud.google.com/anthos/multicluster-management/connect/unregistering-a-cluster.
rpc DeleteMembership(DeleteMembershipRequest) returns (google.longrunning.Operation) {
rpc DeleteMembership(DeleteMembershipRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
delete: "/v1beta1/{name=projects/*/locations/*/memberships/*}"
};
@ -94,7 +99,8 @@ service GkeHubMembershipService {
}
// Updates an existing Membership.
rpc UpdateMembership(UpdateMembershipRequest) returns (google.longrunning.Operation) {
rpc UpdateMembership(UpdateMembershipRequest)
returns (google.longrunning.Operation) {
option (google.api.http) = {
patch: "/v1beta1/{name=projects/*/locations/*/memberships/*}"
body: "resource"
@ -110,7 +116,8 @@ service GkeHubMembershipService {
//
// **This method is used internally by Google-provided libraries.**
// Most clients should not need to call this method directly.
rpc GenerateConnectManifest(GenerateConnectManifestRequest) returns (GenerateConnectManifestResponse) {
rpc GenerateConnectManifest(GenerateConnectManifestRequest)
returns (GenerateConnectManifestResponse) {
option (google.api.http) = {
get: "/v1beta1/{name=projects/*/locations/*/memberships/*}:generateConnectManifest"
};
@ -118,7 +125,8 @@ service GkeHubMembershipService {
// ValidateExclusivity validates the state of exclusivity in the cluster.
// The validation does not depend on an existing Hub membership resource.
rpc ValidateExclusivity(ValidateExclusivityRequest) returns (ValidateExclusivityResponse) {
rpc ValidateExclusivity(ValidateExclusivityRequest)
returns (ValidateExclusivityResponse) {
option (google.api.http) = {
get: "/v1beta1/{parent=projects/*/locations/*}/memberships:validateExclusivity"
};
@ -136,7 +144,8 @@ service GkeHubMembershipService {
// Hub API server begins serving a newer version of the CRD and
// corresponding CR. The response will be the converted CRD and CR if there
// are any differences between the versions.
rpc GenerateExclusivityManifest(GenerateExclusivityManifestRequest) returns (GenerateExclusivityManifestResponse) {
rpc GenerateExclusivityManifest(GenerateExclusivityManifestRequest)
returns (GenerateExclusivityManifestResponse) {
option (google.api.http) = {
get: "/v1beta1/{name=projects/*/locations/*/memberships/*}:generateExclusivityManifest"
};
@ -169,8 +178,9 @@ message Membership {
MULTI_CLOUD = 2;
}
// Output only. The full, unique name of this Membership resource in the format
// `projects/*/locations/*/memberships/{membership_id}`, set during creation.
// Output only. The full, unique name of this Membership resource in the
// format `projects/*/locations/*/memberships/{membership_id}`, set during
// creation.
//
// `membership_id` must be a valid RFC 1123 compliant DNS label:
//
@ -204,17 +214,21 @@ message Membership {
Authority authority = 9 [(google.api.field_behavior) = OPTIONAL];
// Output only. When the Membership was created.
google.protobuf.Timestamp create_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp create_time = 6
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. When the Membership was last updated.
google.protobuf.Timestamp update_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp update_time = 7
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. When the Membership was deleted.
google.protobuf.Timestamp delete_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp delete_time = 8
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. An externally-generated and managed ID for this Membership. This ID may
// be modified after creation, but this is not recommended. For GKE clusters,
// external_id is managed by the Hub API and updates will be ignored.
// Optional. An externally-generated and managed ID for this Membership. This
// ID may be modified after creation, but this is not recommended. For GKE
// clusters, external_id is managed by the Hub API and updates will be
// ignored.
//
// The ID must match the regex: `[a-zA-Z0-9][a-zA-Z0-9_\-\.]*`
//
@ -222,19 +236,22 @@ message Membership {
// set to the UID of the `kube-system` namespace object.
string external_id = 10 [(google.api.field_behavior) = OPTIONAL];
// Output only. For clusters using Connect, the timestamp of the most recent connection
// established with Google Cloud. This time is updated every several minutes,
// not continuously. For clusters that do not use GKE Connect, or that have
// never connected successfully, this field will be unset.
google.protobuf.Timestamp last_connection_time = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. For clusters using Connect, the timestamp of the most recent
// connection established with Google Cloud. This time is updated every
// several minutes, not continuously. For clusters that do not use GKE
// Connect, or that have never connected successfully, this field will be
// unset.
google.protobuf.Timestamp last_connection_time = 11
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Google-generated UUID for this resource. This is unique across all
// Membership resources. If a Membership resource is deleted and another
// Output only. Google-generated UUID for this resource. This is unique across
// all Membership resources. If a Membership resource is deleted and another
// resource with the same name is created, it gets a different unique_id.
string unique_id = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The infrastructure type this Membership is running on.
InfrastructureType infrastructure_type = 13 [(google.api.field_behavior) = OPTIONAL];
InfrastructureType infrastructure_type = 13
[(google.api.field_behavior) = OPTIONAL];
}
// MembershipEndpoint contains information needed to contact a Kubernetes API,
@ -249,29 +266,32 @@ message MembershipEndpoint {
OnPremCluster on_prem_cluster = 7 [(google.api.field_behavior) = OPTIONAL];
// Optional. Specific information for a GKE Multi-Cloud cluster.
MultiCloudCluster multi_cloud_cluster = 8 [(google.api.field_behavior) = OPTIONAL];
MultiCloudCluster multi_cloud_cluster = 8
[(google.api.field_behavior) = OPTIONAL];
}
// Output only. Useful Kubernetes-specific metadata.
KubernetesMetadata kubernetes_metadata = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
KubernetesMetadata kubernetes_metadata = 5
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. The in-cluster Kubernetes Resources that should be applied for a correctly
// registered cluster, in the steady state. These resources:
// Optional. The in-cluster Kubernetes Resources that should be applied for a
// correctly registered cluster, in the steady state. These resources:
//
// * Ensure that the cluster is exclusively registered to one and only one
// Hub Membership.
// * Propagate Workload Pool Information available in the Membership
// Authority field.
// * Ensure proper initial configuration of default Hub Features.
KubernetesResource kubernetes_resource = 6 [(google.api.field_behavior) = OPTIONAL];
KubernetesResource kubernetes_resource = 6
[(google.api.field_behavior) = OPTIONAL];
}
// KubernetesResource contains the YAML manifests and configuration for
// Membership Kubernetes resources in the cluster. After CreateMembership or
// UpdateMembership, these resources should be re-applied in the cluster.
message KubernetesResource {
// Input only. The YAML representation of the Membership CR. This field is ignored for GKE
// clusters where Hub can read the CR directly.
// Input only. The YAML representation of the Membership CR. This field is
// ignored for GKE clusters where Hub can read the CR directly.
//
// Callers should provide the CR that is currently present in the cluster
// during CreateMembership or UpdateMembership, or leave this field empty if
@ -279,15 +299,16 @@ message KubernetesResource {
// registered with another Membership.
string membership_cr_manifest = 1 [(google.api.field_behavior) = INPUT_ONLY];
// Output only. Additional Kubernetes resources that need to be applied to the cluster
// after Membership creation, and after every update.
// Output only. Additional Kubernetes resources that need to be applied to the
// cluster after Membership creation, and after every update.
//
// This field is only populated in the Membership returned from a successful
// long-running operation from CreateMembership or UpdateMembership. It is not
// populated during normal GetMembership or ListMemberships requests. To get
// the resource manifest after the initial registration, the caller should
// make a UpdateMembership call with an empty field mask.
repeated ResourceManifest membership_resources = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
repeated ResourceManifest membership_resources = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The Kubernetes resources for installing the GKE Connect agent
//
@ -296,7 +317,8 @@ message KubernetesResource {
// populated during normal GetMembership or ListMemberships requests. To get
// the resource manifest after the initial registration, the caller should
// make a UpdateMembership call with an empty field mask.
repeated ResourceManifest connect_resources = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
repeated ResourceManifest connect_resources = 3
[(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. Options for Kubernetes resource generation.
ResourceOptions resource_options = 4 [(google.api.field_behavior) = OPTIONAL];
@ -304,9 +326,9 @@ message KubernetesResource {
// ResourceOptions represent options for Kubernetes resource generation.
message ResourceOptions {
// Optional. The Connect agent version to use for connect_resources. Defaults to the
// latest GKE Connect version. The version must be a currently supported
// version, obsolete versions will be rejected.
// Optional. The Connect agent version to use for connect_resources. Defaults
// to the latest GKE Connect version. The version must be a currently
// supported version, obsolete versions will be rejected.
string connect_version = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Use `apiextensions/v1beta1` instead of `apiextensions/v1` for
@ -314,6 +336,11 @@ message ResourceOptions {
// This option should be set for clusters with Kubernetes apiserver versions
// <1.16.
bool v1beta1_crd = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Major version of the Kubernetes cluster. This is only used to
// determine which version to use for the CustomResourceDefinition resources,
// `apiextensions/v1beta1` or`apiextensions/v1`.
string k8s_version = 3 [(google.api.field_behavior) = OPTIONAL];
}
// ResourceManifest represents a single Kubernetes resource to be applied to
@ -339,14 +366,15 @@ message GkeCluster {
// Zonal clusters are also supported.
string resource_link = 1 [(google.api.field_behavior) = IMMUTABLE];
// Output only. If cluster_missing is set then it denotes that the GKE cluster no longer
// exists in the GKE Control Plane.
// Output only. If cluster_missing is set then it denotes that the GKE cluster
// no longer exists in the GKE Control Plane.
bool cluster_missing = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
}
// OnPremCluster contains information specific to GKE On-Prem clusters.
message OnPremCluster {
// Immutable. Self-link of the GCP resource for the GKE On-Prem cluster. For example:
// Immutable. Self-link of the GCP resource for the GKE On-Prem cluster. For
// example:
//
// //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/vmwareClusters/my-cluster
// //gkeonprem.googleapis.com/projects/my-project/locations/us-west1-a/bareMetalClusters/my-cluster
@ -363,8 +391,8 @@ message OnPremCluster {
// MultiCloudCluster contains information specific to GKE Multi-Cloud clusters.
message MultiCloudCluster {
// Immutable. Self-link of the GCP resource for the GKE Multi-Cloud cluster. For
// example:
// Immutable. Self-link of the GCP resource for the GKE Multi-Cloud cluster.
// For example:
//
// //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/awsClusters/my-cluster
// //gkemulticloud.googleapis.com/projects/my-project/locations/us-west1-a/azureClusters/my-cluster
@ -379,12 +407,14 @@ message MultiCloudCluster {
// KubernetesMetadata provides informational metadata for Memberships
// representing Kubernetes clusters.
message KubernetesMetadata {
// Output only. Kubernetes API server version string as reported by '/version'.
string kubernetes_api_server_version = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Node providerID as reported by the first node in the list of nodes on
// the Kubernetes endpoint. On Kubernetes platforms that support zero-node
// clusters (like GKE-on-GCP), the node_count will be zero and the
// Output only. Kubernetes API server version string as reported by
// '/version'.
string kubernetes_api_server_version = 1
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Node providerID as reported by the first node in the list of
// nodes on the Kubernetes endpoint. On Kubernetes platforms that support
// zero-node clusters (like GKE-on-GCP), the node_count will be zero and the
// node_provider_id will be empty.
string node_provider_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
@ -394,22 +424,23 @@ message KubernetesMetadata {
// Output only. vCPU count as reported by Kubernetes nodes resources.
int32 vcpu_count = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The total memory capacity as reported by the sum of all Kubernetes nodes
// resources, defined in MB.
// Output only. The total memory capacity as reported by the sum of all
// Kubernetes nodes resources, defined in MB.
int32 memory_mb = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which these details were last updated. This update_time is
// different from the Membership-level update_time since EndpointDetails are
// updated internally for API consumers.
google.protobuf.Timestamp update_time = 100 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time at which these details were last updated. This
// update_time is different from the Membership-level update_time since
// EndpointDetails are updated internally for API consumers.
google.protobuf.Timestamp update_time = 100
[(google.api.field_behavior) = OUTPUT_ONLY];
}
// Authority encodes how Google will recognize identities from this Membership.
// See the workload identity documentation for more details:
// https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity
message Authority {
// Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with `https://` and
// be a valid URL with length <2000 characters.
// Optional. A JSON Web Token (JWT) issuer URI. `issuer` must start with
// `https://` and be a valid URL with length <2000 characters.
//
// If set, then Google will allow valid OIDC tokens from this issuer to
// authenticate within the workload_identity_pool. OIDC discovery will be
@ -420,8 +451,8 @@ message Authority {
// a new issuer (and re-enabling Workload Identity).
string issuer = 1 [(google.api.field_behavior) = OPTIONAL];
// Output only. The name of the workload identity pool in which `issuer` will be
// recognized.
// Output only. The name of the workload identity pool in which `issuer` will
// be recognized.
//
// There is a single Workload Identity Pool per Hub that is shared
// between all Memberships that belong to that Hub. For a Hub hosted in
@ -429,11 +460,12 @@ message Authority {
// although this is subject to change in newer versions of this API.
string workload_identity_pool = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. An identity provider that reflects the `issuer` in the workload identity
// pool.
// Output only. An identity provider that reflects the `issuer` in the
// workload identity pool.
string identity_provider = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
// Optional. OIDC verification keys for this Membership in JWKS format (RFC 7517).
// Optional. OIDC verification keys for this Membership in JWKS format (RFC
// 7517).
//
// When this field is set, OIDC discovery will NOT be performed on `issuer`,
// and instead OIDC tokens will be validated using this field.
@ -475,13 +507,13 @@ message MembershipState {
// Request message for `GkeHubMembershipService.ListMemberships` method.
message ListMembershipsRequest {
// Required. The parent (project and location) where the Memberships will be listed.
// Specified in the format `projects/*/locations/*`.
// Required. The parent (project and location) where the Memberships will be
// listed. Specified in the format `projects/*/locations/*`.
string parent = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. When requesting a 'page' of resources, `page_size` specifies number of
// resources to return. If unspecified or set to 0, all resources will
// be returned.
// Optional. When requesting a 'page' of resources, `page_size` specifies
// number of resources to return. If unspecified or set to 0, all resources
// will be returned.
int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Token returned by previous call to `ListMemberships` which
@ -489,8 +521,8 @@ message ListMembershipsRequest {
// resources.
string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Lists Memberships that match the filter expression, following the syntax
// outlined in https://google.aip.dev/160.
// Optional. Lists Memberships that match the filter expression, following the
// syntax outlined in https://google.aip.dev/160.
//
// Examples:
//
@ -539,12 +571,12 @@ message GetMembershipRequest {
// Request message for the `GkeHubMembershipService.CreateMembership` method.
message CreateMembershipRequest {
// Required. The parent (project and location) where the Memberships will be created.
// Specified in the format `projects/*/locations/*`.
// Required. The parent (project and location) where the Memberships will be
// created. Specified in the format `projects/*/locations/*`.
string parent = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Client chosen ID for the membership. `membership_id` must be a valid RFC
// 1123 compliant DNS label:
// Required. Client chosen ID for the membership. `membership_id` must be a
// valid RFC 1123 compliant DNS label:
//
// 1. At most 63 characters in length
// 2. It must consist of lower case alphanumeric characters or `-`
@ -601,9 +633,10 @@ message UpdateMembershipRequest {
// `projects/[project_id]/locations/global/memberships/[membership_id]`
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Mask of fields to update. At least one field path must be specified in this
// mask.
google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
// Required. Mask of fields to update. At least one field path must be
// specified in this mask.
google.protobuf.FieldMask update_mask = 2
[(google.api.field_behavior) = REQUIRED];
// Required. Only fields specified in update_mask are updated.
// If you specify a field in the update_mask but don't specify its value here
@ -635,14 +668,15 @@ message UpdateMembershipRequest {
// method.
// .
message GenerateConnectManifestRequest {
// Required. The Membership resource name the Agent will associate with, in the format
// `projects/*/locations/*/memberships/*`.
// Required. The Membership resource name the Agent will associate with, in
// the format `projects/*/locations/*/memberships/*`.
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. The connect agent to generate manifest for.
ConnectAgent connect_agent = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. The Connect agent version to use. Defaults to the most current version.
// Optional. The Connect agent version to use. Defaults to the most current
// version.
string version = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. If true, generate the resources for upgrade only. Some resources
@ -690,14 +724,15 @@ message ConnectAgent {
// Do not set.
string name = 1 [deprecated = true];
// Optional. URI of a proxy if connectivity from the agent to gkeconnect.googleapis.com
// requires the use of a proxy. Format must be in the form
// `http(s)://{proxy_address}`, depending on the HTTP/HTTPS protocol
// Optional. URI of a proxy if connectivity from the agent to
// gkeconnect.googleapis.com requires the use of a proxy. Format must be in
// the form `http(s)://{proxy_address}`, depending on the HTTP/HTTPS protocol
// supported by the proxy. This will direct the connect agent's outbound
// traffic through a HTTP(S) proxy.
bytes proxy = 2 [(google.api.field_behavior) = OPTIONAL];
// Optional. Namespace for GKE Connect agent resources. Defaults to `gke-connect`.
// Optional. Namespace for GKE Connect agent resources. Defaults to
// `gke-connect`.
//
// The Connect Agent is authorized automatically when run in the default
// namespace. Otherwise, explicit authorization must be granted with an
@ -708,16 +743,17 @@ message ConnectAgent {
// The request to validate the existing state of the membership CR in the
// cluster.
message ValidateExclusivityRequest {
// Required. The parent (project and location) where the Memberships will be created.
// Specified in the format `projects/*/locations/*`.
// Required. The parent (project and location) where the Memberships will be
// created. Specified in the format `projects/*/locations/*`.
string parent = 1 [(google.api.field_behavior) = REQUIRED];
// Optional. The YAML of the membership CR in the cluster. Empty if the membership
// CR does not exist.
// Optional. The YAML of the membership CR in the cluster. Empty if the
// membership CR does not exist.
string cr_manifest = 2 [(google.api.field_behavior) = OPTIONAL];
// Required. The intended membership name under the `parent`. This method only does
// validation in anticipation of a CreateMembership call with the same name.
// Required. The intended membership name under the `parent`. This method only
// does validation in anticipation of a CreateMembership call with the same
// name.
string intended_membership = 3 [(google.api.field_behavior) = REQUIRED];
}
@ -763,10 +799,12 @@ message GenerateExclusivityManifestResponse {
// Represents the metadata of the long-running operation.
message OperationMetadata {
// Output only. The time the operation was created.
google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp create_time = 1
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. The time the operation finished running.
google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Timestamp end_time = 2
[(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. Server-defined resource path for the target of the operation.
string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
@ -779,8 +817,9 @@ message OperationMetadata {
// Output only. Identifies whether the user has requested cancellation
// of the operation. Operations that have successfully been cancelled
// have [Operation.error][] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1,
// corresponding to `Code.CANCELLED`.
// have [Operation.error][] value with a
// [google.rpc.Status.code][google.rpc.Status.code] of 1, corresponding to
// `Code.CANCELLED`.
bool cancel_requested = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
// Output only. API version used to start the operation.

Loading…
Cancel
Save