1// Copyright 2023 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15syntax = "proto3"; 16 17package google.cloud.gkemulticloud.v1; 18 19import "google/api/annotations.proto"; 20import "google/api/client.proto"; 21import "google/api/field_behavior.proto"; 22import "google/api/resource.proto"; 23import "google/cloud/gkemulticloud/v1/azure_resources.proto"; 24import "google/cloud/gkemulticloud/v1/common_resources.proto"; 25import "google/longrunning/operations.proto"; 26import "google/protobuf/empty.proto"; 27import "google/protobuf/field_mask.proto"; 28import "google/protobuf/timestamp.proto"; 29 30option csharp_namespace = "Google.Cloud.GkeMultiCloud.V1"; 31option go_package = "cloud.google.com/go/gkemulticloud/apiv1/gkemulticloudpb;gkemulticloudpb"; 32option java_multiple_files = true; 33option java_outer_classname = "AzureServiceProto"; 34option java_package = "com.google.cloud.gkemulticloud.v1"; 35option php_namespace = "Google\\Cloud\\GkeMultiCloud\\V1"; 36option ruby_package = "Google::Cloud::GkeMultiCloud::V1"; 37 38// The AzureClusters API provides a single centrally managed service 39// to create and manage Anthos clusters that run on Azure infrastructure. 40service AzureClusters { 41 option (google.api.default_host) = "gkemulticloud.googleapis.com"; 42 option (google.api.oauth_scopes) = 43 "https://www.googleapis.com/auth/cloud-platform"; 44 45 // Creates a new [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] 46 // resource on a given Google Cloud project and region. 47 // 48 // `AzureClient` resources hold client authentication 49 // information needed by the Anthos Multicloud API to manage Azure resources 50 // on your Azure subscription on your behalf. 51 // 52 // If successful, the response contains a newly created 53 // [Operation][google.longrunning.Operation] resource that can be 54 // described to track the status of the operation. 55 rpc CreateAzureClient(CreateAzureClientRequest) 56 returns (google.longrunning.Operation) { 57 option (google.api.http) = { 58 post: "/v1/{parent=projects/*/locations/*}/azureClients" 59 body: "azure_client" 60 }; 61 option (google.api.method_signature) = 62 "parent,azure_client,azure_client_id"; 63 option (google.longrunning.operation_info) = { 64 response_type: "AzureClient" 65 metadata_type: "OperationMetadata" 66 }; 67 } 68 69 // Describes a specific 70 // [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] resource. 71 rpc GetAzureClient(GetAzureClientRequest) returns (AzureClient) { 72 option (google.api.http) = { 73 get: "/v1/{name=projects/*/locations/*/azureClients/*}" 74 }; 75 option (google.api.method_signature) = "name"; 76 } 77 78 // Lists all [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] 79 // resources on a given Google Cloud project and region. 80 rpc ListAzureClients(ListAzureClientsRequest) 81 returns (ListAzureClientsResponse) { 82 option (google.api.http) = { 83 get: "/v1/{parent=projects/*/locations/*}/azureClients" 84 }; 85 option (google.api.method_signature) = "parent"; 86 } 87 88 // Deletes a specific [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] 89 // resource. 90 // 91 // If the client is used by one or more clusters, deletion will 92 // fail and a `FAILED_PRECONDITION` error will be returned. 93 // 94 // If successful, the response contains a newly created 95 // [Operation][google.longrunning.Operation] resource that can be 96 // described to track the status of the operation. 97 rpc DeleteAzureClient(DeleteAzureClientRequest) 98 returns (google.longrunning.Operation) { 99 option (google.api.http) = { 100 delete: "/v1/{name=projects/*/locations/*/azureClients/*}" 101 }; 102 option (google.api.method_signature) = "name"; 103 option (google.longrunning.operation_info) = { 104 response_type: "google.protobuf.Empty" 105 metadata_type: "OperationMetadata" 106 }; 107 } 108 109 // Creates a new [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] 110 // resource on a given Google Cloud Platform project and region. 111 // 112 // If successful, the response contains a newly created 113 // [Operation][google.longrunning.Operation] resource that can be 114 // described to track the status of the operation. 115 rpc CreateAzureCluster(CreateAzureClusterRequest) 116 returns (google.longrunning.Operation) { 117 option (google.api.http) = { 118 post: "/v1/{parent=projects/*/locations/*}/azureClusters" 119 body: "azure_cluster" 120 }; 121 option (google.api.method_signature) = 122 "parent,azure_cluster,azure_cluster_id"; 123 option (google.longrunning.operation_info) = { 124 response_type: "AzureCluster" 125 metadata_type: "OperationMetadata" 126 }; 127 } 128 129 // Updates an [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster]. 130 rpc UpdateAzureCluster(UpdateAzureClusterRequest) 131 returns (google.longrunning.Operation) { 132 option (google.api.http) = { 133 patch: "/v1/{azure_cluster.name=projects/*/locations/*/azureClusters/*}" 134 body: "azure_cluster" 135 }; 136 option (google.api.method_signature) = "azure_cluster,update_mask"; 137 option (google.longrunning.operation_info) = { 138 response_type: "AzureCluster" 139 metadata_type: "OperationMetadata" 140 }; 141 } 142 143 // Describes a specific 144 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource. 145 rpc GetAzureCluster(GetAzureClusterRequest) returns (AzureCluster) { 146 option (google.api.http) = { 147 get: "/v1/{name=projects/*/locations/*/azureClusters/*}" 148 }; 149 option (google.api.method_signature) = "name"; 150 } 151 152 // Lists all [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] 153 // resources on a given Google Cloud project and region. 154 rpc ListAzureClusters(ListAzureClustersRequest) 155 returns (ListAzureClustersResponse) { 156 option (google.api.http) = { 157 get: "/v1/{parent=projects/*/locations/*}/azureClusters" 158 }; 159 option (google.api.method_signature) = "parent"; 160 } 161 162 // Deletes a specific 163 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource. 164 // 165 // Fails if the cluster has one or more associated 166 // [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resources. 167 // 168 // If successful, the response contains a newly created 169 // [Operation][google.longrunning.Operation] resource that can be 170 // described to track the status of the operation. 171 rpc DeleteAzureCluster(DeleteAzureClusterRequest) 172 returns (google.longrunning.Operation) { 173 option (google.api.http) = { 174 delete: "/v1/{name=projects/*/locations/*/azureClusters/*}" 175 }; 176 option (google.api.method_signature) = "name"; 177 option (google.longrunning.operation_info) = { 178 response_type: "google.protobuf.Empty" 179 metadata_type: "OperationMetadata" 180 }; 181 } 182 183 // Generates an access token for a cluster agent. 184 rpc GenerateAzureClusterAgentToken(GenerateAzureClusterAgentTokenRequest) 185 returns (GenerateAzureClusterAgentTokenResponse) { 186 option (google.api.http) = { 187 post: "/v1/{azure_cluster=projects/*/locations/*/azureClusters/*}:generateAzureClusterAgentToken" 188 body: "*" 189 }; 190 } 191 192 // Generates a short-lived access token to authenticate to a given 193 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource. 194 rpc GenerateAzureAccessToken(GenerateAzureAccessTokenRequest) 195 returns (GenerateAzureAccessTokenResponse) { 196 option (google.api.http) = { 197 get: "/v1/{azure_cluster=projects/*/locations/*/azureClusters/*}:generateAzureAccessToken" 198 }; 199 } 200 201 // Creates a new [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool], 202 // attached to a given 203 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster]. 204 // 205 // If successful, the response contains a newly created 206 // [Operation][google.longrunning.Operation] resource that can be 207 // described to track the status of the operation. 208 rpc CreateAzureNodePool(CreateAzureNodePoolRequest) 209 returns (google.longrunning.Operation) { 210 option (google.api.http) = { 211 post: "/v1/{parent=projects/*/locations/*/azureClusters/*}/azureNodePools" 212 body: "azure_node_pool" 213 }; 214 option (google.api.method_signature) = 215 "parent,azure_node_pool,azure_node_pool_id"; 216 option (google.longrunning.operation_info) = { 217 response_type: "AzureNodePool" 218 metadata_type: "OperationMetadata" 219 }; 220 } 221 222 // Updates an [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool]. 223 rpc UpdateAzureNodePool(UpdateAzureNodePoolRequest) 224 returns (google.longrunning.Operation) { 225 option (google.api.http) = { 226 patch: "/v1/{azure_node_pool.name=projects/*/locations/*/azureClusters/*/azureNodePools/*}" 227 body: "azure_node_pool" 228 }; 229 option (google.api.method_signature) = "azure_node_pool,update_mask"; 230 option (google.longrunning.operation_info) = { 231 response_type: "AzureNodePool" 232 metadata_type: "OperationMetadata" 233 }; 234 } 235 236 // Describes a specific 237 // [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resource. 238 rpc GetAzureNodePool(GetAzureNodePoolRequest) returns (AzureNodePool) { 239 option (google.api.http) = { 240 get: "/v1/{name=projects/*/locations/*/azureClusters/*/azureNodePools/*}" 241 }; 242 option (google.api.method_signature) = "name"; 243 } 244 245 // Lists all [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] 246 // resources on a given 247 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster]. 248 rpc ListAzureNodePools(ListAzureNodePoolsRequest) 249 returns (ListAzureNodePoolsResponse) { 250 option (google.api.http) = { 251 get: "/v1/{parent=projects/*/locations/*/azureClusters/*}/azureNodePools" 252 }; 253 option (google.api.method_signature) = "parent"; 254 } 255 256 // Deletes a specific 257 // [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resource. 258 // 259 // If successful, the response contains a newly created 260 // [Operation][google.longrunning.Operation] resource that can be 261 // described to track the status of the operation. 262 rpc DeleteAzureNodePool(DeleteAzureNodePoolRequest) 263 returns (google.longrunning.Operation) { 264 option (google.api.http) = { 265 delete: "/v1/{name=projects/*/locations/*/azureClusters/*/azureNodePools/*}" 266 }; 267 option (google.api.method_signature) = "name"; 268 option (google.longrunning.operation_info) = { 269 response_type: "google.protobuf.Empty" 270 metadata_type: "OperationMetadata" 271 }; 272 } 273 274 // Gets the OIDC discovery document for the cluster. 275 // See the 276 // [OpenID Connect Discovery 1.0 277 // specification](https://openid.net/specs/openid-connect-discovery-1_0.html) 278 // for details. 279 rpc GetAzureOpenIdConfig(GetAzureOpenIdConfigRequest) 280 returns (AzureOpenIdConfig) { 281 option (google.api.http) = { 282 get: "/v1/{azure_cluster=projects/*/locations/*/azureClusters/*}/.well-known/openid-configuration" 283 }; 284 option (google.api.method_signature) = "azure_cluster"; 285 } 286 287 // Gets the public component of the cluster signing keys in 288 // JSON Web Key format. 289 rpc GetAzureJsonWebKeys(GetAzureJsonWebKeysRequest) 290 returns (AzureJsonWebKeys) { 291 option (google.api.http) = { 292 get: "/v1/{azure_cluster=projects/*/locations/*/azureClusters/*}/jwks" 293 }; 294 option (google.api.method_signature) = "azure_cluster"; 295 } 296 297 // Returns information, such as supported Azure regions and Kubernetes 298 // versions, on a given Google Cloud location. 299 rpc GetAzureServerConfig(GetAzureServerConfigRequest) 300 returns (AzureServerConfig) { 301 option (google.api.http) = { 302 get: "/v1/{name=projects/*/locations/*/azureServerConfig}" 303 }; 304 option (google.api.method_signature) = "name"; 305 } 306} 307 308// Request message for `AzureClusters.CreateAzureCluster` method. 309message CreateAzureClusterRequest { 310 // Required. The parent location where this 311 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource will be 312 // created. 313 // 314 // Location names are formatted as `projects/<project-id>/locations/<region>`. 315 // 316 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 317 // for more details on Google Cloud resource names. 318 string parent = 1 [ 319 (google.api.field_behavior) = REQUIRED, 320 (google.api.resource_reference) = { 321 child_type: "gkemulticloud.googleapis.com/AzureCluster" 322 } 323 ]; 324 325 // Required. The specification of the 326 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] to create. 327 AzureCluster azure_cluster = 2 [(google.api.field_behavior) = REQUIRED]; 328 329 // Required. A client provided ID the resource. Must be unique within the 330 // parent resource. 331 // 332 // The provided ID will be part of the 333 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource name 334 // formatted as 335 // `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`. 336 // 337 // Valid characters are `/[a-z][0-9]-/`. Cannot be longer than 63 characters. 338 string azure_cluster_id = 3 [(google.api.field_behavior) = REQUIRED]; 339 340 // If set, only validate the request, but do not actually create the cluster. 341 bool validate_only = 4; 342} 343 344// Request message for `AzureClusters.UpdateAzureCluster` method. 345message UpdateAzureClusterRequest { 346 // Required. The [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] 347 // resource to update. 348 AzureCluster azure_cluster = 1 [(google.api.field_behavior) = REQUIRED]; 349 350 // If set, only validate the request, but do not actually update the cluster. 351 bool validate_only = 2; 352 353 // Required. Mask of fields to update. At least one path must be supplied in 354 // this field. The elements of the repeated paths field can only include these 355 // fields from [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster]: 356 // 357 // * `description`. 358 // * `azureClient`. 359 // * `control_plane.version`. 360 // * `control_plane.vm_size`. 361 // * `annotations`. 362 // * `authorization.admin_users`. 363 // * `authorization.admin_groups`. 364 // * `control_plane.root_volume.size_gib`. 365 // * `azure_services_authentication`. 366 // * `azure_services_authentication.tenant_id`. 367 // * `azure_services_authentication.application_id`. 368 // * `control_plane.proxy_config`. 369 // * `control_plane.proxy_config.resource_group_id`. 370 // * `control_plane.proxy_config.secret_id`. 371 // * `control_plane.ssh_config.authorized_key`. 372 // * `logging_config.component_config.enable_components` 373 // * `monitoring_config.managed_prometheus_config.enabled`. 374 google.protobuf.FieldMask update_mask = 4 375 [(google.api.field_behavior) = REQUIRED]; 376} 377 378// Request message for `AzureClusters.GetAzureCluster` method. 379message GetAzureClusterRequest { 380 // Required. The name of the 381 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource to 382 // describe. 383 // 384 // `AzureCluster` names are formatted as 385 // `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`. 386 // 387 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 388 // for more details on Google Cloud Platform resource names. 389 string name = 1 [ 390 (google.api.field_behavior) = REQUIRED, 391 (google.api.resource_reference) = { 392 type: "gkemulticloud.googleapis.com/AzureCluster" 393 } 394 ]; 395} 396 397// Request message for `AzureClusters.ListAzureClusters` method. 398message ListAzureClustersRequest { 399 // Required. The parent location which owns this collection of 400 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resources. 401 // 402 // Location names are formatted as `projects/<project-id>/locations/<region>`. 403 // 404 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 405 // for more details on Google Cloud Platform resource names. 406 string parent = 1 [ 407 (google.api.field_behavior) = REQUIRED, 408 (google.api.resource_reference) = { 409 child_type: "gkemulticloud.googleapis.com/AzureCluster" 410 } 411 ]; 412 413 // The maximum number of items to return. 414 // 415 // If not specified, a default value of 50 will be used by the service. 416 // Regardless of the pageSize value, the response can include a partial list 417 // and a caller should only rely on response's 418 // [nextPageToken][google.cloud.gkemulticloud.v1.ListAzureClustersResponse.next_page_token] 419 // to determine if there are more instances left to be queried. 420 int32 page_size = 2; 421 422 // The `nextPageToken` value returned from a previous 423 // [azureClusters.list][google.cloud.gkemulticloud.v1.AzureClusters.ListAzureClusters] 424 // request, if any. 425 string page_token = 3; 426} 427 428// Response message for `AzureClusters.ListAzureClusters` method. 429message ListAzureClustersResponse { 430 // A list of [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] 431 // resources in the specified Google Cloud Platform project and region region. 432 repeated AzureCluster azure_clusters = 1; 433 434 // Token to retrieve the next page of results, or empty if there are no more 435 // results in the list. 436 string next_page_token = 2; 437} 438 439// Request message for `AzureClusters.DeleteAzureCluster` method. 440message DeleteAzureClusterRequest { 441 // Required. The resource name the 442 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] to delete. 443 // 444 // `AzureCluster` names are formatted as 445 // `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`. 446 // 447 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 448 // for more details on Google Cloud Platform resource names. 449 string name = 1 [ 450 (google.api.field_behavior) = REQUIRED, 451 (google.api.resource_reference) = { 452 type: "gkemulticloud.googleapis.com/AzureCluster" 453 } 454 ]; 455 456 // If set to true, and the 457 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource is not 458 // found, the request will succeed but no action will be taken on the server 459 // and a completed [Operation][google.longrunning.Operation] will be returned. 460 // 461 // Useful for idempotent deletion. 462 bool allow_missing = 2; 463 464 // If set, only validate the request, but do not actually delete the resource. 465 bool validate_only = 3; 466 467 // The current etag of the 468 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster]. 469 // 470 // Allows clients to perform deletions through optimistic concurrency control. 471 // 472 // If the provided etag does not match the current etag of the cluster, 473 // the request will fail and an ABORTED error will be returned. 474 string etag = 4; 475} 476 477// Response message for `AzureClusters.CreateAzureNodePool` method. 478message CreateAzureNodePoolRequest { 479 // Required. The [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] 480 // resource where this node pool will be created. 481 // 482 // `AzureCluster` names are formatted as 483 // `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`. 484 // 485 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 486 // for more details on Google Cloud resource names. 487 string parent = 1 [ 488 (google.api.field_behavior) = REQUIRED, 489 (google.api.resource_reference) = { 490 child_type: "gkemulticloud.googleapis.com/AzureNodePool" 491 } 492 ]; 493 494 // Required. The specification of the 495 // [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] to create. 496 AzureNodePool azure_node_pool = 2 [(google.api.field_behavior) = REQUIRED]; 497 498 // Required. A client provided ID the resource. Must be unique within the 499 // parent resource. 500 // 501 // The provided ID will be part of the 502 // [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resource name 503 // formatted as 504 // `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>/azureNodePools/<node-pool-id>`. 505 // 506 // Valid characters are `/[a-z][0-9]-/`. Cannot be longer than 63 characters. 507 string azure_node_pool_id = 3 [(google.api.field_behavior) = REQUIRED]; 508 509 // If set, only validate the request, but do not actually create the node 510 // pool. 511 bool validate_only = 4; 512} 513 514// Request message for `AzureClusters.UpdateAzureNodePool` method. 515message UpdateAzureNodePoolRequest { 516 // Required. The [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] 517 // resource to update. 518 AzureNodePool azure_node_pool = 1 [(google.api.field_behavior) = REQUIRED]; 519 520 // If set, only validate the request, but don't actually update the node pool. 521 bool validate_only = 2; 522 523 // Required. Mask of fields to update. At least one path must be supplied in 524 // this field. The elements of the repeated paths field can only include these 525 // fields from [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool]: 526 // 527 // *. `annotations`. 528 // * `version`. 529 // * `autoscaling.min_node_count`. 530 // * `autoscaling.max_node_count`. 531 // * `config.ssh_config.authorized_key`. 532 // * `management.auto_repair`. 533 // * `management`. 534 google.protobuf.FieldMask update_mask = 3 535 [(google.api.field_behavior) = REQUIRED]; 536} 537 538// Request message for `AzureClusters.GetAzureNodePool` method. 539message GetAzureNodePoolRequest { 540 // Required. The name of the 541 // [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resource to 542 // describe. 543 // 544 // `AzureNodePool` names are formatted as 545 // `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>/azureNodePools/<node-pool-id>`. 546 // 547 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 548 // for more details on Google Cloud resource names. 549 string name = 1 [ 550 (google.api.field_behavior) = REQUIRED, 551 (google.api.resource_reference) = { 552 type: "gkemulticloud.googleapis.com/AzureNodePool" 553 } 554 ]; 555} 556 557// Request message for `AzureClusters.ListAzureNodePools` method. 558message ListAzureNodePoolsRequest { 559 // Required. The parent `AzureCluster` which owns this collection of 560 // [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resources. 561 // 562 // `AzureCluster` names are formatted as 563 // `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`. 564 // 565 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 566 // for more details on Google Cloud resource names. 567 string parent = 1 [ 568 (google.api.field_behavior) = REQUIRED, 569 (google.api.resource_reference) = { 570 child_type: "gkemulticloud.googleapis.com/AzureNodePool" 571 } 572 ]; 573 574 // The maximum number of items to return. 575 // 576 // If not specified, a default value of 50 will be used by the service. 577 // Regardless of the pageSize value, the response can include a partial list 578 // and a caller should only rely on response's 579 // [nextPageToken][google.cloud.gkemulticloud.v1.ListAzureNodePoolsResponse.next_page_token] 580 // to determine if there are more instances left to be queried. 581 int32 page_size = 2; 582 583 // The `nextPageToken` value returned from a previous 584 // [azureNodePools.list][google.cloud.gkemulticloud.v1.AzureClusters.ListAzureNodePools] 585 // request, if any. 586 string page_token = 3; 587} 588 589// Response message for `AzureClusters.ListAzureNodePools` method. 590message ListAzureNodePoolsResponse { 591 // A list of [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] 592 // resources in the specified `AzureCluster`. 593 repeated AzureNodePool azure_node_pools = 1; 594 595 // Token to retrieve the next page of results, or empty if there are no more 596 // results in the list. 597 string next_page_token = 2; 598} 599 600// Request message for `AzureClusters.DeleteAzureNodePool` method. 601message DeleteAzureNodePoolRequest { 602 // Required. The resource name the 603 // [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] to delete. 604 // 605 // `AzureNodePool` names are formatted as 606 // `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>/azureNodePools/<node-pool-id>`. 607 // 608 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 609 // for more details on Google Cloud resource names. 610 string name = 1 [ 611 (google.api.field_behavior) = REQUIRED, 612 (google.api.resource_reference) = { 613 type: "gkemulticloud.googleapis.com/AzureNodePool" 614 } 615 ]; 616 617 // If set, only validate the request, but do not actually delete the node 618 // pool. 619 bool validate_only = 2; 620 621 // If set to true, and the 622 // [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool] resource is 623 // not found, the request will succeed but no action will be taken on the 624 // server and a completed [Operation][google.longrunning.Operation] will be 625 // returned. 626 // 627 // Useful for idempotent deletion. 628 bool allow_missing = 3; 629 630 // The current ETag of the 631 // [AzureNodePool][google.cloud.gkemulticloud.v1.AzureNodePool]. 632 // 633 // Allows clients to perform deletions through optimistic concurrency control. 634 // 635 // If the provided ETag does not match the current etag of the node pool, 636 // the request will fail and an ABORTED error will be returned. 637 string etag = 4; 638} 639 640// GetAzureOpenIdConfigRequest gets the OIDC discovery document for the 641// cluster. See the OpenID Connect Discovery 1.0 specification for details. 642message GetAzureOpenIdConfigRequest { 643 // Required. The AzureCluster, which owns the OIDC discovery document. 644 // Format: 645 // projects/<project-id>/locations/<region>/azureClusters/<cluster-id> 646 string azure_cluster = 1 [ 647 (google.api.field_behavior) = REQUIRED, 648 (google.api.resource_reference) = { 649 type: "gkemulticloud.googleapis.com/AzureCluster" 650 } 651 ]; 652} 653 654// GetAzureJsonWebKeysRequest gets the public component of the keys used by the 655// cluster to sign token requests. This will be the jwks_uri for the discover 656// document returned by getOpenIDConfig. See the OpenID Connect 657// Discovery 1.0 specification for details. 658message GetAzureJsonWebKeysRequest { 659 // Required. The AzureCluster, which owns the JsonWebKeys. 660 // Format: 661 // projects/<project-id>/locations/<region>/azureClusters/<cluster-id> 662 string azure_cluster = 1 [ 663 (google.api.field_behavior) = REQUIRED, 664 (google.api.resource_reference) = { 665 type: "gkemulticloud.googleapis.com/AzureCluster" 666 } 667 ]; 668} 669 670// GetAzureServerConfigRequest gets the server config of GKE cluster on Azure. 671message GetAzureServerConfigRequest { 672 // Required. The name of the 673 // [AzureServerConfig][google.cloud.gkemulticloud.v1.AzureServerConfig] 674 // resource to describe. 675 // 676 // `AzureServerConfig` names are formatted as 677 // `projects/<project-id>/locations/<region>/azureServerConfig`. 678 // 679 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 680 // for more details on Google Cloud resource names. 681 string name = 1 [ 682 (google.api.field_behavior) = REQUIRED, 683 (google.api.resource_reference) = { 684 type: "gkemulticloud.googleapis.com/AzureServerConfig" 685 } 686 ]; 687} 688 689// Request message for `AzureClusters.CreateAzureClient` method. 690message CreateAzureClientRequest { 691 // Required. The parent location where this 692 // [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] resource will be 693 // created. 694 // 695 // Location names are formatted as `projects/<project-id>/locations/<region>`. 696 // 697 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 698 // for more details on Google Cloud resource names. 699 string parent = 1 [ 700 (google.api.field_behavior) = REQUIRED, 701 (google.api.resource_reference) = { 702 child_type: "gkemulticloud.googleapis.com/AzureClient" 703 } 704 ]; 705 706 // Required. The specification of the 707 // [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] to create. 708 AzureClient azure_client = 2 [(google.api.field_behavior) = REQUIRED]; 709 710 // Required. A client provided ID the resource. Must be unique within the 711 // parent resource. 712 // 713 // The provided ID will be part of the 714 // [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] resource name 715 // formatted as 716 // `projects/<project-id>/locations/<region>/azureClients/<client-id>`. 717 // 718 // Valid characters are `/[a-z][0-9]-/`. Cannot be longer than 63 characters. 719 string azure_client_id = 4 [(google.api.field_behavior) = REQUIRED]; 720 721 // If set, only validate the request, but do not actually create the client. 722 bool validate_only = 3; 723} 724 725// Request message for `AzureClusters.GetAzureClient` method. 726message GetAzureClientRequest { 727 // Required. The name of the 728 // [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] resource to 729 // describe. 730 // 731 // [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] names are 732 // formatted as 733 // `projects/<project-id>/locations/<region>/azureClients/<client-id>`. 734 // 735 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 736 // for more details on Google Cloud resource names. 737 string name = 1 [ 738 (google.api.field_behavior) = REQUIRED, 739 (google.api.resource_reference) = { 740 type: "gkemulticloud.googleapis.com/AzureClient" 741 } 742 ]; 743} 744 745// Request message for `AzureClusters.ListAzureClients` method. 746message ListAzureClientsRequest { 747 // Required. The parent location which owns this collection of 748 // [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] resources. 749 // 750 // Location names are formatted as `projects/<project-id>/locations/<region>`. 751 // 752 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 753 // for more details on Google Cloud Platform resource names. 754 string parent = 1 [ 755 (google.api.field_behavior) = REQUIRED, 756 (google.api.resource_reference) = { 757 child_type: "gkemulticloud.googleapis.com/AzureClient" 758 } 759 ]; 760 761 // The maximum number of items to return. 762 // 763 // If not specified, a default value of 50 will be used by the service. 764 // Regardless of the pageSize value, the response can include a partial list 765 // and a caller should only rely on response's 766 // [nextPageToken][google.cloud.gkemulticloud.v1.ListAzureClientsResponse.next_page_token] 767 // to determine if there are more instances left to be queried. 768 int32 page_size = 2; 769 770 // The `nextPageToken` value returned from a previous 771 // [azureClients.list][google.cloud.gkemulticloud.v1.AzureClusters.ListAzureClients] 772 // request, if any. 773 string page_token = 3; 774} 775 776// Response message for `AzureClusters.ListAzureClients` method. 777message ListAzureClientsResponse { 778 // A list of [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] 779 // resources in the specified Google Cloud project and region region. 780 repeated AzureClient azure_clients = 1; 781 782 // Token to retrieve the next page of results, or empty if there are no more 783 // results in the list. 784 string next_page_token = 2; 785} 786 787// Request message for `AzureClusters.DeleteAzureClient` method. 788message DeleteAzureClientRequest { 789 // Required. The resource name the 790 // [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] to delete. 791 // 792 // [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] names are 793 // formatted as 794 // `projects/<project-id>/locations/<region>/azureClients/<client-id>`. 795 // 796 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 797 // for more details on Google Cloud resource names. 798 string name = 1 [ 799 (google.api.field_behavior) = REQUIRED, 800 (google.api.resource_reference) = { 801 type: "gkemulticloud.googleapis.com/AzureClient" 802 } 803 ]; 804 805 // If set to true, and the 806 // [AzureClient][google.cloud.gkemulticloud.v1.AzureClient] resource is not 807 // found, the request will succeed but no action will be taken on the server 808 // and a completed [Operation][google.longrunning.Operation] will be returned. 809 // 810 // Useful for idempotent deletion. 811 bool allow_missing = 2; 812 813 // If set, only validate the request, but do not actually delete the resource. 814 bool validate_only = 3; 815} 816 817// Request message for `AzureClusters.GenerateAzureAccessToken` method. 818message GenerateAzureAccessTokenRequest { 819 // Required. The name of the 820 // [AzureCluster][google.cloud.gkemulticloud.v1.AzureCluster] resource to 821 // authenticate to. 822 // 823 // `AzureCluster` names are formatted as 824 // `projects/<project-id>/locations/<region>/azureClusters/<cluster-id>`. 825 // 826 // See [Resource Names](https://cloud.google.com/apis/design/resource_names) 827 // for more details on Google Cloud resource names. 828 string azure_cluster = 1 [ 829 (google.api.field_behavior) = REQUIRED, 830 (google.api.resource_reference) = { 831 type: "gkemulticloud.googleapis.com/AzureCluster" 832 } 833 ]; 834} 835 836// Response message for `AzureClusters.GenerateAzureAccessToken` method. 837message GenerateAzureAccessTokenResponse { 838 // Output only. Access token to authenticate to k8s api-server. 839 string access_token = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 840 841 // Output only. Timestamp at which the token will expire. 842 google.protobuf.Timestamp expiration_time = 2 843 [(google.api.field_behavior) = OUTPUT_ONLY]; 844} 845 846message GenerateAzureClusterAgentTokenRequest { 847 // Required. 848 string azure_cluster = 1 [ 849 (google.api.field_behavior) = REQUIRED, 850 (google.api.resource_reference) = { 851 type: "gkemulticloud.googleapis.com/AzureCluster" 852 } 853 ]; 854 855 // Required. 856 string subject_token = 2 [(google.api.field_behavior) = REQUIRED]; 857 858 // Required. 859 string subject_token_type = 3 [(google.api.field_behavior) = REQUIRED]; 860 861 // Required. 862 string version = 4 [(google.api.field_behavior) = REQUIRED]; 863 864 // Optional. 865 string node_pool_id = 5 [(google.api.field_behavior) = OPTIONAL]; 866 867 // Optional. 868 string grant_type = 6 [(google.api.field_behavior) = OPTIONAL]; 869 870 // Optional. 871 string audience = 7 [(google.api.field_behavior) = OPTIONAL]; 872 873 // Optional. 874 string scope = 8 [(google.api.field_behavior) = OPTIONAL]; 875 876 // Optional. 877 string requested_token_type = 9 [(google.api.field_behavior) = OPTIONAL]; 878 879 // Optional. 880 string options = 10 [(google.api.field_behavior) = OPTIONAL]; 881} 882 883message GenerateAzureClusterAgentTokenResponse { 884 string access_token = 1; 885 886 int32 expires_in = 2; 887 888 string token_type = 3; 889} 890