1// Copyright 2020 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// https://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 15// Code generated by protoc-gen-go_gapic. DO NOT EDIT. 16 17package container 18 19import ( 20 "context" 21 "fmt" 22 "math" 23 "net/url" 24 "time" 25 26 "github.com/golang/protobuf/proto" 27 gax "github.com/googleapis/gax-go/v2" 28 "google.golang.org/api/iterator" 29 "google.golang.org/api/option" 30 "google.golang.org/api/option/internaloption" 31 gtransport "google.golang.org/api/transport/grpc" 32 containerpb "google.golang.org/genproto/googleapis/container/v1" 33 "google.golang.org/grpc" 34 "google.golang.org/grpc/codes" 35 "google.golang.org/grpc/metadata" 36) 37 38var newClusterManagerClientHook clientHook 39 40// ClusterManagerCallOptions contains the retry settings for each method of ClusterManagerClient. 41type ClusterManagerCallOptions struct { 42 ListClusters []gax.CallOption 43 GetCluster []gax.CallOption 44 CreateCluster []gax.CallOption 45 UpdateCluster []gax.CallOption 46 UpdateNodePool []gax.CallOption 47 SetNodePoolAutoscaling []gax.CallOption 48 SetLoggingService []gax.CallOption 49 SetMonitoringService []gax.CallOption 50 SetAddonsConfig []gax.CallOption 51 SetLocations []gax.CallOption 52 UpdateMaster []gax.CallOption 53 SetMasterAuth []gax.CallOption 54 DeleteCluster []gax.CallOption 55 ListOperations []gax.CallOption 56 GetOperation []gax.CallOption 57 CancelOperation []gax.CallOption 58 GetServerConfig []gax.CallOption 59 ListNodePools []gax.CallOption 60 GetNodePool []gax.CallOption 61 CreateNodePool []gax.CallOption 62 DeleteNodePool []gax.CallOption 63 RollbackNodePoolUpgrade []gax.CallOption 64 SetNodePoolManagement []gax.CallOption 65 SetLabels []gax.CallOption 66 SetLegacyAbac []gax.CallOption 67 StartIPRotation []gax.CallOption 68 CompleteIPRotation []gax.CallOption 69 SetNodePoolSize []gax.CallOption 70 SetNetworkPolicy []gax.CallOption 71 SetMaintenancePolicy []gax.CallOption 72 ListUsableSubnetworks []gax.CallOption 73} 74 75func defaultClusterManagerClientOptions() []option.ClientOption { 76 return []option.ClientOption{ 77 internaloption.WithDefaultEndpoint("container.googleapis.com:443"), 78 internaloption.WithDefaultMTLSEndpoint("container.mtls.googleapis.com:443"), 79 option.WithGRPCDialOption(grpc.WithDisableServiceConfig()), 80 option.WithScopes(DefaultAuthScopes()...), 81 option.WithGRPCDialOption(grpc.WithDefaultCallOptions( 82 grpc.MaxCallRecvMsgSize(math.MaxInt32))), 83 } 84} 85 86func defaultClusterManagerCallOptions() *ClusterManagerCallOptions { 87 return &ClusterManagerCallOptions{ 88 ListClusters: []gax.CallOption{ 89 gax.WithRetry(func() gax.Retryer { 90 return gax.OnCodes([]codes.Code{ 91 codes.Unavailable, 92 codes.DeadlineExceeded, 93 }, gax.Backoff{ 94 Initial: 100 * time.Millisecond, 95 Max: 60000 * time.Millisecond, 96 Multiplier: 1.30, 97 }) 98 }), 99 }, 100 GetCluster: []gax.CallOption{ 101 gax.WithRetry(func() gax.Retryer { 102 return gax.OnCodes([]codes.Code{ 103 codes.Unavailable, 104 codes.DeadlineExceeded, 105 }, gax.Backoff{ 106 Initial: 100 * time.Millisecond, 107 Max: 60000 * time.Millisecond, 108 Multiplier: 1.30, 109 }) 110 }), 111 }, 112 CreateCluster: []gax.CallOption{}, 113 UpdateCluster: []gax.CallOption{}, 114 UpdateNodePool: []gax.CallOption{}, 115 SetNodePoolAutoscaling: []gax.CallOption{}, 116 SetLoggingService: []gax.CallOption{}, 117 SetMonitoringService: []gax.CallOption{}, 118 SetAddonsConfig: []gax.CallOption{}, 119 SetLocations: []gax.CallOption{}, 120 UpdateMaster: []gax.CallOption{}, 121 SetMasterAuth: []gax.CallOption{}, 122 DeleteCluster: []gax.CallOption{ 123 gax.WithRetry(func() gax.Retryer { 124 return gax.OnCodes([]codes.Code{ 125 codes.Unavailable, 126 codes.DeadlineExceeded, 127 }, gax.Backoff{ 128 Initial: 100 * time.Millisecond, 129 Max: 60000 * time.Millisecond, 130 Multiplier: 1.30, 131 }) 132 }), 133 }, 134 ListOperations: []gax.CallOption{ 135 gax.WithRetry(func() gax.Retryer { 136 return gax.OnCodes([]codes.Code{ 137 codes.Unavailable, 138 codes.DeadlineExceeded, 139 }, gax.Backoff{ 140 Initial: 100 * time.Millisecond, 141 Max: 60000 * time.Millisecond, 142 Multiplier: 1.30, 143 }) 144 }), 145 }, 146 GetOperation: []gax.CallOption{ 147 gax.WithRetry(func() gax.Retryer { 148 return gax.OnCodes([]codes.Code{ 149 codes.Unavailable, 150 codes.DeadlineExceeded, 151 }, gax.Backoff{ 152 Initial: 100 * time.Millisecond, 153 Max: 60000 * time.Millisecond, 154 Multiplier: 1.30, 155 }) 156 }), 157 }, 158 CancelOperation: []gax.CallOption{}, 159 GetServerConfig: []gax.CallOption{ 160 gax.WithRetry(func() gax.Retryer { 161 return gax.OnCodes([]codes.Code{ 162 codes.Unavailable, 163 codes.DeadlineExceeded, 164 }, gax.Backoff{ 165 Initial: 100 * time.Millisecond, 166 Max: 60000 * time.Millisecond, 167 Multiplier: 1.30, 168 }) 169 }), 170 }, 171 ListNodePools: []gax.CallOption{ 172 gax.WithRetry(func() gax.Retryer { 173 return gax.OnCodes([]codes.Code{ 174 codes.Unavailable, 175 codes.DeadlineExceeded, 176 }, gax.Backoff{ 177 Initial: 100 * time.Millisecond, 178 Max: 60000 * time.Millisecond, 179 Multiplier: 1.30, 180 }) 181 }), 182 }, 183 GetNodePool: []gax.CallOption{ 184 gax.WithRetry(func() gax.Retryer { 185 return gax.OnCodes([]codes.Code{ 186 codes.Unavailable, 187 codes.DeadlineExceeded, 188 }, gax.Backoff{ 189 Initial: 100 * time.Millisecond, 190 Max: 60000 * time.Millisecond, 191 Multiplier: 1.30, 192 }) 193 }), 194 }, 195 CreateNodePool: []gax.CallOption{}, 196 DeleteNodePool: []gax.CallOption{ 197 gax.WithRetry(func() gax.Retryer { 198 return gax.OnCodes([]codes.Code{ 199 codes.Unavailable, 200 codes.DeadlineExceeded, 201 }, gax.Backoff{ 202 Initial: 100 * time.Millisecond, 203 Max: 60000 * time.Millisecond, 204 Multiplier: 1.30, 205 }) 206 }), 207 }, 208 RollbackNodePoolUpgrade: []gax.CallOption{}, 209 SetNodePoolManagement: []gax.CallOption{}, 210 SetLabels: []gax.CallOption{}, 211 SetLegacyAbac: []gax.CallOption{}, 212 StartIPRotation: []gax.CallOption{}, 213 CompleteIPRotation: []gax.CallOption{}, 214 SetNodePoolSize: []gax.CallOption{}, 215 SetNetworkPolicy: []gax.CallOption{}, 216 SetMaintenancePolicy: []gax.CallOption{}, 217 ListUsableSubnetworks: []gax.CallOption{}, 218 } 219} 220 221// ClusterManagerClient is a client for interacting with Kubernetes Engine API. 222// 223// Methods, except Close, may be called concurrently. However, fields must not be modified concurrently with method calls. 224type ClusterManagerClient struct { 225 // Connection pool of gRPC connections to the service. 226 connPool gtransport.ConnPool 227 228 // flag to opt out of default deadlines via GOOGLE_API_GO_EXPERIMENTAL_DISABLE_DEFAULT_DEADLINE 229 disableDeadlines bool 230 231 // The gRPC API client. 232 clusterManagerClient containerpb.ClusterManagerClient 233 234 // The call options for this service. 235 CallOptions *ClusterManagerCallOptions 236 237 // The x-goog-* metadata to be sent with each request. 238 xGoogMetadata metadata.MD 239} 240 241// NewClusterManagerClient creates a new cluster manager client. 242// 243// Google Kubernetes Engine Cluster Manager v1 244func NewClusterManagerClient(ctx context.Context, opts ...option.ClientOption) (*ClusterManagerClient, error) { 245 clientOpts := defaultClusterManagerClientOptions() 246 247 if newClusterManagerClientHook != nil { 248 hookOpts, err := newClusterManagerClientHook(ctx, clientHookParams{}) 249 if err != nil { 250 return nil, err 251 } 252 clientOpts = append(clientOpts, hookOpts...) 253 } 254 255 disableDeadlines, err := checkDisableDeadlines() 256 if err != nil { 257 return nil, err 258 } 259 260 connPool, err := gtransport.DialPool(ctx, append(clientOpts, opts...)...) 261 if err != nil { 262 return nil, err 263 } 264 c := &ClusterManagerClient{ 265 connPool: connPool, 266 disableDeadlines: disableDeadlines, 267 CallOptions: defaultClusterManagerCallOptions(), 268 269 clusterManagerClient: containerpb.NewClusterManagerClient(connPool), 270 } 271 c.setGoogleClientInfo() 272 273 return c, nil 274} 275 276// Connection returns a connection to the API service. 277// 278// Deprecated. 279func (c *ClusterManagerClient) Connection() *grpc.ClientConn { 280 return c.connPool.Conn() 281} 282 283// Close closes the connection to the API service. The user should invoke this when 284// the client is no longer required. 285func (c *ClusterManagerClient) Close() error { 286 return c.connPool.Close() 287} 288 289// setGoogleClientInfo sets the name and version of the application in 290// the `x-goog-api-client` header passed on each request. Intended for 291// use by Google-written clients. 292func (c *ClusterManagerClient) setGoogleClientInfo(keyval ...string) { 293 kv := append([]string{"gl-go", versionGo()}, keyval...) 294 kv = append(kv, "gapic", versionClient, "gax", gax.Version, "grpc", grpc.Version) 295 c.xGoogMetadata = metadata.Pairs("x-goog-api-client", gax.XGoogHeader(kv...)) 296} 297 298// ListClusters lists all clusters owned by a project in either the specified zone or all 299// zones. 300func (c *ClusterManagerClient) ListClusters(ctx context.Context, req *containerpb.ListClustersRequest, opts ...gax.CallOption) (*containerpb.ListClustersResponse, error) { 301 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 302 cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond) 303 defer cancel() 304 ctx = cctx 305 } 306 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v", "parent", url.QueryEscape(req.GetParent()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()))) 307 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 308 opts = append(c.CallOptions.ListClusters[0:len(c.CallOptions.ListClusters):len(c.CallOptions.ListClusters)], opts...) 309 var resp *containerpb.ListClustersResponse 310 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 311 var err error 312 resp, err = c.clusterManagerClient.ListClusters(ctx, req, settings.GRPC...) 313 return err 314 }, opts...) 315 if err != nil { 316 return nil, err 317 } 318 return resp, nil 319} 320 321// GetCluster gets the details of a specific cluster. 322func (c *ClusterManagerClient) GetCluster(ctx context.Context, req *containerpb.GetClusterRequest, opts ...gax.CallOption) (*containerpb.Cluster, error) { 323 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 324 cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond) 325 defer cancel() 326 ctx = cctx 327 } 328 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 329 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 330 opts = append(c.CallOptions.GetCluster[0:len(c.CallOptions.GetCluster):len(c.CallOptions.GetCluster)], opts...) 331 var resp *containerpb.Cluster 332 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 333 var err error 334 resp, err = c.clusterManagerClient.GetCluster(ctx, req, settings.GRPC...) 335 return err 336 }, opts...) 337 if err != nil { 338 return nil, err 339 } 340 return resp, nil 341} 342 343// CreateCluster creates a cluster, consisting of the specified number and type of Google 344// Compute Engine instances. 345// 346// By default, the cluster is created in the project’s 347// default network (at https://cloud.google.com/compute/docs/networks-and-firewalls#networks). 348// 349// One firewall is added for the cluster. After cluster creation, 350// the Kubelet creates routes for each node to allow the containers 351// on that node to communicate with all other instances in the 352// cluster. 353// 354// Finally, an entry is added to the project’s global metadata indicating 355// which CIDR range the cluster is using. 356func (c *ClusterManagerClient) CreateCluster(ctx context.Context, req *containerpb.CreateClusterRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 357 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 358 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 359 defer cancel() 360 ctx = cctx 361 } 362 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v", "parent", url.QueryEscape(req.GetParent()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()))) 363 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 364 opts = append(c.CallOptions.CreateCluster[0:len(c.CallOptions.CreateCluster):len(c.CallOptions.CreateCluster)], opts...) 365 var resp *containerpb.Operation 366 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 367 var err error 368 resp, err = c.clusterManagerClient.CreateCluster(ctx, req, settings.GRPC...) 369 return err 370 }, opts...) 371 if err != nil { 372 return nil, err 373 } 374 return resp, nil 375} 376 377// UpdateCluster updates the settings of a specific cluster. 378func (c *ClusterManagerClient) UpdateCluster(ctx context.Context, req *containerpb.UpdateClusterRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 379 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 380 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 381 defer cancel() 382 ctx = cctx 383 } 384 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 385 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 386 opts = append(c.CallOptions.UpdateCluster[0:len(c.CallOptions.UpdateCluster):len(c.CallOptions.UpdateCluster)], opts...) 387 var resp *containerpb.Operation 388 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 389 var err error 390 resp, err = c.clusterManagerClient.UpdateCluster(ctx, req, settings.GRPC...) 391 return err 392 }, opts...) 393 if err != nil { 394 return nil, err 395 } 396 return resp, nil 397} 398 399// UpdateNodePool updates the version and/or image type for the specified node pool. 400func (c *ClusterManagerClient) UpdateNodePool(ctx context.Context, req *containerpb.UpdateNodePoolRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 401 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 402 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 403 defer cancel() 404 ctx = cctx 405 } 406 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()), "node_pool_id", url.QueryEscape(req.GetNodePoolId()))) 407 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 408 opts = append(c.CallOptions.UpdateNodePool[0:len(c.CallOptions.UpdateNodePool):len(c.CallOptions.UpdateNodePool)], opts...) 409 var resp *containerpb.Operation 410 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 411 var err error 412 resp, err = c.clusterManagerClient.UpdateNodePool(ctx, req, settings.GRPC...) 413 return err 414 }, opts...) 415 if err != nil { 416 return nil, err 417 } 418 return resp, nil 419} 420 421// SetNodePoolAutoscaling sets the autoscaling settings for the specified node pool. 422func (c *ClusterManagerClient) SetNodePoolAutoscaling(ctx context.Context, req *containerpb.SetNodePoolAutoscalingRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 423 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 424 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 425 defer cancel() 426 ctx = cctx 427 } 428 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()), "node_pool_id", url.QueryEscape(req.GetNodePoolId()))) 429 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 430 opts = append(c.CallOptions.SetNodePoolAutoscaling[0:len(c.CallOptions.SetNodePoolAutoscaling):len(c.CallOptions.SetNodePoolAutoscaling)], opts...) 431 var resp *containerpb.Operation 432 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 433 var err error 434 resp, err = c.clusterManagerClient.SetNodePoolAutoscaling(ctx, req, settings.GRPC...) 435 return err 436 }, opts...) 437 if err != nil { 438 return nil, err 439 } 440 return resp, nil 441} 442 443// SetLoggingService sets the logging service for a specific cluster. 444func (c *ClusterManagerClient) SetLoggingService(ctx context.Context, req *containerpb.SetLoggingServiceRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 445 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 446 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 447 defer cancel() 448 ctx = cctx 449 } 450 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 451 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 452 opts = append(c.CallOptions.SetLoggingService[0:len(c.CallOptions.SetLoggingService):len(c.CallOptions.SetLoggingService)], opts...) 453 var resp *containerpb.Operation 454 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 455 var err error 456 resp, err = c.clusterManagerClient.SetLoggingService(ctx, req, settings.GRPC...) 457 return err 458 }, opts...) 459 if err != nil { 460 return nil, err 461 } 462 return resp, nil 463} 464 465// SetMonitoringService sets the monitoring service for a specific cluster. 466func (c *ClusterManagerClient) SetMonitoringService(ctx context.Context, req *containerpb.SetMonitoringServiceRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 467 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 468 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 469 defer cancel() 470 ctx = cctx 471 } 472 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 473 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 474 opts = append(c.CallOptions.SetMonitoringService[0:len(c.CallOptions.SetMonitoringService):len(c.CallOptions.SetMonitoringService)], opts...) 475 var resp *containerpb.Operation 476 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 477 var err error 478 resp, err = c.clusterManagerClient.SetMonitoringService(ctx, req, settings.GRPC...) 479 return err 480 }, opts...) 481 if err != nil { 482 return nil, err 483 } 484 return resp, nil 485} 486 487// SetAddonsConfig sets the addons for a specific cluster. 488func (c *ClusterManagerClient) SetAddonsConfig(ctx context.Context, req *containerpb.SetAddonsConfigRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 489 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 490 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 491 defer cancel() 492 ctx = cctx 493 } 494 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 495 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 496 opts = append(c.CallOptions.SetAddonsConfig[0:len(c.CallOptions.SetAddonsConfig):len(c.CallOptions.SetAddonsConfig)], opts...) 497 var resp *containerpb.Operation 498 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 499 var err error 500 resp, err = c.clusterManagerClient.SetAddonsConfig(ctx, req, settings.GRPC...) 501 return err 502 }, opts...) 503 if err != nil { 504 return nil, err 505 } 506 return resp, nil 507} 508 509// SetLocations sets the locations for a specific cluster. 510func (c *ClusterManagerClient) SetLocations(ctx context.Context, req *containerpb.SetLocationsRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 511 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 512 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 513 defer cancel() 514 ctx = cctx 515 } 516 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 517 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 518 opts = append(c.CallOptions.SetLocations[0:len(c.CallOptions.SetLocations):len(c.CallOptions.SetLocations)], opts...) 519 var resp *containerpb.Operation 520 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 521 var err error 522 resp, err = c.clusterManagerClient.SetLocations(ctx, req, settings.GRPC...) 523 return err 524 }, opts...) 525 if err != nil { 526 return nil, err 527 } 528 return resp, nil 529} 530 531// UpdateMaster updates the master for a specific cluster. 532func (c *ClusterManagerClient) UpdateMaster(ctx context.Context, req *containerpb.UpdateMasterRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 533 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 534 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 535 defer cancel() 536 ctx = cctx 537 } 538 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 539 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 540 opts = append(c.CallOptions.UpdateMaster[0:len(c.CallOptions.UpdateMaster):len(c.CallOptions.UpdateMaster)], opts...) 541 var resp *containerpb.Operation 542 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 543 var err error 544 resp, err = c.clusterManagerClient.UpdateMaster(ctx, req, settings.GRPC...) 545 return err 546 }, opts...) 547 if err != nil { 548 return nil, err 549 } 550 return resp, nil 551} 552 553// SetMasterAuth sets master auth materials. Currently supports changing the admin password 554// or a specific cluster, either via password generation or explicitly setting 555// the password. 556func (c *ClusterManagerClient) SetMasterAuth(ctx context.Context, req *containerpb.SetMasterAuthRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 557 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 558 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 559 defer cancel() 560 ctx = cctx 561 } 562 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 563 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 564 opts = append(c.CallOptions.SetMasterAuth[0:len(c.CallOptions.SetMasterAuth):len(c.CallOptions.SetMasterAuth)], opts...) 565 var resp *containerpb.Operation 566 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 567 var err error 568 resp, err = c.clusterManagerClient.SetMasterAuth(ctx, req, settings.GRPC...) 569 return err 570 }, opts...) 571 if err != nil { 572 return nil, err 573 } 574 return resp, nil 575} 576 577// DeleteCluster deletes the cluster, including the Kubernetes endpoint and all worker 578// nodes. 579// 580// Firewalls and routes that were configured during cluster creation 581// are also deleted. 582// 583// Other Google Compute Engine resources that might be in use by the cluster, 584// such as load balancer resources, are not deleted if they weren’t present 585// when the cluster was initially created. 586func (c *ClusterManagerClient) DeleteCluster(ctx context.Context, req *containerpb.DeleteClusterRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 587 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 588 cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond) 589 defer cancel() 590 ctx = cctx 591 } 592 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 593 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 594 opts = append(c.CallOptions.DeleteCluster[0:len(c.CallOptions.DeleteCluster):len(c.CallOptions.DeleteCluster)], opts...) 595 var resp *containerpb.Operation 596 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 597 var err error 598 resp, err = c.clusterManagerClient.DeleteCluster(ctx, req, settings.GRPC...) 599 return err 600 }, opts...) 601 if err != nil { 602 return nil, err 603 } 604 return resp, nil 605} 606 607// ListOperations lists all operations in a project in a specific zone or all zones. 608func (c *ClusterManagerClient) ListOperations(ctx context.Context, req *containerpb.ListOperationsRequest, opts ...gax.CallOption) (*containerpb.ListOperationsResponse, error) { 609 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 610 cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond) 611 defer cancel() 612 ctx = cctx 613 } 614 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v", "parent", url.QueryEscape(req.GetParent()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()))) 615 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 616 opts = append(c.CallOptions.ListOperations[0:len(c.CallOptions.ListOperations):len(c.CallOptions.ListOperations)], opts...) 617 var resp *containerpb.ListOperationsResponse 618 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 619 var err error 620 resp, err = c.clusterManagerClient.ListOperations(ctx, req, settings.GRPC...) 621 return err 622 }, opts...) 623 if err != nil { 624 return nil, err 625 } 626 return resp, nil 627} 628 629// GetOperation gets the specified operation. 630func (c *ClusterManagerClient) GetOperation(ctx context.Context, req *containerpb.GetOperationRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 631 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 632 cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond) 633 defer cancel() 634 ctx = cctx 635 } 636 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "operation_id", url.QueryEscape(req.GetOperationId()))) 637 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 638 opts = append(c.CallOptions.GetOperation[0:len(c.CallOptions.GetOperation):len(c.CallOptions.GetOperation)], opts...) 639 var resp *containerpb.Operation 640 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 641 var err error 642 resp, err = c.clusterManagerClient.GetOperation(ctx, req, settings.GRPC...) 643 return err 644 }, opts...) 645 if err != nil { 646 return nil, err 647 } 648 return resp, nil 649} 650 651// CancelOperation cancels the specified operation. 652func (c *ClusterManagerClient) CancelOperation(ctx context.Context, req *containerpb.CancelOperationRequest, opts ...gax.CallOption) error { 653 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 654 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 655 defer cancel() 656 ctx = cctx 657 } 658 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "operation_id", url.QueryEscape(req.GetOperationId()))) 659 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 660 opts = append(c.CallOptions.CancelOperation[0:len(c.CallOptions.CancelOperation):len(c.CallOptions.CancelOperation)], opts...) 661 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 662 var err error 663 _, err = c.clusterManagerClient.CancelOperation(ctx, req, settings.GRPC...) 664 return err 665 }, opts...) 666 return err 667} 668 669// GetServerConfig returns configuration info about the Google Kubernetes Engine service. 670func (c *ClusterManagerClient) GetServerConfig(ctx context.Context, req *containerpb.GetServerConfigRequest, opts ...gax.CallOption) (*containerpb.ServerConfig, error) { 671 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 672 cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond) 673 defer cancel() 674 ctx = cctx 675 } 676 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()))) 677 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 678 opts = append(c.CallOptions.GetServerConfig[0:len(c.CallOptions.GetServerConfig):len(c.CallOptions.GetServerConfig)], opts...) 679 var resp *containerpb.ServerConfig 680 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 681 var err error 682 resp, err = c.clusterManagerClient.GetServerConfig(ctx, req, settings.GRPC...) 683 return err 684 }, opts...) 685 if err != nil { 686 return nil, err 687 } 688 return resp, nil 689} 690 691// ListNodePools lists the node pools for a cluster. 692func (c *ClusterManagerClient) ListNodePools(ctx context.Context, req *containerpb.ListNodePoolsRequest, opts ...gax.CallOption) (*containerpb.ListNodePoolsResponse, error) { 693 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 694 cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond) 695 defer cancel() 696 ctx = cctx 697 } 698 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "parent", url.QueryEscape(req.GetParent()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 699 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 700 opts = append(c.CallOptions.ListNodePools[0:len(c.CallOptions.ListNodePools):len(c.CallOptions.ListNodePools)], opts...) 701 var resp *containerpb.ListNodePoolsResponse 702 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 703 var err error 704 resp, err = c.clusterManagerClient.ListNodePools(ctx, req, settings.GRPC...) 705 return err 706 }, opts...) 707 if err != nil { 708 return nil, err 709 } 710 return resp, nil 711} 712 713// GetNodePool retrieves the requested node pool. 714func (c *ClusterManagerClient) GetNodePool(ctx context.Context, req *containerpb.GetNodePoolRequest, opts ...gax.CallOption) (*containerpb.NodePool, error) { 715 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 716 cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond) 717 defer cancel() 718 ctx = cctx 719 } 720 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()), "node_pool_id", url.QueryEscape(req.GetNodePoolId()))) 721 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 722 opts = append(c.CallOptions.GetNodePool[0:len(c.CallOptions.GetNodePool):len(c.CallOptions.GetNodePool)], opts...) 723 var resp *containerpb.NodePool 724 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 725 var err error 726 resp, err = c.clusterManagerClient.GetNodePool(ctx, req, settings.GRPC...) 727 return err 728 }, opts...) 729 if err != nil { 730 return nil, err 731 } 732 return resp, nil 733} 734 735// CreateNodePool creates a node pool for a cluster. 736func (c *ClusterManagerClient) CreateNodePool(ctx context.Context, req *containerpb.CreateNodePoolRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 737 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 738 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 739 defer cancel() 740 ctx = cctx 741 } 742 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "parent", url.QueryEscape(req.GetParent()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 743 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 744 opts = append(c.CallOptions.CreateNodePool[0:len(c.CallOptions.CreateNodePool):len(c.CallOptions.CreateNodePool)], opts...) 745 var resp *containerpb.Operation 746 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 747 var err error 748 resp, err = c.clusterManagerClient.CreateNodePool(ctx, req, settings.GRPC...) 749 return err 750 }, opts...) 751 if err != nil { 752 return nil, err 753 } 754 return resp, nil 755} 756 757// DeleteNodePool deletes a node pool from a cluster. 758func (c *ClusterManagerClient) DeleteNodePool(ctx context.Context, req *containerpb.DeleteNodePoolRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 759 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 760 cctx, cancel := context.WithTimeout(ctx, 20000*time.Millisecond) 761 defer cancel() 762 ctx = cctx 763 } 764 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()), "node_pool_id", url.QueryEscape(req.GetNodePoolId()))) 765 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 766 opts = append(c.CallOptions.DeleteNodePool[0:len(c.CallOptions.DeleteNodePool):len(c.CallOptions.DeleteNodePool)], opts...) 767 var resp *containerpb.Operation 768 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 769 var err error 770 resp, err = c.clusterManagerClient.DeleteNodePool(ctx, req, settings.GRPC...) 771 return err 772 }, opts...) 773 if err != nil { 774 return nil, err 775 } 776 return resp, nil 777} 778 779// RollbackNodePoolUpgrade rolls back a previously Aborted or Failed NodePool upgrade. 780// This makes no changes if the last upgrade successfully completed. 781func (c *ClusterManagerClient) RollbackNodePoolUpgrade(ctx context.Context, req *containerpb.RollbackNodePoolUpgradeRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 782 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 783 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 784 defer cancel() 785 ctx = cctx 786 } 787 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()), "node_pool_id", url.QueryEscape(req.GetNodePoolId()))) 788 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 789 opts = append(c.CallOptions.RollbackNodePoolUpgrade[0:len(c.CallOptions.RollbackNodePoolUpgrade):len(c.CallOptions.RollbackNodePoolUpgrade)], opts...) 790 var resp *containerpb.Operation 791 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 792 var err error 793 resp, err = c.clusterManagerClient.RollbackNodePoolUpgrade(ctx, req, settings.GRPC...) 794 return err 795 }, opts...) 796 if err != nil { 797 return nil, err 798 } 799 return resp, nil 800} 801 802// SetNodePoolManagement sets the NodeManagement options for a node pool. 803func (c *ClusterManagerClient) SetNodePoolManagement(ctx context.Context, req *containerpb.SetNodePoolManagementRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 804 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 805 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 806 defer cancel() 807 ctx = cctx 808 } 809 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()), "node_pool_id", url.QueryEscape(req.GetNodePoolId()))) 810 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 811 opts = append(c.CallOptions.SetNodePoolManagement[0:len(c.CallOptions.SetNodePoolManagement):len(c.CallOptions.SetNodePoolManagement)], opts...) 812 var resp *containerpb.Operation 813 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 814 var err error 815 resp, err = c.clusterManagerClient.SetNodePoolManagement(ctx, req, settings.GRPC...) 816 return err 817 }, opts...) 818 if err != nil { 819 return nil, err 820 } 821 return resp, nil 822} 823 824// SetLabels sets labels on a cluster. 825func (c *ClusterManagerClient) SetLabels(ctx context.Context, req *containerpb.SetLabelsRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 826 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 827 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 828 defer cancel() 829 ctx = cctx 830 } 831 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 832 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 833 opts = append(c.CallOptions.SetLabels[0:len(c.CallOptions.SetLabels):len(c.CallOptions.SetLabels)], opts...) 834 var resp *containerpb.Operation 835 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 836 var err error 837 resp, err = c.clusterManagerClient.SetLabels(ctx, req, settings.GRPC...) 838 return err 839 }, opts...) 840 if err != nil { 841 return nil, err 842 } 843 return resp, nil 844} 845 846// SetLegacyAbac enables or disables the ABAC authorization mechanism on a cluster. 847func (c *ClusterManagerClient) SetLegacyAbac(ctx context.Context, req *containerpb.SetLegacyAbacRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 848 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 849 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 850 defer cancel() 851 ctx = cctx 852 } 853 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 854 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 855 opts = append(c.CallOptions.SetLegacyAbac[0:len(c.CallOptions.SetLegacyAbac):len(c.CallOptions.SetLegacyAbac)], opts...) 856 var resp *containerpb.Operation 857 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 858 var err error 859 resp, err = c.clusterManagerClient.SetLegacyAbac(ctx, req, settings.GRPC...) 860 return err 861 }, opts...) 862 if err != nil { 863 return nil, err 864 } 865 return resp, nil 866} 867 868// StartIPRotation starts master IP rotation. 869func (c *ClusterManagerClient) StartIPRotation(ctx context.Context, req *containerpb.StartIPRotationRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 870 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 871 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 872 defer cancel() 873 ctx = cctx 874 } 875 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 876 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 877 opts = append(c.CallOptions.StartIPRotation[0:len(c.CallOptions.StartIPRotation):len(c.CallOptions.StartIPRotation)], opts...) 878 var resp *containerpb.Operation 879 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 880 var err error 881 resp, err = c.clusterManagerClient.StartIPRotation(ctx, req, settings.GRPC...) 882 return err 883 }, opts...) 884 if err != nil { 885 return nil, err 886 } 887 return resp, nil 888} 889 890// CompleteIPRotation completes master IP rotation. 891func (c *ClusterManagerClient) CompleteIPRotation(ctx context.Context, req *containerpb.CompleteIPRotationRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 892 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 893 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 894 defer cancel() 895 ctx = cctx 896 } 897 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 898 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 899 opts = append(c.CallOptions.CompleteIPRotation[0:len(c.CallOptions.CompleteIPRotation):len(c.CallOptions.CompleteIPRotation)], opts...) 900 var resp *containerpb.Operation 901 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 902 var err error 903 resp, err = c.clusterManagerClient.CompleteIPRotation(ctx, req, settings.GRPC...) 904 return err 905 }, opts...) 906 if err != nil { 907 return nil, err 908 } 909 return resp, nil 910} 911 912// SetNodePoolSize sets the size for a specific node pool. 913func (c *ClusterManagerClient) SetNodePoolSize(ctx context.Context, req *containerpb.SetNodePoolSizeRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 914 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 915 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 916 defer cancel() 917 ctx = cctx 918 } 919 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()), "node_pool_id", url.QueryEscape(req.GetNodePoolId()))) 920 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 921 opts = append(c.CallOptions.SetNodePoolSize[0:len(c.CallOptions.SetNodePoolSize):len(c.CallOptions.SetNodePoolSize)], opts...) 922 var resp *containerpb.Operation 923 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 924 var err error 925 resp, err = c.clusterManagerClient.SetNodePoolSize(ctx, req, settings.GRPC...) 926 return err 927 }, opts...) 928 if err != nil { 929 return nil, err 930 } 931 return resp, nil 932} 933 934// SetNetworkPolicy enables or disables Network Policy for a cluster. 935func (c *ClusterManagerClient) SetNetworkPolicy(ctx context.Context, req *containerpb.SetNetworkPolicyRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 936 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 937 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 938 defer cancel() 939 ctx = cctx 940 } 941 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 942 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 943 opts = append(c.CallOptions.SetNetworkPolicy[0:len(c.CallOptions.SetNetworkPolicy):len(c.CallOptions.SetNetworkPolicy)], opts...) 944 var resp *containerpb.Operation 945 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 946 var err error 947 resp, err = c.clusterManagerClient.SetNetworkPolicy(ctx, req, settings.GRPC...) 948 return err 949 }, opts...) 950 if err != nil { 951 return nil, err 952 } 953 return resp, nil 954} 955 956// SetMaintenancePolicy sets the maintenance policy for a cluster. 957func (c *ClusterManagerClient) SetMaintenancePolicy(ctx context.Context, req *containerpb.SetMaintenancePolicyRequest, opts ...gax.CallOption) (*containerpb.Operation, error) { 958 if _, ok := ctx.Deadline(); !ok && !c.disableDeadlines { 959 cctx, cancel := context.WithTimeout(ctx, 45000*time.Millisecond) 960 defer cancel() 961 ctx = cctx 962 } 963 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v&%s=%v&%s=%v&%s=%v", "name", url.QueryEscape(req.GetName()), "project_id", url.QueryEscape(req.GetProjectId()), "zone", url.QueryEscape(req.GetZone()), "cluster_id", url.QueryEscape(req.GetClusterId()))) 964 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 965 opts = append(c.CallOptions.SetMaintenancePolicy[0:len(c.CallOptions.SetMaintenancePolicy):len(c.CallOptions.SetMaintenancePolicy)], opts...) 966 var resp *containerpb.Operation 967 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 968 var err error 969 resp, err = c.clusterManagerClient.SetMaintenancePolicy(ctx, req, settings.GRPC...) 970 return err 971 }, opts...) 972 if err != nil { 973 return nil, err 974 } 975 return resp, nil 976} 977 978// ListUsableSubnetworks lists subnetworks that are usable for creating clusters in a project. 979func (c *ClusterManagerClient) ListUsableSubnetworks(ctx context.Context, req *containerpb.ListUsableSubnetworksRequest, opts ...gax.CallOption) *UsableSubnetworkIterator { 980 md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "parent", url.QueryEscape(req.GetParent()))) 981 ctx = insertMetadata(ctx, c.xGoogMetadata, md) 982 opts = append(c.CallOptions.ListUsableSubnetworks[0:len(c.CallOptions.ListUsableSubnetworks):len(c.CallOptions.ListUsableSubnetworks)], opts...) 983 it := &UsableSubnetworkIterator{} 984 req = proto.Clone(req).(*containerpb.ListUsableSubnetworksRequest) 985 it.InternalFetch = func(pageSize int, pageToken string) ([]*containerpb.UsableSubnetwork, string, error) { 986 var resp *containerpb.ListUsableSubnetworksResponse 987 req.PageToken = pageToken 988 if pageSize > math.MaxInt32 { 989 req.PageSize = math.MaxInt32 990 } else { 991 req.PageSize = int32(pageSize) 992 } 993 err := gax.Invoke(ctx, func(ctx context.Context, settings gax.CallSettings) error { 994 var err error 995 resp, err = c.clusterManagerClient.ListUsableSubnetworks(ctx, req, settings.GRPC...) 996 return err 997 }, opts...) 998 if err != nil { 999 return nil, "", err 1000 } 1001 1002 it.Response = resp 1003 return resp.GetSubnetworks(), resp.GetNextPageToken(), nil 1004 } 1005 fetch := func(pageSize int, pageToken string) (string, error) { 1006 items, nextPageToken, err := it.InternalFetch(pageSize, pageToken) 1007 if err != nil { 1008 return "", err 1009 } 1010 it.items = append(it.items, items...) 1011 return nextPageToken, nil 1012 } 1013 it.pageInfo, it.nextFunc = iterator.NewPageInfo(fetch, it.bufLen, it.takeBuf) 1014 it.pageInfo.MaxSize = int(req.GetPageSize()) 1015 it.pageInfo.Token = req.GetPageToken() 1016 return it 1017} 1018 1019// UsableSubnetworkIterator manages a stream of *containerpb.UsableSubnetwork. 1020type UsableSubnetworkIterator struct { 1021 items []*containerpb.UsableSubnetwork 1022 pageInfo *iterator.PageInfo 1023 nextFunc func() error 1024 1025 // Response is the raw response for the current page. 1026 // It must be cast to the RPC response type. 1027 // Calling Next() or InternalFetch() updates this value. 1028 Response interface{} 1029 1030 // InternalFetch is for use by the Google Cloud Libraries only. 1031 // It is not part of the stable interface of this package. 1032 // 1033 // InternalFetch returns results from a single call to the underlying RPC. 1034 // The number of results is no greater than pageSize. 1035 // If there are no more results, nextPageToken is empty and err is nil. 1036 InternalFetch func(pageSize int, pageToken string) (results []*containerpb.UsableSubnetwork, nextPageToken string, err error) 1037} 1038 1039// PageInfo supports pagination. See the google.golang.org/api/iterator package for details. 1040func (it *UsableSubnetworkIterator) PageInfo() *iterator.PageInfo { 1041 return it.pageInfo 1042} 1043 1044// Next returns the next result. Its second return value is iterator.Done if there are no more 1045// results. Once Next returns Done, all subsequent calls will return Done. 1046func (it *UsableSubnetworkIterator) Next() (*containerpb.UsableSubnetwork, error) { 1047 var item *containerpb.UsableSubnetwork 1048 if err := it.nextFunc(); err != nil { 1049 return item, err 1050 } 1051 item = it.items[0] 1052 it.items = it.items[1:] 1053 return item, nil 1054} 1055 1056func (it *UsableSubnetworkIterator) bufLen() int { 1057 return len(it.items) 1058} 1059 1060func (it *UsableSubnetworkIterator) takeBuf() interface{} { 1061 b := it.items 1062 it.items = nil 1063 return b 1064} 1065