blob: 0625bdf840b244620669ac28a71999d91f1ccbe4 [file] [edit]
// Copyright 2015 Google LLC
//
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file or at
// https://developers.google.com/open-source/licenses/bsd
// This is a generated file (see the discoveryapis_generator project).
// ignore_for_file: camel_case_types
// ignore_for_file: comment_references
// ignore_for_file: deprecated_member_use_from_same_package
// ignore_for_file: doc_directive_unknown
// ignore_for_file: lines_longer_than_80_chars
// ignore_for_file: non_constant_identifier_names
// ignore_for_file: prefer_interpolation_to_compose_strings
// ignore_for_file: unintended_html_in_doc_comment
// ignore_for_file: unnecessary_brace_in_string_interps
// ignore_for_file: unnecessary_lambdas
// ignore_for_file: unnecessary_string_interpolations
/// Kubernetes Engine API - v1
///
/// Builds and manages container-based applications, powered by the open source
/// Kubernetes technology.
///
/// For more information, see <https://cloud.google.com/kubernetes-engine/docs/>
///
/// Create an instance of [ContainerApi] to access these resources:
///
/// - [ProjectsResource]
/// - [ProjectsAggregatedResource]
/// - [ProjectsAggregatedUsableSubnetworksResource]
/// - [ProjectsLocationsResource]
/// - [ProjectsLocationsClustersResource]
/// - [ProjectsLocationsClustersNodePoolsResource]
/// - [ProjectsLocationsClustersWellKnownResource]
/// - [ProjectsLocationsOperationsResource]
/// - [ProjectsZonesResource]
/// - [ProjectsZonesClustersResource]
/// - [ProjectsZonesClustersNodePoolsResource]
/// - [ProjectsZonesOperationsResource]
library;
import 'dart:async' as async;
import 'dart:convert' as convert;
import 'dart:core' as core;
import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
import 'package:http/http.dart' as http;
import '../shared.dart';
import '../src/user_agent.dart';
export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
show ApiRequestError, DetailedApiRequestError;
/// Builds and manages container-based applications, powered by the open source
/// Kubernetes technology.
class ContainerApi {
/// See, edit, configure, and delete your Google Cloud data and see the email
/// address for your Google Account.
static const cloudPlatformScope =
'https://www.googleapis.com/auth/cloud-platform';
final commons.ApiRequester _requester;
ProjectsResource get projects => ProjectsResource(_requester);
ContainerApi(
http.Client client, {
core.String rootUrl = 'https://container.googleapis.com/',
core.String servicePath = '',
}) : _requester = commons.ApiRequester(
client,
rootUrl,
servicePath,
requestHeaders,
);
}
class ProjectsResource {
final commons.ApiRequester _requester;
ProjectsAggregatedResource get aggregated =>
ProjectsAggregatedResource(_requester);
ProjectsLocationsResource get locations =>
ProjectsLocationsResource(_requester);
ProjectsZonesResource get zones => ProjectsZonesResource(_requester);
ProjectsResource(commons.ApiRequester client) : _requester = client;
}
class ProjectsAggregatedResource {
final commons.ApiRequester _requester;
ProjectsAggregatedUsableSubnetworksResource get usableSubnetworks =>
ProjectsAggregatedUsableSubnetworksResource(_requester);
ProjectsAggregatedResource(commons.ApiRequester client) : _requester = client;
}
class ProjectsAggregatedUsableSubnetworksResource {
final commons.ApiRequester _requester;
ProjectsAggregatedUsableSubnetworksResource(commons.ApiRequester client)
: _requester = client;
/// Lists subnetworks that are usable for creating clusters in a project.
///
/// Request parameters:
///
/// [parent] - The parent project where subnetworks are usable. Specified in
/// the format `projects / * `.
/// Value must have pattern `^projects/\[^/\]+$`.
///
/// [filter] - Filtering currently only supports equality on the
/// networkProjectId and must be in the form:
/// "networkProjectId=\[PROJECTID\]", where `networkProjectId` is the project
/// which owns the listed subnetworks. This defaults to the parent project ID.
///
/// [pageSize] - The max number of results per page that should be returned.
/// If the number of available results is larger than `page_size`, a
/// `next_page_token` is returned which can be used to get the next page of
/// results in subsequent requests. Acceptable values are 0 to 500, inclusive.
/// (Default: 500)
///
/// [pageToken] - Specifies a page token to use. Set this to the nextPageToken
/// returned by previous list requests to get the next page of results.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListUsableSubnetworksResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListUsableSubnetworksResponse> list(
core.String parent, {
core.String? filter,
core.int? pageSize,
core.String? pageToken,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'filter': ?filter == null ? null : [filter],
'pageSize': ?pageSize == null ? null : ['${pageSize}'],
'pageToken': ?pageToken == null ? null : [pageToken],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/' +
core.Uri.encodeFull('$parent') +
'/aggregated/usableSubnetworks';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ListUsableSubnetworksResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class ProjectsLocationsResource {
final commons.ApiRequester _requester;
ProjectsLocationsClustersResource get clusters =>
ProjectsLocationsClustersResource(_requester);
ProjectsLocationsOperationsResource get operations =>
ProjectsLocationsOperationsResource(_requester);
ProjectsLocationsResource(commons.ApiRequester client) : _requester = client;
/// Returns configuration info about the Google Kubernetes Engine service.
///
/// Request parameters:
///
/// [name] - The name (project and location) of the server config to get,
/// specified in the format `projects / * /locations / * `.
/// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) to return
/// operations for. This field has been deprecated and replaced by the name
/// field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ServerConfig].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ServerConfig> getServerConfig(
core.String name, {
core.String? projectId,
core.String? zone,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'projectId': ?projectId == null ? null : [projectId],
'zone': ?zone == null ? null : [zone],
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + '/serverConfig';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ServerConfig.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class ProjectsLocationsClustersResource {
final commons.ApiRequester _requester;
ProjectsLocationsClustersNodePoolsResource get nodePools =>
ProjectsLocationsClustersNodePoolsResource(_requester);
ProjectsLocationsClustersWellKnownResource get wellKnown =>
ProjectsLocationsClustersWellKnownResource(_requester);
ProjectsLocationsClustersResource(commons.ApiRequester client)
: _requester = client;
/// Checks the cluster compatibility with Autopilot mode, and returns a list
/// of compatibility issues.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster) of the cluster to retrieve.
/// Specified in the format `projects / * /locations / * /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [CheckAutopilotCompatibilityResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<CheckAutopilotCompatibilityResponse> checkAutopilotCompatibility(
core.String name, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/' + core.Uri.encodeFull('$name') + ':checkAutopilotCompatibility';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return CheckAutopilotCompatibilityResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Completes master IP rotation.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster name) of the cluster to
/// complete IP rotation. Specified in the format `projects / * /locations / *
/// /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> completeIpRotation(
CompleteIPRotationRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':completeIpRotation';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Creates a cluster, consisting of the specified number and type of Google
/// Compute Engine instances.
///
/// By default, the cluster is created in the project's
/// [default network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks).
/// One firewall is added for the cluster. After cluster creation, the kubelet
/// creates routes for each node to allow the containers on that node to
/// communicate with all other instances in the cluster. Finally, an entry is
/// added to the project's global metadata indicating which CIDR range the
/// cluster is using.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [parent] - The parent (project and location) where the cluster will be
/// created. Specified in the format `projects / * /locations / * `.
/// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> create(
CreateClusterRequest request,
core.String parent, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$parent') + '/clusters';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Deletes the cluster, including the Kubernetes endpoint and all worker
/// nodes.
///
/// Firewalls and routes that were configured during cluster creation are also
/// deleted. Other Google Compute Engine resources that might be in use by the
/// cluster, such as load balancer resources, are not deleted if they weren't
/// present when the cluster was initially created.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster) of the cluster to delete.
/// Specified in the format `projects / * /locations / * /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [clusterId] - Deprecated. The name of the cluster to delete. This field
/// has been deprecated and replaced by the name field.
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> delete(
core.String name, {
core.String? clusterId,
core.String? projectId,
core.String? zone,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'clusterId': ?clusterId == null ? null : [clusterId],
'projectId': ?projectId == null ? null : [projectId],
'zone': ?zone == null ? null : [zone],
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name');
final response_ = await _requester.request(
url_,
'DELETE',
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Fetch upgrade information of a specific cluster.
///
/// Request parameters:
///
/// [name] - Required. The name (project, location, cluster) of the cluster to
/// get. Specified in the format `projects / * /locations / * /clusters / * `
/// or `projects / * /zones / * /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [version] - API request version that initiates this operation.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ClusterUpgradeInfo].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ClusterUpgradeInfo> fetchClusterUpgradeInfo(
core.String name, {
core.String? version,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'version': ?version == null ? null : [version],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/' + core.Uri.encodeFull('$name') + ':fetchClusterUpgradeInfo';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ClusterUpgradeInfo.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Gets the details of a specific cluster.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster) of the cluster to retrieve.
/// Specified in the format `projects / * /locations / * /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [clusterId] - Deprecated. The name of the cluster to retrieve. This field
/// has been deprecated and replaced by the name field.
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Cluster].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Cluster> get(
core.String name, {
core.String? clusterId,
core.String? projectId,
core.String? zone,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'clusterId': ?clusterId == null ? null : [clusterId],
'projectId': ?projectId == null ? null : [projectId],
'zone': ?zone == null ? null : [zone],
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return Cluster.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Gets the public component of the cluster signing keys in JSON Web Key
/// format.
///
/// Request parameters:
///
/// [parent] - The cluster (project, location, cluster name) to get keys for.
/// Specified in the format `projects / * /locations / * /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GetJSONWebKeysResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GetJSONWebKeysResponse> getJwks(
core.String parent, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$parent') + '/jwks';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return GetJSONWebKeysResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Lists all clusters owned by a project in either the specified zone or all
/// zones.
///
/// Request parameters:
///
/// [parent] - The parent (project and location) where the clusters will be
/// listed. Specified in the format `projects / * /locations / * `. Location
/// "-" matches all zones and all regions.
/// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the parent field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides, or "-" for all zones. This field has been deprecated and
/// replaced by the parent field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListClustersResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListClustersResponse> list(
core.String parent, {
core.String? projectId,
core.String? zone,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'projectId': ?projectId == null ? null : [projectId],
'zone': ?zone == null ? null : [zone],
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$parent') + '/clusters';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ListClustersResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Sets the addons for a specific cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster) of the cluster to set
/// addons. Specified in the format `projects / * /locations / * /clusters / *
/// `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setAddons(
SetAddonsConfigRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setAddons';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Enables or disables the ABAC authorization mechanism on a cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster name) of the cluster to set
/// legacy abac. Specified in the format `projects / * /locations / *
/// /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setLegacyAbac(
SetLegacyAbacRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setLegacyAbac';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the locations for a specific cluster.
///
/// Deprecated. Use
/// [projects.locations.clusters.update](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/update)
/// instead.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster) of the cluster to set
/// locations. Specified in the format `projects / * /locations / * /clusters
/// / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
async.Future<Operation> setLocations(
SetLocationsRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setLocations';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the logging service for a specific cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster) of the cluster to set
/// logging. Specified in the format `projects / * /locations / * /clusters /
/// * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setLogging(
SetLoggingServiceRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setLogging';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the maintenance policy for a cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster name) of the cluster to set
/// maintenance policy. Specified in the format `projects / * /locations / *
/// /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setMaintenancePolicy(
SetMaintenancePolicyRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setMaintenancePolicy';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets master auth materials.
///
/// Currently supports changing the admin password or a specific cluster,
/// either via password generation or explicitly setting the password.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster) of the cluster to set auth.
/// Specified in the format `projects / * /locations / * /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setMasterAuth(
SetMasterAuthRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setMasterAuth';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the monitoring service for a specific cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster) of the cluster to set
/// monitoring. Specified in the format `projects / * /locations / * /clusters
/// / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setMonitoring(
SetMonitoringServiceRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setMonitoring';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Enables or disables Network Policy for a cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster name) of the cluster to set
/// networking policy. Specified in the format `projects / * /locations / *
/// /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setNetworkPolicy(
SetNetworkPolicyRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setNetworkPolicy';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets labels on a cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster name) of the cluster to set
/// labels. Specified in the format `projects / * /locations / * /clusters / *
/// `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setResourceLabels(
SetLabelsRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setResourceLabels';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Starts master IP rotation.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster name) of the cluster to
/// start IP rotation. Specified in the format `projects / * /locations / *
/// /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> startIpRotation(
StartIPRotationRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':startIpRotation';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Updates the settings of a specific cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster) of the cluster to update.
/// Specified in the format `projects / * /locations / * /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> update(
UpdateClusterRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Updates the master for a specific cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster) of the cluster to update.
/// Specified in the format `projects / * /locations / * /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> updateMaster(
UpdateMasterRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':updateMaster';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
}
class ProjectsLocationsClustersNodePoolsResource {
final commons.ApiRequester _requester;
ProjectsLocationsClustersNodePoolsResource(commons.ApiRequester client)
: _requester = client;
/// CompleteNodePoolUpgrade will signal an on-going node pool upgrade to
/// complete.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster, node pool id) of the node
/// pool to complete upgrade. Specified in the format `projects / * /locations
/// / * /clusters / * /nodePools / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+/nodePools/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> completeUpgrade(
CompleteNodePoolUpgradeRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':completeUpgrade';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Empty.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Creates a node pool for a cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [parent] - The parent (project, location, cluster name) where the node
/// pool will be created. Specified in the format `projects / * /locations / *
/// /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> create(
CreateNodePoolRequest request,
core.String parent, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$parent') + '/nodePools';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Deletes a node pool from a cluster.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster, node pool id) of the node
/// pool to delete. Specified in the format `projects / * /locations / *
/// /clusters / * /nodePools / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+/nodePools/\[^/\]+$`.
///
/// [clusterId] - Deprecated. The name of the cluster. This field has been
/// deprecated and replaced by the name field.
///
/// [nodePoolId] - Deprecated. The name of the node pool to delete. This field
/// has been deprecated and replaced by the name field.
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> delete(
core.String name, {
core.String? clusterId,
core.String? nodePoolId,
core.String? projectId,
core.String? zone,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'clusterId': ?clusterId == null ? null : [clusterId],
'nodePoolId': ?nodePoolId == null ? null : [nodePoolId],
'projectId': ?projectId == null ? null : [projectId],
'zone': ?zone == null ? null : [zone],
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name');
final response_ = await _requester.request(
url_,
'DELETE',
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Fetch upgrade information of a specific node pool.
///
/// Request parameters:
///
/// [name] - Required. The name (project, location, cluster, node pool) of the
/// node pool to get. Specified in the format `projects / * /locations / *
/// /clusters / * /nodePools / * ` or `projects / * /zones / * /clusters / *
/// /nodePools / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+/nodePools/\[^/\]+$`.
///
/// [version] - API request version that initiates this operation.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [NodePoolUpgradeInfo].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<NodePoolUpgradeInfo> fetchNodePoolUpgradeInfo(
core.String name, {
core.String? version,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'version': ?version == null ? null : [version],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/' + core.Uri.encodeFull('$name') + ':fetchNodePoolUpgradeInfo';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return NodePoolUpgradeInfo.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Retrieves the requested node pool.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster, node pool id) of the node
/// pool to get. Specified in the format `projects / * /locations / *
/// /clusters / * /nodePools / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+/nodePools/\[^/\]+$`.
///
/// [clusterId] - Deprecated. The name of the cluster. This field has been
/// deprecated and replaced by the name field.
///
/// [nodePoolId] - Deprecated. The name of the node pool. This field has been
/// deprecated and replaced by the name field.
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [NodePool].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<NodePool> get(
core.String name, {
core.String? clusterId,
core.String? nodePoolId,
core.String? projectId,
core.String? zone,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'clusterId': ?clusterId == null ? null : [clusterId],
'nodePoolId': ?nodePoolId == null ? null : [nodePoolId],
'projectId': ?projectId == null ? null : [projectId],
'zone': ?zone == null ? null : [zone],
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return NodePool.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Lists the node pools for a cluster.
///
/// Request parameters:
///
/// [parent] - The parent (project, location, cluster name) where the node
/// pools will be listed. Specified in the format `projects / * /locations / *
/// /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [clusterId] - Deprecated. The name of the cluster. This field has been
/// deprecated and replaced by the parent field.
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the parent field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the parent
/// field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListNodePoolsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListNodePoolsResponse> list(
core.String parent, {
core.String? clusterId,
core.String? projectId,
core.String? zone,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'clusterId': ?clusterId == null ? null : [clusterId],
'projectId': ?projectId == null ? null : [projectId],
'zone': ?zone == null ? null : [zone],
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$parent') + '/nodePools';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ListNodePoolsResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Rolls back a previously Aborted or Failed NodePool upgrade.
///
/// This makes no changes if the last upgrade successfully completed.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster, node pool id) of the node
/// poll to rollback upgrade. Specified in the format `projects / * /locations
/// / * /clusters / * /nodePools / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+/nodePools/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> rollback(
RollbackNodePoolUpgradeRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':rollback';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the autoscaling settings for the specified node pool.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster, node pool) of the node pool
/// to set autoscaler settings. Specified in the format `projects / *
/// /locations / * /clusters / * /nodePools / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+/nodePools/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setAutoscaling(
SetNodePoolAutoscalingRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setAutoscaling';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the NodeManagement options for a node pool.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster, node pool id) of the node
/// pool to set management properties. Specified in the format `projects / *
/// /locations / * /clusters / * /nodePools / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+/nodePools/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setManagement(
SetNodePoolManagementRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setManagement';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the size for a specific node pool.
///
/// The new size will be used for all replicas, including future replicas
/// created by modifying NodePool.locations.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster, node pool id) of the node
/// pool to set size. Specified in the format `projects / * /locations / *
/// /clusters / * /nodePools / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+/nodePools/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setSize(
SetNodePoolSizeRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':setSize';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Updates the version and/or image type for the specified node pool.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, cluster, node pool) of the node pool
/// to update. Specified in the format `projects / * /locations / * /clusters
/// / * /nodePools / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+/nodePools/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> update(
UpdateNodePoolRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
}
class ProjectsLocationsClustersWellKnownResource {
final commons.ApiRequester _requester;
ProjectsLocationsClustersWellKnownResource(commons.ApiRequester client)
: _requester = client;
/// Gets the OIDC discovery document for the cluster.
///
/// See the
/// [OpenID Connect Discovery 1.0 specification](https://openid.net/specs/openid-connect-discovery-1_0.html)
/// for details.
///
/// Request parameters:
///
/// [parent] - The cluster (project, location, cluster name) to get the
/// discovery document for. Specified in the format `projects / * /locations /
/// * /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/clusters/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [GetOpenIDConfigResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<GetOpenIDConfigResponse> getOpenidConfiguration(
core.String parent, {
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/' +
core.Uri.encodeFull('$parent') +
'/.well-known/openid-configuration';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return GetOpenIDConfigResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class ProjectsLocationsOperationsResource {
final commons.ApiRequester _requester;
ProjectsLocationsOperationsResource(commons.ApiRequester client)
: _requester = client;
/// Cancels the specified operation.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name (project, location, operation id) of the operation to
/// cancel. Specified in the format `projects / * /locations / * /operations /
/// * `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> cancel(
CancelOperationRequest request,
core.String name, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name') + ':cancel';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Empty.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Gets the specified operation.
///
/// Request parameters:
///
/// [name] - The name (project, location, operation id) of the operation to
/// get. Specified in the format `projects / * /locations / * /operations / *
/// `.
/// Value must have pattern
/// `^projects/\[^/\]+/locations/\[^/\]+/operations/\[^/\]+$`.
///
/// [operationId] - Deprecated. The server-assigned `name` of the operation.
/// This field has been deprecated and replaced by the name field.
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> get(
core.String name, {
core.String? operationId,
core.String? projectId,
core.String? zone,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'operationId': ?operationId == null ? null : [operationId],
'projectId': ?projectId == null ? null : [projectId],
'zone': ?zone == null ? null : [zone],
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$name');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Lists all operations in a project in a specific zone or all zones.
///
/// Request parameters:
///
/// [parent] - The parent (project and location) where the operations will be
/// listed. Specified in the format `projects / * /locations / * `. Location
/// "-" matches all zones and all regions.
/// Value must have pattern `^projects/\[^/\]+/locations/\[^/\]+$`.
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the parent field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) to return
/// operations for, or `-` for all zones. This field has been deprecated and
/// replaced by the parent field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListOperationsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListOperationsResponse> list(
core.String parent, {
core.String? projectId,
core.String? zone,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'projectId': ?projectId == null ? null : [projectId],
'zone': ?zone == null ? null : [zone],
'fields': ?$fields == null ? null : [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$parent') + '/operations';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ListOperationsResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class ProjectsZonesResource {
final commons.ApiRequester _requester;
ProjectsZonesClustersResource get clusters =>
ProjectsZonesClustersResource(_requester);
ProjectsZonesOperationsResource get operations =>
ProjectsZonesOperationsResource(_requester);
ProjectsZonesResource(commons.ApiRequester client) : _requester = client;
/// Returns configuration info about the Google Kubernetes Engine service.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) to return
/// operations for. This field has been deprecated and replaced by the name
/// field.
///
/// [name] - The name (project and location) of the server config to get,
/// specified in the format `projects / * /locations / * `.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ServerConfig].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ServerConfig> getServerconfig(
core.String projectId,
core.String zone, {
core.String? name,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'name': ?name == null ? null : [name],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/serverconfig';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ServerConfig.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
class ProjectsZonesClustersResource {
final commons.ApiRequester _requester;
ProjectsZonesClustersNodePoolsResource get nodePools =>
ProjectsZonesClustersNodePoolsResource(_requester);
ProjectsZonesClustersResource(commons.ApiRequester client)
: _requester = client;
/// Sets the addons for a specific cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to upgrade. This field
/// has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> addons(
SetAddonsConfigRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/addons';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Completes master IP rotation.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster. This field has been
/// deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> completeIpRotation(
CompleteIPRotationRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
':completeIpRotation';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Creates a cluster, consisting of the specified number and type of Google
/// Compute Engine instances.
///
/// By default, the cluster is created in the project's
/// [default network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks).
/// One firewall is added for the cluster. After cluster creation, the kubelet
/// creates routes for each node to allow the containers on that node to
/// communicate with all other instances in the cluster. Finally, an entry is
/// added to the project's global metadata indicating which CIDR range the
/// cluster is using.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the parent field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the parent
/// field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> create(
CreateClusterRequest request,
core.String projectId,
core.String zone, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Deletes the cluster, including the Kubernetes endpoint and all worker
/// nodes.
///
/// Firewalls and routes that were configured during cluster creation are also
/// deleted. Other Google Compute Engine resources that might be in use by the
/// cluster, such as load balancer resources, are not deleted if they weren't
/// present when the cluster was initially created.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to delete. This field
/// has been deprecated and replaced by the name field.
///
/// [name] - The name (project, location, cluster) of the cluster to delete.
/// Specified in the format `projects / * /locations / * /clusters / * `.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> delete(
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? name,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'name': ?name == null ? null : [name],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId');
final response_ = await _requester.request(
url_,
'DELETE',
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Fetch upgrade information of a specific cluster.
///
/// Request parameters:
///
/// [name] - Required. The name (project, location, cluster) of the cluster to
/// get. Specified in the format `projects / * /locations / * /clusters / * `
/// or `projects / * /zones / * /clusters / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/zones/\[^/\]+/clusters/\[^/\]+$`.
///
/// [version] - API request version that initiates this operation.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ClusterUpgradeInfo].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ClusterUpgradeInfo> fetchClusterUpgradeInfo(
core.String name, {
core.String? version,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'version': ?version == null ? null : [version],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/' + core.Uri.encodeFull('$name') + ':fetchClusterUpgradeInfo';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ClusterUpgradeInfo.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Gets the details of a specific cluster.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to retrieve. This field
/// has been deprecated and replaced by the name field.
///
/// [name] - The name (project, location, cluster) of the cluster to retrieve.
/// Specified in the format `projects / * /locations / * /clusters / * `.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Cluster].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Cluster> get(
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? name,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'name': ?name == null ? null : [name],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return Cluster.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Enables or disables the ABAC authorization mechanism on a cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to update. This field
/// has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> legacyAbac(
SetLegacyAbacRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/legacyAbac';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Lists all clusters owned by a project in either the specified zone or all
/// zones.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the parent field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides, or "-" for all zones. This field has been deprecated and
/// replaced by the parent field.
///
/// [parent] - The parent (project and location) where the clusters will be
/// listed. Specified in the format `projects / * /locations / * `. Location
/// "-" matches all zones and all regions.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListClustersResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListClustersResponse> list(
core.String projectId,
core.String zone, {
core.String? parent,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'parent': ?parent == null ? null : [parent],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ListClustersResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Sets the locations for a specific cluster.
///
/// Deprecated. Use
/// [projects.locations.clusters.update](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters/update)
/// instead.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to upgrade. This field
/// has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
async.Future<Operation> locations(
SetLocationsRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/locations';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the logging service for a specific cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to upgrade. This field
/// has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> logging(
SetLoggingServiceRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/logging';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Updates the master for a specific cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to upgrade. This field
/// has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> master(
UpdateMasterRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/master';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the monitoring service for a specific cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to upgrade. This field
/// has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> monitoring(
SetMonitoringServiceRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/monitoring';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets labels on a cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster. This field has been
/// deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> resourceLabels(
SetLabelsRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/resourceLabels';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the maintenance policy for a cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Required. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// [zone] - Required. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// [clusterId] - Required. The name of the cluster to update.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setMaintenancePolicy(
SetMaintenancePolicyRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
':setMaintenancePolicy';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets master auth materials.
///
/// Currently supports changing the admin password or a specific cluster,
/// either via password generation or explicitly setting the password.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to upgrade. This field
/// has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setMasterAuth(
SetMasterAuthRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
':setMasterAuth';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Enables or disables Network Policy for a cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster. This field has been
/// deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setNetworkPolicy(
SetNetworkPolicyRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
':setNetworkPolicy';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Starts master IP rotation.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster. This field has been
/// deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> startIpRotation(
StartIPRotationRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
':startIpRotation';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Updates the settings of a specific cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to upgrade. This field
/// has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> update(
UpdateClusterRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId');
final response_ = await _requester.request(
url_,
'PUT',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
}
class ProjectsZonesClustersNodePoolsResource {
final commons.ApiRequester _requester;
ProjectsZonesClustersNodePoolsResource(commons.ApiRequester client)
: _requester = client;
/// Sets the autoscaling settings for the specified node pool.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to upgrade. This field
/// has been deprecated and replaced by the name field.
///
/// [nodePoolId] - Deprecated. The name of the node pool to upgrade. This
/// field has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> autoscaling(
SetNodePoolAutoscalingRequest request,
core.String projectId,
core.String zone,
core.String clusterId,
core.String nodePoolId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/nodePools/' +
commons.escapeVariable('$nodePoolId') +
'/autoscaling';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Creates a node pool for a cluster.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the parent field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the parent
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster. This field has been
/// deprecated and replaced by the parent field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> create(
CreateNodePoolRequest request,
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/nodePools';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Deletes a node pool from a cluster.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster. This field has been
/// deprecated and replaced by the name field.
///
/// [nodePoolId] - Deprecated. The name of the node pool to delete. This field
/// has been deprecated and replaced by the name field.
///
/// [name] - The name (project, location, cluster, node pool id) of the node
/// pool to delete. Specified in the format `projects / * /locations / *
/// /clusters / * /nodePools / * `.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> delete(
core.String projectId,
core.String zone,
core.String clusterId,
core.String nodePoolId, {
core.String? name,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'name': ?name == null ? null : [name],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/nodePools/' +
commons.escapeVariable('$nodePoolId');
final response_ = await _requester.request(
url_,
'DELETE',
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Fetch upgrade information of a specific node pool.
///
/// Request parameters:
///
/// [name] - Required. The name (project, location, cluster, node pool) of the
/// node pool to get. Specified in the format `projects / * /locations / *
/// /clusters / * /nodePools / * ` or `projects / * /zones / * /clusters / *
/// /nodePools / * `.
/// Value must have pattern
/// `^projects/\[^/\]+/zones/\[^/\]+/clusters/\[^/\]+/nodePools/\[^/\]+$`.
///
/// [version] - API request version that initiates this operation.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [NodePoolUpgradeInfo].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<NodePoolUpgradeInfo> fetchNodePoolUpgradeInfo(
core.String name, {
core.String? version,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'version': ?version == null ? null : [version],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/' + core.Uri.encodeFull('$name') + ':fetchNodePoolUpgradeInfo';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return NodePoolUpgradeInfo.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Retrieves the requested node pool.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster. This field has been
/// deprecated and replaced by the name field.
///
/// [nodePoolId] - Deprecated. The name of the node pool. This field has been
/// deprecated and replaced by the name field.
///
/// [name] - The name (project, location, cluster, node pool id) of the node
/// pool to get. Specified in the format `projects / * /locations / *
/// /clusters / * /nodePools / * `.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [NodePool].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<NodePool> get(
core.String projectId,
core.String zone,
core.String clusterId,
core.String nodePoolId, {
core.String? name,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'name': ?name == null ? null : [name],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/nodePools/' +
commons.escapeVariable('$nodePoolId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return NodePool.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Lists the node pools for a cluster.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the parent field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the parent
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster. This field has been
/// deprecated and replaced by the parent field.
///
/// [parent] - The parent (project, location, cluster name) where the node
/// pools will be listed. Specified in the format `projects / * /locations / *
/// /clusters / * `.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListNodePoolsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListNodePoolsResponse> list(
core.String projectId,
core.String zone,
core.String clusterId, {
core.String? parent,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'parent': ?parent == null ? null : [parent],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/nodePools';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ListNodePoolsResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
/// Rolls back a previously Aborted or Failed NodePool upgrade.
///
/// This makes no changes if the last upgrade successfully completed.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to rollback. This field
/// has been deprecated and replaced by the name field.
///
/// [nodePoolId] - Deprecated. The name of the node pool to rollback. This
/// field has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> rollback(
RollbackNodePoolUpgradeRequest request,
core.String projectId,
core.String zone,
core.String clusterId,
core.String nodePoolId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/nodePools/' +
commons.escapeVariable('$nodePoolId') +
':rollback';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the NodeManagement options for a node pool.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to update. This field
/// has been deprecated and replaced by the name field.
///
/// [nodePoolId] - Deprecated. The name of the node pool to update. This field
/// has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setManagement(
SetNodePoolManagementRequest request,
core.String projectId,
core.String zone,
core.String clusterId,
core.String nodePoolId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/nodePools/' +
commons.escapeVariable('$nodePoolId') +
'/setManagement';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Sets the size for a specific node pool.
///
/// The new size will be used for all replicas, including future replicas
/// created by modifying NodePool.locations.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to update. This field
/// has been deprecated and replaced by the name field.
///
/// [nodePoolId] - Deprecated. The name of the node pool to update. This field
/// has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> setSize(
SetNodePoolSizeRequest request,
core.String projectId,
core.String zone,
core.String clusterId,
core.String nodePoolId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/nodePools/' +
commons.escapeVariable('$nodePoolId') +
'/setSize';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Updates the version and/or image type for the specified node pool.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [clusterId] - Deprecated. The name of the cluster to upgrade. This field
/// has been deprecated and replaced by the name field.
///
/// [nodePoolId] - Deprecated. The name of the node pool to upgrade. This
/// field has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> update(
UpdateNodePoolRequest request,
core.String projectId,
core.String zone,
core.String clusterId,
core.String nodePoolId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/clusters/' +
commons.escapeVariable('$clusterId') +
'/nodePools/' +
commons.escapeVariable('$nodePoolId') +
'/update';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
}
class ProjectsZonesOperationsResource {
final commons.ApiRequester _requester;
ProjectsZonesOperationsResource(commons.ApiRequester client)
: _requester = client;
/// Cancels the specified operation.
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// operation resides. This field has been deprecated and replaced by the name
/// field.
///
/// [operationId] - Deprecated. The server-assigned `name` of the operation.
/// This field has been deprecated and replaced by the name field.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Empty].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Empty> cancel(
CancelOperationRequest request,
core.String projectId,
core.String zone,
core.String operationId, {
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/operations/' +
commons.escapeVariable('$operationId') +
':cancel';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Empty.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Gets the specified operation.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the name field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides. This field has been deprecated and replaced by the name
/// field.
///
/// [operationId] - Deprecated. The server-assigned `name` of the operation.
/// This field has been deprecated and replaced by the name field.
///
/// [name] - The name (project, location, operation id) of the operation to
/// get. Specified in the format `projects / * /locations / * /operations / *
/// `.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Operation].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<Operation> get(
core.String projectId,
core.String zone,
core.String operationId, {
core.String? name,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'name': ?name == null ? null : [name],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/operations/' +
commons.escapeVariable('$operationId');
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return Operation.fromJson(response_ as core.Map<core.String, core.dynamic>);
}
/// Lists all operations in a project in a specific zone or all zones.
///
/// Request parameters:
///
/// [projectId] - Deprecated. The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
/// This field has been deprecated and replaced by the parent field.
///
/// [zone] - Deprecated. The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) to return
/// operations for, or `-` for all zones. This field has been deprecated and
/// replaced by the parent field.
///
/// [parent] - The parent (project and location) where the operations will be
/// listed. Specified in the format `projects / * /locations / * `. Location
/// "-" matches all zones and all regions.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListOperationsResponse].
///
/// Completes with a [commons.ApiRequestError] if the API endpoint returned an
/// error.
///
/// If the used [http.Client] completes with an error when making a REST call,
/// this method will complete with the same error.
async.Future<ListOperationsResponse> list(
core.String projectId,
core.String zone, {
core.String? parent,
core.String? $fields,
}) async {
final queryParams_ = <core.String, core.List<core.String>>{
'parent': ?parent == null ? null : [parent],
'fields': ?$fields == null ? null : [$fields],
};
final url_ =
'v1/projects/' +
commons.escapeVariable('$projectId') +
'/zones/' +
commons.escapeVariable('$zone') +
'/operations';
final response_ = await _requester.request(
url_,
'GET',
queryParams: queryParams_,
);
return ListOperationsResponse.fromJson(
response_ as core.Map<core.String, core.dynamic>,
);
}
}
/// AcceleratorConfig represents a Hardware Accelerator request.
class AcceleratorConfig {
/// The number of the accelerator cards exposed to an instance.
core.String? acceleratorCount;
/// The accelerator type resource name.
///
/// List of supported accelerators
/// [here](https://cloud.google.com/compute/docs/gpus)
core.String? acceleratorType;
/// The configuration for auto installation of GPU driver.
GPUDriverInstallationConfig? gpuDriverInstallationConfig;
/// Size of partitions to create on the GPU.
///
/// Valid values are described in the NVIDIA
/// [mig user guide](https://docs.nvidia.com/datacenter/tesla/mig-user-guide/#partitioning).
core.String? gpuPartitionSize;
/// The configuration for GPU sharing options.
GPUSharingConfig? gpuSharingConfig;
AcceleratorConfig({
this.acceleratorCount,
this.acceleratorType,
this.gpuDriverInstallationConfig,
this.gpuPartitionSize,
this.gpuSharingConfig,
});
AcceleratorConfig.fromJson(core.Map json_)
: this(
acceleratorCount: json_['acceleratorCount'] as core.String?,
acceleratorType: json_['acceleratorType'] as core.String?,
gpuDriverInstallationConfig:
json_.containsKey('gpuDriverInstallationConfig')
? GPUDriverInstallationConfig.fromJson(
json_['gpuDriverInstallationConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
gpuPartitionSize: json_['gpuPartitionSize'] as core.String?,
gpuSharingConfig: json_.containsKey('gpuSharingConfig')
? GPUSharingConfig.fromJson(
json_['gpuSharingConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final acceleratorCount = this.acceleratorCount;
final acceleratorType = this.acceleratorType;
final gpuDriverInstallationConfig = this.gpuDriverInstallationConfig;
final gpuPartitionSize = this.gpuPartitionSize;
final gpuSharingConfig = this.gpuSharingConfig;
return {
'acceleratorCount': ?acceleratorCount,
'acceleratorType': ?acceleratorType,
'gpuDriverInstallationConfig': ?gpuDriverInstallationConfig,
'gpuPartitionSize': ?gpuPartitionSize,
'gpuSharingConfig': ?gpuSharingConfig,
};
}
}
/// AccurateTimeConfig contains configuration for the accurate time
/// synchronization feature.
class AccurateTimeConfig {
/// Enables enhanced time synchronization using PTP-KVM.
core.bool? enablePtpKvmTimeSync;
AccurateTimeConfig({this.enablePtpKvmTimeSync});
AccurateTimeConfig.fromJson(core.Map json_)
: this(enablePtpKvmTimeSync: json_['enablePtpKvmTimeSync'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enablePtpKvmTimeSync = this.enablePtpKvmTimeSync;
return {'enablePtpKvmTimeSync': ?enablePtpKvmTimeSync};
}
}
/// AdditionalIPRangesConfig is the configuration for individual additional
/// subnetwork attached to the cluster
class AdditionalIPRangesConfig {
/// List of secondary ranges names within this subnetwork that can be used for
/// pod IPs.
///
/// Example1: gke-pod-range1 Example2: gke-pod-range1,gke-pod-range2
core.List<core.String>? podIpv4RangeNames;
/// Draining status of the additional subnet.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Not set, same as ACTIVE.
/// - "ACTIVE" : ACTIVE status indicates that the subnet is available for new
/// node pool creation.
/// - "DRAINING" : DRAINING status indicates that the subnet is not used for
/// new node pool creation.
core.String? status;
/// Name of the subnetwork.
///
/// This can be the full path of the subnetwork or just the name. Example1:
/// my-subnet Example2:
/// projects/gke-project/regions/us-central1/subnetworks/my-subnet
core.String? subnetwork;
AdditionalIPRangesConfig({
this.podIpv4RangeNames,
this.status,
this.subnetwork,
});
AdditionalIPRangesConfig.fromJson(core.Map json_)
: this(
podIpv4RangeNames: (json_['podIpv4RangeNames'] as core.List?)
?.map((value) => value as core.String)
.toList(),
status: json_['status'] as core.String?,
subnetwork: json_['subnetwork'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final podIpv4RangeNames = this.podIpv4RangeNames;
final status = this.status;
final subnetwork = this.subnetwork;
return {
'podIpv4RangeNames': ?podIpv4RangeNames,
'status': ?status,
'subnetwork': ?subnetwork,
};
}
}
/// AdditionalNodeNetworkConfig is the configuration for additional node
/// networks within the NodeNetworkConfig message
class AdditionalNodeNetworkConfig {
/// Name of the VPC where the additional interface belongs
core.String? network;
/// Name of the subnetwork where the additional interface belongs
core.String? subnetwork;
AdditionalNodeNetworkConfig({this.network, this.subnetwork});
AdditionalNodeNetworkConfig.fromJson(core.Map json_)
: this(
network: json_['network'] as core.String?,
subnetwork: json_['subnetwork'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final network = this.network;
final subnetwork = this.subnetwork;
return {'network': ?network, 'subnetwork': ?subnetwork};
}
}
/// AdditionalPodNetworkConfig is the configuration for additional pod networks
/// within the NodeNetworkConfig message
class AdditionalPodNetworkConfig {
/// The maximum number of pods per node which use this pod network.
MaxPodsConstraint? maxPodsPerNode;
/// The name of the network attachment for pods to communicate to; cannot be
/// specified along with subnetwork or secondary_pod_range.
core.String? networkAttachment;
/// The name of the secondary range on the subnet which provides IP address
/// for this pod range.
core.String? secondaryPodRange;
/// Name of the subnetwork where the additional pod network belongs.
core.String? subnetwork;
AdditionalPodNetworkConfig({
this.maxPodsPerNode,
this.networkAttachment,
this.secondaryPodRange,
this.subnetwork,
});
AdditionalPodNetworkConfig.fromJson(core.Map json_)
: this(
maxPodsPerNode: json_.containsKey('maxPodsPerNode')
? MaxPodsConstraint.fromJson(
json_['maxPodsPerNode'] as core.Map<core.String, core.dynamic>,
)
: null,
networkAttachment: json_['networkAttachment'] as core.String?,
secondaryPodRange: json_['secondaryPodRange'] as core.String?,
subnetwork: json_['subnetwork'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final maxPodsPerNode = this.maxPodsPerNode;
final networkAttachment = this.networkAttachment;
final secondaryPodRange = this.secondaryPodRange;
final subnetwork = this.subnetwork;
return {
'maxPodsPerNode': ?maxPodsPerNode,
'networkAttachment': ?networkAttachment,
'secondaryPodRange': ?secondaryPodRange,
'subnetwork': ?subnetwork,
};
}
}
/// AdditionalPodRangesConfig is the configuration for additional pod secondary
/// ranges supporting the ClusterUpdate message.
class AdditionalPodRangesConfig {
/// Information for additional pod range.
///
/// Output only.
core.List<RangeInfo>? podRangeInfo;
/// Name for pod secondary ipv4 range which has the actual range defined
/// ahead.
core.List<core.String>? podRangeNames;
AdditionalPodRangesConfig({this.podRangeInfo, this.podRangeNames});
AdditionalPodRangesConfig.fromJson(core.Map json_)
: this(
podRangeInfo: (json_['podRangeInfo'] as core.List?)
?.map(
(value) => RangeInfo.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
podRangeNames: (json_['podRangeNames'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final podRangeInfo = this.podRangeInfo;
final podRangeNames = this.podRangeNames;
return {'podRangeInfo': ?podRangeInfo, 'podRangeNames': ?podRangeNames};
}
}
/// Configuration for the addons that can be automatically spun up in the
/// cluster, enabling additional functionality.
class AddonsConfig {
/// Configuration for the Cloud Run addon, which allows the user to use a
/// managed Knative service.
CloudRunConfig? cloudRunConfig;
/// Configuration for the ConfigConnector add-on, a Kubernetes extension to
/// manage hosted Google Cloud services through the Kubernetes API.
ConfigConnectorConfig? configConnectorConfig;
/// Configuration for NodeLocalDNS, a dns cache running on cluster nodes
DnsCacheConfig? dnsCacheConfig;
/// Configuration for the Compute Engine Persistent Disk CSI driver.
GcePersistentDiskCsiDriverConfig? gcePersistentDiskCsiDriverConfig;
/// Configuration for the Filestore CSI driver.
GcpFilestoreCsiDriverConfig? gcpFilestoreCsiDriverConfig;
/// Configuration for the Cloud Storage Fuse CSI driver.
GcsFuseCsiDriverConfig? gcsFuseCsiDriverConfig;
/// Configuration for the Backup for GKE agent addon.
GkeBackupAgentConfig? gkeBackupAgentConfig;
/// Configuration for the High Scale Checkpointing add-on.
HighScaleCheckpointingConfig? highScaleCheckpointingConfig;
/// Configuration for the horizontal pod autoscaling feature, which increases
/// or decreases the number of replica pods a replication controller has based
/// on the resource usage of the existing pods.
HorizontalPodAutoscaling? horizontalPodAutoscaling;
/// Configuration for the HTTP (L7) load balancing controller addon, which
/// makes it easy to set up HTTP load balancers for services in a cluster.
HttpLoadBalancing? httpLoadBalancing;
/// Configuration for the Kubernetes Dashboard.
///
/// This addon is deprecated, and will be disabled in 1.15. It is recommended
/// to use the Cloud Console to manage and monitor your Kubernetes clusters,
/// workloads and applications. For more information, see:
/// https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
KubernetesDashboard? kubernetesDashboard;
/// Configuration for the Lustre CSI driver.
LustreCsiDriverConfig? lustreCsiDriverConfig;
/// Configuration for NetworkPolicy.
///
/// This only tracks whether the addon is enabled or not on the Master, it
/// does not track whether network policy is enabled for the nodes.
NetworkPolicyConfig? networkPolicyConfig;
/// Configuration for the Cloud Storage Parallelstore CSI driver.
ParallelstoreCsiDriverConfig? parallelstoreCsiDriverConfig;
/// Configuration for the Pod Snapshot feature.
///
/// Optional.
PodSnapshotConfig? podSnapshotConfig;
/// Configuration for Ray Operator addon.
///
/// Optional.
RayOperatorConfig? rayOperatorConfig;
/// Configuration for the slice controller add-on.
///
/// Optional.
SliceControllerConfig? sliceControllerConfig;
/// Configuration for the Slurm Operator.
SlurmOperatorConfig? slurmOperatorConfig;
/// Configuration for the StatefulHA add-on.
///
/// Optional.
StatefulHAConfig? statefulHaConfig;
AddonsConfig({
this.cloudRunConfig,
this.configConnectorConfig,
this.dnsCacheConfig,
this.gcePersistentDiskCsiDriverConfig,
this.gcpFilestoreCsiDriverConfig,
this.gcsFuseCsiDriverConfig,
this.gkeBackupAgentConfig,
this.highScaleCheckpointingConfig,
this.horizontalPodAutoscaling,
this.httpLoadBalancing,
this.kubernetesDashboard,
this.lustreCsiDriverConfig,
this.networkPolicyConfig,
this.parallelstoreCsiDriverConfig,
this.podSnapshotConfig,
this.rayOperatorConfig,
this.sliceControllerConfig,
this.slurmOperatorConfig,
this.statefulHaConfig,
});
AddonsConfig.fromJson(core.Map json_)
: this(
cloudRunConfig: json_.containsKey('cloudRunConfig')
? CloudRunConfig.fromJson(
json_['cloudRunConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
configConnectorConfig: json_.containsKey('configConnectorConfig')
? ConfigConnectorConfig.fromJson(
json_['configConnectorConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
dnsCacheConfig: json_.containsKey('dnsCacheConfig')
? DnsCacheConfig.fromJson(
json_['dnsCacheConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
gcePersistentDiskCsiDriverConfig:
json_.containsKey('gcePersistentDiskCsiDriverConfig')
? GcePersistentDiskCsiDriverConfig.fromJson(
json_['gcePersistentDiskCsiDriverConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
gcpFilestoreCsiDriverConfig:
json_.containsKey('gcpFilestoreCsiDriverConfig')
? GcpFilestoreCsiDriverConfig.fromJson(
json_['gcpFilestoreCsiDriverConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
gcsFuseCsiDriverConfig: json_.containsKey('gcsFuseCsiDriverConfig')
? GcsFuseCsiDriverConfig.fromJson(
json_['gcsFuseCsiDriverConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
gkeBackupAgentConfig: json_.containsKey('gkeBackupAgentConfig')
? GkeBackupAgentConfig.fromJson(
json_['gkeBackupAgentConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
highScaleCheckpointingConfig:
json_.containsKey('highScaleCheckpointingConfig')
? HighScaleCheckpointingConfig.fromJson(
json_['highScaleCheckpointingConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
horizontalPodAutoscaling: json_.containsKey('horizontalPodAutoscaling')
? HorizontalPodAutoscaling.fromJson(
json_['horizontalPodAutoscaling']
as core.Map<core.String, core.dynamic>,
)
: null,
httpLoadBalancing: json_.containsKey('httpLoadBalancing')
? HttpLoadBalancing.fromJson(
json_['httpLoadBalancing']
as core.Map<core.String, core.dynamic>,
)
: null,
kubernetesDashboard: json_.containsKey('kubernetesDashboard')
? KubernetesDashboard.fromJson(
json_['kubernetesDashboard']
as core.Map<core.String, core.dynamic>,
)
: null,
lustreCsiDriverConfig: json_.containsKey('lustreCsiDriverConfig')
? LustreCsiDriverConfig.fromJson(
json_['lustreCsiDriverConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
networkPolicyConfig: json_.containsKey('networkPolicyConfig')
? NetworkPolicyConfig.fromJson(
json_['networkPolicyConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
parallelstoreCsiDriverConfig:
json_.containsKey('parallelstoreCsiDriverConfig')
? ParallelstoreCsiDriverConfig.fromJson(
json_['parallelstoreCsiDriverConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
podSnapshotConfig: json_.containsKey('podSnapshotConfig')
? PodSnapshotConfig.fromJson(
json_['podSnapshotConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
rayOperatorConfig: json_.containsKey('rayOperatorConfig')
? RayOperatorConfig.fromJson(
json_['rayOperatorConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
sliceControllerConfig: json_.containsKey('sliceControllerConfig')
? SliceControllerConfig.fromJson(
json_['sliceControllerConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
slurmOperatorConfig: json_.containsKey('slurmOperatorConfig')
? SlurmOperatorConfig.fromJson(
json_['slurmOperatorConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
statefulHaConfig: json_.containsKey('statefulHaConfig')
? StatefulHAConfig.fromJson(
json_['statefulHaConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final cloudRunConfig = this.cloudRunConfig;
final configConnectorConfig = this.configConnectorConfig;
final dnsCacheConfig = this.dnsCacheConfig;
final gcePersistentDiskCsiDriverConfig =
this.gcePersistentDiskCsiDriverConfig;
final gcpFilestoreCsiDriverConfig = this.gcpFilestoreCsiDriverConfig;
final gcsFuseCsiDriverConfig = this.gcsFuseCsiDriverConfig;
final gkeBackupAgentConfig = this.gkeBackupAgentConfig;
final highScaleCheckpointingConfig = this.highScaleCheckpointingConfig;
final horizontalPodAutoscaling = this.horizontalPodAutoscaling;
final httpLoadBalancing = this.httpLoadBalancing;
final kubernetesDashboard = this.kubernetesDashboard;
final lustreCsiDriverConfig = this.lustreCsiDriverConfig;
final networkPolicyConfig = this.networkPolicyConfig;
final parallelstoreCsiDriverConfig = this.parallelstoreCsiDriverConfig;
final podSnapshotConfig = this.podSnapshotConfig;
final rayOperatorConfig = this.rayOperatorConfig;
final sliceControllerConfig = this.sliceControllerConfig;
final slurmOperatorConfig = this.slurmOperatorConfig;
final statefulHaConfig = this.statefulHaConfig;
return {
'cloudRunConfig': ?cloudRunConfig,
'configConnectorConfig': ?configConnectorConfig,
'dnsCacheConfig': ?dnsCacheConfig,
'gcePersistentDiskCsiDriverConfig': ?gcePersistentDiskCsiDriverConfig,
'gcpFilestoreCsiDriverConfig': ?gcpFilestoreCsiDriverConfig,
'gcsFuseCsiDriverConfig': ?gcsFuseCsiDriverConfig,
'gkeBackupAgentConfig': ?gkeBackupAgentConfig,
'highScaleCheckpointingConfig': ?highScaleCheckpointingConfig,
'horizontalPodAutoscaling': ?horizontalPodAutoscaling,
'httpLoadBalancing': ?httpLoadBalancing,
'kubernetesDashboard': ?kubernetesDashboard,
'lustreCsiDriverConfig': ?lustreCsiDriverConfig,
'networkPolicyConfig': ?networkPolicyConfig,
'parallelstoreCsiDriverConfig': ?parallelstoreCsiDriverConfig,
'podSnapshotConfig': ?podSnapshotConfig,
'rayOperatorConfig': ?rayOperatorConfig,
'sliceControllerConfig': ?sliceControllerConfig,
'slurmOperatorConfig': ?slurmOperatorConfig,
'statefulHaConfig': ?statefulHaConfig,
};
}
}
/// AdvancedDatapathObservabilityConfig specifies configuration of observability
/// features of advanced datapath.
class AdvancedDatapathObservabilityConfig {
/// Expose flow metrics on nodes
core.bool? enableMetrics;
/// Enable Relay component
core.bool? enableRelay;
/// Method used to make Relay available
/// Possible string values are:
/// - "RELAY_MODE_UNSPECIFIED" : Default value. This shouldn't be used.
/// - "DISABLED" : disabled
/// - "INTERNAL_VPC_LB" : exposed via internal load balancer
/// - "EXTERNAL_LB" : exposed via external load balancer
core.String? relayMode;
AdvancedDatapathObservabilityConfig({
this.enableMetrics,
this.enableRelay,
this.relayMode,
});
AdvancedDatapathObservabilityConfig.fromJson(core.Map json_)
: this(
enableMetrics: json_['enableMetrics'] as core.bool?,
enableRelay: json_['enableRelay'] as core.bool?,
relayMode: json_['relayMode'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final enableMetrics = this.enableMetrics;
final enableRelay = this.enableRelay;
final relayMode = this.relayMode;
return {
'enableMetrics': ?enableMetrics,
'enableRelay': ?enableRelay,
'relayMode': ?relayMode,
};
}
}
/// Specifies options for controlling advanced machine features.
class AdvancedMachineFeatures {
/// Whether or not to enable nested virtualization (defaults to false).
core.bool? enableNestedVirtualization;
/// Type of Performance Monitoring Unit (PMU) requested on node pool
/// instances.
///
/// If unset, PMU will not be available to the node.
/// Possible string values are:
/// - "PERFORMANCE_MONITORING_UNIT_UNSPECIFIED" : PMU not enabled.
/// - "ARCHITECTURAL" : Architecturally defined non-LLC events.
/// - "STANDARD" : Most documented core/L2 events.
/// - "ENHANCED" : Most documented core/L2 and LLC events.
core.String? performanceMonitoringUnit;
/// The number of threads per physical core.
///
/// To disable simultaneous multithreading (SMT) set this to 1. If unset, the
/// maximum number of threads supported per core by the underlying processor
/// is assumed.
core.String? threadsPerCore;
AdvancedMachineFeatures({
this.enableNestedVirtualization,
this.performanceMonitoringUnit,
this.threadsPerCore,
});
AdvancedMachineFeatures.fromJson(core.Map json_)
: this(
enableNestedVirtualization:
json_['enableNestedVirtualization'] as core.bool?,
performanceMonitoringUnit:
json_['performanceMonitoringUnit'] as core.String?,
threadsPerCore: json_['threadsPerCore'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final enableNestedVirtualization = this.enableNestedVirtualization;
final performanceMonitoringUnit = this.performanceMonitoringUnit;
final threadsPerCore = this.threadsPerCore;
return {
'enableNestedVirtualization': ?enableNestedVirtualization,
'performanceMonitoringUnit': ?performanceMonitoringUnit,
'threadsPerCore': ?threadsPerCore,
};
}
}
/// AnonymousAuthenticationConfig defines the settings needed to limit endpoints
/// that allow anonymous authentication.
class AnonymousAuthenticationConfig {
/// Defines the mode of limiting anonymous access in the cluster.
/// Possible string values are:
/// - "MODE_UNSPECIFIED" : Default value not specified.
/// - "ENABLED" : Anonymous authentication is allowed for all endpoints.
/// - "LIMITED" : Anonymous authentication is allowed for only health check
/// endpoints.
core.String? mode;
AnonymousAuthenticationConfig({this.mode});
AnonymousAuthenticationConfig.fromJson(core.Map json_)
: this(mode: json_['mode'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final mode = this.mode;
return {'mode': ?mode};
}
}
/// Configuration for returning group information from authenticators.
class AuthenticatorGroupsConfig {
/// Whether this cluster should return group membership lookups during
/// authentication using a group of security groups.
core.bool? enabled;
/// The name of the security group-of-groups to be used.
///
/// Only relevant if enabled = true.
core.String? securityGroup;
AuthenticatorGroupsConfig({this.enabled, this.securityGroup});
AuthenticatorGroupsConfig.fromJson(core.Map json_)
: this(
enabled: json_['enabled'] as core.bool?,
securityGroup: json_['securityGroup'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
final securityGroup = this.securityGroup;
return {'enabled': ?enabled, 'securityGroup': ?securityGroup};
}
}
/// AutoIpamConfig contains all information related to Auto IPAM
class AutoIpamConfig {
/// The flag that enables Auto IPAM on this cluster
core.bool? enabled;
AutoIpamConfig({this.enabled});
AutoIpamConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// AutoMonitoringConfig defines the configuration for GKE Workload
/// Auto-Monitoring.
class AutoMonitoringConfig {
/// Scope for GKE Workload Auto-Monitoring.
/// Possible string values are:
/// - "SCOPE_UNSPECIFIED" : Not set.
/// - "ALL" : Auto-Monitoring is enabled for all supported applications.
/// - "NONE" : Disable Auto-Monitoring.
core.String? scope;
AutoMonitoringConfig({this.scope});
AutoMonitoringConfig.fromJson(core.Map json_)
: this(scope: json_['scope'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final scope = this.scope;
return {'scope': ?scope};
}
}
/// AutoUpgradeOptions defines the set of options for the user to control how
/// the Auto Upgrades will proceed.
class AutoUpgradeOptions {
/// This field is set when upgrades are about to commence with the approximate
/// start time for the upgrades, in
/// [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
///
/// Output only.
core.String? autoUpgradeStartTime;
/// This field is set when upgrades are about to commence with the description
/// of the upgrade.
///
/// Output only.
core.String? description;
AutoUpgradeOptions({this.autoUpgradeStartTime, this.description});
AutoUpgradeOptions.fromJson(core.Map json_)
: this(
autoUpgradeStartTime: json_['autoUpgradeStartTime'] as core.String?,
description: json_['description'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final autoUpgradeStartTime = this.autoUpgradeStartTime;
final description = this.description;
return {
'autoUpgradeStartTime': ?autoUpgradeStartTime,
'description': ?description,
};
}
}
/// Autopilot is the configuration for Autopilot settings on the cluster.
class Autopilot {
/// ClusterPolicyConfig denotes cluster level policies that are enforced for
/// the cluster.
ClusterPolicyConfig? clusterPolicyConfig;
/// Enable Autopilot
core.bool? enabled;
/// PrivilegedAdmissionConfig is the configuration related to privileged
/// admission control.
PrivilegedAdmissionConfig? privilegedAdmissionConfig;
/// WorkloadPolicyConfig is the configuration related to GCW workload policy
WorkloadPolicyConfig? workloadPolicyConfig;
Autopilot({
this.clusterPolicyConfig,
this.enabled,
this.privilegedAdmissionConfig,
this.workloadPolicyConfig,
});
Autopilot.fromJson(core.Map json_)
: this(
clusterPolicyConfig: json_.containsKey('clusterPolicyConfig')
? ClusterPolicyConfig.fromJson(
json_['clusterPolicyConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
enabled: json_['enabled'] as core.bool?,
privilegedAdmissionConfig:
json_.containsKey('privilegedAdmissionConfig')
? PrivilegedAdmissionConfig.fromJson(
json_['privilegedAdmissionConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
workloadPolicyConfig: json_.containsKey('workloadPolicyConfig')
? WorkloadPolicyConfig.fromJson(
json_['workloadPolicyConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterPolicyConfig = this.clusterPolicyConfig;
final enabled = this.enabled;
final privilegedAdmissionConfig = this.privilegedAdmissionConfig;
final workloadPolicyConfig = this.workloadPolicyConfig;
return {
'clusterPolicyConfig': ?clusterPolicyConfig,
'enabled': ?enabled,
'privilegedAdmissionConfig': ?privilegedAdmissionConfig,
'workloadPolicyConfig': ?workloadPolicyConfig,
};
}
}
/// AutopilotCompatibilityIssue contains information about a specific
/// compatibility issue with Autopilot mode.
class AutopilotCompatibilityIssue {
/// The constraint type of the issue.
core.String? constraintType;
/// The description of the issue.
core.String? description;
/// A URL to a public documentation, which addresses resolving this issue.
core.String? documentationUrl;
/// The incompatibility type of this issue.
/// Possible string values are:
/// - "UNSPECIFIED" : Default value, should not be used.
/// - "INCOMPATIBILITY" : Indicates that the issue is a known incompatibility
/// between the cluster and Autopilot mode.
/// - "ADDITIONAL_CONFIG_REQUIRED" : Indicates the issue is an incompatibility
/// if customers take no further action to resolve.
/// - "PASSED_WITH_OPTIONAL_CONFIG" : Indicates the issue is not an
/// incompatibility, but depending on the workloads business logic, there is a
/// potential that they won't work on Autopilot.
core.String? incompatibilityType;
/// The last time when this issue was observed.
core.String? lastObservation;
/// The name of the resources which are subject to this issue.
core.List<core.String>? subjects;
AutopilotCompatibilityIssue({
this.constraintType,
this.description,
this.documentationUrl,
this.incompatibilityType,
this.lastObservation,
this.subjects,
});
AutopilotCompatibilityIssue.fromJson(core.Map json_)
: this(
constraintType: json_['constraintType'] as core.String?,
description: json_['description'] as core.String?,
documentationUrl: json_['documentationUrl'] as core.String?,
incompatibilityType: json_['incompatibilityType'] as core.String?,
lastObservation: json_['lastObservation'] as core.String?,
subjects: (json_['subjects'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final constraintType = this.constraintType;
final description = this.description;
final documentationUrl = this.documentationUrl;
final incompatibilityType = this.incompatibilityType;
final lastObservation = this.lastObservation;
final subjects = this.subjects;
return {
'constraintType': ?constraintType,
'description': ?description,
'documentationUrl': ?documentationUrl,
'incompatibilityType': ?incompatibilityType,
'lastObservation': ?lastObservation,
'subjects': ?subjects,
};
}
}
/// AutopilotConfig contains configuration of autopilot feature for this node
/// pool.
class AutopilotConfig {
/// Denotes that nodes belonging to this node pool are Autopilot nodes.
core.bool? enabled;
AutopilotConfig({this.enabled});
AutopilotConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// AutoprovisioningNodePoolDefaults contains defaults for a node pool created
/// by NAP.
class AutoprovisioningNodePoolDefaults {
/// The Customer Managed Encryption Key used to encrypt the boot disk attached
/// to each node in the node pool.
///
/// This should be of the form
/// projects/\[KEY_PROJECT_ID\]/locations/\[LOCATION\]/keyRings/\[RING_NAME\]/cryptoKeys/\[KEY_NAME\].
/// For more information about protecting resources with Cloud KMS Keys please
/// see:
/// https://cloud.google.com/compute/docs/disks/customer-managed-encryption
core.String? bootDiskKmsKey;
/// Size of the disk attached to each node, specified in GB.
///
/// The smallest allowed disk size is 10GB. If unspecified, the default disk
/// size is 100GB.
core.int? diskSizeGb;
/// Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or
/// 'pd-balanced') If unspecified, the default disk type is 'pd-standard'
core.String? diskType;
/// The image type to use for NAP created node.
///
/// Please see
/// https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for
/// available image types.
core.String? imageType;
/// Use NodePoolAutoConfig.NodeKubeletConfig instead.
///
/// Deprecated.
core.bool? insecureKubeletReadonlyPortEnabled;
/// Specifies the node management options for NAP created node-pools.
NodeManagement? management;
/// Minimum CPU platform to be used for NAP created node pools.
///
/// The instance may be scheduled on the specified or newer CPU platform.
/// Applicable values are the friendly names of CPU platforms, such as
/// minCpuPlatform: Intel Haswell or minCpuPlatform: Intel Sandy Bridge. For
/// more information, read
/// [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform).
/// This field is deprecated, min_cpu_platform should be specified using
/// `cloud.google.com/requested-min-cpu-platform` label selector on the pod.
/// To unset the min cpu platform field pass "automatic" as field value.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? minCpuPlatform;
/// Scopes that are used by NAP when creating node pools.
core.List<core.String>? oauthScopes;
/// The Google Cloud Platform Service Account to be used by the node VMs.
core.String? serviceAccount;
/// Shielded Instance options.
ShieldedInstanceConfig? shieldedInstanceConfig;
/// Specifies the upgrade settings for NAP created node pools
UpgradeSettings? upgradeSettings;
AutoprovisioningNodePoolDefaults({
this.bootDiskKmsKey,
this.diskSizeGb,
this.diskType,
this.imageType,
this.insecureKubeletReadonlyPortEnabled,
this.management,
this.minCpuPlatform,
this.oauthScopes,
this.serviceAccount,
this.shieldedInstanceConfig,
this.upgradeSettings,
});
AutoprovisioningNodePoolDefaults.fromJson(core.Map json_)
: this(
bootDiskKmsKey: json_['bootDiskKmsKey'] as core.String?,
diskSizeGb: json_['diskSizeGb'] as core.int?,
diskType: json_['diskType'] as core.String?,
imageType: json_['imageType'] as core.String?,
insecureKubeletReadonlyPortEnabled:
json_['insecureKubeletReadonlyPortEnabled'] as core.bool?,
management: json_.containsKey('management')
? NodeManagement.fromJson(
json_['management'] as core.Map<core.String, core.dynamic>,
)
: null,
minCpuPlatform: json_['minCpuPlatform'] as core.String?,
oauthScopes: (json_['oauthScopes'] as core.List?)
?.map((value) => value as core.String)
.toList(),
serviceAccount: json_['serviceAccount'] as core.String?,
shieldedInstanceConfig: json_.containsKey('shieldedInstanceConfig')
? ShieldedInstanceConfig.fromJson(
json_['shieldedInstanceConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
upgradeSettings: json_.containsKey('upgradeSettings')
? UpgradeSettings.fromJson(
json_['upgradeSettings'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final bootDiskKmsKey = this.bootDiskKmsKey;
final diskSizeGb = this.diskSizeGb;
final diskType = this.diskType;
final imageType = this.imageType;
final insecureKubeletReadonlyPortEnabled =
this.insecureKubeletReadonlyPortEnabled;
final management = this.management;
final minCpuPlatform = this.minCpuPlatform;
final oauthScopes = this.oauthScopes;
final serviceAccount = this.serviceAccount;
final shieldedInstanceConfig = this.shieldedInstanceConfig;
final upgradeSettings = this.upgradeSettings;
return {
'bootDiskKmsKey': ?bootDiskKmsKey,
'diskSizeGb': ?diskSizeGb,
'diskType': ?diskType,
'imageType': ?imageType,
'insecureKubeletReadonlyPortEnabled': ?insecureKubeletReadonlyPortEnabled,
'management': ?management,
'minCpuPlatform': ?minCpuPlatform,
'oauthScopes': ?oauthScopes,
'serviceAccount': ?serviceAccount,
'shieldedInstanceConfig': ?shieldedInstanceConfig,
'upgradeSettings': ?upgradeSettings,
};
}
}
/// Autoscaled rollout policy utilizes the cluster autoscaler during blue-green
/// upgrade to scale both the blue and green pools.
class AutoscaledRolloutPolicy {
/// Time to wait after cordoning the blue pool before draining the nodes.
///
/// Defaults to 3 days. The value can be set between 0 and 7 days, inclusive.
///
/// Optional.
core.String? waitForDrainDuration;
AutoscaledRolloutPolicy({this.waitForDrainDuration});
AutoscaledRolloutPolicy.fromJson(core.Map json_)
: this(waitForDrainDuration: json_['waitForDrainDuration'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final waitForDrainDuration = this.waitForDrainDuration;
return {'waitForDrainDuration': ?waitForDrainDuration};
}
}
/// Best effort provisioning.
class BestEffortProvisioning {
/// When this is enabled, cluster/node pool creations will ignore non-fatal
/// errors like stockout to best provision as many nodes as possible right now
/// and eventually bring up all target number of nodes
core.bool? enabled;
/// Minimum number of nodes to be provisioned to be considered as succeeded,
/// and the rest of nodes will be provisioned gradually and eventually when
/// stockout issue has been resolved.
core.int? minProvisionNodes;
BestEffortProvisioning({this.enabled, this.minProvisionNodes});
BestEffortProvisioning.fromJson(core.Map json_)
: this(
enabled: json_['enabled'] as core.bool?,
minProvisionNodes: json_['minProvisionNodes'] as core.int?,
);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
final minProvisionNodes = this.minProvisionNodes;
return {'enabled': ?enabled, 'minProvisionNodes': ?minProvisionNodes};
}
}
/// Parameters for using BigQuery as the destination of resource usage export.
class BigQueryDestination {
/// The ID of a BigQuery Dataset.
core.String? datasetId;
BigQueryDestination({this.datasetId});
BigQueryDestination.fromJson(core.Map json_)
: this(datasetId: json_['datasetId'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final datasetId = this.datasetId;
return {'datasetId': ?datasetId};
}
}
/// Configuration for Binary Authorization.
class BinaryAuthorization {
/// This field is deprecated.
///
/// Leave this unset and instead configure BinaryAuthorization using
/// evaluation_mode. If evaluation_mode is set to anything other than
/// EVALUATION_MODE_UNSPECIFIED, this field is ignored.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? enabled;
/// Mode of operation for binauthz policy evaluation.
///
/// If unspecified, defaults to DISABLED.
/// Possible string values are:
/// - "EVALUATION_MODE_UNSPECIFIED" : Default value
/// - "DISABLED" : Disable BinaryAuthorization
/// - "PROJECT_SINGLETON_POLICY_ENFORCE" : Enforce Kubernetes admission
/// requests with BinaryAuthorization using the project's singleton policy.
/// This is equivalent to setting the enabled boolean to true.
core.String? evaluationMode;
BinaryAuthorization({this.enabled, this.evaluationMode});
BinaryAuthorization.fromJson(core.Map json_)
: this(
enabled: json_['enabled'] as core.bool?,
evaluationMode: json_['evaluationMode'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
final evaluationMode = this.evaluationMode;
return {'enabled': ?enabled, 'evaluationMode': ?evaluationMode};
}
}
/// Information relevant to blue-green upgrade.
class BlueGreenInfo {
/// The resource URLs of the \[managed instance groups\]
/// (/compute/docs/instance-groups/creating-groups-of-managed-instances)
/// associated with blue pool.
core.List<core.String>? blueInstanceGroupUrls;
/// Time to start deleting blue pool to complete blue-green upgrade, in
/// [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
core.String? bluePoolDeletionStartTime;
/// The resource URLs of the \[managed instance groups\]
/// (/compute/docs/instance-groups/creating-groups-of-managed-instances)
/// associated with green pool.
core.List<core.String>? greenInstanceGroupUrls;
/// Version of green pool.
core.String? greenPoolVersion;
/// Current blue-green upgrade phase.
/// Possible string values are:
/// - "PHASE_UNSPECIFIED" : Unspecified phase.
/// - "UPDATE_STARTED" : blue-green upgrade has been initiated.
/// - "CREATING_GREEN_POOL" : Start creating green pool nodes.
/// - "CORDONING_BLUE_POOL" : Start cordoning blue pool nodes.
/// - "DRAINING_BLUE_POOL" : Start draining blue pool nodes.
/// - "NODE_POOL_SOAKING" : Start soaking time after draining entire blue
/// pool.
/// - "DELETING_BLUE_POOL" : Start deleting blue nodes.
/// - "ROLLBACK_STARTED" : Rollback has been initiated.
core.String? phase;
BlueGreenInfo({
this.blueInstanceGroupUrls,
this.bluePoolDeletionStartTime,
this.greenInstanceGroupUrls,
this.greenPoolVersion,
this.phase,
});
BlueGreenInfo.fromJson(core.Map json_)
: this(
blueInstanceGroupUrls: (json_['blueInstanceGroupUrls'] as core.List?)
?.map((value) => value as core.String)
.toList(),
bluePoolDeletionStartTime:
json_['bluePoolDeletionStartTime'] as core.String?,
greenInstanceGroupUrls: (json_['greenInstanceGroupUrls'] as core.List?)
?.map((value) => value as core.String)
.toList(),
greenPoolVersion: json_['greenPoolVersion'] as core.String?,
phase: json_['phase'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final blueInstanceGroupUrls = this.blueInstanceGroupUrls;
final bluePoolDeletionStartTime = this.bluePoolDeletionStartTime;
final greenInstanceGroupUrls = this.greenInstanceGroupUrls;
final greenPoolVersion = this.greenPoolVersion;
final phase = this.phase;
return {
'blueInstanceGroupUrls': ?blueInstanceGroupUrls,
'bluePoolDeletionStartTime': ?bluePoolDeletionStartTime,
'greenInstanceGroupUrls': ?greenInstanceGroupUrls,
'greenPoolVersion': ?greenPoolVersion,
'phase': ?phase,
};
}
}
/// Settings for blue-green upgrade.
class BlueGreenSettings {
/// Autoscaled policy for cluster autoscaler enabled blue-green upgrade.
AutoscaledRolloutPolicy? autoscaledRolloutPolicy;
/// Time needed after draining entire blue pool.
///
/// After this period, blue pool will be cleaned up.
core.String? nodePoolSoakDuration;
/// Standard policy for the blue-green upgrade.
StandardRolloutPolicy? standardRolloutPolicy;
BlueGreenSettings({
this.autoscaledRolloutPolicy,
this.nodePoolSoakDuration,
this.standardRolloutPolicy,
});
BlueGreenSettings.fromJson(core.Map json_)
: this(
autoscaledRolloutPolicy: json_.containsKey('autoscaledRolloutPolicy')
? AutoscaledRolloutPolicy.fromJson(
json_['autoscaledRolloutPolicy']
as core.Map<core.String, core.dynamic>,
)
: null,
nodePoolSoakDuration: json_['nodePoolSoakDuration'] as core.String?,
standardRolloutPolicy: json_.containsKey('standardRolloutPolicy')
? StandardRolloutPolicy.fromJson(
json_['standardRolloutPolicy']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final autoscaledRolloutPolicy = this.autoscaledRolloutPolicy;
final nodePoolSoakDuration = this.nodePoolSoakDuration;
final standardRolloutPolicy = this.standardRolloutPolicy;
return {
'autoscaledRolloutPolicy': ?autoscaledRolloutPolicy,
'nodePoolSoakDuration': ?nodePoolSoakDuration,
'standardRolloutPolicy': ?standardRolloutPolicy,
};
}
}
/// BootDisk specifies the boot disk configuration for node pools.
class BootDisk {
/// Disk type of the boot disk.
///
/// (i.e. Hyperdisk-Balanced, PD-Balanced, etc.)
core.String? diskType;
/// For Hyperdisk-Balanced only, the provisioned IOPS config value.
core.String? provisionedIops;
/// For Hyperdisk-Balanced only, the provisioned throughput config value.
core.String? provisionedThroughput;
/// Disk size in GB.
///
/// Replaces NodeConfig.disk_size_gb
core.String? sizeGb;
BootDisk({
this.diskType,
this.provisionedIops,
this.provisionedThroughput,
this.sizeGb,
});
BootDisk.fromJson(core.Map json_)
: this(
diskType: json_['diskType'] as core.String?,
provisionedIops: json_['provisionedIops'] as core.String?,
provisionedThroughput: json_['provisionedThroughput'] as core.String?,
sizeGb: json_['sizeGb'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final diskType = this.diskType;
final provisionedIops = this.provisionedIops;
final provisionedThroughput = this.provisionedThroughput;
final sizeGb = this.sizeGb;
return {
'diskType': ?diskType,
'provisionedIops': ?provisionedIops,
'provisionedThroughput': ?provisionedThroughput,
'sizeGb': ?sizeGb,
};
}
}
/// Swap on the node's boot disk.
class BootDiskProfile {
/// Specifies the size of the swap space in gibibytes (GiB).
core.String? swapSizeGib;
/// Specifies the size of the swap space as a percentage of the boot disk
/// size.
core.int? swapSizePercent;
BootDiskProfile({this.swapSizeGib, this.swapSizePercent});
BootDiskProfile.fromJson(core.Map json_)
: this(
swapSizeGib: json_['swapSizeGib'] as core.String?,
swapSizePercent: json_['swapSizePercent'] as core.int?,
);
core.Map<core.String, core.dynamic> toJson() {
final swapSizeGib = this.swapSizeGib;
final swapSizePercent = this.swapSizePercent;
return {'swapSizeGib': ?swapSizeGib, 'swapSizePercent': ?swapSizePercent};
}
}
/// CancelOperationRequest cancels a single operation.
class CancelOperationRequest {
/// The name (project, location, operation id) of the operation to cancel.
///
/// Specified in the format `projects / * /locations / * /operations / * `.
core.String? name;
/// The server-assigned `name` of the operation.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? operationId;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// operation resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
CancelOperationRequest({
this.name,
this.operationId,
this.projectId,
this.zone,
});
CancelOperationRequest.fromJson(core.Map json_)
: this(
name: json_['name'] as core.String?,
operationId: json_['operationId'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final name = this.name;
final operationId = this.operationId;
final projectId = this.projectId;
final zone = this.zone;
return {
'name': ?name,
'operationId': ?operationId,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// CertificateAuthorityDomainConfig configures one or more fully qualified
/// domain names (FQDN) to a specific certificate.
class CertificateAuthorityDomainConfig {
/// List of fully qualified domain names (FQDN).
///
/// Specifying port is supported. Wildcards are NOT supported. Examples: -
/// `my.customdomain.com` - `10.0.1.2:5000`
core.List<core.String>? fqdns;
/// Secret Manager certificate configuration.
GCPSecretManagerCertificateConfig? gcpSecretManagerCertificateConfig;
CertificateAuthorityDomainConfig({
this.fqdns,
this.gcpSecretManagerCertificateConfig,
});
CertificateAuthorityDomainConfig.fromJson(core.Map json_)
: this(
fqdns: (json_['fqdns'] as core.List?)
?.map((value) => value as core.String)
.toList(),
gcpSecretManagerCertificateConfig:
json_.containsKey('gcpSecretManagerCertificateConfig')
? GCPSecretManagerCertificateConfig.fromJson(
json_['gcpSecretManagerCertificateConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final fqdns = this.fqdns;
final gcpSecretManagerCertificateConfig =
this.gcpSecretManagerCertificateConfig;
return {
'fqdns': ?fqdns,
'gcpSecretManagerCertificateConfig': ?gcpSecretManagerCertificateConfig,
};
}
}
/// CertificateConfig configures certificate for the registry.
class CertificateConfig {
/// The URI configures a secret from
/// [Secret Manager](https://cloud.google.com/secret-manager) in the format
/// "projects/$PROJECT_ID/secrets/$SECRET_NAME/versions/$VERSION" for global
/// secret or
/// "projects/$PROJECT_ID/locations/$REGION/secrets/$SECRET_NAME/versions/$VERSION"
/// for regional secret.
///
/// Version can be fixed (e.g. "2") or "latest"
core.String? gcpSecretManagerSecretUri;
CertificateConfig({this.gcpSecretManagerSecretUri});
CertificateConfig.fromJson(core.Map json_)
: this(
gcpSecretManagerSecretUri:
json_['gcpSecretManagerSecretUri'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final gcpSecretManagerSecretUri = this.gcpSecretManagerSecretUri;
return {'gcpSecretManagerSecretUri': ?gcpSecretManagerSecretUri};
}
}
/// CertificateConfigPair configures pairs of certificates, which is used for
/// client certificate and key pairs under a registry.
class CertificateConfigPair {
/// Cert configures the client certificate.
CertificateConfig? cert;
/// Key configures the client private key.
///
/// Optional.
CertificateConfig? key;
CertificateConfigPair({this.cert, this.key});
CertificateConfigPair.fromJson(core.Map json_)
: this(
cert: json_.containsKey('cert')
? CertificateConfig.fromJson(
json_['cert'] as core.Map<core.String, core.dynamic>,
)
: null,
key: json_.containsKey('key')
? CertificateConfig.fromJson(
json_['key'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final cert = this.cert;
final key = this.key;
return {'cert': ?cert, 'key': ?key};
}
}
/// CheckAutopilotCompatibilityResponse has a list of compatibility issues.
class CheckAutopilotCompatibilityResponse {
/// The list of issues for the given operation.
core.List<AutopilotCompatibilityIssue>? issues;
/// The summary of the autopilot compatibility response.
core.String? summary;
CheckAutopilotCompatibilityResponse({this.issues, this.summary});
CheckAutopilotCompatibilityResponse.fromJson(core.Map json_)
: this(
issues: (json_['issues'] as core.List?)
?.map(
(value) => AutopilotCompatibilityIssue.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
summary: json_['summary'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final issues = this.issues;
final summary = this.summary;
return {'issues': ?issues, 'summary': ?summary};
}
}
/// CidrBlock contains an optional name and one CIDR block.
class CidrBlock {
/// cidr_block must be specified in CIDR notation.
core.String? cidrBlock;
/// display_name is an optional field for users to identify CIDR blocks.
core.String? displayName;
CidrBlock({this.cidrBlock, this.displayName});
CidrBlock.fromJson(core.Map json_)
: this(
cidrBlock: json_['cidrBlock'] as core.String?,
displayName: json_['displayName'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final cidrBlock = this.cidrBlock;
final displayName = this.displayName;
return {'cidrBlock': ?cidrBlock, 'displayName': ?displayName};
}
}
/// Configuration for client certificates on the cluster.
class ClientCertificateConfig {
/// Issue a client certificate.
core.bool? issueClientCertificate;
ClientCertificateConfig({this.issueClientCertificate});
ClientCertificateConfig.fromJson(core.Map json_)
: this(
issueClientCertificate: json_['issueClientCertificate'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final issueClientCertificate = this.issueClientCertificate;
return {'issueClientCertificate': ?issueClientCertificate};
}
}
/// Configuration options for the Cloud Run feature.
class CloudRunConfig {
/// Whether Cloud Run addon is enabled for this cluster.
core.bool? disabled;
/// Which load balancer type is installed for Cloud Run.
/// Possible string values are:
/// - "LOAD_BALANCER_TYPE_UNSPECIFIED" : Load balancer type for Cloud Run is
/// unspecified.
/// - "LOAD_BALANCER_TYPE_EXTERNAL" : Install external load balancer for Cloud
/// Run.
/// - "LOAD_BALANCER_TYPE_INTERNAL" : Install internal load balancer for Cloud
/// Run.
core.String? loadBalancerType;
CloudRunConfig({this.disabled, this.loadBalancerType});
CloudRunConfig.fromJson(core.Map json_)
: this(
disabled: json_['disabled'] as core.bool?,
loadBalancerType: json_['loadBalancerType'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final disabled = this.disabled;
final loadBalancerType = this.loadBalancerType;
return {'disabled': ?disabled, 'loadBalancerType': ?loadBalancerType};
}
}
/// A Google Kubernetes Engine cluster.
class Cluster {
/// Configurations for the various addons available to run in the cluster.
AddonsConfig? addonsConfig;
/// The list of user specified Kubernetes feature gates.
///
/// Each string represents the activation status of a feature gate (e.g.
/// "featureX=true" or "featureX=false")
core.List<core.String>? alphaClusterFeatureGates;
/// Configuration for limiting anonymous access to all endpoints except the
/// health checks.
AnonymousAuthenticationConfig? anonymousAuthenticationConfig;
/// Configuration controlling RBAC group membership information.
AuthenticatorGroupsConfig? authenticatorGroupsConfig;
/// Autopilot configuration for the cluster.
Autopilot? autopilot;
/// Cluster-level autoscaling configuration.
ClusterAutoscaling? autoscaling;
/// Configuration for Binary Authorization.
BinaryAuthorization? binaryAuthorization;
/// The IP address range of the container pods in this cluster, in
/// [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
/// notation (e.g. `10.96.0.0/14`).
///
/// Leave blank to have one automatically chosen or specify a `/14` block in
/// `10.0.0.0/8`.
core.String? clusterIpv4Cidr;
/// Deprecated: Compliance Posture is no longer supported.
///
/// For more details, see
/// https://cloud.google.com/kubernetes-engine/docs/deprecations/posture-management-deprecation.
/// Enable/Disable Compliance Posture features for the cluster.
///
/// Optional.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
CompliancePostureConfig? compliancePostureConfig;
/// Which conditions caused the current cluster state.
core.List<StatusCondition>? conditions;
/// Configuration of Confidential Nodes.
///
/// All the nodes in the cluster will be Confidential VM once enabled.
ConfidentialNodes? confidentialNodes;
/// Configuration for control plane egress control.
ControlPlaneEgress? controlPlaneEgress;
/// Configuration for all cluster's control plane endpoints.
ControlPlaneEndpointsConfig? controlPlaneEndpointsConfig;
/// Configuration for the fine-grained cost management feature.
CostManagementConfig? costManagementConfig;
/// The time the cluster was created, in
/// [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
///
/// Output only.
core.String? createTime;
/// The current software version of the master endpoint.
///
/// Output only.
core.String? currentMasterVersion;
/// The number of nodes currently in the cluster.
///
/// Deprecated. Call Kubernetes API directly to retrieve node information.
///
/// Output only.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.int? currentNodeCount;
/// Deprecated, use
/// [NodePools.version](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools)
/// instead.
///
/// The current version of the node software components. If they are currently
/// at multiple versions because they're in the process of being upgraded,
/// this reflects the minimum version of all nodes.
///
/// Output only.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? currentNodeVersion;
/// Configuration of etcd encryption.
DatabaseEncryption? databaseEncryption;
/// The default constraint on the maximum number of pods that can be run
/// simultaneously on a node in the node pool of this cluster.
///
/// Only honored if cluster created with IP Alias support.
MaxPodsConstraint? defaultMaxPodsConstraint;
/// An optional description of this cluster.
core.String? description;
/// Beta APIs Config
K8sBetaAPIConfig? enableK8sBetaApis;
/// Kubernetes alpha features are enabled on this cluster.
///
/// This includes alpha API groups (e.g. v1alpha1) and features that may not
/// be production ready in the kubernetes version of the master and nodes. The
/// cluster has no SLA for uptime and master/node upgrades are disabled. Alpha
/// enabled clusters are automatically deleted thirty days after creation.
core.bool? enableKubernetesAlpha;
/// Enable the ability to use Cloud TPUs in this cluster.
///
/// This field is deprecated due to the deprecation of 2VM TPU. The end of
/// life date for 2VM TPU is 2025-04-25.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? enableTpu;
/// The IP address of this cluster's master endpoint.
///
/// The endpoint can be accessed from the internet at
/// `https://username:password@endpoint/`. See the `masterAuth` property of
/// this resource for username and password information.
///
/// Output only.
core.String? endpoint;
/// GKE Enterprise Configuration.
///
/// Deprecated: GKE Enterprise features are now available without an
/// Enterprise tier.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
EnterpriseConfig? enterpriseConfig;
/// This checksum is computed by the server based on the value of cluster
/// fields, and may be sent on update requests to ensure the client has an
/// up-to-date value before proceeding.
core.String? etag;
/// The time the cluster will be automatically deleted in
/// [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
///
/// Output only.
core.String? expireTime;
/// Fleet information for the cluster.
Fleet? fleet;
/// Configuration for GKE auto upgrades.
GkeAutoUpgradeConfig? gkeAutoUpgradeConfig;
/// Unique id for the cluster.
///
/// Output only.
core.String? id;
/// Configuration for Identity Service component.
IdentityServiceConfig? identityServiceConfig;
/// The initial Kubernetes version for this cluster.
///
/// Valid versions are those found in validMasterVersions returned by
/// getServerConfig. The version can be upgraded over time; such upgrades are
/// reflected in currentMasterVersion and currentNodeVersion. Users may
/// specify either explicit versions offered by Kubernetes Engine or version
/// aliases, which have the following behavior: - "latest": picks the highest
/// valid Kubernetes version - "1.X": picks the highest valid patch+gke.N
/// patch in the 1.X version - "1.X.Y": picks the highest valid gke.N patch in
/// the 1.X.Y version - "1.X.Y-gke.N": picks an explicit Kubernetes version -
/// "","-": picks the default Kubernetes version
core.String? initialClusterVersion;
/// The number of nodes to create in this cluster.
///
/// You must ensure that your Compute Engine
/// [resource quota](https://cloud.google.com/compute/quotas) is sufficient
/// for this number of instances. You must also have available firewall and
/// routes quota. For requests, this field should only be used in lieu of a
/// "node_pool" object, since this configuration (along with the
/// "node_config") will be used to create a "NodePool" object with an
/// auto-generated name. Do not use this and a node_pool at the same time.
/// This field is deprecated, use node_pool.initial_node_count instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.int? initialNodeCount;
/// Use node_pools.instance_group_urls.
///
/// Output only. Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<core.String>? instanceGroupUrls;
/// Configuration for cluster IP allocation.
IPAllocationPolicy? ipAllocationPolicy;
/// The fingerprint of the set of labels for this cluster.
core.String? labelFingerprint;
/// Configuration for the legacy ABAC authorization mode.
LegacyAbac? legacyAbac;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
/// or
/// [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
/// in which the cluster resides.
///
/// Output only.
core.String? location;
/// The list of Google Compute Engine
/// [zones](https://cloud.google.com/compute/docs/zones#available) in which
/// the cluster's nodes should be located.
///
/// This field provides a default value if
/// [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations)
/// are not specified during node pool creation. Warning: changing cluster
/// locations will update the
/// [NodePool.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters.nodePools#NodePool.FIELDS.locations)
/// of all node pools and will result in nodes being added and/or removed.
core.List<core.String>? locations;
/// Logging configuration for the cluster.
LoggingConfig? loggingConfig;
/// The logging service the cluster should use to write logs.
///
/// Currently available options: * `logging.googleapis.com/kubernetes` - The
/// Cloud Logging service with a Kubernetes-native resource model *
/// `logging.googleapis.com` - The legacy Cloud Logging service (no longer
/// available as of GKE 1.15). * `none` - no logs will be exported from the
/// cluster. If left as an empty string,`logging.googleapis.com/kubernetes`
/// will be used for GKE 1.14+ or `logging.googleapis.com` for earlier
/// versions.
core.String? loggingService;
/// Configure the maintenance policy for this cluster.
MaintenancePolicy? maintenancePolicy;
/// Configuration for Managed Machine Learning Diagnostics.
ManagedMachineLearningDiagnosticsConfig?
managedMachineLearningDiagnosticsConfig;
/// Configuration for Managed OpenTelemetry pipeline.
ManagedOpenTelemetryConfig? managedOpentelemetryConfig;
/// The authentication information for accessing the master endpoint.
///
/// If unspecified, the defaults are used: For clusters before v1.12, if
/// master_auth is unspecified, `username` will be set to "admin", a random
/// password will be generated, and a client certificate will be issued.
MasterAuth? masterAuth;
/// The configuration options for master authorized networks feature.
///
/// Deprecated: Use
/// ControlPlaneEndpointsConfig.IPEndpointsConfig.authorized_networks_config
/// instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
MasterAuthorizedNetworksConfig? masterAuthorizedNetworksConfig;
/// Configuration for issuance of mTLS keys and certificates to Kubernetes
/// pods.
MeshCertificates? meshCertificates;
/// Monitoring configuration for the cluster.
MonitoringConfig? monitoringConfig;
/// The monitoring service the cluster should use to write metrics.
///
/// Currently available options: * `monitoring.googleapis.com/kubernetes` -
/// The Cloud Monitoring service with a Kubernetes-native resource model *
/// `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no
/// longer available as of GKE 1.15). * `none` - No metrics will be exported
/// from the cluster. If left as an empty
/// string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+
/// or `monitoring.googleapis.com` for earlier versions.
core.String? monitoringService;
/// The name of this cluster.
///
/// The name must be unique within this project and location (e.g. zone or
/// region), and can be up to 40 characters with the following restrictions: *
/// Lowercase letters, numbers, and hyphens only. * Must start with a letter.
/// * Must end with a number or a letter.
core.String? name;
/// The name of the Google Compute Engine
/// [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
/// to which the cluster is connected.
///
/// If left unspecified, the `default` network will be used.
core.String? network;
/// Configuration for cluster networking.
NetworkConfig? networkConfig;
/// Configuration options for the NetworkPolicy feature.
NetworkPolicy? networkPolicy;
/// Parameters used in creating the cluster's nodes.
///
/// For requests, this field should only be used in lieu of a "node_pool"
/// object, since this configuration (along with the "initial_node_count")
/// will be used to create a "NodePool" object with an auto-generated name. Do
/// not use this and a node_pool at the same time. For responses, this field
/// will be populated with the node configuration of the first node pool. (For
/// configuration of each node pool, see `node_pool.config`) If unspecified,
/// the defaults are used. This field is deprecated, use node_pool.config
/// instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
NodeConfig? nodeConfig;
/// The size of the address space on each node for hosting containers.
///
/// This is provisioned from within the `container_ipv4_cidr` range. This
/// field will only be set when cluster is in route-based network mode.
///
/// Output only.
core.int? nodeIpv4CidrSize;
/// Node pool configs that apply to all auto-provisioned node pools in
/// autopilot clusters and node auto-provisioning enabled clusters.
NodePoolAutoConfig? nodePoolAutoConfig;
/// Default NodePool settings for the entire cluster.
///
/// These settings are overridden if specified on the specific NodePool
/// object.
NodePoolDefaults? nodePoolDefaults;
/// The node pools associated with this cluster.
///
/// This field should not be set if "node_config" or "initial_node_count" are
/// specified.
core.List<NodePool>? nodePools;
/// Notification configuration of the cluster.
NotificationConfig? notificationConfig;
/// The configuration of the parent product of the cluster.
///
/// This field is used by Google internal products that are built on top of
/// the GKE cluster and take the ownership of the cluster.
ParentProductConfig? parentProductConfig;
/// The config for pod autoscaling.
PodAutoscaling? podAutoscaling;
/// Configuration for private cluster.
PrivateClusterConfig? privateClusterConfig;
/// RBACBindingConfig allows user to restrict ClusterRoleBindings an
/// RoleBindings that can be created.
RBACBindingConfig? rbacBindingConfig;
/// Release channel configuration.
///
/// If left unspecified on cluster creation and a version is specified, the
/// cluster is enrolled in the most mature release channel where the version
/// is available (first checking STABLE, then REGULAR, and finally RAPID).
/// Otherwise, if no release channel configuration and no version is
/// specified, the cluster is enrolled in the REGULAR channel with its default
/// version.
ReleaseChannel? releaseChannel;
/// The resource labels for the cluster to use to annotate any related Google
/// Compute Engine resources.
core.Map<core.String, core.String>? resourceLabels;
/// Configuration for exporting resource usages.
///
/// Resource usage export is disabled when this config is unspecified.
ResourceUsageExportConfig? resourceUsageExportConfig;
/// Reserved for future use.
///
/// Output only.
core.bool? satisfiesPzi;
/// Reserved for future use.
///
/// Output only.
core.bool? satisfiesPzs;
/// Configuration for scheduled upgrades.
///
/// Optional.
ScheduleUpgradeConfig? scheduleUpgradeConfig;
/// Secret CSI driver configuration.
SecretManagerConfig? secretManagerConfig;
/// Configuration for sync Secret Manager secrets as k8s secrets.
SecretSyncConfig? secretSyncConfig;
/// Enable/Disable Security Posture API features for the cluster.
///
/// Optional.
SecurityPostureConfig? securityPostureConfig;
/// Server-defined URL for the resource.
///
/// Output only.
core.String? selfLink;
/// The IP address range of the Kubernetes services in this cluster, in
/// [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
/// notation (e.g. `1.2.3.4/29`).
///
/// Service addresses are typically put in the last `/16` from the container
/// CIDR.
///
/// Output only.
core.String? servicesIpv4Cidr;
/// Shielded Nodes configuration.
ShieldedNodes? shieldedNodes;
/// The current status of this cluster.
///
/// Output only.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Not set.
/// - "PROVISIONING" : The PROVISIONING state indicates the cluster is being
/// created.
/// - "RUNNING" : The RUNNING state indicates the cluster has been created and
/// is fully usable.
/// - "RECONCILING" : The RECONCILING state indicates that some work is
/// actively being done on the cluster, such as upgrading the master or node
/// software. Details can be found in the `statusMessage` field.
/// - "STOPPING" : The STOPPING state indicates the cluster is being deleted.
/// - "ERROR" : The ERROR state indicates the cluster is unusable. It will be
/// automatically deleted. Details can be found in the `statusMessage` field.
/// - "DEGRADED" : The DEGRADED state indicates the cluster requires user
/// action to restore full functionality. Details can be found in the
/// `statusMessage` field.
core.String? status;
/// Use conditions instead.
///
/// Additional information about the current status of this cluster, if
/// available.
///
/// Output only. Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? statusMessage;
/// The name of the Google Compute Engine
/// [subnetwork](https://cloud.google.com/compute/docs/subnetworks) to which
/// the cluster is connected.
core.String? subnetwork;
/// The IP address range of the Cloud TPUs in this cluster, in
/// [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
/// notation (e.g. `1.2.3.4/29`).
///
/// This field is deprecated due to the deprecation of 2VM TPU. The end of
/// life date for 2VM TPU is 2025-04-25.
///
/// Output only.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? tpuIpv4CidrBlock;
/// The Custom keys configuration for the cluster.
UserManagedKeysConfig? userManagedKeysConfig;
/// Cluster-level Vertical Pod Autoscaling configuration.
VerticalPodAutoscaling? verticalPodAutoscaling;
/// Configuration for the use of Kubernetes Service Accounts in IAM policies.
WorkloadIdentityConfig? workloadIdentityConfig;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field is deprecated, use location instead.
///
/// Output only.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
Cluster({
this.addonsConfig,
this.alphaClusterFeatureGates,
this.anonymousAuthenticationConfig,
this.authenticatorGroupsConfig,
this.autopilot,
this.autoscaling,
this.binaryAuthorization,
this.clusterIpv4Cidr,
this.compliancePostureConfig,
this.conditions,
this.confidentialNodes,
this.controlPlaneEgress,
this.controlPlaneEndpointsConfig,
this.costManagementConfig,
this.createTime,
this.currentMasterVersion,
this.currentNodeCount,
this.currentNodeVersion,
this.databaseEncryption,
this.defaultMaxPodsConstraint,
this.description,
this.enableK8sBetaApis,
this.enableKubernetesAlpha,
this.enableTpu,
this.endpoint,
this.enterpriseConfig,
this.etag,
this.expireTime,
this.fleet,
this.gkeAutoUpgradeConfig,
this.id,
this.identityServiceConfig,
this.initialClusterVersion,
this.initialNodeCount,
this.instanceGroupUrls,
this.ipAllocationPolicy,
this.labelFingerprint,
this.legacyAbac,
this.location,
this.locations,
this.loggingConfig,
this.loggingService,
this.maintenancePolicy,
this.managedMachineLearningDiagnosticsConfig,
this.managedOpentelemetryConfig,
this.masterAuth,
this.masterAuthorizedNetworksConfig,
this.meshCertificates,
this.monitoringConfig,
this.monitoringService,
this.name,
this.network,
this.networkConfig,
this.networkPolicy,
this.nodeConfig,
this.nodeIpv4CidrSize,
this.nodePoolAutoConfig,
this.nodePoolDefaults,
this.nodePools,
this.notificationConfig,
this.parentProductConfig,
this.podAutoscaling,
this.privateClusterConfig,
this.rbacBindingConfig,
this.releaseChannel,
this.resourceLabels,
this.resourceUsageExportConfig,
this.satisfiesPzi,
this.satisfiesPzs,
this.scheduleUpgradeConfig,
this.secretManagerConfig,
this.secretSyncConfig,
this.securityPostureConfig,
this.selfLink,
this.servicesIpv4Cidr,
this.shieldedNodes,
this.status,
this.statusMessage,
this.subnetwork,
this.tpuIpv4CidrBlock,
this.userManagedKeysConfig,
this.verticalPodAutoscaling,
this.workloadIdentityConfig,
this.zone,
});
Cluster.fromJson(core.Map json_)
: this(
addonsConfig: json_.containsKey('addonsConfig')
? AddonsConfig.fromJson(
json_['addonsConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
alphaClusterFeatureGates:
(json_['alphaClusterFeatureGates'] as core.List?)
?.map((value) => value as core.String)
.toList(),
anonymousAuthenticationConfig:
json_.containsKey('anonymousAuthenticationConfig')
? AnonymousAuthenticationConfig.fromJson(
json_['anonymousAuthenticationConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
authenticatorGroupsConfig:
json_.containsKey('authenticatorGroupsConfig')
? AuthenticatorGroupsConfig.fromJson(
json_['authenticatorGroupsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
autopilot: json_.containsKey('autopilot')
? Autopilot.fromJson(
json_['autopilot'] as core.Map<core.String, core.dynamic>,
)
: null,
autoscaling: json_.containsKey('autoscaling')
? ClusterAutoscaling.fromJson(
json_['autoscaling'] as core.Map<core.String, core.dynamic>,
)
: null,
binaryAuthorization: json_.containsKey('binaryAuthorization')
? BinaryAuthorization.fromJson(
json_['binaryAuthorization']
as core.Map<core.String, core.dynamic>,
)
: null,
clusterIpv4Cidr: json_['clusterIpv4Cidr'] as core.String?,
compliancePostureConfig: json_.containsKey('compliancePostureConfig')
? CompliancePostureConfig.fromJson(
json_['compliancePostureConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
conditions: (json_['conditions'] as core.List?)
?.map(
(value) => StatusCondition.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
confidentialNodes: json_.containsKey('confidentialNodes')
? ConfidentialNodes.fromJson(
json_['confidentialNodes']
as core.Map<core.String, core.dynamic>,
)
: null,
controlPlaneEgress: json_.containsKey('controlPlaneEgress')
? ControlPlaneEgress.fromJson(
json_['controlPlaneEgress']
as core.Map<core.String, core.dynamic>,
)
: null,
controlPlaneEndpointsConfig:
json_.containsKey('controlPlaneEndpointsConfig')
? ControlPlaneEndpointsConfig.fromJson(
json_['controlPlaneEndpointsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
costManagementConfig: json_.containsKey('costManagementConfig')
? CostManagementConfig.fromJson(
json_['costManagementConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
createTime: json_['createTime'] as core.String?,
currentMasterVersion: json_['currentMasterVersion'] as core.String?,
currentNodeCount: json_['currentNodeCount'] as core.int?,
currentNodeVersion: json_['currentNodeVersion'] as core.String?,
databaseEncryption: json_.containsKey('databaseEncryption')
? DatabaseEncryption.fromJson(
json_['databaseEncryption']
as core.Map<core.String, core.dynamic>,
)
: null,
defaultMaxPodsConstraint: json_.containsKey('defaultMaxPodsConstraint')
? MaxPodsConstraint.fromJson(
json_['defaultMaxPodsConstraint']
as core.Map<core.String, core.dynamic>,
)
: null,
description: json_['description'] as core.String?,
enableK8sBetaApis: json_.containsKey('enableK8sBetaApis')
? K8sBetaAPIConfig.fromJson(
json_['enableK8sBetaApis']
as core.Map<core.String, core.dynamic>,
)
: null,
enableKubernetesAlpha: json_['enableKubernetesAlpha'] as core.bool?,
enableTpu: json_['enableTpu'] as core.bool?,
endpoint: json_['endpoint'] as core.String?,
enterpriseConfig: json_.containsKey('enterpriseConfig')
? EnterpriseConfig.fromJson(
json_['enterpriseConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
etag: json_['etag'] as core.String?,
expireTime: json_['expireTime'] as core.String?,
fleet: json_.containsKey('fleet')
? Fleet.fromJson(
json_['fleet'] as core.Map<core.String, core.dynamic>,
)
: null,
gkeAutoUpgradeConfig: json_.containsKey('gkeAutoUpgradeConfig')
? GkeAutoUpgradeConfig.fromJson(
json_['gkeAutoUpgradeConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
id: json_['id'] as core.String?,
identityServiceConfig: json_.containsKey('identityServiceConfig')
? IdentityServiceConfig.fromJson(
json_['identityServiceConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
initialClusterVersion: json_['initialClusterVersion'] as core.String?,
initialNodeCount: json_['initialNodeCount'] as core.int?,
instanceGroupUrls: (json_['instanceGroupUrls'] as core.List?)
?.map((value) => value as core.String)
.toList(),
ipAllocationPolicy: json_.containsKey('ipAllocationPolicy')
? IPAllocationPolicy.fromJson(
json_['ipAllocationPolicy']
as core.Map<core.String, core.dynamic>,
)
: null,
labelFingerprint: json_['labelFingerprint'] as core.String?,
legacyAbac: json_.containsKey('legacyAbac')
? LegacyAbac.fromJson(
json_['legacyAbac'] as core.Map<core.String, core.dynamic>,
)
: null,
location: json_['location'] as core.String?,
locations: (json_['locations'] as core.List?)
?.map((value) => value as core.String)
.toList(),
loggingConfig: json_.containsKey('loggingConfig')
? LoggingConfig.fromJson(
json_['loggingConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
loggingService: json_['loggingService'] as core.String?,
maintenancePolicy: json_.containsKey('maintenancePolicy')
? MaintenancePolicy.fromJson(
json_['maintenancePolicy']
as core.Map<core.String, core.dynamic>,
)
: null,
managedMachineLearningDiagnosticsConfig:
json_.containsKey('managedMachineLearningDiagnosticsConfig')
? ManagedMachineLearningDiagnosticsConfig.fromJson(
json_['managedMachineLearningDiagnosticsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
managedOpentelemetryConfig:
json_.containsKey('managedOpentelemetryConfig')
? ManagedOpenTelemetryConfig.fromJson(
json_['managedOpentelemetryConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
masterAuth: json_.containsKey('masterAuth')
? MasterAuth.fromJson(
json_['masterAuth'] as core.Map<core.String, core.dynamic>,
)
: null,
masterAuthorizedNetworksConfig:
json_.containsKey('masterAuthorizedNetworksConfig')
? MasterAuthorizedNetworksConfig.fromJson(
json_['masterAuthorizedNetworksConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
meshCertificates: json_.containsKey('meshCertificates')
? MeshCertificates.fromJson(
json_['meshCertificates']
as core.Map<core.String, core.dynamic>,
)
: null,
monitoringConfig: json_.containsKey('monitoringConfig')
? MonitoringConfig.fromJson(
json_['monitoringConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
monitoringService: json_['monitoringService'] as core.String?,
name: json_['name'] as core.String?,
network: json_['network'] as core.String?,
networkConfig: json_.containsKey('networkConfig')
? NetworkConfig.fromJson(
json_['networkConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
networkPolicy: json_.containsKey('networkPolicy')
? NetworkPolicy.fromJson(
json_['networkPolicy'] as core.Map<core.String, core.dynamic>,
)
: null,
nodeConfig: json_.containsKey('nodeConfig')
? NodeConfig.fromJson(
json_['nodeConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
nodeIpv4CidrSize: json_['nodeIpv4CidrSize'] as core.int?,
nodePoolAutoConfig: json_.containsKey('nodePoolAutoConfig')
? NodePoolAutoConfig.fromJson(
json_['nodePoolAutoConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
nodePoolDefaults: json_.containsKey('nodePoolDefaults')
? NodePoolDefaults.fromJson(
json_['nodePoolDefaults']
as core.Map<core.String, core.dynamic>,
)
: null,
nodePools: (json_['nodePools'] as core.List?)
?.map(
(value) => NodePool.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
notificationConfig: json_.containsKey('notificationConfig')
? NotificationConfig.fromJson(
json_['notificationConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
parentProductConfig: json_.containsKey('parentProductConfig')
? ParentProductConfig.fromJson(
json_['parentProductConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
podAutoscaling: json_.containsKey('podAutoscaling')
? PodAutoscaling.fromJson(
json_['podAutoscaling'] as core.Map<core.String, core.dynamic>,
)
: null,
privateClusterConfig: json_.containsKey('privateClusterConfig')
? PrivateClusterConfig.fromJson(
json_['privateClusterConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
rbacBindingConfig: json_.containsKey('rbacBindingConfig')
? RBACBindingConfig.fromJson(
json_['rbacBindingConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
releaseChannel: json_.containsKey('releaseChannel')
? ReleaseChannel.fromJson(
json_['releaseChannel'] as core.Map<core.String, core.dynamic>,
)
: null,
resourceLabels:
(json_['resourceLabels'] as core.Map<core.String, core.dynamic>?)
?.map((key, value) => core.MapEntry(key, value as core.String)),
resourceUsageExportConfig:
json_.containsKey('resourceUsageExportConfig')
? ResourceUsageExportConfig.fromJson(
json_['resourceUsageExportConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
satisfiesPzi: json_['satisfiesPzi'] as core.bool?,
satisfiesPzs: json_['satisfiesPzs'] as core.bool?,
scheduleUpgradeConfig: json_.containsKey('scheduleUpgradeConfig')
? ScheduleUpgradeConfig.fromJson(
json_['scheduleUpgradeConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
secretManagerConfig: json_.containsKey('secretManagerConfig')
? SecretManagerConfig.fromJson(
json_['secretManagerConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
secretSyncConfig: json_.containsKey('secretSyncConfig')
? SecretSyncConfig.fromJson(
json_['secretSyncConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
securityPostureConfig: json_.containsKey('securityPostureConfig')
? SecurityPostureConfig.fromJson(
json_['securityPostureConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
selfLink: json_['selfLink'] as core.String?,
servicesIpv4Cidr: json_['servicesIpv4Cidr'] as core.String?,
shieldedNodes: json_.containsKey('shieldedNodes')
? ShieldedNodes.fromJson(
json_['shieldedNodes'] as core.Map<core.String, core.dynamic>,
)
: null,
status: json_['status'] as core.String?,
statusMessage: json_['statusMessage'] as core.String?,
subnetwork: json_['subnetwork'] as core.String?,
tpuIpv4CidrBlock: json_['tpuIpv4CidrBlock'] as core.String?,
userManagedKeysConfig: json_.containsKey('userManagedKeysConfig')
? UserManagedKeysConfig.fromJson(
json_['userManagedKeysConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
verticalPodAutoscaling: json_.containsKey('verticalPodAutoscaling')
? VerticalPodAutoscaling.fromJson(
json_['verticalPodAutoscaling']
as core.Map<core.String, core.dynamic>,
)
: null,
workloadIdentityConfig: json_.containsKey('workloadIdentityConfig')
? WorkloadIdentityConfig.fromJson(
json_['workloadIdentityConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final addonsConfig = this.addonsConfig;
final alphaClusterFeatureGates = this.alphaClusterFeatureGates;
final anonymousAuthenticationConfig = this.anonymousAuthenticationConfig;
final authenticatorGroupsConfig = this.authenticatorGroupsConfig;
final autopilot = this.autopilot;
final autoscaling = this.autoscaling;
final binaryAuthorization = this.binaryAuthorization;
final clusterIpv4Cidr = this.clusterIpv4Cidr;
final compliancePostureConfig = this.compliancePostureConfig;
final conditions = this.conditions;
final confidentialNodes = this.confidentialNodes;
final controlPlaneEgress = this.controlPlaneEgress;
final controlPlaneEndpointsConfig = this.controlPlaneEndpointsConfig;
final costManagementConfig = this.costManagementConfig;
final createTime = this.createTime;
final currentMasterVersion = this.currentMasterVersion;
final currentNodeCount = this.currentNodeCount;
final currentNodeVersion = this.currentNodeVersion;
final databaseEncryption = this.databaseEncryption;
final defaultMaxPodsConstraint = this.defaultMaxPodsConstraint;
final description = this.description;
final enableK8sBetaApis = this.enableK8sBetaApis;
final enableKubernetesAlpha = this.enableKubernetesAlpha;
final enableTpu = this.enableTpu;
final endpoint = this.endpoint;
final enterpriseConfig = this.enterpriseConfig;
final etag = this.etag;
final expireTime = this.expireTime;
final fleet = this.fleet;
final gkeAutoUpgradeConfig = this.gkeAutoUpgradeConfig;
final id = this.id;
final identityServiceConfig = this.identityServiceConfig;
final initialClusterVersion = this.initialClusterVersion;
final initialNodeCount = this.initialNodeCount;
final instanceGroupUrls = this.instanceGroupUrls;
final ipAllocationPolicy = this.ipAllocationPolicy;
final labelFingerprint = this.labelFingerprint;
final legacyAbac = this.legacyAbac;
final location = this.location;
final locations = this.locations;
final loggingConfig = this.loggingConfig;
final loggingService = this.loggingService;
final maintenancePolicy = this.maintenancePolicy;
final managedMachineLearningDiagnosticsConfig =
this.managedMachineLearningDiagnosticsConfig;
final managedOpentelemetryConfig = this.managedOpentelemetryConfig;
final masterAuth = this.masterAuth;
final masterAuthorizedNetworksConfig = this.masterAuthorizedNetworksConfig;
final meshCertificates = this.meshCertificates;
final monitoringConfig = this.monitoringConfig;
final monitoringService = this.monitoringService;
final name = this.name;
final network = this.network;
final networkConfig = this.networkConfig;
final networkPolicy = this.networkPolicy;
final nodeConfig = this.nodeConfig;
final nodeIpv4CidrSize = this.nodeIpv4CidrSize;
final nodePoolAutoConfig = this.nodePoolAutoConfig;
final nodePoolDefaults = this.nodePoolDefaults;
final nodePools = this.nodePools;
final notificationConfig = this.notificationConfig;
final parentProductConfig = this.parentProductConfig;
final podAutoscaling = this.podAutoscaling;
final privateClusterConfig = this.privateClusterConfig;
final rbacBindingConfig = this.rbacBindingConfig;
final releaseChannel = this.releaseChannel;
final resourceLabels = this.resourceLabels;
final resourceUsageExportConfig = this.resourceUsageExportConfig;
final satisfiesPzi = this.satisfiesPzi;
final satisfiesPzs = this.satisfiesPzs;
final scheduleUpgradeConfig = this.scheduleUpgradeConfig;
final secretManagerConfig = this.secretManagerConfig;
final secretSyncConfig = this.secretSyncConfig;
final securityPostureConfig = this.securityPostureConfig;
final selfLink = this.selfLink;
final servicesIpv4Cidr = this.servicesIpv4Cidr;
final shieldedNodes = this.shieldedNodes;
final status = this.status;
final statusMessage = this.statusMessage;
final subnetwork = this.subnetwork;
final tpuIpv4CidrBlock = this.tpuIpv4CidrBlock;
final userManagedKeysConfig = this.userManagedKeysConfig;
final verticalPodAutoscaling = this.verticalPodAutoscaling;
final workloadIdentityConfig = this.workloadIdentityConfig;
final zone = this.zone;
return {
'addonsConfig': ?addonsConfig,
'alphaClusterFeatureGates': ?alphaClusterFeatureGates,
'anonymousAuthenticationConfig': ?anonymousAuthenticationConfig,
'authenticatorGroupsConfig': ?authenticatorGroupsConfig,
'autopilot': ?autopilot,
'autoscaling': ?autoscaling,
'binaryAuthorization': ?binaryAuthorization,
'clusterIpv4Cidr': ?clusterIpv4Cidr,
'compliancePostureConfig': ?compliancePostureConfig,
'conditions': ?conditions,
'confidentialNodes': ?confidentialNodes,
'controlPlaneEgress': ?controlPlaneEgress,
'controlPlaneEndpointsConfig': ?controlPlaneEndpointsConfig,
'costManagementConfig': ?costManagementConfig,
'createTime': ?createTime,
'currentMasterVersion': ?currentMasterVersion,
'currentNodeCount': ?currentNodeCount,
'currentNodeVersion': ?currentNodeVersion,
'databaseEncryption': ?databaseEncryption,
'defaultMaxPodsConstraint': ?defaultMaxPodsConstraint,
'description': ?description,
'enableK8sBetaApis': ?enableK8sBetaApis,
'enableKubernetesAlpha': ?enableKubernetesAlpha,
'enableTpu': ?enableTpu,
'endpoint': ?endpoint,
'enterpriseConfig': ?enterpriseConfig,
'etag': ?etag,
'expireTime': ?expireTime,
'fleet': ?fleet,
'gkeAutoUpgradeConfig': ?gkeAutoUpgradeConfig,
'id': ?id,
'identityServiceConfig': ?identityServiceConfig,
'initialClusterVersion': ?initialClusterVersion,
'initialNodeCount': ?initialNodeCount,
'instanceGroupUrls': ?instanceGroupUrls,
'ipAllocationPolicy': ?ipAllocationPolicy,
'labelFingerprint': ?labelFingerprint,
'legacyAbac': ?legacyAbac,
'location': ?location,
'locations': ?locations,
'loggingConfig': ?loggingConfig,
'loggingService': ?loggingService,
'maintenancePolicy': ?maintenancePolicy,
'managedMachineLearningDiagnosticsConfig':
?managedMachineLearningDiagnosticsConfig,
'managedOpentelemetryConfig': ?managedOpentelemetryConfig,
'masterAuth': ?masterAuth,
'masterAuthorizedNetworksConfig': ?masterAuthorizedNetworksConfig,
'meshCertificates': ?meshCertificates,
'monitoringConfig': ?monitoringConfig,
'monitoringService': ?monitoringService,
'name': ?name,
'network': ?network,
'networkConfig': ?networkConfig,
'networkPolicy': ?networkPolicy,
'nodeConfig': ?nodeConfig,
'nodeIpv4CidrSize': ?nodeIpv4CidrSize,
'nodePoolAutoConfig': ?nodePoolAutoConfig,
'nodePoolDefaults': ?nodePoolDefaults,
'nodePools': ?nodePools,
'notificationConfig': ?notificationConfig,
'parentProductConfig': ?parentProductConfig,
'podAutoscaling': ?podAutoscaling,
'privateClusterConfig': ?privateClusterConfig,
'rbacBindingConfig': ?rbacBindingConfig,
'releaseChannel': ?releaseChannel,
'resourceLabels': ?resourceLabels,
'resourceUsageExportConfig': ?resourceUsageExportConfig,
'satisfiesPzi': ?satisfiesPzi,
'satisfiesPzs': ?satisfiesPzs,
'scheduleUpgradeConfig': ?scheduleUpgradeConfig,
'secretManagerConfig': ?secretManagerConfig,
'secretSyncConfig': ?secretSyncConfig,
'securityPostureConfig': ?securityPostureConfig,
'selfLink': ?selfLink,
'servicesIpv4Cidr': ?servicesIpv4Cidr,
'shieldedNodes': ?shieldedNodes,
'status': ?status,
'statusMessage': ?statusMessage,
'subnetwork': ?subnetwork,
'tpuIpv4CidrBlock': ?tpuIpv4CidrBlock,
'userManagedKeysConfig': ?userManagedKeysConfig,
'verticalPodAutoscaling': ?verticalPodAutoscaling,
'workloadIdentityConfig': ?workloadIdentityConfig,
'zone': ?zone,
};
}
}
/// ClusterAutoscaling contains global, per-cluster information required by
/// Cluster Autoscaler to automatically adjust the size of the cluster and
/// create/delete node pools based on the current needs.
class ClusterAutoscaling {
/// Autopilot general profile for the cluster, which defines the configuration
/// for the cluster.
/// Possible string values are:
/// - "AUTOPILOT_GENERAL_PROFILE_UNSPECIFIED" : Use default configuration.
/// - "NO_PERFORMANCE" : Avoid extra IP consumption.
/// - "NONE" : Use default configuration.
core.String? autopilotGeneralProfile;
/// The list of Google Compute Engine
/// [zones](https://cloud.google.com/compute/docs/zones#available) in which
/// the NodePool's nodes can be created by NAP.
core.List<core.String>? autoprovisioningLocations;
/// AutoprovisioningNodePoolDefaults contains defaults for a node pool created
/// by NAP.
AutoprovisioningNodePoolDefaults? autoprovisioningNodePoolDefaults;
/// Defines autoscaling behaviour.
/// Possible string values are:
/// - "PROFILE_UNSPECIFIED" : No change to autoscaling configuration.
/// - "OPTIMIZE_UTILIZATION" : Prioritize optimizing utilization of resources.
/// - "BALANCED" : Use default (balanced) autoscaling configuration.
core.String? autoscalingProfile;
/// Default compute class is a configuration for default compute class.
DefaultComputeClassConfig? defaultComputeClassConfig;
/// Enables automatic node pool creation and deletion.
core.bool? enableNodeAutoprovisioning;
/// Contains global constraints regarding minimum and maximum amount of
/// resources in the cluster.
core.List<ResourceLimit>? resourceLimits;
ClusterAutoscaling({
this.autopilotGeneralProfile,
this.autoprovisioningLocations,
this.autoprovisioningNodePoolDefaults,
this.autoscalingProfile,
this.defaultComputeClassConfig,
this.enableNodeAutoprovisioning,
this.resourceLimits,
});
ClusterAutoscaling.fromJson(core.Map json_)
: this(
autopilotGeneralProfile:
json_['autopilotGeneralProfile'] as core.String?,
autoprovisioningLocations:
(json_['autoprovisioningLocations'] as core.List?)
?.map((value) => value as core.String)
.toList(),
autoprovisioningNodePoolDefaults:
json_.containsKey('autoprovisioningNodePoolDefaults')
? AutoprovisioningNodePoolDefaults.fromJson(
json_['autoprovisioningNodePoolDefaults']
as core.Map<core.String, core.dynamic>,
)
: null,
autoscalingProfile: json_['autoscalingProfile'] as core.String?,
defaultComputeClassConfig:
json_.containsKey('defaultComputeClassConfig')
? DefaultComputeClassConfig.fromJson(
json_['defaultComputeClassConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
enableNodeAutoprovisioning:
json_['enableNodeAutoprovisioning'] as core.bool?,
resourceLimits: (json_['resourceLimits'] as core.List?)
?.map(
(value) => ResourceLimit.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final autopilotGeneralProfile = this.autopilotGeneralProfile;
final autoprovisioningLocations = this.autoprovisioningLocations;
final autoprovisioningNodePoolDefaults =
this.autoprovisioningNodePoolDefaults;
final autoscalingProfile = this.autoscalingProfile;
final defaultComputeClassConfig = this.defaultComputeClassConfig;
final enableNodeAutoprovisioning = this.enableNodeAutoprovisioning;
final resourceLimits = this.resourceLimits;
return {
'autopilotGeneralProfile': ?autopilotGeneralProfile,
'autoprovisioningLocations': ?autoprovisioningLocations,
'autoprovisioningNodePoolDefaults': ?autoprovisioningNodePoolDefaults,
'autoscalingProfile': ?autoscalingProfile,
'defaultComputeClassConfig': ?defaultComputeClassConfig,
'enableNodeAutoprovisioning': ?enableNodeAutoprovisioning,
'resourceLimits': ?resourceLimits,
};
}
}
/// Configuration of network bandwidth tiers
class ClusterNetworkPerformanceConfig {
/// Specifies the total network bandwidth tier for NodePools in the cluster.
/// Possible string values are:
/// - "TIER_UNSPECIFIED" : Default value
/// - "TIER_1" : Higher bandwidth, actual values based on VM size.
core.String? totalEgressBandwidthTier;
ClusterNetworkPerformanceConfig({this.totalEgressBandwidthTier});
ClusterNetworkPerformanceConfig.fromJson(core.Map json_)
: this(
totalEgressBandwidthTier:
json_['totalEgressBandwidthTier'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final totalEgressBandwidthTier = this.totalEgressBandwidthTier;
return {'totalEgressBandwidthTier': ?totalEgressBandwidthTier};
}
}
/// ClusterPolicyConfig stores the configuration for cluster wide policies.
class ClusterPolicyConfig {
/// Denotes preventing standard node pools and requiring only autopilot node
/// pools.
core.bool? noStandardNodePools;
/// Denotes preventing impersonation and CSRs for GKE System users.
core.bool? noSystemImpersonation;
/// Denotes that preventing creation and mutation of resources in GKE managed
/// namespaces and cluster-scoped GKE managed resources .
core.bool? noSystemMutation;
/// Denotes preventing unsafe webhooks.
core.bool? noUnsafeWebhooks;
ClusterPolicyConfig({
this.noStandardNodePools,
this.noSystemImpersonation,
this.noSystemMutation,
this.noUnsafeWebhooks,
});
ClusterPolicyConfig.fromJson(core.Map json_)
: this(
noStandardNodePools: json_['noStandardNodePools'] as core.bool?,
noSystemImpersonation: json_['noSystemImpersonation'] as core.bool?,
noSystemMutation: json_['noSystemMutation'] as core.bool?,
noUnsafeWebhooks: json_['noUnsafeWebhooks'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final noStandardNodePools = this.noStandardNodePools;
final noSystemImpersonation = this.noSystemImpersonation;
final noSystemMutation = this.noSystemMutation;
final noUnsafeWebhooks = this.noUnsafeWebhooks;
return {
'noStandardNodePools': ?noStandardNodePools,
'noSystemImpersonation': ?noSystemImpersonation,
'noSystemMutation': ?noSystemMutation,
'noUnsafeWebhooks': ?noUnsafeWebhooks,
};
}
}
/// ClusterUpdate describes an update to the cluster.
///
/// Exactly one update can be applied to a cluster with each request, so at most
/// one field can be provided.
class ClusterUpdate {
/// The additional pod ranges to be added to the cluster.
///
/// These pod ranges can be used by node pools to allocate pod IPs.
AdditionalPodRangesConfig? additionalPodRangesConfig;
/// The desired config for additional subnetworks attached to the cluster.
DesiredAdditionalIPRangesConfig? desiredAdditionalIpRangesConfig;
/// Configurations for the various addons available to run in the cluster.
AddonsConfig? desiredAddonsConfig;
/// Configuration for limiting anonymous access to all endpoints except the
/// health checks.
AnonymousAuthenticationConfig? desiredAnonymousAuthenticationConfig;
/// The desired authenticator groups config for the cluster.
AuthenticatorGroupsConfig? desiredAuthenticatorGroupsConfig;
/// AutoIpamConfig contains all information related to Auto IPAM
AutoIpamConfig? desiredAutoIpamConfig;
/// The desired autopilot cluster policies that to be enforced in the cluster.
ClusterPolicyConfig? desiredAutopilotClusterPolicyConfig;
/// WorkloadPolicyConfig is the configuration related to GCW workload policy
WorkloadPolicyConfig? desiredAutopilotWorkloadPolicyConfig;
/// The desired configuration options for the Binary Authorization feature.
BinaryAuthorization? desiredBinaryAuthorization;
/// Cluster-level autoscaling configuration.
ClusterAutoscaling? desiredClusterAutoscaling;
/// Deprecated: Compliance Posture is no longer supported.
///
/// For more details, see
/// https://cloud.google.com/kubernetes-engine/docs/deprecations/posture-management-deprecation.
/// Enable/Disable Compliance Posture features for the cluster.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
CompliancePostureConfig? desiredCompliancePostureConfig;
/// The desired containerd config for the cluster.
ContainerdConfig? desiredContainerdConfig;
/// The desired control plane egress control config for the cluster.
ControlPlaneEgress? desiredControlPlaneEgress;
/// Control plane endpoints configuration.
ControlPlaneEndpointsConfig? desiredControlPlaneEndpointsConfig;
/// The desired configuration for the fine-grained cost management feature.
CostManagementConfig? desiredCostManagementConfig;
/// Configuration of etcd encryption.
DatabaseEncryption? desiredDatabaseEncryption;
/// The desired datapath provider for the cluster.
/// Possible string values are:
/// - "DATAPATH_PROVIDER_UNSPECIFIED" : Default value.
/// - "LEGACY_DATAPATH" : Use the IPTables implementation based on kube-proxy.
/// - "ADVANCED_DATAPATH" : Use the eBPF based GKE Dataplane V2 with
/// additional features. See the
/// [GKE Dataplane V2 documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/dataplane-v2)
/// for more.
core.String? desiredDatapathProvider;
/// Override the default setting of whether future created nodes have private
/// IP addresses only, namely NetworkConfig.default_enable_private_nodes
core.bool? desiredDefaultEnablePrivateNodes;
/// The desired status of whether to disable default sNAT for this cluster.
DefaultSnatStatus? desiredDefaultSnatStatus;
/// Enable/Disable L4 LB VPC firewall reconciliation for the cluster.
core.bool? desiredDisableL4LbFirewallReconciliation;
/// DNSConfig contains clusterDNS config for this cluster.
DNSConfig? desiredDnsConfig;
/// Enable/Disable Cilium Clusterwide Network Policy for the cluster.
core.bool? desiredEnableCiliumClusterwideNetworkPolicy;
/// Enable/Disable FQDN Network Policy for the cluster.
core.bool? desiredEnableFqdnNetworkPolicy;
/// Enable/Disable Multi-Networking for the cluster
core.bool? desiredEnableMultiNetworking;
/// Enable/Disable private endpoint for the cluster's master.
///
/// Deprecated: Use
/// desired_control_plane_endpoints_config.ip_endpoints_config.enable_public_endpoint
/// instead. Note that the value of enable_public_endpoint is reversed: if
/// enable_private_endpoint is false, then enable_public_endpoint will be
/// true.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? desiredEnablePrivateEndpoint;
/// The desired enterprise configuration for the cluster.
///
/// Deprecated: GKE Enterprise features are now available without an
/// Enterprise tier.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
DesiredEnterpriseConfig? desiredEnterpriseConfig;
/// The desired fleet configuration for the cluster.
Fleet? desiredFleet;
/// The desired config of Gateway API on this cluster.
GatewayAPIConfig? desiredGatewayApiConfig;
/// The desired GCFS config for the cluster
GcfsConfig? desiredGcfsConfig;
/// The desired Identity Service component configuration.
IdentityServiceConfig? desiredIdentityServiceConfig;
/// The desired image type for the node pool.
///
/// NOTE: Set the "desired_node_pool" field as well.
core.String? desiredImageType;
/// Specify the details of in-transit encryption.
/// Possible string values are:
/// - "IN_TRANSIT_ENCRYPTION_CONFIG_UNSPECIFIED" : Unspecified, will be
/// inferred as default - IN_TRANSIT_ENCRYPTION_UNSPECIFIED.
/// - "IN_TRANSIT_ENCRYPTION_DISABLED" : In-transit encryption is disabled.
/// - "IN_TRANSIT_ENCRYPTION_INTER_NODE_TRANSPARENT" : Data in-transit is
/// encrypted using inter-node transparent encryption.
core.String? desiredInTransitEncryptionConfig;
/// The desired config of Intra-node visibility.
IntraNodeVisibilityConfig? desiredIntraNodeVisibilityConfig;
/// Desired Beta APIs to be enabled for cluster.
K8sBetaAPIConfig? desiredK8sBetaApis;
/// The desired L4 Internal Load Balancer Subsetting configuration.
ILBSubsettingConfig? desiredL4ilbSubsettingConfig;
/// The desired list of Google Compute Engine
/// [zones](https://cloud.google.com/compute/docs/zones#available) in which
/// the cluster's nodes should be located.
///
/// This list must always include the cluster's primary zone. Warning:
/// changing cluster locations will update the locations of all node pools and
/// will result in nodes being added and/or removed.
core.List<core.String>? desiredLocations;
/// The desired logging configuration.
LoggingConfig? desiredLoggingConfig;
/// The logging service the cluster should use to write logs.
///
/// Currently available options: * `logging.googleapis.com/kubernetes` - The
/// Cloud Logging service with a Kubernetes-native resource model *
/// `logging.googleapis.com` - The legacy Cloud Logging service (no longer
/// available as of GKE 1.15). * `none` - no logs will be exported from the
/// cluster. If left as an empty string,`logging.googleapis.com/kubernetes`
/// will be used for GKE 1.14+ or `logging.googleapis.com` for earlier
/// versions.
core.String? desiredLoggingService;
/// The desired managed machine learning diagnostics configuration.
ManagedMachineLearningDiagnosticsConfig?
desiredManagedMachineLearningDiagnosticsConfig;
/// The desired managed open telemetry configuration.
ManagedOpenTelemetryConfig? desiredManagedOpentelemetryConfig;
/// The desired configuration options for master authorized networks feature.
///
/// Deprecated: Use
/// desired_control_plane_endpoints_config.ip_endpoints_config.authorized_networks_config
/// instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
MasterAuthorizedNetworksConfig? desiredMasterAuthorizedNetworksConfig;
/// The Kubernetes version to change the master to.
///
/// Users may specify either explicit versions offered by Kubernetes Engine or
/// version aliases, which have the following behavior: - "latest": picks the
/// highest valid Kubernetes version - "1.X": picks the highest valid
/// patch+gke.N patch in the 1.X version - "1.X.Y": picks the highest valid
/// gke.N patch in the 1.X.Y version - "1.X.Y-gke.N": picks an explicit
/// Kubernetes version - "-": picks the default Kubernetes version
core.String? desiredMasterVersion;
/// Configuration for issuance of mTLS keys and certificates to Kubernetes
/// pods.
MeshCertificates? desiredMeshCertificates;
/// The desired monitoring configuration.
MonitoringConfig? desiredMonitoringConfig;
/// The monitoring service the cluster should use to write metrics.
///
/// Currently available options: * `monitoring.googleapis.com/kubernetes` -
/// The Cloud Monitoring service with a Kubernetes-native resource model *
/// `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no
/// longer available as of GKE 1.15). * `none` - No metrics will be exported
/// from the cluster. If left as an empty
/// string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+
/// or `monitoring.googleapis.com` for earlier versions.
core.String? desiredMonitoringService;
/// The desired network performance config.
ClusterNetworkPerformanceConfig? desiredNetworkPerformanceConfig;
/// The desired network tier configuration for the cluster.
NetworkTierConfig? desiredNetworkTierConfig;
/// The desired node kubelet config for the cluster.
NodeKubeletConfig? desiredNodeKubeletConfig;
/// The desired node kubelet config for all auto-provisioned node pools in
/// autopilot clusters and node auto-provisioning enabled clusters.
NodeKubeletConfig? desiredNodePoolAutoConfigKubeletConfig;
/// The desired Linux node config for all auto-provisioned node pools in
/// autopilot clusters and node auto-provisioning enabled clusters.
///
/// Currently only `cgroup_mode` can be set here.
LinuxNodeConfig? desiredNodePoolAutoConfigLinuxNodeConfig;
/// The desired network tags that apply to all auto-provisioned node pools in
/// autopilot clusters and node auto-provisioning enabled clusters.
NetworkTags? desiredNodePoolAutoConfigNetworkTags;
/// The desired resource manager tags that apply to all auto-provisioned node
/// pools in autopilot clusters and node auto-provisioning enabled clusters.
ResourceManagerTags? desiredNodePoolAutoConfigResourceManagerTags;
/// Autoscaler configuration for the node pool specified in
/// desired_node_pool_id.
///
/// If there is only one pool in the cluster and desired_node_pool_id is not
/// provided then the change applies to that single node pool.
NodePoolAutoscaling? desiredNodePoolAutoscaling;
/// The node pool to be upgraded.
///
/// This field is mandatory if "desired_node_version", "desired_image_family"
/// or "desired_node_pool_autoscaling" is specified and there is more than one
/// node pool on the cluster.
core.String? desiredNodePoolId;
/// The desired node pool logging configuration defaults for the cluster.
NodePoolLoggingConfig? desiredNodePoolLoggingConfig;
/// The Kubernetes version to change the nodes to (typically an upgrade).
///
/// Users may specify either explicit versions offered by Kubernetes Engine or
/// version aliases, which have the following behavior: - "latest": picks the
/// highest valid Kubernetes version - "1.X": picks the highest valid
/// patch+gke.N patch in the 1.X version - "1.X.Y": picks the highest valid
/// gke.N patch in the 1.X.Y version - "1.X.Y-gke.N": picks an explicit
/// Kubernetes version - "-": picks the Kubernetes master version
core.String? desiredNodeVersion;
/// The desired notification configuration.
NotificationConfig? desiredNotificationConfig;
/// The desired parent product config for the cluster.
ParentProductConfig? desiredParentProductConfig;
/// The desired config for pod autoscaling.
PodAutoscaling? desiredPodAutoscaling;
/// The desired private cluster configuration.
///
/// master_global_access_config is the only field that can be changed via this
/// field. See also ClusterUpdate.desired_enable_private_endpoint for
/// modifying other fields within PrivateClusterConfig. Deprecated: Use
/// desired_control_plane_endpoints_config.ip_endpoints_config.global_access
/// instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
PrivateClusterConfig? desiredPrivateClusterConfig;
/// The desired state of IPv6 connectivity to Google Services.
/// Possible string values are:
/// - "PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED" : Default value. Same as
/// DISABLED
/// - "PRIVATE_IPV6_GOOGLE_ACCESS_DISABLED" : No private access to or from
/// Google Services
/// - "PRIVATE_IPV6_GOOGLE_ACCESS_TO_GOOGLE" : Enables private IPv6 access to
/// Google Services from GKE
/// - "PRIVATE_IPV6_GOOGLE_ACCESS_BIDIRECTIONAL" : Enables private IPv6 access
/// to and from Google Services
core.String? desiredPrivateIpv6GoogleAccess;
/// The desired privileged admission config for the cluster.
PrivilegedAdmissionConfig? desiredPrivilegedAdmissionConfig;
/// RBACBindingConfig allows user to restrict ClusterRoleBindings an
/// RoleBindings that can be created.
RBACBindingConfig? desiredRbacBindingConfig;
/// The desired release channel configuration.
ReleaseChannel? desiredReleaseChannel;
/// The desired configuration for exporting resource usage.
ResourceUsageExportConfig? desiredResourceUsageExportConfig;
/// Enable/Disable Secret Manager Config.
SecretManagerConfig? desiredSecretManagerConfig;
/// Configuration for sync Secret Manager secrets as k8s secrets.
SecretSyncConfig? desiredSecretSyncConfig;
/// Enable/Disable Security Posture API features for the cluster.
SecurityPostureConfig? desiredSecurityPostureConfig;
/// ServiceExternalIPsConfig specifies the config for the use of Services with
/// ExternalIPs field.
ServiceExternalIPsConfig? desiredServiceExternalIpsConfig;
/// Configuration for Shielded Nodes.
ShieldedNodes? desiredShieldedNodes;
/// The desired stack type of the cluster.
///
/// If a stack type is provided and does not match the current stack type of
/// the cluster, update will attempt to change the stack type to the new type.
/// Possible string values are:
/// - "STACK_TYPE_UNSPECIFIED" : Default value, will be defaulted as IPV4 only
/// - "IPV4" : Cluster is IPV4 only
/// - "IPV4_IPV6" : Cluster can use both IPv4 and IPv6
core.String? desiredStackType;
/// The desired user managed keys config for the cluster.
UserManagedKeysConfig? desiredUserManagedKeysConfig;
/// Cluster-level Vertical Pod Autoscaling configuration.
VerticalPodAutoscaling? desiredVerticalPodAutoscaling;
/// Configuration for Workload Identity.
WorkloadIdentityConfig? desiredWorkloadIdentityConfig;
/// Kubernetes open source beta apis enabled on the cluster.
///
/// Only beta apis
K8sBetaAPIConfig? enableK8sBetaApis;
/// The current etag of the cluster.
///
/// If an etag is provided and does not match the current etag of the cluster,
/// update will be blocked and an ABORTED error will be returned.
core.String? etag;
/// Configuration for GKE auto upgrade.
GkeAutoUpgradeConfig? gkeAutoUpgradeConfig;
/// The additional pod ranges that are to be removed from the cluster.
///
/// The pod ranges specified here must have been specified earlier in the
/// 'additional_pod_ranges_config' argument.
AdditionalPodRangesConfig? removedAdditionalPodRangesConfig;
/// The Custom keys configuration for the cluster.
///
/// This field is deprecated. Use
/// ClusterUpdate.desired_user_managed_keys_config instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
UserManagedKeysConfig? userManagedKeysConfig;
ClusterUpdate({
this.additionalPodRangesConfig,
this.desiredAdditionalIpRangesConfig,
this.desiredAddonsConfig,
this.desiredAnonymousAuthenticationConfig,
this.desiredAuthenticatorGroupsConfig,
this.desiredAutoIpamConfig,
this.desiredAutopilotClusterPolicyConfig,
this.desiredAutopilotWorkloadPolicyConfig,
this.desiredBinaryAuthorization,
this.desiredClusterAutoscaling,
this.desiredCompliancePostureConfig,
this.desiredContainerdConfig,
this.desiredControlPlaneEgress,
this.desiredControlPlaneEndpointsConfig,
this.desiredCostManagementConfig,
this.desiredDatabaseEncryption,
this.desiredDatapathProvider,
this.desiredDefaultEnablePrivateNodes,
this.desiredDefaultSnatStatus,
this.desiredDisableL4LbFirewallReconciliation,
this.desiredDnsConfig,
this.desiredEnableCiliumClusterwideNetworkPolicy,
this.desiredEnableFqdnNetworkPolicy,
this.desiredEnableMultiNetworking,
this.desiredEnablePrivateEndpoint,
this.desiredEnterpriseConfig,
this.desiredFleet,
this.desiredGatewayApiConfig,
this.desiredGcfsConfig,
this.desiredIdentityServiceConfig,
this.desiredImageType,
this.desiredInTransitEncryptionConfig,
this.desiredIntraNodeVisibilityConfig,
this.desiredK8sBetaApis,
this.desiredL4ilbSubsettingConfig,
this.desiredLocations,
this.desiredLoggingConfig,
this.desiredLoggingService,
this.desiredManagedMachineLearningDiagnosticsConfig,
this.desiredManagedOpentelemetryConfig,
this.desiredMasterAuthorizedNetworksConfig,
this.desiredMasterVersion,
this.desiredMeshCertificates,
this.desiredMonitoringConfig,
this.desiredMonitoringService,
this.desiredNetworkPerformanceConfig,
this.desiredNetworkTierConfig,
this.desiredNodeKubeletConfig,
this.desiredNodePoolAutoConfigKubeletConfig,
this.desiredNodePoolAutoConfigLinuxNodeConfig,
this.desiredNodePoolAutoConfigNetworkTags,
this.desiredNodePoolAutoConfigResourceManagerTags,
this.desiredNodePoolAutoscaling,
this.desiredNodePoolId,
this.desiredNodePoolLoggingConfig,
this.desiredNodeVersion,
this.desiredNotificationConfig,
this.desiredParentProductConfig,
this.desiredPodAutoscaling,
this.desiredPrivateClusterConfig,
this.desiredPrivateIpv6GoogleAccess,
this.desiredPrivilegedAdmissionConfig,
this.desiredRbacBindingConfig,
this.desiredReleaseChannel,
this.desiredResourceUsageExportConfig,
this.desiredSecretManagerConfig,
this.desiredSecretSyncConfig,
this.desiredSecurityPostureConfig,
this.desiredServiceExternalIpsConfig,
this.desiredShieldedNodes,
this.desiredStackType,
this.desiredUserManagedKeysConfig,
this.desiredVerticalPodAutoscaling,
this.desiredWorkloadIdentityConfig,
this.enableK8sBetaApis,
this.etag,
this.gkeAutoUpgradeConfig,
this.removedAdditionalPodRangesConfig,
this.userManagedKeysConfig,
});
ClusterUpdate.fromJson(core.Map json_)
: this(
additionalPodRangesConfig:
json_.containsKey('additionalPodRangesConfig')
? AdditionalPodRangesConfig.fromJson(
json_['additionalPodRangesConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredAdditionalIpRangesConfig:
json_.containsKey('desiredAdditionalIpRangesConfig')
? DesiredAdditionalIPRangesConfig.fromJson(
json_['desiredAdditionalIpRangesConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredAddonsConfig: json_.containsKey('desiredAddonsConfig')
? AddonsConfig.fromJson(
json_['desiredAddonsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredAnonymousAuthenticationConfig:
json_.containsKey('desiredAnonymousAuthenticationConfig')
? AnonymousAuthenticationConfig.fromJson(
json_['desiredAnonymousAuthenticationConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredAuthenticatorGroupsConfig:
json_.containsKey('desiredAuthenticatorGroupsConfig')
? AuthenticatorGroupsConfig.fromJson(
json_['desiredAuthenticatorGroupsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredAutoIpamConfig: json_.containsKey('desiredAutoIpamConfig')
? AutoIpamConfig.fromJson(
json_['desiredAutoIpamConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredAutopilotClusterPolicyConfig:
json_.containsKey('desiredAutopilotClusterPolicyConfig')
? ClusterPolicyConfig.fromJson(
json_['desiredAutopilotClusterPolicyConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredAutopilotWorkloadPolicyConfig:
json_.containsKey('desiredAutopilotWorkloadPolicyConfig')
? WorkloadPolicyConfig.fromJson(
json_['desiredAutopilotWorkloadPolicyConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredBinaryAuthorization:
json_.containsKey('desiredBinaryAuthorization')
? BinaryAuthorization.fromJson(
json_['desiredBinaryAuthorization']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredClusterAutoscaling:
json_.containsKey('desiredClusterAutoscaling')
? ClusterAutoscaling.fromJson(
json_['desiredClusterAutoscaling']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredCompliancePostureConfig:
json_.containsKey('desiredCompliancePostureConfig')
? CompliancePostureConfig.fromJson(
json_['desiredCompliancePostureConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredContainerdConfig: json_.containsKey('desiredContainerdConfig')
? ContainerdConfig.fromJson(
json_['desiredContainerdConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredControlPlaneEgress:
json_.containsKey('desiredControlPlaneEgress')
? ControlPlaneEgress.fromJson(
json_['desiredControlPlaneEgress']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredControlPlaneEndpointsConfig:
json_.containsKey('desiredControlPlaneEndpointsConfig')
? ControlPlaneEndpointsConfig.fromJson(
json_['desiredControlPlaneEndpointsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredCostManagementConfig:
json_.containsKey('desiredCostManagementConfig')
? CostManagementConfig.fromJson(
json_['desiredCostManagementConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredDatabaseEncryption:
json_.containsKey('desiredDatabaseEncryption')
? DatabaseEncryption.fromJson(
json_['desiredDatabaseEncryption']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredDatapathProvider:
json_['desiredDatapathProvider'] as core.String?,
desiredDefaultEnablePrivateNodes:
json_['desiredDefaultEnablePrivateNodes'] as core.bool?,
desiredDefaultSnatStatus: json_.containsKey('desiredDefaultSnatStatus')
? DefaultSnatStatus.fromJson(
json_['desiredDefaultSnatStatus']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredDisableL4LbFirewallReconciliation:
json_['desiredDisableL4LbFirewallReconciliation'] as core.bool?,
desiredDnsConfig: json_.containsKey('desiredDnsConfig')
? DNSConfig.fromJson(
json_['desiredDnsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredEnableCiliumClusterwideNetworkPolicy:
json_['desiredEnableCiliumClusterwideNetworkPolicy'] as core.bool?,
desiredEnableFqdnNetworkPolicy:
json_['desiredEnableFqdnNetworkPolicy'] as core.bool?,
desiredEnableMultiNetworking:
json_['desiredEnableMultiNetworking'] as core.bool?,
desiredEnablePrivateEndpoint:
json_['desiredEnablePrivateEndpoint'] as core.bool?,
desiredEnterpriseConfig: json_.containsKey('desiredEnterpriseConfig')
? DesiredEnterpriseConfig.fromJson(
json_['desiredEnterpriseConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredFleet: json_.containsKey('desiredFleet')
? Fleet.fromJson(
json_['desiredFleet'] as core.Map<core.String, core.dynamic>,
)
: null,
desiredGatewayApiConfig: json_.containsKey('desiredGatewayApiConfig')
? GatewayAPIConfig.fromJson(
json_['desiredGatewayApiConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredGcfsConfig: json_.containsKey('desiredGcfsConfig')
? GcfsConfig.fromJson(
json_['desiredGcfsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredIdentityServiceConfig:
json_.containsKey('desiredIdentityServiceConfig')
? IdentityServiceConfig.fromJson(
json_['desiredIdentityServiceConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredImageType: json_['desiredImageType'] as core.String?,
desiredInTransitEncryptionConfig:
json_['desiredInTransitEncryptionConfig'] as core.String?,
desiredIntraNodeVisibilityConfig:
json_.containsKey('desiredIntraNodeVisibilityConfig')
? IntraNodeVisibilityConfig.fromJson(
json_['desiredIntraNodeVisibilityConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredK8sBetaApis: json_.containsKey('desiredK8sBetaApis')
? K8sBetaAPIConfig.fromJson(
json_['desiredK8sBetaApis']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredL4ilbSubsettingConfig:
json_.containsKey('desiredL4ilbSubsettingConfig')
? ILBSubsettingConfig.fromJson(
json_['desiredL4ilbSubsettingConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredLocations: (json_['desiredLocations'] as core.List?)
?.map((value) => value as core.String)
.toList(),
desiredLoggingConfig: json_.containsKey('desiredLoggingConfig')
? LoggingConfig.fromJson(
json_['desiredLoggingConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredLoggingService: json_['desiredLoggingService'] as core.String?,
desiredManagedMachineLearningDiagnosticsConfig:
json_.containsKey('desiredManagedMachineLearningDiagnosticsConfig')
? ManagedMachineLearningDiagnosticsConfig.fromJson(
json_['desiredManagedMachineLearningDiagnosticsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredManagedOpentelemetryConfig:
json_.containsKey('desiredManagedOpentelemetryConfig')
? ManagedOpenTelemetryConfig.fromJson(
json_['desiredManagedOpentelemetryConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredMasterAuthorizedNetworksConfig:
json_.containsKey('desiredMasterAuthorizedNetworksConfig')
? MasterAuthorizedNetworksConfig.fromJson(
json_['desiredMasterAuthorizedNetworksConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredMasterVersion: json_['desiredMasterVersion'] as core.String?,
desiredMeshCertificates: json_.containsKey('desiredMeshCertificates')
? MeshCertificates.fromJson(
json_['desiredMeshCertificates']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredMonitoringConfig: json_.containsKey('desiredMonitoringConfig')
? MonitoringConfig.fromJson(
json_['desiredMonitoringConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredMonitoringService:
json_['desiredMonitoringService'] as core.String?,
desiredNetworkPerformanceConfig:
json_.containsKey('desiredNetworkPerformanceConfig')
? ClusterNetworkPerformanceConfig.fromJson(
json_['desiredNetworkPerformanceConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredNetworkTierConfig: json_.containsKey('desiredNetworkTierConfig')
? NetworkTierConfig.fromJson(
json_['desiredNetworkTierConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredNodeKubeletConfig: json_.containsKey('desiredNodeKubeletConfig')
? NodeKubeletConfig.fromJson(
json_['desiredNodeKubeletConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredNodePoolAutoConfigKubeletConfig:
json_.containsKey('desiredNodePoolAutoConfigKubeletConfig')
? NodeKubeletConfig.fromJson(
json_['desiredNodePoolAutoConfigKubeletConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredNodePoolAutoConfigLinuxNodeConfig:
json_.containsKey('desiredNodePoolAutoConfigLinuxNodeConfig')
? LinuxNodeConfig.fromJson(
json_['desiredNodePoolAutoConfigLinuxNodeConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredNodePoolAutoConfigNetworkTags:
json_.containsKey('desiredNodePoolAutoConfigNetworkTags')
? NetworkTags.fromJson(
json_['desiredNodePoolAutoConfigNetworkTags']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredNodePoolAutoConfigResourceManagerTags:
json_.containsKey('desiredNodePoolAutoConfigResourceManagerTags')
? ResourceManagerTags.fromJson(
json_['desiredNodePoolAutoConfigResourceManagerTags']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredNodePoolAutoscaling:
json_.containsKey('desiredNodePoolAutoscaling')
? NodePoolAutoscaling.fromJson(
json_['desiredNodePoolAutoscaling']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredNodePoolId: json_['desiredNodePoolId'] as core.String?,
desiredNodePoolLoggingConfig:
json_.containsKey('desiredNodePoolLoggingConfig')
? NodePoolLoggingConfig.fromJson(
json_['desiredNodePoolLoggingConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredNodeVersion: json_['desiredNodeVersion'] as core.String?,
desiredNotificationConfig:
json_.containsKey('desiredNotificationConfig')
? NotificationConfig.fromJson(
json_['desiredNotificationConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredParentProductConfig:
json_.containsKey('desiredParentProductConfig')
? ParentProductConfig.fromJson(
json_['desiredParentProductConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredPodAutoscaling: json_.containsKey('desiredPodAutoscaling')
? PodAutoscaling.fromJson(
json_['desiredPodAutoscaling']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredPrivateClusterConfig:
json_.containsKey('desiredPrivateClusterConfig')
? PrivateClusterConfig.fromJson(
json_['desiredPrivateClusterConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredPrivateIpv6GoogleAccess:
json_['desiredPrivateIpv6GoogleAccess'] as core.String?,
desiredPrivilegedAdmissionConfig:
json_.containsKey('desiredPrivilegedAdmissionConfig')
? PrivilegedAdmissionConfig.fromJson(
json_['desiredPrivilegedAdmissionConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredRbacBindingConfig: json_.containsKey('desiredRbacBindingConfig')
? RBACBindingConfig.fromJson(
json_['desiredRbacBindingConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredReleaseChannel: json_.containsKey('desiredReleaseChannel')
? ReleaseChannel.fromJson(
json_['desiredReleaseChannel']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredResourceUsageExportConfig:
json_.containsKey('desiredResourceUsageExportConfig')
? ResourceUsageExportConfig.fromJson(
json_['desiredResourceUsageExportConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredSecretManagerConfig:
json_.containsKey('desiredSecretManagerConfig')
? SecretManagerConfig.fromJson(
json_['desiredSecretManagerConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredSecretSyncConfig: json_.containsKey('desiredSecretSyncConfig')
? SecretSyncConfig.fromJson(
json_['desiredSecretSyncConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredSecurityPostureConfig:
json_.containsKey('desiredSecurityPostureConfig')
? SecurityPostureConfig.fromJson(
json_['desiredSecurityPostureConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredServiceExternalIpsConfig:
json_.containsKey('desiredServiceExternalIpsConfig')
? ServiceExternalIPsConfig.fromJson(
json_['desiredServiceExternalIpsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredShieldedNodes: json_.containsKey('desiredShieldedNodes')
? ShieldedNodes.fromJson(
json_['desiredShieldedNodes']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredStackType: json_['desiredStackType'] as core.String?,
desiredUserManagedKeysConfig:
json_.containsKey('desiredUserManagedKeysConfig')
? UserManagedKeysConfig.fromJson(
json_['desiredUserManagedKeysConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredVerticalPodAutoscaling:
json_.containsKey('desiredVerticalPodAutoscaling')
? VerticalPodAutoscaling.fromJson(
json_['desiredVerticalPodAutoscaling']
as core.Map<core.String, core.dynamic>,
)
: null,
desiredWorkloadIdentityConfig:
json_.containsKey('desiredWorkloadIdentityConfig')
? WorkloadIdentityConfig.fromJson(
json_['desiredWorkloadIdentityConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
enableK8sBetaApis: json_.containsKey('enableK8sBetaApis')
? K8sBetaAPIConfig.fromJson(
json_['enableK8sBetaApis']
as core.Map<core.String, core.dynamic>,
)
: null,
etag: json_['etag'] as core.String?,
gkeAutoUpgradeConfig: json_.containsKey('gkeAutoUpgradeConfig')
? GkeAutoUpgradeConfig.fromJson(
json_['gkeAutoUpgradeConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
removedAdditionalPodRangesConfig:
json_.containsKey('removedAdditionalPodRangesConfig')
? AdditionalPodRangesConfig.fromJson(
json_['removedAdditionalPodRangesConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
userManagedKeysConfig: json_.containsKey('userManagedKeysConfig')
? UserManagedKeysConfig.fromJson(
json_['userManagedKeysConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final additionalPodRangesConfig = this.additionalPodRangesConfig;
final desiredAdditionalIpRangesConfig =
this.desiredAdditionalIpRangesConfig;
final desiredAddonsConfig = this.desiredAddonsConfig;
final desiredAnonymousAuthenticationConfig =
this.desiredAnonymousAuthenticationConfig;
final desiredAuthenticatorGroupsConfig =
this.desiredAuthenticatorGroupsConfig;
final desiredAutoIpamConfig = this.desiredAutoIpamConfig;
final desiredAutopilotClusterPolicyConfig =
this.desiredAutopilotClusterPolicyConfig;
final desiredAutopilotWorkloadPolicyConfig =
this.desiredAutopilotWorkloadPolicyConfig;
final desiredBinaryAuthorization = this.desiredBinaryAuthorization;
final desiredClusterAutoscaling = this.desiredClusterAutoscaling;
final desiredCompliancePostureConfig = this.desiredCompliancePostureConfig;
final desiredContainerdConfig = this.desiredContainerdConfig;
final desiredControlPlaneEgress = this.desiredControlPlaneEgress;
final desiredControlPlaneEndpointsConfig =
this.desiredControlPlaneEndpointsConfig;
final desiredCostManagementConfig = this.desiredCostManagementConfig;
final desiredDatabaseEncryption = this.desiredDatabaseEncryption;
final desiredDatapathProvider = this.desiredDatapathProvider;
final desiredDefaultEnablePrivateNodes =
this.desiredDefaultEnablePrivateNodes;
final desiredDefaultSnatStatus = this.desiredDefaultSnatStatus;
final desiredDisableL4LbFirewallReconciliation =
this.desiredDisableL4LbFirewallReconciliation;
final desiredDnsConfig = this.desiredDnsConfig;
final desiredEnableCiliumClusterwideNetworkPolicy =
this.desiredEnableCiliumClusterwideNetworkPolicy;
final desiredEnableFqdnNetworkPolicy = this.desiredEnableFqdnNetworkPolicy;
final desiredEnableMultiNetworking = this.desiredEnableMultiNetworking;
final desiredEnablePrivateEndpoint = this.desiredEnablePrivateEndpoint;
final desiredEnterpriseConfig = this.desiredEnterpriseConfig;
final desiredFleet = this.desiredFleet;
final desiredGatewayApiConfig = this.desiredGatewayApiConfig;
final desiredGcfsConfig = this.desiredGcfsConfig;
final desiredIdentityServiceConfig = this.desiredIdentityServiceConfig;
final desiredImageType = this.desiredImageType;
final desiredInTransitEncryptionConfig =
this.desiredInTransitEncryptionConfig;
final desiredIntraNodeVisibilityConfig =
this.desiredIntraNodeVisibilityConfig;
final desiredK8sBetaApis = this.desiredK8sBetaApis;
final desiredL4ilbSubsettingConfig = this.desiredL4ilbSubsettingConfig;
final desiredLocations = this.desiredLocations;
final desiredLoggingConfig = this.desiredLoggingConfig;
final desiredLoggingService = this.desiredLoggingService;
final desiredManagedMachineLearningDiagnosticsConfig =
this.desiredManagedMachineLearningDiagnosticsConfig;
final desiredManagedOpentelemetryConfig =
this.desiredManagedOpentelemetryConfig;
final desiredMasterAuthorizedNetworksConfig =
this.desiredMasterAuthorizedNetworksConfig;
final desiredMasterVersion = this.desiredMasterVersion;
final desiredMeshCertificates = this.desiredMeshCertificates;
final desiredMonitoringConfig = this.desiredMonitoringConfig;
final desiredMonitoringService = this.desiredMonitoringService;
final desiredNetworkPerformanceConfig =
this.desiredNetworkPerformanceConfig;
final desiredNetworkTierConfig = this.desiredNetworkTierConfig;
final desiredNodeKubeletConfig = this.desiredNodeKubeletConfig;
final desiredNodePoolAutoConfigKubeletConfig =
this.desiredNodePoolAutoConfigKubeletConfig;
final desiredNodePoolAutoConfigLinuxNodeConfig =
this.desiredNodePoolAutoConfigLinuxNodeConfig;
final desiredNodePoolAutoConfigNetworkTags =
this.desiredNodePoolAutoConfigNetworkTags;
final desiredNodePoolAutoConfigResourceManagerTags =
this.desiredNodePoolAutoConfigResourceManagerTags;
final desiredNodePoolAutoscaling = this.desiredNodePoolAutoscaling;
final desiredNodePoolId = this.desiredNodePoolId;
final desiredNodePoolLoggingConfig = this.desiredNodePoolLoggingConfig;
final desiredNodeVersion = this.desiredNodeVersion;
final desiredNotificationConfig = this.desiredNotificationConfig;
final desiredParentProductConfig = this.desiredParentProductConfig;
final desiredPodAutoscaling = this.desiredPodAutoscaling;
final desiredPrivateClusterConfig = this.desiredPrivateClusterConfig;
final desiredPrivateIpv6GoogleAccess = this.desiredPrivateIpv6GoogleAccess;
final desiredPrivilegedAdmissionConfig =
this.desiredPrivilegedAdmissionConfig;
final desiredRbacBindingConfig = this.desiredRbacBindingConfig;
final desiredReleaseChannel = this.desiredReleaseChannel;
final desiredResourceUsageExportConfig =
this.desiredResourceUsageExportConfig;
final desiredSecretManagerConfig = this.desiredSecretManagerConfig;
final desiredSecretSyncConfig = this.desiredSecretSyncConfig;
final desiredSecurityPostureConfig = this.desiredSecurityPostureConfig;
final desiredServiceExternalIpsConfig =
this.desiredServiceExternalIpsConfig;
final desiredShieldedNodes = this.desiredShieldedNodes;
final desiredStackType = this.desiredStackType;
final desiredUserManagedKeysConfig = this.desiredUserManagedKeysConfig;
final desiredVerticalPodAutoscaling = this.desiredVerticalPodAutoscaling;
final desiredWorkloadIdentityConfig = this.desiredWorkloadIdentityConfig;
final enableK8sBetaApis = this.enableK8sBetaApis;
final etag = this.etag;
final gkeAutoUpgradeConfig = this.gkeAutoUpgradeConfig;
final removedAdditionalPodRangesConfig =
this.removedAdditionalPodRangesConfig;
final userManagedKeysConfig = this.userManagedKeysConfig;
return {
'additionalPodRangesConfig': ?additionalPodRangesConfig,
'desiredAdditionalIpRangesConfig': ?desiredAdditionalIpRangesConfig,
'desiredAddonsConfig': ?desiredAddonsConfig,
'desiredAnonymousAuthenticationConfig':
?desiredAnonymousAuthenticationConfig,
'desiredAuthenticatorGroupsConfig': ?desiredAuthenticatorGroupsConfig,
'desiredAutoIpamConfig': ?desiredAutoIpamConfig,
'desiredAutopilotClusterPolicyConfig':
?desiredAutopilotClusterPolicyConfig,
'desiredAutopilotWorkloadPolicyConfig':
?desiredAutopilotWorkloadPolicyConfig,
'desiredBinaryAuthorization': ?desiredBinaryAuthorization,
'desiredClusterAutoscaling': ?desiredClusterAutoscaling,
'desiredCompliancePostureConfig': ?desiredCompliancePostureConfig,
'desiredContainerdConfig': ?desiredContainerdConfig,
'desiredControlPlaneEgress': ?desiredControlPlaneEgress,
'desiredControlPlaneEndpointsConfig': ?desiredControlPlaneEndpointsConfig,
'desiredCostManagementConfig': ?desiredCostManagementConfig,
'desiredDatabaseEncryption': ?desiredDatabaseEncryption,
'desiredDatapathProvider': ?desiredDatapathProvider,
'desiredDefaultEnablePrivateNodes': ?desiredDefaultEnablePrivateNodes,
'desiredDefaultSnatStatus': ?desiredDefaultSnatStatus,
'desiredDisableL4LbFirewallReconciliation':
?desiredDisableL4LbFirewallReconciliation,
'desiredDnsConfig': ?desiredDnsConfig,
'desiredEnableCiliumClusterwideNetworkPolicy':
?desiredEnableCiliumClusterwideNetworkPolicy,
'desiredEnableFqdnNetworkPolicy': ?desiredEnableFqdnNetworkPolicy,
'desiredEnableMultiNetworking': ?desiredEnableMultiNetworking,
'desiredEnablePrivateEndpoint': ?desiredEnablePrivateEndpoint,
'desiredEnterpriseConfig': ?desiredEnterpriseConfig,
'desiredFleet': ?desiredFleet,
'desiredGatewayApiConfig': ?desiredGatewayApiConfig,
'desiredGcfsConfig': ?desiredGcfsConfig,
'desiredIdentityServiceConfig': ?desiredIdentityServiceConfig,
'desiredImageType': ?desiredImageType,
'desiredInTransitEncryptionConfig': ?desiredInTransitEncryptionConfig,
'desiredIntraNodeVisibilityConfig': ?desiredIntraNodeVisibilityConfig,
'desiredK8sBetaApis': ?desiredK8sBetaApis,
'desiredL4ilbSubsettingConfig': ?desiredL4ilbSubsettingConfig,
'desiredLocations': ?desiredLocations,
'desiredLoggingConfig': ?desiredLoggingConfig,
'desiredLoggingService': ?desiredLoggingService,
'desiredManagedMachineLearningDiagnosticsConfig':
?desiredManagedMachineLearningDiagnosticsConfig,
'desiredManagedOpentelemetryConfig': ?desiredManagedOpentelemetryConfig,
'desiredMasterAuthorizedNetworksConfig':
?desiredMasterAuthorizedNetworksConfig,
'desiredMasterVersion': ?desiredMasterVersion,
'desiredMeshCertificates': ?desiredMeshCertificates,
'desiredMonitoringConfig': ?desiredMonitoringConfig,
'desiredMonitoringService': ?desiredMonitoringService,
'desiredNetworkPerformanceConfig': ?desiredNetworkPerformanceConfig,
'desiredNetworkTierConfig': ?desiredNetworkTierConfig,
'desiredNodeKubeletConfig': ?desiredNodeKubeletConfig,
'desiredNodePoolAutoConfigKubeletConfig':
?desiredNodePoolAutoConfigKubeletConfig,
'desiredNodePoolAutoConfigLinuxNodeConfig':
?desiredNodePoolAutoConfigLinuxNodeConfig,
'desiredNodePoolAutoConfigNetworkTags':
?desiredNodePoolAutoConfigNetworkTags,
'desiredNodePoolAutoConfigResourceManagerTags':
?desiredNodePoolAutoConfigResourceManagerTags,
'desiredNodePoolAutoscaling': ?desiredNodePoolAutoscaling,
'desiredNodePoolId': ?desiredNodePoolId,
'desiredNodePoolLoggingConfig': ?desiredNodePoolLoggingConfig,
'desiredNodeVersion': ?desiredNodeVersion,
'desiredNotificationConfig': ?desiredNotificationConfig,
'desiredParentProductConfig': ?desiredParentProductConfig,
'desiredPodAutoscaling': ?desiredPodAutoscaling,
'desiredPrivateClusterConfig': ?desiredPrivateClusterConfig,
'desiredPrivateIpv6GoogleAccess': ?desiredPrivateIpv6GoogleAccess,
'desiredPrivilegedAdmissionConfig': ?desiredPrivilegedAdmissionConfig,
'desiredRbacBindingConfig': ?desiredRbacBindingConfig,
'desiredReleaseChannel': ?desiredReleaseChannel,
'desiredResourceUsageExportConfig': ?desiredResourceUsageExportConfig,
'desiredSecretManagerConfig': ?desiredSecretManagerConfig,
'desiredSecretSyncConfig': ?desiredSecretSyncConfig,
'desiredSecurityPostureConfig': ?desiredSecurityPostureConfig,
'desiredServiceExternalIpsConfig': ?desiredServiceExternalIpsConfig,
'desiredShieldedNodes': ?desiredShieldedNodes,
'desiredStackType': ?desiredStackType,
'desiredUserManagedKeysConfig': ?desiredUserManagedKeysConfig,
'desiredVerticalPodAutoscaling': ?desiredVerticalPodAutoscaling,
'desiredWorkloadIdentityConfig': ?desiredWorkloadIdentityConfig,
'enableK8sBetaApis': ?enableK8sBetaApis,
'etag': ?etag,
'gkeAutoUpgradeConfig': ?gkeAutoUpgradeConfig,
'removedAdditionalPodRangesConfig': ?removedAdditionalPodRangesConfig,
'userManagedKeysConfig': ?userManagedKeysConfig,
};
}
}
/// ClusterUpgradeInfo contains the upgrade information of a cluster.
class ClusterUpgradeInfo {
/// The auto upgrade status.
core.List<core.String>? autoUpgradeStatus;
/// The cluster's current minor version's end of extended support timestamp.
core.String? endOfExtendedSupportTimestamp;
/// The cluster's current minor version's end of standard support timestamp.
core.String? endOfStandardSupportTimestamp;
/// minor_target_version indicates the target version for minor upgrade.
core.String? minorTargetVersion;
/// patch_target_version indicates the target version for patch upgrade.
core.String? patchTargetVersion;
/// The auto upgrade paused reason.
core.List<core.String>? pausedReason;
/// The list of past auto upgrades.
core.List<UpgradeDetails>? upgradeDetails;
ClusterUpgradeInfo({
this.autoUpgradeStatus,
this.endOfExtendedSupportTimestamp,
this.endOfStandardSupportTimestamp,
this.minorTargetVersion,
this.patchTargetVersion,
this.pausedReason,
this.upgradeDetails,
});
ClusterUpgradeInfo.fromJson(core.Map json_)
: this(
autoUpgradeStatus: (json_['autoUpgradeStatus'] as core.List?)
?.map((value) => value as core.String)
.toList(),
endOfExtendedSupportTimestamp:
json_['endOfExtendedSupportTimestamp'] as core.String?,
endOfStandardSupportTimestamp:
json_['endOfStandardSupportTimestamp'] as core.String?,
minorTargetVersion: json_['minorTargetVersion'] as core.String?,
patchTargetVersion: json_['patchTargetVersion'] as core.String?,
pausedReason: (json_['pausedReason'] as core.List?)
?.map((value) => value as core.String)
.toList(),
upgradeDetails: (json_['upgradeDetails'] as core.List?)
?.map(
(value) => UpgradeDetails.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final autoUpgradeStatus = this.autoUpgradeStatus;
final endOfExtendedSupportTimestamp = this.endOfExtendedSupportTimestamp;
final endOfStandardSupportTimestamp = this.endOfStandardSupportTimestamp;
final minorTargetVersion = this.minorTargetVersion;
final patchTargetVersion = this.patchTargetVersion;
final pausedReason = this.pausedReason;
final upgradeDetails = this.upgradeDetails;
return {
'autoUpgradeStatus': ?autoUpgradeStatus,
'endOfExtendedSupportTimestamp': ?endOfExtendedSupportTimestamp,
'endOfStandardSupportTimestamp': ?endOfStandardSupportTimestamp,
'minorTargetVersion': ?minorTargetVersion,
'patchTargetVersion': ?patchTargetVersion,
'pausedReason': ?pausedReason,
'upgradeDetails': ?upgradeDetails,
};
}
}
/// CompleteIPRotationRequest moves the cluster master back into single-IP mode.
class CompleteIPRotationRequest {
/// The name of the cluster.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The name (project, location, cluster name) of the cluster to complete IP
/// rotation.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
CompleteIPRotationRequest({
this.clusterId,
this.name,
this.projectId,
this.zone,
});
CompleteIPRotationRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final name = this.name;
final projectId = this.projectId;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'name': ?name,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// CompleteNodePoolUpgradeRequest sets the name of target node pool to complete
/// upgrade.
typedef CompleteNodePoolUpgradeRequest = $Empty;
/// Deprecated: Compliance Posture is no longer supported.
///
/// For more details, see
/// https://cloud.google.com/kubernetes-engine/docs/deprecations/posture-management-deprecation.
/// CompliancePostureConfig defines the settings needed to enable/disable
/// features for the Compliance Posture.
class CompliancePostureConfig {
/// List of enabled compliance standards.
core.List<ComplianceStandard>? complianceStandards;
/// Defines the enablement mode for Compliance Posture.
/// Possible string values are:
/// - "MODE_UNSPECIFIED" : Default value not specified.
/// - "DISABLED" : Disables Compliance Posture features on the cluster.
/// - "ENABLED" : Enables Compliance Posture features on the cluster.
core.String? mode;
CompliancePostureConfig({this.complianceStandards, this.mode});
CompliancePostureConfig.fromJson(core.Map json_)
: this(
complianceStandards: (json_['complianceStandards'] as core.List?)
?.map(
(value) => ComplianceStandard.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
mode: json_['mode'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final complianceStandards = this.complianceStandards;
final mode = this.mode;
return {'complianceStandards': ?complianceStandards, 'mode': ?mode};
}
}
/// Defines the details of a compliance standard.
typedef ComplianceStandard = $ComplianceStandard;
/// ConfidentialNodes is configuration for the confidential nodes feature, which
/// makes nodes run on confidential VMs.
class ConfidentialNodes {
/// Defines the type of technology used by the confidential node.
/// Possible string values are:
/// - "CONFIDENTIAL_INSTANCE_TYPE_UNSPECIFIED" : No type specified. Do not use
/// this value.
/// - "SEV" : AMD Secure Encrypted Virtualization.
/// - "SEV_SNP" : AMD Secure Encrypted Virtualization - Secure Nested Paging.
/// - "TDX" : Intel Trust Domain eXtension.
core.String? confidentialInstanceType;
/// Whether Confidential Nodes feature is enabled.
core.bool? enabled;
ConfidentialNodes({this.confidentialInstanceType, this.enabled});
ConfidentialNodes.fromJson(core.Map json_)
: this(
confidentialInstanceType:
json_['confidentialInstanceType'] as core.String?,
enabled: json_['enabled'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final confidentialInstanceType = this.confidentialInstanceType;
final enabled = this.enabled;
return {
'confidentialInstanceType': ?confidentialInstanceType,
'enabled': ?enabled,
};
}
}
/// Configuration options for the Config Connector add-on.
class ConfigConnectorConfig {
/// Whether Cloud Connector is enabled for this cluster.
core.bool? enabled;
ConfigConnectorConfig({this.enabled});
ConfigConnectorConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Parameters for controlling consumption metering.
class ConsumptionMeteringConfig {
/// Whether to enable consumption metering for this cluster.
///
/// If enabled, a second BigQuery table will be created to hold resource
/// consumption records.
core.bool? enabled;
ConsumptionMeteringConfig({this.enabled});
ConsumptionMeteringConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// ContainerdConfig contains configuration to customize containerd.
class ContainerdConfig {
/// PrivateRegistryAccessConfig is used to configure access configuration for
/// private container registries.
PrivateRegistryAccessConfig? privateRegistryAccessConfig;
/// RegistryHostConfig configures containerd registry host configuration.
///
/// Each registry_hosts represents a hosts.toml file. At most 25
/// registry_hosts are allowed.
core.List<RegistryHostConfig>? registryHosts;
/// WritableCgroups defines writable cgroups configuration for the node pool.
///
/// Optional.
WritableCgroups? writableCgroups;
ContainerdConfig({
this.privateRegistryAccessConfig,
this.registryHosts,
this.writableCgroups,
});
ContainerdConfig.fromJson(core.Map json_)
: this(
privateRegistryAccessConfig:
json_.containsKey('privateRegistryAccessConfig')
? PrivateRegistryAccessConfig.fromJson(
json_['privateRegistryAccessConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
registryHosts: (json_['registryHosts'] as core.List?)
?.map(
(value) => RegistryHostConfig.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
writableCgroups: json_.containsKey('writableCgroups')
? WritableCgroups.fromJson(
json_['writableCgroups'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final privateRegistryAccessConfig = this.privateRegistryAccessConfig;
final registryHosts = this.registryHosts;
final writableCgroups = this.writableCgroups;
return {
'privateRegistryAccessConfig': ?privateRegistryAccessConfig,
'registryHosts': ?registryHosts,
'writableCgroups': ?writableCgroups,
};
}
}
/// ControlPlaneEgress defines the settings needed to enable control plane
/// egress control.
class ControlPlaneEgress {
/// Defines the mode of control plane egress.
/// Possible string values are:
/// - "MODE_UNSPECIFIED" : Default value not specified.
/// - "VIA_CONTROL_PLANE" : Control plane has public IP and no restriction on
/// egress.
/// - "NONE" : No public IP on control plane and only internal allowlisted
/// egress.
core.String? mode;
ControlPlaneEgress({this.mode});
ControlPlaneEgress.fromJson(core.Map json_)
: this(mode: json_['mode'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final mode = this.mode;
return {'mode': ?mode};
}
}
/// Configuration for all of the cluster's control plane endpoints.
class ControlPlaneEndpointsConfig {
/// DNS endpoint configuration.
DNSEndpointConfig? dnsEndpointConfig;
/// IP endpoints configuration.
IPEndpointsConfig? ipEndpointsConfig;
ControlPlaneEndpointsConfig({this.dnsEndpointConfig, this.ipEndpointsConfig});
ControlPlaneEndpointsConfig.fromJson(core.Map json_)
: this(
dnsEndpointConfig: json_.containsKey('dnsEndpointConfig')
? DNSEndpointConfig.fromJson(
json_['dnsEndpointConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
ipEndpointsConfig: json_.containsKey('ipEndpointsConfig')
? IPEndpointsConfig.fromJson(
json_['ipEndpointsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final dnsEndpointConfig = this.dnsEndpointConfig;
final ipEndpointsConfig = this.ipEndpointsConfig;
return {
'dnsEndpointConfig': ?dnsEndpointConfig,
'ipEndpointsConfig': ?ipEndpointsConfig,
};
}
}
/// Configuration for fine-grained cost management feature.
class CostManagementConfig {
/// Whether the feature is enabled or not.
core.bool? enabled;
CostManagementConfig({this.enabled});
CostManagementConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Contains config to modify node-level parameters for container restart
/// behavior.
class CrashLoopBackOffConfig {
/// The maximum duration the backoff delay can accrue to for container
/// restarts, minimum 1 second, maximum 300 seconds.
///
/// If not set, defaults to the internal crashloopbackoff maximum. The string
/// must be a sequence of decimal numbers, each with optional fraction and a
/// unit suffix, such as "300ms". Valid time units are "ns", "us" (or "µs"),
/// "ms", "s", "m", "h". See
/// https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#configurable-container-restart-delay
/// for more details.
///
/// Optional.
core.String? maxContainerRestartPeriod;
CrashLoopBackOffConfig({this.maxContainerRestartPeriod});
CrashLoopBackOffConfig.fromJson(core.Map json_)
: this(
maxContainerRestartPeriod:
json_['maxContainerRestartPeriod'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final maxContainerRestartPeriod = this.maxContainerRestartPeriod;
return {'maxContainerRestartPeriod': ?maxContainerRestartPeriod};
}
}
/// CreateClusterRequest creates a cluster.
class CreateClusterRequest {
/// A
/// [cluster resource](https://cloud.google.com/container-engine/reference/rest/v1/projects.locations.clusters)
///
/// Required.
Cluster? cluster;
/// The parent (project and location) where the cluster will be created.
///
/// Specified in the format `projects / * /locations / * `.
core.String? parent;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the parent field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the parent field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
CreateClusterRequest({this.cluster, this.parent, this.projectId, this.zone});
CreateClusterRequest.fromJson(core.Map json_)
: this(
cluster: json_.containsKey('cluster')
? Cluster.fromJson(
json_['cluster'] as core.Map<core.String, core.dynamic>,
)
: null,
parent: json_['parent'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final cluster = this.cluster;
final parent = this.parent;
final projectId = this.projectId;
final zone = this.zone;
return {
'cluster': ?cluster,
'parent': ?parent,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// CreateNodePoolRequest creates a node pool for a cluster.
class CreateNodePoolRequest {
/// The name of the cluster.
///
/// This field has been deprecated and replaced by the parent field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The node pool to create.
///
/// Required.
NodePool? nodePool;
/// The parent (project, location, cluster name) where the node pool will be
/// created.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? parent;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the parent field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the parent field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
CreateNodePoolRequest({
this.clusterId,
this.nodePool,
this.parent,
this.projectId,
this.zone,
});
CreateNodePoolRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
nodePool: json_.containsKey('nodePool')
? NodePool.fromJson(
json_['nodePool'] as core.Map<core.String, core.dynamic>,
)
: null,
parent: json_['parent'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final nodePool = this.nodePool;
final parent = this.parent;
final projectId = this.projectId;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'nodePool': ?nodePool,
'parent': ?parent,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// DNSConfig contains the desired set of options for configuring clusterDNS.
class DNSConfig {
/// The domain used in Additive VPC scope.
///
/// Optional.
core.String? additiveVpcScopeDnsDomain;
/// cluster_dns indicates which in-cluster DNS provider should be used.
/// Possible string values are:
/// - "PROVIDER_UNSPECIFIED" : Default value
/// - "PLATFORM_DEFAULT" : Use GKE default DNS provider(kube-dns) for DNS
/// resolution.
/// - "CLOUD_DNS" : Use CloudDNS for DNS resolution.
/// - "KUBE_DNS" : Use KubeDNS for DNS resolution.
core.String? clusterDns;
/// cluster_dns_domain is the suffix used for all cluster service records.
core.String? clusterDnsDomain;
/// cluster_dns_scope indicates the scope of access to cluster DNS records.
/// Possible string values are:
/// - "DNS_SCOPE_UNSPECIFIED" : Default value, will be inferred as cluster
/// scope.
/// - "CLUSTER_SCOPE" : DNS records are accessible from within the cluster.
/// - "VPC_SCOPE" : DNS records are accessible from within the VPC.
core.String? clusterDnsScope;
DNSConfig({
this.additiveVpcScopeDnsDomain,
this.clusterDns,
this.clusterDnsDomain,
this.clusterDnsScope,
});
DNSConfig.fromJson(core.Map json_)
: this(
additiveVpcScopeDnsDomain:
json_['additiveVpcScopeDnsDomain'] as core.String?,
clusterDns: json_['clusterDns'] as core.String?,
clusterDnsDomain: json_['clusterDnsDomain'] as core.String?,
clusterDnsScope: json_['clusterDnsScope'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final additiveVpcScopeDnsDomain = this.additiveVpcScopeDnsDomain;
final clusterDns = this.clusterDns;
final clusterDnsDomain = this.clusterDnsDomain;
final clusterDnsScope = this.clusterDnsScope;
return {
'additiveVpcScopeDnsDomain': ?additiveVpcScopeDnsDomain,
'clusterDns': ?clusterDns,
'clusterDnsDomain': ?clusterDnsDomain,
'clusterDnsScope': ?clusterDnsScope,
};
}
}
/// Describes the configuration of a DNS endpoint.
class DNSEndpointConfig {
/// Controls whether user traffic is allowed over this endpoint.
///
/// Note that Google-managed services may still use the endpoint even if this
/// is false.
core.bool? allowExternalTraffic;
/// Controls whether the k8s certs auth is allowed via DNS.
core.bool? enableK8sCertsViaDns;
/// Controls whether the k8s token auth is allowed via DNS.
core.bool? enableK8sTokensViaDns;
/// The cluster's DNS endpoint configuration.
///
/// A DNS format address. This is accessible from the public internet. Ex:
/// uid.us-central1.gke.goog. Always present, but the behavior may change
/// according to the value of DNSEndpointConfig.allow_external_traffic.
///
/// Output only.
core.String? endpoint;
DNSEndpointConfig({
this.allowExternalTraffic,
this.enableK8sCertsViaDns,
this.enableK8sTokensViaDns,
this.endpoint,
});
DNSEndpointConfig.fromJson(core.Map json_)
: this(
allowExternalTraffic: json_['allowExternalTraffic'] as core.bool?,
enableK8sCertsViaDns: json_['enableK8sCertsViaDns'] as core.bool?,
enableK8sTokensViaDns: json_['enableK8sTokensViaDns'] as core.bool?,
endpoint: json_['endpoint'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final allowExternalTraffic = this.allowExternalTraffic;
final enableK8sCertsViaDns = this.enableK8sCertsViaDns;
final enableK8sTokensViaDns = this.enableK8sTokensViaDns;
final endpoint = this.endpoint;
return {
'allowExternalTraffic': ?allowExternalTraffic,
'enableK8sCertsViaDns': ?enableK8sCertsViaDns,
'enableK8sTokensViaDns': ?enableK8sTokensViaDns,
'endpoint': ?endpoint,
};
}
}
/// Time window specified for daily maintenance operations.
class DailyMaintenanceWindow {
/// Duration of the time window, automatically chosen to be smallest possible
/// in the given scenario.
///
/// Duration will be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) format
/// "PTnHnMnS".
///
/// Output only.
core.String? duration;
/// Time within the maintenance window to start the maintenance operations.
///
/// Time format should be in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt)
/// format "HH:MM", where HH : \[00-23\] and MM : \[00-59\] GMT.
core.String? startTime;
DailyMaintenanceWindow({this.duration, this.startTime});
DailyMaintenanceWindow.fromJson(core.Map json_)
: this(
duration: json_['duration'] as core.String?,
startTime: json_['startTime'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final duration = this.duration;
final startTime = this.startTime;
return {'duration': ?duration, 'startTime': ?startTime};
}
}
/// Configuration of etcd encryption.
class DatabaseEncryption {
/// The current state of etcd encryption.
///
/// Output only.
/// Possible string values are:
/// - "CURRENT_STATE_UNSPECIFIED" : Should never be set
/// - "CURRENT_STATE_ENCRYPTED" : Secrets in etcd are encrypted.
/// - "CURRENT_STATE_DECRYPTED" : Secrets in etcd are stored in plain text (at
/// etcd level) - this is unrelated to Compute Engine level full disk
/// encryption.
/// - "CURRENT_STATE_ENCRYPTION_PENDING" : Encryption (or re-encryption with a
/// different CloudKMS key) of Secrets is in progress.
/// - "CURRENT_STATE_ENCRYPTION_ERROR" : Encryption (or re-encryption with a
/// different CloudKMS key) of Secrets in etcd encountered an error.
/// - "CURRENT_STATE_DECRYPTION_PENDING" : De-crypting Secrets to plain text
/// in etcd is in progress.
/// - "CURRENT_STATE_DECRYPTION_ERROR" : De-crypting Secrets to plain text in
/// etcd encountered an error.
/// - "CURRENT_STATE_ALL_OBJECTS_ENCRYPTION_ENABLED" : Encryption of all
/// objects in the storage is enabled. It does not guarantee that all objects
/// in the storage are encrypted, but eventually they will be.
/// - "CURRENT_STATE_ALL_OBJECTS_ENCRYPTION_PENDING" : Enablement of the
/// encryption of all objects in storage is pending.
/// - "CURRENT_STATE_ALL_OBJECTS_ENCRYPTION_ERROR" : Enabling encryption of
/// all objects in storage encountered an error.
core.String? currentState;
/// Keys in use by the cluster for decrypting existing objects, in addition to
/// the key in `key_name`.
///
/// Each item is a CloudKMS key resource.
///
/// Output only.
core.List<core.String>? decryptionKeys;
/// Name of CloudKMS key to use for the encryption of secrets in etcd.
///
/// Ex.
/// projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key
core.String? keyName;
/// Records errors seen during DatabaseEncryption update operations.
///
/// Output only.
core.List<OperationError>? lastOperationErrors;
/// The desired state of etcd encryption.
/// Possible string values are:
/// - "UNKNOWN" : Should never be set
/// - "ENCRYPTED" : Secrets in etcd are encrypted.
/// - "DECRYPTED" : Secrets in etcd are stored in plain text (at etcd level) -
/// this is unrelated to Compute Engine level full disk encryption.
/// - "ALL_OBJECTS_ENCRYPTION_ENABLED" : Encryption of all objects in the
/// storage is enabled. There is no guarantee that all objects in the storage
/// are encrypted, but eventually they will be.
core.String? state;
DatabaseEncryption({
this.currentState,
this.decryptionKeys,
this.keyName,
this.lastOperationErrors,
this.state,
});
DatabaseEncryption.fromJson(core.Map json_)
: this(
currentState: json_['currentState'] as core.String?,
decryptionKeys: (json_['decryptionKeys'] as core.List?)
?.map((value) => value as core.String)
.toList(),
keyName: json_['keyName'] as core.String?,
lastOperationErrors: (json_['lastOperationErrors'] as core.List?)
?.map(
(value) => OperationError.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
state: json_['state'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final currentState = this.currentState;
final decryptionKeys = this.decryptionKeys;
final keyName = this.keyName;
final lastOperationErrors = this.lastOperationErrors;
final state = this.state;
return {
'currentState': ?currentState,
'decryptionKeys': ?decryptionKeys,
'keyName': ?keyName,
'lastOperationErrors': ?lastOperationErrors,
'state': ?state,
};
}
}
/// Provisions a new, separate local NVMe SSD exclusively for swap.
class DedicatedLocalSsdProfile {
/// The number of physical local NVMe SSD disks to attach.
core.String? diskCount;
DedicatedLocalSsdProfile({this.diskCount});
DedicatedLocalSsdProfile.fromJson(core.Map json_)
: this(diskCount: json_['diskCount'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final diskCount = this.diskCount;
return {'diskCount': ?diskCount};
}
}
/// DefaultComputeClassConfig defines default compute class configuration.
class DefaultComputeClassConfig {
/// Enables default compute class.
core.bool? enabled;
DefaultComputeClassConfig({this.enabled});
DefaultComputeClassConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// DefaultSnatStatus contains the desired state of whether default sNAT should
/// be disabled on the cluster.
class DefaultSnatStatus {
/// Disables cluster default sNAT rules.
core.bool? disabled;
DefaultSnatStatus({this.disabled});
DefaultSnatStatus.fromJson(core.Map json_)
: this(disabled: json_['disabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final disabled = this.disabled;
return {'disabled': ?disabled};
}
}
/// DesiredAdditionalIPRangesConfig is a wrapper used for cluster update
/// operation and contains multiple AdditionalIPRangesConfigs.
class DesiredAdditionalIPRangesConfig {
/// List of additional IP ranges configs where each AdditionalIPRangesConfig
/// corresponds to one subnetwork's IP ranges
core.List<AdditionalIPRangesConfig>? additionalIpRangesConfigs;
DesiredAdditionalIPRangesConfig({this.additionalIpRangesConfigs});
DesiredAdditionalIPRangesConfig.fromJson(core.Map json_)
: this(
additionalIpRangesConfigs:
(json_['additionalIpRangesConfigs'] as core.List?)
?.map(
(value) => AdditionalIPRangesConfig.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final additionalIpRangesConfigs = this.additionalIpRangesConfigs;
return {'additionalIpRangesConfigs': ?additionalIpRangesConfigs};
}
}
/// DesiredEnterpriseConfig is a wrapper used for updating enterprise_config.
///
/// Deprecated: GKE Enterprise features are now available without an Enterprise
/// tier.
class DesiredEnterpriseConfig {
/// desired_tier specifies the desired tier of the cluster.
/// Possible string values are:
/// - "CLUSTER_TIER_UNSPECIFIED" : CLUSTER_TIER_UNSPECIFIED is when
/// cluster_tier is not set.
/// - "STANDARD" : STANDARD indicates a standard GKE cluster.
/// - "ENTERPRISE" : ENTERPRISE indicates a GKE Enterprise cluster.
core.String? desiredTier;
DesiredEnterpriseConfig({this.desiredTier});
DesiredEnterpriseConfig.fromJson(core.Map json_)
: this(desiredTier: json_['desiredTier'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final desiredTier = this.desiredTier;
return {'desiredTier': ?desiredTier};
}
}
/// DisruptionBudget defines the upgrade disruption budget for the cluster
/// control plane.
class DisruptionBudget {
/// The last time a disruption was performed on the control plane.
///
/// Output only.
core.String? lastDisruptionTime;
/// The last time a minor version upgrade was performed on the control plane.
///
/// Output only.
core.String? lastMinorVersionDisruptionTime;
/// The minimum duration between two minor version upgrades of the control
/// plane.
///
/// Optional.
core.String? minorVersionDisruptionInterval;
/// The minimum duration between two patch version upgrades of the control
/// plane.
///
/// Optional.
core.String? patchVersionDisruptionInterval;
DisruptionBudget({
this.lastDisruptionTime,
this.lastMinorVersionDisruptionTime,
this.minorVersionDisruptionInterval,
this.patchVersionDisruptionInterval,
});
DisruptionBudget.fromJson(core.Map json_)
: this(
lastDisruptionTime: json_['lastDisruptionTime'] as core.String?,
lastMinorVersionDisruptionTime:
json_['lastMinorVersionDisruptionTime'] as core.String?,
minorVersionDisruptionInterval:
json_['minorVersionDisruptionInterval'] as core.String?,
patchVersionDisruptionInterval:
json_['patchVersionDisruptionInterval'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final lastDisruptionTime = this.lastDisruptionTime;
final lastMinorVersionDisruptionTime = this.lastMinorVersionDisruptionTime;
final minorVersionDisruptionInterval = this.minorVersionDisruptionInterval;
final patchVersionDisruptionInterval = this.patchVersionDisruptionInterval;
return {
'lastDisruptionTime': ?lastDisruptionTime,
'lastMinorVersionDisruptionTime': ?lastMinorVersionDisruptionTime,
'minorVersionDisruptionInterval': ?minorVersionDisruptionInterval,
'patchVersionDisruptionInterval': ?patchVersionDisruptionInterval,
};
}
}
/// Configuration for NodeLocal DNSCache
class DnsCacheConfig {
/// Whether NodeLocal DNSCache is enabled for this cluster.
core.bool? enabled;
DnsCacheConfig({this.enabled});
DnsCacheConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// A generic empty message that you can re-use to avoid defining duplicated
/// empty messages in your APIs.
///
/// A typical example is to use it as the request or the response type of an API
/// method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns
/// (google.protobuf.Empty); }
typedef Empty = $Empty;
/// Defines encryption settings for the swap space.
class EncryptionConfig {
/// If true, swap space will not be encrypted.
///
/// Defaults to false (encrypted).
///
/// Optional.
core.bool? disabled;
EncryptionConfig({this.disabled});
EncryptionConfig.fromJson(core.Map json_)
: this(disabled: json_['disabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final disabled = this.disabled;
return {'disabled': ?disabled};
}
}
/// EnterpriseConfig is the cluster enterprise configuration.
///
/// Deprecated: GKE Enterprise features are now available without an Enterprise
/// tier.
class EnterpriseConfig {
/// cluster_tier indicates the effective tier of the cluster.
///
/// Output only.
/// Possible string values are:
/// - "CLUSTER_TIER_UNSPECIFIED" : CLUSTER_TIER_UNSPECIFIED is when
/// cluster_tier is not set.
/// - "STANDARD" : STANDARD indicates a standard GKE cluster.
/// - "ENTERPRISE" : ENTERPRISE indicates a GKE Enterprise cluster.
core.String? clusterTier;
/// desired_tier specifies the desired tier of the cluster.
/// Possible string values are:
/// - "CLUSTER_TIER_UNSPECIFIED" : CLUSTER_TIER_UNSPECIFIED is when
/// cluster_tier is not set.
/// - "STANDARD" : STANDARD indicates a standard GKE cluster.
/// - "ENTERPRISE" : ENTERPRISE indicates a GKE Enterprise cluster.
core.String? desiredTier;
EnterpriseConfig({this.clusterTier, this.desiredTier});
EnterpriseConfig.fromJson(core.Map json_)
: this(
clusterTier: json_['clusterTier'] as core.String?,
desiredTier: json_['desiredTier'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterTier = this.clusterTier;
final desiredTier = this.desiredTier;
return {'clusterTier': ?clusterTier, 'desiredTier': ?desiredTier};
}
}
/// Swap on the local SSD shared with pod ephemeral storage.
class EphemeralLocalSsdProfile {
/// Specifies the size of the swap space in gibibytes (GiB).
core.String? swapSizeGib;
/// Specifies the size of the swap space as a percentage of the ephemeral
/// local SSD capacity.
core.int? swapSizePercent;
EphemeralLocalSsdProfile({this.swapSizeGib, this.swapSizePercent});
EphemeralLocalSsdProfile.fromJson(core.Map json_)
: this(
swapSizeGib: json_['swapSizeGib'] as core.String?,
swapSizePercent: json_['swapSizePercent'] as core.int?,
);
core.Map<core.String, core.dynamic> toJson() {
final swapSizeGib = this.swapSizeGib;
final swapSizePercent = this.swapSizePercent;
return {'swapSizeGib': ?swapSizeGib, 'swapSizePercent': ?swapSizePercent};
}
}
/// EphemeralStorageLocalSsdConfig contains configuration for the node ephemeral
/// storage using Local SSDs.
class EphemeralStorageLocalSsdConfig {
/// Number of local SSDs to use for GKE Data Cache.
core.int? dataCacheCount;
/// Number of local SSDs to use to back ephemeral storage.
///
/// Uses NVMe interfaces. A zero (or unset) value has different meanings
/// depending on machine type being used: 1. For pre-Gen3 machines, which
/// support flexible numbers of local ssds, zero (or unset) means to disable
/// using local SSDs as ephemeral storage. The limit for this value is
/// dependent upon the maximum number of disk available on a machine per zone.
/// See: https://cloud.google.com/compute/docs/disks/local-ssd for more
/// information. 2. For Gen3 machines which dictate a specific number of local
/// ssds, zero (or unset) means to use the default number of local ssds that
/// goes with that machine type. For example, for a c3-standard-8-lssd
/// machine, 2 local ssds would be provisioned. For c3-standard-8 (which
/// doesn't support local ssds), 0 will be provisioned. See
/// https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds
/// for more info.
core.int? localSsdCount;
EphemeralStorageLocalSsdConfig({this.dataCacheCount, this.localSsdCount});
EphemeralStorageLocalSsdConfig.fromJson(core.Map json_)
: this(
dataCacheCount: json_['dataCacheCount'] as core.int?,
localSsdCount: json_['localSsdCount'] as core.int?,
);
core.Map<core.String, core.dynamic> toJson() {
final dataCacheCount = this.dataCacheCount;
final localSsdCount = this.localSsdCount;
return {'dataCacheCount': ?dataCacheCount, 'localSsdCount': ?localSsdCount};
}
}
/// Eviction grace periods are grace periods for each eviction signal.
class EvictionGracePeriod {
/// Grace period for eviction due to imagefs available signal.
///
/// Sample format: "10s". Must be \>= 0. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? imagefsAvailable;
/// Grace period for eviction due to imagefs inodes free signal.
///
/// Sample format: "10s". Must be \>= 0. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? imagefsInodesFree;
/// Grace period for eviction due to memory available signal.
///
/// Sample format: "10s". Must be \>= 0. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? memoryAvailable;
/// Grace period for eviction due to nodefs available signal.
///
/// Sample format: "10s". Must be \>= 0. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? nodefsAvailable;
/// Grace period for eviction due to nodefs inodes free signal.
///
/// Sample format: "10s". Must be \>= 0. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? nodefsInodesFree;
/// Grace period for eviction due to pid available signal.
///
/// Sample format: "10s". Must be \>= 0. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? pidAvailable;
EvictionGracePeriod({
this.imagefsAvailable,
this.imagefsInodesFree,
this.memoryAvailable,
this.nodefsAvailable,
this.nodefsInodesFree,
this.pidAvailable,
});
EvictionGracePeriod.fromJson(core.Map json_)
: this(
imagefsAvailable: json_['imagefsAvailable'] as core.String?,
imagefsInodesFree: json_['imagefsInodesFree'] as core.String?,
memoryAvailable: json_['memoryAvailable'] as core.String?,
nodefsAvailable: json_['nodefsAvailable'] as core.String?,
nodefsInodesFree: json_['nodefsInodesFree'] as core.String?,
pidAvailable: json_['pidAvailable'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final imagefsAvailable = this.imagefsAvailable;
final imagefsInodesFree = this.imagefsInodesFree;
final memoryAvailable = this.memoryAvailable;
final nodefsAvailable = this.nodefsAvailable;
final nodefsInodesFree = this.nodefsInodesFree;
final pidAvailable = this.pidAvailable;
return {
'imagefsAvailable': ?imagefsAvailable,
'imagefsInodesFree': ?imagefsInodesFree,
'memoryAvailable': ?memoryAvailable,
'nodefsAvailable': ?nodefsAvailable,
'nodefsInodesFree': ?nodefsInodesFree,
'pidAvailable': ?pidAvailable,
};
}
}
/// Eviction minimum reclaims are the resource amounts of minimum reclaims for
/// each eviction signal.
class EvictionMinimumReclaim {
/// Minimum reclaim for eviction due to imagefs available signal.
///
/// Only take percentage value for now. Sample format: "10%". Must be \<=10%.
/// See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? imagefsAvailable;
/// Minimum reclaim for eviction due to imagefs inodes free signal.
///
/// Only take percentage value for now. Sample format: "10%". Must be \<=10%.
/// See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? imagefsInodesFree;
/// Minimum reclaim for eviction due to memory available signal.
///
/// Only take percentage value for now. Sample format: "10%". Must be \<=10%.
/// See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? memoryAvailable;
/// Minimum reclaim for eviction due to nodefs available signal.
///
/// Only take percentage value for now. Sample format: "10%". Must be \<=10%.
/// See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? nodefsAvailable;
/// Minimum reclaim for eviction due to nodefs inodes free signal.
///
/// Only take percentage value for now. Sample format: "10%". Must be \<=10%.
/// See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? nodefsInodesFree;
/// Minimum reclaim for eviction due to pid available signal.
///
/// Only take percentage value for now. Sample format: "10%". Must be \<=10%.
/// See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? pidAvailable;
EvictionMinimumReclaim({
this.imagefsAvailable,
this.imagefsInodesFree,
this.memoryAvailable,
this.nodefsAvailable,
this.nodefsInodesFree,
this.pidAvailable,
});
EvictionMinimumReclaim.fromJson(core.Map json_)
: this(
imagefsAvailable: json_['imagefsAvailable'] as core.String?,
imagefsInodesFree: json_['imagefsInodesFree'] as core.String?,
memoryAvailable: json_['memoryAvailable'] as core.String?,
nodefsAvailable: json_['nodefsAvailable'] as core.String?,
nodefsInodesFree: json_['nodefsInodesFree'] as core.String?,
pidAvailable: json_['pidAvailable'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final imagefsAvailable = this.imagefsAvailable;
final imagefsInodesFree = this.imagefsInodesFree;
final memoryAvailable = this.memoryAvailable;
final nodefsAvailable = this.nodefsAvailable;
final nodefsInodesFree = this.nodefsInodesFree;
final pidAvailable = this.pidAvailable;
return {
'imagefsAvailable': ?imagefsAvailable,
'imagefsInodesFree': ?imagefsInodesFree,
'memoryAvailable': ?memoryAvailable,
'nodefsAvailable': ?nodefsAvailable,
'nodefsInodesFree': ?nodefsInodesFree,
'pidAvailable': ?pidAvailable,
};
}
}
/// Eviction signals are the current state of a particular resource at a
/// specific point in time.
///
/// The kubelet uses eviction signals to make eviction decisions by comparing
/// the signals to eviction thresholds, which are the minimum amount of the
/// resource that should be available on the node.
class EvictionSignals {
/// Amount of storage available on filesystem that container runtime uses for
/// storing images layers.
///
/// If the container filesystem and image filesystem are not separate, then
/// imagefs can store both image layers and writeable layers. Defines the
/// amount of "imagefs.available" signal in kubelet. Default is unset, if not
/// specified in the kubelet config. It takses percentage value for now.
/// Sample format: "30%". Must be \>= 15% and \<= 50%. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? imagefsAvailable;
/// Amount of inodes available on filesystem that container runtime uses for
/// storing images layers.
///
/// Defines the amount of "imagefs.inodesFree" signal in kubelet. Default is
/// unset, if not specified in the kubelet config. Linux only. It takses
/// percentage value for now. Sample format: "30%". Must be \>= 5% and \<=
/// 50%. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? imagefsInodesFree;
/// Memory available (i.e. capacity - workingSet), in bytes.
///
/// Defines the amount of "memory.available" signal in kubelet. Default is
/// unset, if not specified in the kubelet config. Format: positive number +
/// unit, e.g. 100Ki, 10Mi, 5Gi. Valid units are Ki, Mi, Gi. Must be \>= 100Mi
/// and \<= 50% of the node's memory. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? memoryAvailable;
/// Amount of storage available on filesystem that kubelet uses for volumes,
/// daemon logs, etc.
///
/// Defines the amount of "nodefs.available" signal in kubelet. Default is
/// unset, if not specified in the kubelet config. It takses percentage value
/// for now. Sample format: "30%". Must be \>= 10% and \<= 50%. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? nodefsAvailable;
/// Amount of inodes available on filesystem that kubelet uses for volumes,
/// daemon logs, etc.
///
/// Defines the amount of "nodefs.inodesFree" signal in kubelet. Default is
/// unset, if not specified in the kubelet config. Linux only. It takses
/// percentage value for now. Sample format: "30%". Must be \>= 5% and \<=
/// 50%. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? nodefsInodesFree;
/// Amount of PID available for pod allocation.
///
/// Defines the amount of "pid.available" signal in kubelet. Default is unset,
/// if not specified in the kubelet config. It takses percentage value for
/// now. Sample format: "30%". Must be \>= 10% and \<= 50%. See
/// https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/#eviction-signals
///
/// Optional.
core.String? pidAvailable;
EvictionSignals({
this.imagefsAvailable,
this.imagefsInodesFree,
this.memoryAvailable,
this.nodefsAvailable,
this.nodefsInodesFree,
this.pidAvailable,
});
EvictionSignals.fromJson(core.Map json_)
: this(
imagefsAvailable: json_['imagefsAvailable'] as core.String?,
imagefsInodesFree: json_['imagefsInodesFree'] as core.String?,
memoryAvailable: json_['memoryAvailable'] as core.String?,
nodefsAvailable: json_['nodefsAvailable'] as core.String?,
nodefsInodesFree: json_['nodefsInodesFree'] as core.String?,
pidAvailable: json_['pidAvailable'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final imagefsAvailable = this.imagefsAvailable;
final imagefsInodesFree = this.imagefsInodesFree;
final memoryAvailable = this.memoryAvailable;
final nodefsAvailable = this.nodefsAvailable;
final nodefsInodesFree = this.nodefsInodesFree;
final pidAvailable = this.pidAvailable;
return {
'imagefsAvailable': ?imagefsAvailable,
'imagefsInodesFree': ?imagefsInodesFree,
'memoryAvailable': ?memoryAvailable,
'nodefsAvailable': ?nodefsAvailable,
'nodefsInodesFree': ?nodefsInodesFree,
'pidAvailable': ?pidAvailable,
};
}
}
/// Configuration of Fast Socket feature.
class FastSocket {
/// Whether Fast Socket features are enabled in the node pool.
core.bool? enabled;
FastSocket({this.enabled});
FastSocket.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Allows filtering to one or more specific event types.
///
/// If event types are present, those and only those event types will be
/// transmitted to the cluster. Other types will be skipped. If no filter is
/// specified, or no event types are present, all event types will be sent
class Filter {
/// Event types to allowlist.
core.List<core.String>? eventType;
Filter({this.eventType});
Filter.fromJson(core.Map json_)
: this(
eventType: (json_['eventType'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final eventType = this.eventType;
return {'eventType': ?eventType};
}
}
/// Fleet is the fleet configuration for the cluster.
class Fleet {
/// The full resource name of the registered fleet membership of the cluster,
/// in the format `//gkehub.googleapis.com/projects / * /locations / *
/// /memberships / * `.
///
/// Output only.
core.String? membership;
/// The type of the cluster's fleet membership.
/// Possible string values are:
/// - "MEMBERSHIP_TYPE_UNSPECIFIED" : The MembershipType is not set.
/// - "LIGHTWEIGHT" : The membership supports only lightweight compatible
/// features.
core.String? membershipType;
/// Whether the cluster has been registered through the fleet API.
///
/// Output only.
core.bool? preRegistered;
/// The Fleet host project(project ID or project number) where this cluster
/// will be registered to.
///
/// This field cannot be changed after the cluster has been registered.
core.String? project;
Fleet({
this.membership,
this.membershipType,
this.preRegistered,
this.project,
});
Fleet.fromJson(core.Map json_)
: this(
membership: json_['membership'] as core.String?,
membershipType: json_['membershipType'] as core.String?,
preRegistered: json_['preRegistered'] as core.bool?,
project: json_['project'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final membership = this.membership;
final membershipType = this.membershipType;
final preRegistered = this.preRegistered;
final project = this.project;
return {
'membership': ?membership,
'membershipType': ?membershipType,
'preRegistered': ?preRegistered,
'project': ?project,
};
}
}
/// GCPSecretManagerCertificateConfig configures a secret from
/// [Secret Manager](https://cloud.google.com/secret-manager).
class GCPSecretManagerCertificateConfig {
/// Secret URI, in the form
/// "projects/$PROJECT_ID/secrets/$SECRET_NAME/versions/$VERSION".
///
/// Version can be fixed (e.g. "2") or "latest"
core.String? secretUri;
GCPSecretManagerCertificateConfig({this.secretUri});
GCPSecretManagerCertificateConfig.fromJson(core.Map json_)
: this(secretUri: json_['secretUri'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final secretUri = this.secretUri;
return {'secretUri': ?secretUri};
}
}
/// GPUDirectConfig specifies the GPU direct strategy on the node pool.
class GPUDirectConfig {
/// The type of GPU direct strategy to enable on the node pool.
/// Possible string values are:
/// - "GPU_DIRECT_STRATEGY_UNSPECIFIED" : Default value. No GPU Direct
/// strategy is enabled on the node.
/// - "RDMA" : GPUDirect-RDMA on A3 Ultra, and A4 machine types
core.String? gpuDirectStrategy;
GPUDirectConfig({this.gpuDirectStrategy});
GPUDirectConfig.fromJson(core.Map json_)
: this(gpuDirectStrategy: json_['gpuDirectStrategy'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final gpuDirectStrategy = this.gpuDirectStrategy;
return {'gpuDirectStrategy': ?gpuDirectStrategy};
}
}
/// GPUDriverInstallationConfig specifies the version of GPU driver to be auto
/// installed.
class GPUDriverInstallationConfig {
/// Mode for how the GPU driver is installed.
/// Possible string values are:
/// - "GPU_DRIVER_VERSION_UNSPECIFIED" : Default value is to not install any
/// GPU driver.
/// - "INSTALLATION_DISABLED" : Disable GPU driver auto installation and needs
/// manual installation
/// - "DEFAULT" : "Default" GPU driver in COS and Ubuntu.
/// - "LATEST" : "Latest" GPU driver in COS.
core.String? gpuDriverVersion;
GPUDriverInstallationConfig({this.gpuDriverVersion});
GPUDriverInstallationConfig.fromJson(core.Map json_)
: this(gpuDriverVersion: json_['gpuDriverVersion'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final gpuDriverVersion = this.gpuDriverVersion;
return {'gpuDriverVersion': ?gpuDriverVersion};
}
}
/// GPUSharingConfig represents the GPU sharing configuration for Hardware
/// Accelerators.
class GPUSharingConfig {
/// The type of GPU sharing strategy to enable on the GPU node.
/// Possible string values are:
/// - "GPU_SHARING_STRATEGY_UNSPECIFIED" : Default value.
/// - "TIME_SHARING" : GPUs are time-shared between containers.
/// - "MPS" : GPUs are shared between containers with NVIDIA MPS.
core.String? gpuSharingStrategy;
/// The max number of containers that can share a physical GPU.
core.String? maxSharedClientsPerGpu;
GPUSharingConfig({this.gpuSharingStrategy, this.maxSharedClientsPerGpu});
GPUSharingConfig.fromJson(core.Map json_)
: this(
gpuSharingStrategy: json_['gpuSharingStrategy'] as core.String?,
maxSharedClientsPerGpu: json_['maxSharedClientsPerGpu'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final gpuSharingStrategy = this.gpuSharingStrategy;
final maxSharedClientsPerGpu = this.maxSharedClientsPerGpu;
return {
'gpuSharingStrategy': ?gpuSharingStrategy,
'maxSharedClientsPerGpu': ?maxSharedClientsPerGpu,
};
}
}
/// GatewayAPIConfig contains the desired config of Gateway API on this cluster.
class GatewayAPIConfig {
/// The Gateway API release channel to use for Gateway API.
/// Possible string values are:
/// - "CHANNEL_UNSPECIFIED" : Default value.
/// - "CHANNEL_DISABLED" : Gateway API support is disabled
/// - "CHANNEL_EXPERIMENTAL" : Deprecated: use CHANNEL_STANDARD instead.
/// Gateway API support is enabled, experimental CRDs are installed
/// - "CHANNEL_STANDARD" : Gateway API support is enabled, standard CRDs are
/// installed
core.String? channel;
GatewayAPIConfig({this.channel});
GatewayAPIConfig.fromJson(core.Map json_)
: this(channel: json_['channel'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final channel = this.channel;
return {'channel': ?channel};
}
}
/// Configuration for the Compute Engine PD CSI driver.
class GcePersistentDiskCsiDriverConfig {
/// Whether the Compute Engine PD CSI driver is enabled for this cluster.
core.bool? enabled;
GcePersistentDiskCsiDriverConfig({this.enabled});
GcePersistentDiskCsiDriverConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// GcfsConfig contains configurations of Google Container File System (image
/// streaming).
class GcfsConfig {
/// Whether to use GCFS.
core.bool? enabled;
GcfsConfig({this.enabled});
GcfsConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Configuration for the Filestore CSI driver.
class GcpFilestoreCsiDriverConfig {
/// Whether the Filestore CSI driver is enabled for this cluster.
core.bool? enabled;
GcpFilestoreCsiDriverConfig({this.enabled});
GcpFilestoreCsiDriverConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Configuration for the Cloud Storage Fuse CSI driver.
class GcsFuseCsiDriverConfig {
/// Whether the Cloud Storage Fuse CSI driver is enabled for this cluster.
core.bool? enabled;
GcsFuseCsiDriverConfig({this.enabled});
GcsFuseCsiDriverConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// GetJSONWebKeysResponse is a valid JSON Web Key Set as specified in rfc 7517
class GetJSONWebKeysResponse {
/// For HTTP requests, this field is automatically extracted into the
/// Cache-Control HTTP header.
HttpCacheControlResponseHeader? cacheHeader;
/// The public component of the keys used by the cluster to sign token
/// requests.
core.List<Jwk>? keys;
GetJSONWebKeysResponse({this.cacheHeader, this.keys});
GetJSONWebKeysResponse.fromJson(core.Map json_)
: this(
cacheHeader: json_.containsKey('cacheHeader')
? HttpCacheControlResponseHeader.fromJson(
json_['cacheHeader'] as core.Map<core.String, core.dynamic>,
)
: null,
keys: (json_['keys'] as core.List?)
?.map(
(value) =>
Jwk.fromJson(value as core.Map<core.String, core.dynamic>),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final cacheHeader = this.cacheHeader;
final keys = this.keys;
return {'cacheHeader': ?cacheHeader, 'keys': ?keys};
}
}
/// GetOpenIDConfigResponse is an OIDC discovery document for the cluster.
///
/// See the OpenID Connect Discovery 1.0 specification for details.
class GetOpenIDConfigResponse {
/// For HTTP requests, this field is automatically extracted into the
/// Cache-Control HTTP header.
HttpCacheControlResponseHeader? cacheHeader;
/// Supported claims.
core.List<core.String>? claimsSupported;
/// Supported grant types.
core.List<core.String>? grantTypes;
/// supported ID Token signing Algorithms.
core.List<core.String>? idTokenSigningAlgValuesSupported;
/// OIDC Issuer.
core.String? issuer;
/// JSON Web Key uri.
core.String? jwksUri;
/// Supported response types.
core.List<core.String>? responseTypesSupported;
/// Supported subject types.
core.List<core.String>? subjectTypesSupported;
GetOpenIDConfigResponse({
this.cacheHeader,
this.claimsSupported,
this.grantTypes,
this.idTokenSigningAlgValuesSupported,
this.issuer,
this.jwksUri,
this.responseTypesSupported,
this.subjectTypesSupported,
});
GetOpenIDConfigResponse.fromJson(core.Map json_)
: this(
cacheHeader: json_.containsKey('cacheHeader')
? HttpCacheControlResponseHeader.fromJson(
json_['cacheHeader'] as core.Map<core.String, core.dynamic>,
)
: null,
claimsSupported: (json_['claims_supported'] as core.List?)
?.map((value) => value as core.String)
.toList(),
grantTypes: (json_['grant_types'] as core.List?)
?.map((value) => value as core.String)
.toList(),
idTokenSigningAlgValuesSupported:
(json_['id_token_signing_alg_values_supported'] as core.List?)
?.map((value) => value as core.String)
.toList(),
issuer: json_['issuer'] as core.String?,
jwksUri: json_['jwks_uri'] as core.String?,
responseTypesSupported:
(json_['response_types_supported'] as core.List?)
?.map((value) => value as core.String)
.toList(),
subjectTypesSupported: (json_['subject_types_supported'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final cacheHeader = this.cacheHeader;
final claimsSupported = this.claimsSupported;
final grantTypes = this.grantTypes;
final idTokenSigningAlgValuesSupported =
this.idTokenSigningAlgValuesSupported;
final issuer = this.issuer;
final jwksUri = this.jwksUri;
final responseTypesSupported = this.responseTypesSupported;
final subjectTypesSupported = this.subjectTypesSupported;
return {
'cacheHeader': ?cacheHeader,
'claims_supported': ?claimsSupported,
'grant_types': ?grantTypes,
'id_token_signing_alg_values_supported':
?idTokenSigningAlgValuesSupported,
'issuer': ?issuer,
'jwks_uri': ?jwksUri,
'response_types_supported': ?responseTypesSupported,
'subject_types_supported': ?subjectTypesSupported,
};
}
}
/// GkeAutoUpgradeConfig is the configuration for GKE auto upgrades.
class GkeAutoUpgradeConfig {
/// PatchMode specifies how auto upgrade patch builds should be selected.
/// Possible string values are:
/// - "PATCH_MODE_UNSPECIFIED" : PATCH_MODE_UNSPECIFIED defaults to using the
/// upgrade target from the channel's patch upgrade targets as the upgrade
/// target for the version.
/// - "ACCELERATED" : ACCELERATED denotes that the latest patch build in the
/// channel should be used as the upgrade target for the version.
core.String? patchMode;
GkeAutoUpgradeConfig({this.patchMode});
GkeAutoUpgradeConfig.fromJson(core.Map json_)
: this(patchMode: json_['patchMode'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final patchMode = this.patchMode;
return {'patchMode': ?patchMode};
}
}
/// Configuration for the Backup for GKE Agent.
class GkeBackupAgentConfig {
/// Whether the Backup for GKE agent is enabled for this cluster.
core.bool? enabled;
GkeBackupAgentConfig({this.enabled});
GkeBackupAgentConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Configuration for the High Scale Checkpointing.
class HighScaleCheckpointingConfig {
/// Whether the High Scale Checkpointing is enabled for this cluster.
core.bool? enabled;
HighScaleCheckpointingConfig({this.enabled});
HighScaleCheckpointingConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Configuration options for the horizontal pod autoscaling feature, which
/// increases or decreases the number of replica pods a replication controller
/// has based on the resource usage of the existing pods.
class HorizontalPodAutoscaling {
/// Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.
///
/// When enabled, it ensures that metrics are collected into Stackdriver
/// Monitoring.
core.bool? disabled;
HorizontalPodAutoscaling({this.disabled});
HorizontalPodAutoscaling.fromJson(core.Map json_)
: this(disabled: json_['disabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final disabled = this.disabled;
return {'disabled': ?disabled};
}
}
/// HostConfig configures the registry host under a given Server.
class HostConfig {
/// CA configures the registry host certificate.
core.List<CertificateConfig>? ca;
/// Capabilities represent the capabilities of the registry host, specifying
/// what operations a host is capable of performing.
///
/// If not set, containerd enables all capabilities by default.
core.List<core.String>? capabilities;
/// Client configures the registry host client certificate and key.
core.List<CertificateConfigPair>? client;
/// Specifies the maximum duration allowed for a connection attempt to
/// complete.
///
/// A shorter timeout helps reduce delays when falling back to the original
/// registry if the mirror is unreachable. Maximum allowed value is 180s. If
/// not set, containerd sets default 30s. The value should be a decimal number
/// of seconds with an `s` suffix.
core.String? dialTimeout;
/// Header configures the registry host headers.
core.List<RegistryHeader>? header;
/// Host configures the registry host/mirror.
///
/// It supports fully qualified domain names (FQDNs) and IP addresses.
/// Specifying scheme, port or path is supported. Scheme can only be http or
/// https. Wildcards are NOT supported. Examples: - `my.customdomain.com` -
/// `https://my.customdomain.com/path` - `10.0.1.2:5000`
core.String? host;
/// OverridePath is used to indicate the host's API root endpoint is defined
/// in the URL path rather than by the API specification.
///
/// This may be used with non-compliant OCI registries which are missing the
/// /v2 prefix. If not set, containerd sets default false.
core.bool? overridePath;
HostConfig({
this.ca,
this.capabilities,
this.client,
this.dialTimeout,
this.header,
this.host,
this.overridePath,
});
HostConfig.fromJson(core.Map json_)
: this(
ca: (json_['ca'] as core.List?)
?.map(
(value) => CertificateConfig.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
capabilities: (json_['capabilities'] as core.List?)
?.map((value) => value as core.String)
.toList(),
client: (json_['client'] as core.List?)
?.map(
(value) => CertificateConfigPair.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
dialTimeout: json_['dialTimeout'] as core.String?,
header: (json_['header'] as core.List?)
?.map(
(value) => RegistryHeader.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
host: json_['host'] as core.String?,
overridePath: json_['overridePath'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final ca = this.ca;
final capabilities = this.capabilities;
final client = this.client;
final dialTimeout = this.dialTimeout;
final header = this.header;
final host = this.host;
final overridePath = this.overridePath;
return {
'ca': ?ca,
'capabilities': ?capabilities,
'client': ?client,
'dialTimeout': ?dialTimeout,
'header': ?header,
'host': ?host,
'overridePath': ?overridePath,
};
}
}
/// RFC-2616: cache control support
class HttpCacheControlResponseHeader {
/// 14.6 response cache age, in seconds since the response is generated
core.String? age;
/// 14.9 request and response directives
core.String? directive;
/// 14.21 response cache expires, in RFC 1123 date format
core.String? expires;
HttpCacheControlResponseHeader({this.age, this.directive, this.expires});
HttpCacheControlResponseHeader.fromJson(core.Map json_)
: this(
age: json_['age'] as core.String?,
directive: json_['directive'] as core.String?,
expires: json_['expires'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final age = this.age;
final directive = this.directive;
final expires = this.expires;
return {'age': ?age, 'directive': ?directive, 'expires': ?expires};
}
}
/// Configuration options for the HTTP (L7) load balancing controller addon,
/// which makes it easy to set up HTTP load balancers for services in a cluster.
class HttpLoadBalancing {
/// Whether the HTTP Load Balancing controller is enabled in the cluster.
///
/// When enabled, it runs a small pod in the cluster that manages the load
/// balancers.
core.bool? disabled;
HttpLoadBalancing({this.disabled});
HttpLoadBalancing.fromJson(core.Map json_)
: this(disabled: json_['disabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final disabled = this.disabled;
return {'disabled': ?disabled};
}
}
/// Hugepages amount in both 2m and 1g size
class HugepagesConfig {
/// Amount of 1G hugepages
///
/// Optional.
core.int? hugepageSize1g;
/// Amount of 2M hugepages
///
/// Optional.
core.int? hugepageSize2m;
HugepagesConfig({this.hugepageSize1g, this.hugepageSize2m});
HugepagesConfig.fromJson(core.Map json_)
: this(
hugepageSize1g: json_['hugepageSize1g'] as core.int?,
hugepageSize2m: json_['hugepageSize2m'] as core.int?,
);
core.Map<core.String, core.dynamic> toJson() {
final hugepageSize1g = this.hugepageSize1g;
final hugepageSize2m = this.hugepageSize2m;
return {
'hugepageSize1g': ?hugepageSize1g,
'hugepageSize2m': ?hugepageSize2m,
};
}
}
/// ILBSubsettingConfig contains the desired config of L4 Internal LoadBalancer
/// subsetting on this cluster.
class ILBSubsettingConfig {
/// Enables l4 ILB subsetting for this cluster.
core.bool? enabled;
ILBSubsettingConfig({this.enabled});
ILBSubsettingConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Configuration for controlling how IPs are allocated in the cluster.
class IPAllocationPolicy {
/// The additional IP ranges that are added to the cluster.
///
/// These IP ranges can be used by new node pools to allocate node and pod IPs
/// automatically. Each AdditionalIPRangesConfig corresponds to a single
/// subnetwork. Once a range is removed it will not show up in
/// IPAllocationPolicy.
///
/// Output only.
core.List<AdditionalIPRangesConfig>? additionalIpRangesConfigs;
/// The additional pod ranges that are added to the cluster.
///
/// These pod ranges can be used by new node pools to allocate pod IPs
/// automatically. Once the range is removed it will not show up in
/// IPAllocationPolicy.
///
/// Output only.
AdditionalPodRangesConfig? additionalPodRangesConfig;
/// AutoIpamConfig contains all information related to Auto IPAM
///
/// Optional.
AutoIpamConfig? autoIpamConfig;
/// This field is deprecated, use cluster_ipv4_cidr_block.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterIpv4Cidr;
/// The IP address range for the cluster pod IPs.
///
/// If this field is set, then `cluster.cluster_ipv4_cidr` must be left blank.
/// This field is only applicable when `use_ip_aliases` is true. Set to blank
/// to have a range chosen with the default size. Set to /netmask (e.g. `/14`)
/// to have a range chosen with a specific netmask. Set to a
/// [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
/// notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
/// `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
/// to use.
core.String? clusterIpv4CidrBlock;
/// The name of the secondary range to be used for the cluster CIDR block.
///
/// The secondary range will be used for pod IP addresses. This must be an
/// existing secondary range associated with the cluster subnetwork. This
/// field is only applicable with use_ip_aliases is true and create_subnetwork
/// is false.
core.String? clusterSecondaryRangeName;
/// Whether a new subnetwork will be created automatically for the cluster.
///
/// This field is only applicable when `use_ip_aliases` is true.
core.bool? createSubnetwork;
/// The utilization of the cluster default IPv4 range for the pod.
///
/// The ratio is Usage/\[Total number of IPs in the secondary range\],
/// Usage=numNodes*numZones*podIPsPerNode.
///
/// Output only.
core.double? defaultPodIpv4RangeUtilization;
/// The ipv6 access type (internal or external) when create_subnetwork is true
/// Possible string values are:
/// - "IPV6_ACCESS_TYPE_UNSPECIFIED" : Default value, will be defaulted as
/// type external.
/// - "INTERNAL" : Access type internal (all v6 addresses are internal IPs)
/// - "EXTERNAL" : Access type external (all v6 addresses are external IPs)
core.String? ipv6AccessType;
/// Cluster-level network tier configuration is used to determine the default
/// network tier for external IP addresses on cluster resources, such as node
/// pools and load balancers.
NetworkTierConfig? networkTierConfig;
/// This field is deprecated, use node_ipv4_cidr_block.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? nodeIpv4Cidr;
/// The IP address range of the instance IPs in this cluster.
///
/// This is applicable only if `create_subnetwork` is true. Set to blank to
/// have a range chosen with the default size. Set to /netmask (e.g. `/14`) to
/// have a range chosen with a specific netmask. Set to a
/// [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
/// notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
/// `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
/// to use.
core.String? nodeIpv4CidrBlock;
/// \[PRIVATE FIELD\] Pod CIDR size overprovisioning config for the cluster.
///
/// Pod CIDR size per node depends on max_pods_per_node. By default, the value
/// of max_pods_per_node is doubled and then rounded off to next power of 2 to
/// get the size of pod CIDR block per node. Example: max_pods_per_node of 30
/// would result in 64 IPs (/26). This config can disable the doubling of IPs
/// (we still round off to next power of 2) Example: max_pods_per_node of 30
/// will result in 32 IPs (/27) when overprovisioning is disabled.
PodCIDROverprovisionConfig? podCidrOverprovisionConfig;
/// This field is deprecated, use services_ipv4_cidr_block.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? servicesIpv4Cidr;
/// The IP address range of the services IPs in this cluster.
///
/// If blank, a range will be automatically chosen with the default size. This
/// field is only applicable when `use_ip_aliases` is true. Set to blank to
/// have a range chosen with the default size. Set to /netmask (e.g. `/14`) to
/// have a range chosen with a specific netmask. Set to a
/// [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
/// notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
/// `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
/// to use.
core.String? servicesIpv4CidrBlock;
/// The services IPv6 CIDR block for the cluster.
///
/// Output only.
core.String? servicesIpv6CidrBlock;
/// The name of the secondary range to be used as for the services CIDR block.
///
/// The secondary range will be used for service ClusterIPs. This must be an
/// existing secondary range associated with the cluster subnetwork. This
/// field is only applicable with use_ip_aliases is true and create_subnetwork
/// is false.
core.String? servicesSecondaryRangeName;
/// The IP stack type of the cluster
/// Possible string values are:
/// - "STACK_TYPE_UNSPECIFIED" : Default value, will be defaulted as IPV4 only
/// - "IPV4" : Cluster is IPV4 only
/// - "IPV4_IPV6" : Cluster can use both IPv4 and IPv6
core.String? stackType;
/// The subnet's IPv6 CIDR block used by nodes and pods.
///
/// Output only.
core.String? subnetIpv6CidrBlock;
/// A custom subnetwork name to be used if `create_subnetwork` is true.
///
/// If this field is empty, then an automatic name will be chosen for the new
/// subnetwork.
core.String? subnetworkName;
/// The IP address range of the Cloud TPUs in this cluster.
///
/// If unspecified, a range will be automatically chosen with the default
/// size. This field is only applicable when `use_ip_aliases` is true. If
/// unspecified, the range will use the default size. Set to /netmask (e.g.
/// `/14`) to have a range chosen with a specific netmask. Set to a
/// [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
/// notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.
/// `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range
/// to use. This field is deprecated due to the deprecation of 2VM TPU. The
/// end of life date for 2VM TPU is 2025-04-25.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? tpuIpv4CidrBlock;
/// Whether alias IPs will be used for pod IPs in the cluster.
///
/// This is used in conjunction with use_routes. It cannot be true if
/// use_routes is true. If both use_ip_aliases and use_routes are false, then
/// the server picks the default IP allocation mode
core.bool? useIpAliases;
/// Whether routes will be used for pod IPs in the cluster.
///
/// This is used in conjunction with use_ip_aliases. It cannot be true if
/// use_ip_aliases is true. If both use_ip_aliases and use_routes are false,
/// then the server picks the default IP allocation mode
core.bool? useRoutes;
IPAllocationPolicy({
this.additionalIpRangesConfigs,
this.additionalPodRangesConfig,
this.autoIpamConfig,
this.clusterIpv4Cidr,
this.clusterIpv4CidrBlock,
this.clusterSecondaryRangeName,
this.createSubnetwork,
this.defaultPodIpv4RangeUtilization,
this.ipv6AccessType,
this.networkTierConfig,
this.nodeIpv4Cidr,
this.nodeIpv4CidrBlock,
this.podCidrOverprovisionConfig,
this.servicesIpv4Cidr,
this.servicesIpv4CidrBlock,
this.servicesIpv6CidrBlock,
this.servicesSecondaryRangeName,
this.stackType,
this.subnetIpv6CidrBlock,
this.subnetworkName,
this.tpuIpv4CidrBlock,
this.useIpAliases,
this.useRoutes,
});
IPAllocationPolicy.fromJson(core.Map json_)
: this(
additionalIpRangesConfigs:
(json_['additionalIpRangesConfigs'] as core.List?)
?.map(
(value) => AdditionalIPRangesConfig.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
additionalPodRangesConfig:
json_.containsKey('additionalPodRangesConfig')
? AdditionalPodRangesConfig.fromJson(
json_['additionalPodRangesConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
autoIpamConfig: json_.containsKey('autoIpamConfig')
? AutoIpamConfig.fromJson(
json_['autoIpamConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
clusterIpv4Cidr: json_['clusterIpv4Cidr'] as core.String?,
clusterIpv4CidrBlock: json_['clusterIpv4CidrBlock'] as core.String?,
clusterSecondaryRangeName:
json_['clusterSecondaryRangeName'] as core.String?,
createSubnetwork: json_['createSubnetwork'] as core.bool?,
defaultPodIpv4RangeUtilization:
(json_['defaultPodIpv4RangeUtilization'] as core.num?)?.toDouble(),
ipv6AccessType: json_['ipv6AccessType'] as core.String?,
networkTierConfig: json_.containsKey('networkTierConfig')
? NetworkTierConfig.fromJson(
json_['networkTierConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
nodeIpv4Cidr: json_['nodeIpv4Cidr'] as core.String?,
nodeIpv4CidrBlock: json_['nodeIpv4CidrBlock'] as core.String?,
podCidrOverprovisionConfig:
json_.containsKey('podCidrOverprovisionConfig')
? PodCIDROverprovisionConfig.fromJson(
json_['podCidrOverprovisionConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
servicesIpv4Cidr: json_['servicesIpv4Cidr'] as core.String?,
servicesIpv4CidrBlock: json_['servicesIpv4CidrBlock'] as core.String?,
servicesIpv6CidrBlock: json_['servicesIpv6CidrBlock'] as core.String?,
servicesSecondaryRangeName:
json_['servicesSecondaryRangeName'] as core.String?,
stackType: json_['stackType'] as core.String?,
subnetIpv6CidrBlock: json_['subnetIpv6CidrBlock'] as core.String?,
subnetworkName: json_['subnetworkName'] as core.String?,
tpuIpv4CidrBlock: json_['tpuIpv4CidrBlock'] as core.String?,
useIpAliases: json_['useIpAliases'] as core.bool?,
useRoutes: json_['useRoutes'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final additionalIpRangesConfigs = this.additionalIpRangesConfigs;
final additionalPodRangesConfig = this.additionalPodRangesConfig;
final autoIpamConfig = this.autoIpamConfig;
final clusterIpv4Cidr = this.clusterIpv4Cidr;
final clusterIpv4CidrBlock = this.clusterIpv4CidrBlock;
final clusterSecondaryRangeName = this.clusterSecondaryRangeName;
final createSubnetwork = this.createSubnetwork;
final defaultPodIpv4RangeUtilization = this.defaultPodIpv4RangeUtilization;
final ipv6AccessType = this.ipv6AccessType;
final networkTierConfig = this.networkTierConfig;
final nodeIpv4Cidr = this.nodeIpv4Cidr;
final nodeIpv4CidrBlock = this.nodeIpv4CidrBlock;
final podCidrOverprovisionConfig = this.podCidrOverprovisionConfig;
final servicesIpv4Cidr = this.servicesIpv4Cidr;
final servicesIpv4CidrBlock = this.servicesIpv4CidrBlock;
final servicesIpv6CidrBlock = this.servicesIpv6CidrBlock;
final servicesSecondaryRangeName = this.servicesSecondaryRangeName;
final stackType = this.stackType;
final subnetIpv6CidrBlock = this.subnetIpv6CidrBlock;
final subnetworkName = this.subnetworkName;
final tpuIpv4CidrBlock = this.tpuIpv4CidrBlock;
final useIpAliases = this.useIpAliases;
final useRoutes = this.useRoutes;
return {
'additionalIpRangesConfigs': ?additionalIpRangesConfigs,
'additionalPodRangesConfig': ?additionalPodRangesConfig,
'autoIpamConfig': ?autoIpamConfig,
'clusterIpv4Cidr': ?clusterIpv4Cidr,
'clusterIpv4CidrBlock': ?clusterIpv4CidrBlock,
'clusterSecondaryRangeName': ?clusterSecondaryRangeName,
'createSubnetwork': ?createSubnetwork,
'defaultPodIpv4RangeUtilization': ?defaultPodIpv4RangeUtilization,
'ipv6AccessType': ?ipv6AccessType,
'networkTierConfig': ?networkTierConfig,
'nodeIpv4Cidr': ?nodeIpv4Cidr,
'nodeIpv4CidrBlock': ?nodeIpv4CidrBlock,
'podCidrOverprovisionConfig': ?podCidrOverprovisionConfig,
'servicesIpv4Cidr': ?servicesIpv4Cidr,
'servicesIpv4CidrBlock': ?servicesIpv4CidrBlock,
'servicesIpv6CidrBlock': ?servicesIpv6CidrBlock,
'servicesSecondaryRangeName': ?servicesSecondaryRangeName,
'stackType': ?stackType,
'subnetIpv6CidrBlock': ?subnetIpv6CidrBlock,
'subnetworkName': ?subnetworkName,
'tpuIpv4CidrBlock': ?tpuIpv4CidrBlock,
'useIpAliases': ?useIpAliases,
'useRoutes': ?useRoutes,
};
}
}
/// IP endpoints configuration.
class IPEndpointsConfig {
/// Configuration of authorized networks.
///
/// If enabled, restricts access to the control plane based on source IP. It
/// is invalid to specify both Cluster.masterAuthorizedNetworksConfig and this
/// field at the same time.
MasterAuthorizedNetworksConfig? authorizedNetworksConfig;
/// Controls whether the control plane allows access through a public IP.
///
/// It is invalid to specify both PrivateClusterConfig.enablePrivateEndpoint
/// and this field at the same time.
core.bool? enablePublicEndpoint;
/// Controls whether to allow direct IP access.
core.bool? enabled;
/// Controls whether the control plane's private endpoint is accessible from
/// sources in other regions.
///
/// It is invalid to specify both
/// PrivateClusterMasterGlobalAccessConfig.enabled and this field at the same
/// time.
core.bool? globalAccess;
/// The internal IP address of this cluster's control plane.
///
/// Only populated if enabled.
///
/// Output only.
core.String? privateEndpoint;
/// Subnet to provision the master's private endpoint during cluster creation.
///
/// Specified in projects / * /regions / * /subnetworks / * format. It is
/// invalid to specify both PrivateClusterConfig.privateEndpointSubnetwork and
/// this field at the same time.
core.String? privateEndpointSubnetwork;
/// The external IP address of this cluster's control plane.
///
/// Only populated if enabled.
///
/// Output only.
core.String? publicEndpoint;
IPEndpointsConfig({
this.authorizedNetworksConfig,
this.enablePublicEndpoint,
this.enabled,
this.globalAccess,
this.privateEndpoint,
this.privateEndpointSubnetwork,
this.publicEndpoint,
});
IPEndpointsConfig.fromJson(core.Map json_)
: this(
authorizedNetworksConfig: json_.containsKey('authorizedNetworksConfig')
? MasterAuthorizedNetworksConfig.fromJson(
json_['authorizedNetworksConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
enablePublicEndpoint: json_['enablePublicEndpoint'] as core.bool?,
enabled: json_['enabled'] as core.bool?,
globalAccess: json_['globalAccess'] as core.bool?,
privateEndpoint: json_['privateEndpoint'] as core.String?,
privateEndpointSubnetwork:
json_['privateEndpointSubnetwork'] as core.String?,
publicEndpoint: json_['publicEndpoint'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final authorizedNetworksConfig = this.authorizedNetworksConfig;
final enablePublicEndpoint = this.enablePublicEndpoint;
final enabled = this.enabled;
final globalAccess = this.globalAccess;
final privateEndpoint = this.privateEndpoint;
final privateEndpointSubnetwork = this.privateEndpointSubnetwork;
final publicEndpoint = this.publicEndpoint;
return {
'authorizedNetworksConfig': ?authorizedNetworksConfig,
'enablePublicEndpoint': ?enablePublicEndpoint,
'enabled': ?enabled,
'globalAccess': ?globalAccess,
'privateEndpoint': ?privateEndpoint,
'privateEndpointSubnetwork': ?privateEndpointSubnetwork,
'publicEndpoint': ?publicEndpoint,
};
}
}
/// IdentityServiceConfig is configuration for Identity Service which allows
/// customers to use external identity providers with the K8S API
class IdentityServiceConfig {
/// Whether to enable the Identity Service component
core.bool? enabled;
IdentityServiceConfig({this.enabled});
IdentityServiceConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// IntraNodeVisibilityConfig contains the desired config of the intra-node
/// visibility on this cluster.
class IntraNodeVisibilityConfig {
/// Enables intra node visibility for this cluster.
core.bool? enabled;
IntraNodeVisibilityConfig({this.enabled});
IntraNodeVisibilityConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Jwk is a JSON Web Key as specified in RFC 7517
class Jwk {
/// Algorithm.
core.String? alg;
/// Used for ECDSA keys.
core.String? crv;
/// Used for RSA keys.
core.String? e;
/// Key ID.
core.String? kid;
/// Key Type.
core.String? kty;
/// Used for RSA keys.
core.String? n;
/// Permitted uses for the public keys.
core.String? use;
/// Used for ECDSA keys.
core.String? x;
/// Used for ECDSA keys.
core.String? y;
Jwk({
this.alg,
this.crv,
this.e,
this.kid,
this.kty,
this.n,
this.use,
this.x,
this.y,
});
Jwk.fromJson(core.Map json_)
: this(
alg: json_['alg'] as core.String?,
crv: json_['crv'] as core.String?,
e: json_['e'] as core.String?,
kid: json_['kid'] as core.String?,
kty: json_['kty'] as core.String?,
n: json_['n'] as core.String?,
use: json_['use'] as core.String?,
x: json_['x'] as core.String?,
y: json_['y'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final alg = this.alg;
final crv = this.crv;
final e = this.e;
final kid = this.kid;
final kty = this.kty;
final n = this.n;
final use = this.use;
final x = this.x;
final y = this.y;
return {
'alg': ?alg,
'crv': ?crv,
'e': ?e,
'kid': ?kid,
'kty': ?kty,
'n': ?n,
'use': ?use,
'x': ?x,
'y': ?y,
};
}
}
/// K8sBetaAPIConfig , configuration for beta APIs
class K8sBetaAPIConfig {
/// Enabled k8s beta APIs.
core.List<core.String>? enabledApis;
K8sBetaAPIConfig({this.enabledApis});
K8sBetaAPIConfig.fromJson(core.Map json_)
: this(
enabledApis: (json_['enabledApis'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final enabledApis = this.enabledApis;
return {'enabledApis': ?enabledApis};
}
}
/// Configuration for the Kubernetes Dashboard.
class KubernetesDashboard {
/// Whether the Kubernetes Dashboard is enabled for this cluster.
core.bool? disabled;
KubernetesDashboard({this.disabled});
KubernetesDashboard.fromJson(core.Map json_)
: this(disabled: json_['disabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final disabled = this.disabled;
return {'disabled': ?disabled};
}
}
/// Configuration for the legacy Attribute Based Access Control authorization
/// mode.
class LegacyAbac {
/// Whether the ABAC authorizer is enabled for this cluster.
///
/// When enabled, identities in the system, including service accounts, nodes,
/// and controllers, will have statically granted permissions beyond those
/// provided by the RBAC configuration or IAM.
core.bool? enabled;
LegacyAbac({this.enabled});
LegacyAbac.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Parameters that can be configured on Linux nodes.
class LinuxNodeConfig {
/// The accurate time configuration for the node pool.
///
/// Optional.
AccurateTimeConfig? accurateTimeConfig;
/// cgroup_mode specifies the cgroup mode to be used on the node.
/// Possible string values are:
/// - "CGROUP_MODE_UNSPECIFIED" : CGROUP_MODE_UNSPECIFIED is when unspecified
/// cgroup configuration is used. The default for the GKE node OS image will
/// be used.
/// - "CGROUP_MODE_V1" : CGROUP_MODE_V1 specifies to use cgroupv1 for the
/// cgroup configuration on the node image.
/// - "CGROUP_MODE_V2" : CGROUP_MODE_V2 specifies to use cgroupv2 for the
/// cgroup configuration on the node image.
core.String? cgroupMode;
/// Amounts for 2M and 1G hugepages
///
/// Optional.
HugepagesConfig? hugepages;
/// Configuration for kernel module loading on nodes.
///
/// When enabled, the node pool will be provisioned with a Container-Optimized
/// OS image that enforces kernel module signature verification.
///
/// Optional.
NodeKernelModuleLoading? nodeKernelModuleLoading;
/// Enables and configures swap space on nodes.
///
/// If omitted, swap is disabled.
///
/// Optional.
SwapConfig? swapConfig;
/// The Linux kernel parameters to be applied to the nodes and all pods
/// running on the nodes.
///
/// The following parameters are supported. net.core.busy_poll
/// net.core.busy_read net.core.netdev_max_backlog net.core.rmem_max
/// net.core.rmem_default net.core.wmem_default net.core.wmem_max
/// net.core.optmem_max net.core.somaxconn net.ipv4.tcp_rmem net.ipv4.tcp_wmem
/// net.ipv4.tcp_tw_reuse net.ipv4.tcp_mtu_probing net.ipv4.tcp_max_orphans
/// net.ipv4.tcp_max_tw_buckets net.ipv4.tcp_syn_retries net.ipv4.tcp_ecn
/// net.ipv4.tcp_congestion_control net.netfilter.nf_conntrack_max
/// net.netfilter.nf_conntrack_buckets
/// net.netfilter.nf_conntrack_tcp_timeout_close_wait
/// net.netfilter.nf_conntrack_tcp_timeout_time_wait
/// net.netfilter.nf_conntrack_tcp_timeout_established
/// net.netfilter.nf_conntrack_acct kernel.shmmni kernel.shmmax kernel.shmall
/// kernel.perf_event_paranoid kernel.sched_rt_runtime_us
/// kernel.softlockup_panic kernel.yama.ptrace_scope kernel.kptr_restrict
/// kernel.dmesg_restrict kernel.sysrq fs.aio-max-nr fs.file-max
/// fs.inotify.max_user_instances fs.inotify.max_user_watches fs.nr_open
/// vm.dirty_background_ratio vm.dirty_background_bytes
/// vm.dirty_expire_centisecs vm.dirty_ratio vm.dirty_bytes
/// vm.dirty_writeback_centisecs vm.max_map_count vm.overcommit_memory
/// vm.overcommit_ratio vm.vfs_cache_pressure vm.swappiness
/// vm.watermark_scale_factor vm.min_free_kbytes
core.Map<core.String, core.String>? sysctls;
/// Defines the transparent hugepage defrag configuration on the node.
///
/// VM hugepage allocation can be managed by either limiting defragmentation
/// for delayed allocation or skipping it entirely for immediate allocation
/// only. See https://docs.kernel.org/admin-guide/mm/transhuge.html for more
/// details.
///
/// Optional.
/// Possible string values are:
/// - "TRANSPARENT_HUGEPAGE_DEFRAG_UNSPECIFIED" : Default value. GKE will not
/// modify the kernel configuration.
/// - "TRANSPARENT_HUGEPAGE_DEFRAG_ALWAYS" : It means that an application
/// requesting THP will stall on allocation failure and directly reclaim pages
/// and compact memory in an effort to allocate a THP immediately.
/// - "TRANSPARENT_HUGEPAGE_DEFRAG_DEFER" : It means that an application will
/// wake kswapd in the background to reclaim pages and wake kcompactd to
/// compact memory so that THP is available in the near future. It's the
/// responsibility of khugepaged to then install the THP pages later.
/// - "TRANSPARENT_HUGEPAGE_DEFRAG_DEFER_WITH_MADVISE" : It means that an
/// application will enter direct reclaim and compaction like always, but only
/// for regions that have used madvise(MADV_HUGEPAGE); all other regions will
/// wake kswapd in the background to reclaim pages and wake kcompactd to
/// compact memory so that THP is available in the near future.
/// - "TRANSPARENT_HUGEPAGE_DEFRAG_MADVISE" : It means that an application
/// will enter direct reclaim like always but only for regions that are have
/// used madvise(MADV_HUGEPAGE). This is the default kernel configuration.
/// - "TRANSPARENT_HUGEPAGE_DEFRAG_NEVER" : It means that an application will
/// never enter direct reclaim or compaction.
core.String? transparentHugepageDefrag;
/// Transparent hugepage support for anonymous memory can be entirely disabled
/// (mostly for debugging purposes) or only enabled inside MADV_HUGEPAGE
/// regions (to avoid the risk of consuming more memory resources) or enabled
/// system wide.
///
/// See https://docs.kernel.org/admin-guide/mm/transhuge.html for more
/// details.
///
/// Optional.
/// Possible string values are:
/// - "TRANSPARENT_HUGEPAGE_ENABLED_UNSPECIFIED" : Default value. GKE will not
/// modify the kernel configuration.
/// - "TRANSPARENT_HUGEPAGE_ENABLED_ALWAYS" : Transparent hugepage support for
/// anonymous memory is enabled system wide.
/// - "TRANSPARENT_HUGEPAGE_ENABLED_MADVISE" : Transparent hugepage support
/// for anonymous memory is enabled inside MADV_HUGEPAGE regions. This is the
/// default kernel configuration.
/// - "TRANSPARENT_HUGEPAGE_ENABLED_NEVER" : Transparent hugepage support for
/// anonymous memory is disabled.
core.String? transparentHugepageEnabled;
LinuxNodeConfig({
this.accurateTimeConfig,
this.cgroupMode,
this.hugepages,
this.nodeKernelModuleLoading,
this.swapConfig,
this.sysctls,
this.transparentHugepageDefrag,
this.transparentHugepageEnabled,
});
LinuxNodeConfig.fromJson(core.Map json_)
: this(
accurateTimeConfig: json_.containsKey('accurateTimeConfig')
? AccurateTimeConfig.fromJson(
json_['accurateTimeConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
cgroupMode: json_['cgroupMode'] as core.String?,
hugepages: json_.containsKey('hugepages')
? HugepagesConfig.fromJson(
json_['hugepages'] as core.Map<core.String, core.dynamic>,
)
: null,
nodeKernelModuleLoading: json_.containsKey('nodeKernelModuleLoading')
? NodeKernelModuleLoading.fromJson(
json_['nodeKernelModuleLoading']
as core.Map<core.String, core.dynamic>,
)
: null,
swapConfig: json_.containsKey('swapConfig')
? SwapConfig.fromJson(
json_['swapConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
sysctls: (json_['sysctls'] as core.Map<core.String, core.dynamic>?)
?.map((key, value) => core.MapEntry(key, value as core.String)),
transparentHugepageDefrag:
json_['transparentHugepageDefrag'] as core.String?,
transparentHugepageEnabled:
json_['transparentHugepageEnabled'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final accurateTimeConfig = this.accurateTimeConfig;
final cgroupMode = this.cgroupMode;
final hugepages = this.hugepages;
final nodeKernelModuleLoading = this.nodeKernelModuleLoading;
final swapConfig = this.swapConfig;
final sysctls = this.sysctls;
final transparentHugepageDefrag = this.transparentHugepageDefrag;
final transparentHugepageEnabled = this.transparentHugepageEnabled;
return {
'accurateTimeConfig': ?accurateTimeConfig,
'cgroupMode': ?cgroupMode,
'hugepages': ?hugepages,
'nodeKernelModuleLoading': ?nodeKernelModuleLoading,
'swapConfig': ?swapConfig,
'sysctls': ?sysctls,
'transparentHugepageDefrag': ?transparentHugepageDefrag,
'transparentHugepageEnabled': ?transparentHugepageEnabled,
};
}
}
/// ListClustersResponse is the result of ListClustersRequest.
class ListClustersResponse {
/// A list of clusters in the project in the specified zone, or across all
/// ones.
core.List<Cluster>? clusters;
/// If any zones are listed here, the list of clusters returned may be missing
/// those zones.
core.List<core.String>? missingZones;
ListClustersResponse({this.clusters, this.missingZones});
ListClustersResponse.fromJson(core.Map json_)
: this(
clusters: (json_['clusters'] as core.List?)
?.map(
(value) => Cluster.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
missingZones: (json_['missingZones'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final clusters = this.clusters;
final missingZones = this.missingZones;
return {'clusters': ?clusters, 'missingZones': ?missingZones};
}
}
/// ListNodePoolsResponse is the result of ListNodePoolsRequest.
class ListNodePoolsResponse {
/// A list of node pools for a cluster.
core.List<NodePool>? nodePools;
ListNodePoolsResponse({this.nodePools});
ListNodePoolsResponse.fromJson(core.Map json_)
: this(
nodePools: (json_['nodePools'] as core.List?)
?.map(
(value) => NodePool.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final nodePools = this.nodePools;
return {'nodePools': ?nodePools};
}
}
/// ListOperationsResponse is the result of ListOperationsRequest.
class ListOperationsResponse {
/// If any zones are listed here, the list of operations returned may be
/// missing the operations from those zones.
core.List<core.String>? missingZones;
/// A list of operations in the project in the specified zone.
core.List<Operation>? operations;
ListOperationsResponse({this.missingZones, this.operations});
ListOperationsResponse.fromJson(core.Map json_)
: this(
missingZones: (json_['missingZones'] as core.List?)
?.map((value) => value as core.String)
.toList(),
operations: (json_['operations'] as core.List?)
?.map(
(value) => Operation.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final missingZones = this.missingZones;
final operations = this.operations;
return {'missingZones': ?missingZones, 'operations': ?operations};
}
}
/// ListUsableSubnetworksResponse is the response of
/// ListUsableSubnetworksRequest.
class ListUsableSubnetworksResponse {
/// This token allows you to get the next page of results for list requests.
///
/// If the number of results is larger than `page_size`, use the
/// `next_page_token` as a value for the query parameter `page_token` in the
/// next request. The value will become empty when there are no more pages.
core.String? nextPageToken;
/// A list of usable subnetworks in the specified network project.
core.List<UsableSubnetwork>? subnetworks;
ListUsableSubnetworksResponse({this.nextPageToken, this.subnetworks});
ListUsableSubnetworksResponse.fromJson(core.Map json_)
: this(
nextPageToken: json_['nextPageToken'] as core.String?,
subnetworks: (json_['subnetworks'] as core.List?)
?.map(
(value) => UsableSubnetwork.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final nextPageToken = this.nextPageToken;
final subnetworks = this.subnetworks;
return {'nextPageToken': ?nextPageToken, 'subnetworks': ?subnetworks};
}
}
/// LocalNvmeSsdBlockConfig contains configuration for using raw-block local
/// NVMe SSDs
class LocalNvmeSsdBlockConfig {
/// Number of local NVMe SSDs to use.
///
/// The limit for this value is dependent upon the maximum number of disk
/// available on a machine per zone. See:
/// https://cloud.google.com/compute/docs/disks/local-ssd for more
/// information. A zero (or unset) value has different meanings depending on
/// machine type being used: 1. For pre-Gen3 machines, which support flexible
/// numbers of local ssds, zero (or unset) means to disable using local SSDs
/// as ephemeral storage. 2. For Gen3 machines which dictate a specific number
/// of local ssds, zero (or unset) means to use the default number of local
/// ssds that goes with that machine type. For example, for a
/// c3-standard-8-lssd machine, 2 local ssds would be provisioned. For
/// c3-standard-8 (which doesn't support local ssds), 0 will be provisioned.
/// See
/// https://cloud.google.com/compute/docs/disks/local-ssd#choose_number_local_ssds
/// for more info.
core.int? localSsdCount;
LocalNvmeSsdBlockConfig({this.localSsdCount});
LocalNvmeSsdBlockConfig.fromJson(core.Map json_)
: this(localSsdCount: json_['localSsdCount'] as core.int?);
core.Map<core.String, core.dynamic> toJson() {
final localSsdCount = this.localSsdCount;
return {'localSsdCount': ?localSsdCount};
}
}
/// LoggingComponentConfig is cluster logging component configuration.
class LoggingComponentConfig {
/// Select components to collect logs.
///
/// An empty set would disable all logging.
core.List<core.String>? enableComponents;
LoggingComponentConfig({this.enableComponents});
LoggingComponentConfig.fromJson(core.Map json_)
: this(
enableComponents: (json_['enableComponents'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final enableComponents = this.enableComponents;
return {'enableComponents': ?enableComponents};
}
}
/// LoggingConfig is cluster logging configuration.
class LoggingConfig {
/// Logging components configuration
LoggingComponentConfig? componentConfig;
LoggingConfig({this.componentConfig});
LoggingConfig.fromJson(core.Map json_)
: this(
componentConfig: json_.containsKey('componentConfig')
? LoggingComponentConfig.fromJson(
json_['componentConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final componentConfig = this.componentConfig;
return {'componentConfig': ?componentConfig};
}
}
/// LoggingVariantConfig specifies the behaviour of the logging component.
class LoggingVariantConfig {
/// Logging variant deployed on nodes.
/// Possible string values are:
/// - "VARIANT_UNSPECIFIED" : Default value. This shouldn't be used.
/// - "DEFAULT" : default logging variant.
/// - "MAX_THROUGHPUT" : maximum logging throughput variant.
core.String? variant;
LoggingVariantConfig({this.variant});
LoggingVariantConfig.fromJson(core.Map json_)
: this(variant: json_['variant'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final variant = this.variant;
return {'variant': ?variant};
}
}
/// Configuration for the Lustre CSI driver.
class LustreCsiDriverConfig {
/// When set to true, this disables multi-NIC support for the Lustre CSI
/// driver.
///
/// By default, GKE enables multi-NIC support, which allows the Lustre CSI
/// driver to automatically detect and configure all suitable network
/// interfaces on a node to maximize I/O performance for demanding workloads.
core.bool? disableMultiNic;
/// If set to true, the Lustre CSI driver will install Lustre kernel modules
/// using port 6988.
///
/// This serves as a workaround for a port conflict with the
/// gke-metadata-server. This field is required ONLY under the following
/// conditions: 1. The GKE node version is older than 1.33.2-gke.4655000. 2.
/// You're connecting to a Lustre instance that has the 'gke-support-enabled'
/// flag. Deprecated: This flag is no longer required as of GKE node version
/// 1.33.2-gke.4655000, unless you are connecting to a Lustre instance that
/// has the `gke-support-enabled` flag.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? enableLegacyLustrePort;
/// Whether the Lustre CSI driver is enabled for this cluster.
core.bool? enabled;
LustreCsiDriverConfig({
this.disableMultiNic,
this.enableLegacyLustrePort,
this.enabled,
});
LustreCsiDriverConfig.fromJson(core.Map json_)
: this(
disableMultiNic: json_['disableMultiNic'] as core.bool?,
enableLegacyLustrePort: json_['enableLegacyLustrePort'] as core.bool?,
enabled: json_['enabled'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final disableMultiNic = this.disableMultiNic;
final enableLegacyLustrePort = this.enableLegacyLustrePort;
final enabled = this.enabled;
return {
'disableMultiNic': ?disableMultiNic,
'enableLegacyLustrePort': ?enableLegacyLustrePort,
'enabled': ?enabled,
};
}
}
/// Represents the Maintenance exclusion option.
class MaintenanceExclusionOptions {
/// EndTimeBehavior specifies the behavior of the exclusion end time.
/// Possible string values are:
/// - "END_TIME_BEHAVIOR_UNSPECIFIED" : END_TIME_BEHAVIOR_UNSPECIFIED is the
/// default behavior, which is fixed end time.
/// - "UNTIL_END_OF_SUPPORT" : UNTIL_END_OF_SUPPORT means the exclusion will
/// be in effect until the end of the support of the cluster's current
/// version.
core.String? endTimeBehavior;
/// Scope specifies the upgrade scope which upgrades are blocked by the
/// exclusion.
/// Possible string values are:
/// - "NO_UPGRADES" : NO_UPGRADES excludes all upgrades, including patch
/// upgrades and minor upgrades across control planes and nodes. This is the
/// default exclusion behavior.
/// - "NO_MINOR_UPGRADES" : NO_MINOR_UPGRADES excludes all minor upgrades for
/// the cluster, only patches are allowed.
/// - "NO_MINOR_OR_NODE_UPGRADES" : NO_MINOR_OR_NODE_UPGRADES excludes all
/// minor upgrades for the cluster, and also exclude all node pool upgrades.
/// Only control plane patches are allowed.
core.String? scope;
MaintenanceExclusionOptions({this.endTimeBehavior, this.scope});
MaintenanceExclusionOptions.fromJson(core.Map json_)
: this(
endTimeBehavior: json_['endTimeBehavior'] as core.String?,
scope: json_['scope'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final endTimeBehavior = this.endTimeBehavior;
final scope = this.scope;
return {'endTimeBehavior': ?endTimeBehavior, 'scope': ?scope};
}
}
/// MaintenancePolicy defines the maintenance policy to be used for the cluster.
class MaintenancePolicy {
/// The upgrade disruption budget for the cluster control plane.
///
/// Optional.
DisruptionBudget? disruptionBudget;
/// A hash identifying the version of this policy, so that updates to fields
/// of the policy won't accidentally undo intermediate changes (and so that
/// users of the API unaware of some fields won't accidentally remove other
/// fields).
///
/// Make a `get()` request to the cluster to get the current resource version
/// and include it with requests to set the policy.
core.String? resourceVersion;
/// Specifies the maintenance window in which maintenance may be performed.
MaintenanceWindow? window;
MaintenancePolicy({this.disruptionBudget, this.resourceVersion, this.window});
MaintenancePolicy.fromJson(core.Map json_)
: this(
disruptionBudget: json_.containsKey('disruptionBudget')
? DisruptionBudget.fromJson(
json_['disruptionBudget']
as core.Map<core.String, core.dynamic>,
)
: null,
resourceVersion: json_['resourceVersion'] as core.String?,
window: json_.containsKey('window')
? MaintenanceWindow.fromJson(
json_['window'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final disruptionBudget = this.disruptionBudget;
final resourceVersion = this.resourceVersion;
final window = this.window;
return {
'disruptionBudget': ?disruptionBudget,
'resourceVersion': ?resourceVersion,
'window': ?window,
};
}
}
/// MaintenanceWindow defines the maintenance window to be used for the cluster.
class MaintenanceWindow {
/// DailyMaintenanceWindow specifies a daily maintenance operation window.
DailyMaintenanceWindow? dailyMaintenanceWindow;
/// Exceptions to maintenance window.
///
/// Non-emergency maintenance should not occur in these windows.
core.Map<core.String, TimeWindow>? maintenanceExclusions;
/// RecurringWindow specifies some number of recurring time periods for
/// maintenance to occur.
///
/// The time windows may be overlapping. If no maintenance windows are set,
/// maintenance can occur at any time.
RecurringTimeWindow? recurringWindow;
MaintenanceWindow({
this.dailyMaintenanceWindow,
this.maintenanceExclusions,
this.recurringWindow,
});
MaintenanceWindow.fromJson(core.Map json_)
: this(
dailyMaintenanceWindow: json_.containsKey('dailyMaintenanceWindow')
? DailyMaintenanceWindow.fromJson(
json_['dailyMaintenanceWindow']
as core.Map<core.String, core.dynamic>,
)
: null,
maintenanceExclusions:
(json_['maintenanceExclusions']
as core.Map<core.String, core.dynamic>?)
?.map(
(key, value) => core.MapEntry(
key,
TimeWindow.fromJson(
value as core.Map<core.String, core.dynamic>,
),
),
),
recurringWindow: json_.containsKey('recurringWindow')
? RecurringTimeWindow.fromJson(
json_['recurringWindow'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final dailyMaintenanceWindow = this.dailyMaintenanceWindow;
final maintenanceExclusions = this.maintenanceExclusions;
final recurringWindow = this.recurringWindow;
return {
'dailyMaintenanceWindow': ?dailyMaintenanceWindow,
'maintenanceExclusions': ?maintenanceExclusions,
'recurringWindow': ?recurringWindow,
};
}
}
/// ManagedMachineLearningDiagnosticsConfig is the configuration for the GKE
/// Managed Machine Learning Diagnostics pipeline.
class ManagedMachineLearningDiagnosticsConfig {
/// Enable/Disable Managed Machine Learning Diagnostics.
core.bool? enabled;
ManagedMachineLearningDiagnosticsConfig({this.enabled});
ManagedMachineLearningDiagnosticsConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// ManagedOpenTelemetryConfig is the configuration for the GKE Managed
/// OpenTelemetry pipeline.
class ManagedOpenTelemetryConfig {
/// Scope of the Managed OpenTelemetry pipeline.
/// Possible string values are:
/// - "SCOPE_UNSPECIFIED" : SCOPE_UNSPECIFIED is when the scope is not set.
/// - "NONE" : NONE is used to disable the Managed OpenTelemetry pipeline.
/// - "COLLECTION_AND_INSTRUMENTATION_COMPONENTS" :
/// COLLECTION_AND_INSTRUMENTATION_COMPONENTS is used to enable the Managed
/// OpenTelemetry pipeline for collection and instrumentation components.
core.String? scope;
ManagedOpenTelemetryConfig({this.scope});
ManagedOpenTelemetryConfig.fromJson(core.Map json_)
: this(scope: json_['scope'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final scope = this.scope;
return {'scope': ?scope};
}
}
/// ManagedPrometheusConfig defines the configuration for Google Cloud Managed
/// Service for Prometheus.
class ManagedPrometheusConfig {
/// GKE Workload Auto-Monitoring Configuration.
AutoMonitoringConfig? autoMonitoringConfig;
/// Enable Managed Collection.
core.bool? enabled;
ManagedPrometheusConfig({this.autoMonitoringConfig, this.enabled});
ManagedPrometheusConfig.fromJson(core.Map json_)
: this(
autoMonitoringConfig: json_.containsKey('autoMonitoringConfig')
? AutoMonitoringConfig.fromJson(
json_['autoMonitoringConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
enabled: json_['enabled'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final autoMonitoringConfig = this.autoMonitoringConfig;
final enabled = this.enabled;
return {'autoMonitoringConfig': ?autoMonitoringConfig, 'enabled': ?enabled};
}
}
/// The authentication information for accessing the master endpoint.
///
/// Authentication can be done using HTTP basic auth or using client
/// certificates.
class MasterAuth {
/// Base64-encoded public certificate used by clients to authenticate to the
/// cluster endpoint.
///
/// Issued only if client_certificate_config is set.
///
/// Output only.
core.String? clientCertificate;
/// Configuration for client certificate authentication on the cluster.
///
/// For clusters before v1.12, if no configuration is specified, a client
/// certificate is issued.
ClientCertificateConfig? clientCertificateConfig;
/// Base64-encoded private key used by clients to authenticate to the cluster
/// endpoint.
///
/// Output only.
core.String? clientKey;
/// Base64-encoded public certificate that is the root of trust for the
/// cluster.
///
/// Output only.
core.String? clusterCaCertificate;
/// The password to use for HTTP basic authentication to the master endpoint.
///
/// Because the master endpoint is open to the Internet, you should create a
/// strong password. If a password is provided for cluster creation, username
/// must be non-empty. Warning: basic authentication is deprecated, and will
/// be removed in GKE control plane versions 1.19 and newer. For a list of
/// recommended authentication methods, see:
/// https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? password;
/// The username to use for HTTP basic authentication to the master endpoint.
///
/// For clusters v1.6.0 and later, basic authentication can be disabled by
/// leaving username unspecified (or setting it to the empty string). Warning:
/// basic authentication is deprecated, and will be removed in GKE control
/// plane versions 1.19 and newer. For a list of recommended authentication
/// methods, see:
/// https://cloud.google.com/kubernetes-engine/docs/how-to/api-server-authentication
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? username;
MasterAuth({
this.clientCertificate,
this.clientCertificateConfig,
this.clientKey,
this.clusterCaCertificate,
this.password,
this.username,
});
MasterAuth.fromJson(core.Map json_)
: this(
clientCertificate: json_['clientCertificate'] as core.String?,
clientCertificateConfig: json_.containsKey('clientCertificateConfig')
? ClientCertificateConfig.fromJson(
json_['clientCertificateConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
clientKey: json_['clientKey'] as core.String?,
clusterCaCertificate: json_['clusterCaCertificate'] as core.String?,
password: json_['password'] as core.String?,
username: json_['username'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clientCertificate = this.clientCertificate;
final clientCertificateConfig = this.clientCertificateConfig;
final clientKey = this.clientKey;
final clusterCaCertificate = this.clusterCaCertificate;
final password = this.password;
final username = this.username;
return {
'clientCertificate': ?clientCertificate,
'clientCertificateConfig': ?clientCertificateConfig,
'clientKey': ?clientKey,
'clusterCaCertificate': ?clusterCaCertificate,
'password': ?password,
'username': ?username,
};
}
}
/// Configuration options for the master authorized networks feature.
///
/// Enabled master authorized networks will disallow all external traffic to
/// access Kubernetes master through HTTPS except traffic from the given CIDR
/// blocks, Google Compute Engine Public IPs and Google Prod IPs.
class MasterAuthorizedNetworksConfig {
/// cidr_blocks define up to 50 external networks that could access Kubernetes
/// master through HTTPS.
core.List<CidrBlock>? cidrBlocks;
/// Whether or not master authorized networks is enabled.
core.bool? enabled;
/// Whether master is accessible via Google Compute Engine Public IP
/// addresses.
core.bool? gcpPublicCidrsAccessEnabled;
/// Whether master authorized networks is enforced on private endpoint or not.
core.bool? privateEndpointEnforcementEnabled;
MasterAuthorizedNetworksConfig({
this.cidrBlocks,
this.enabled,
this.gcpPublicCidrsAccessEnabled,
this.privateEndpointEnforcementEnabled,
});
MasterAuthorizedNetworksConfig.fromJson(core.Map json_)
: this(
cidrBlocks: (json_['cidrBlocks'] as core.List?)
?.map(
(value) => CidrBlock.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
enabled: json_['enabled'] as core.bool?,
gcpPublicCidrsAccessEnabled:
json_['gcpPublicCidrsAccessEnabled'] as core.bool?,
privateEndpointEnforcementEnabled:
json_['privateEndpointEnforcementEnabled'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final cidrBlocks = this.cidrBlocks;
final enabled = this.enabled;
final gcpPublicCidrsAccessEnabled = this.gcpPublicCidrsAccessEnabled;
final privateEndpointEnforcementEnabled =
this.privateEndpointEnforcementEnabled;
return {
'cidrBlocks': ?cidrBlocks,
'enabled': ?enabled,
'gcpPublicCidrsAccessEnabled': ?gcpPublicCidrsAccessEnabled,
'privateEndpointEnforcementEnabled': ?privateEndpointEnforcementEnabled,
};
}
}
/// Constraints applied to pods.
class MaxPodsConstraint {
/// Constraint enforced on the max num of pods per node.
core.String? maxPodsPerNode;
MaxPodsConstraint({this.maxPodsPerNode});
MaxPodsConstraint.fromJson(core.Map json_)
: this(maxPodsPerNode: json_['maxPodsPerNode'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final maxPodsPerNode = this.maxPodsPerNode;
return {'maxPodsPerNode': ?maxPodsPerNode};
}
}
/// The option enables the Kubernetes NUMA-aware Memory Manager feature.
///
/// Detailed description about the feature can be found
/// [here](https://kubernetes.io/docs/tasks/administer-cluster/memory-manager/).
class MemoryManager {
/// Controls the memory management policy on the Node.
///
/// See
/// https://kubernetes.io/docs/tasks/administer-cluster/memory-manager/#policies
/// The following values are allowed. * "none" * "static" The default value is
/// 'none' if unspecified.
core.String? policy;
MemoryManager({this.policy});
MemoryManager.fromJson(core.Map json_)
: this(policy: json_['policy'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final policy = this.policy;
return {'policy': ?policy};
}
}
/// Configuration for issuance of mTLS keys and certificates to Kubernetes pods.
class MeshCertificates {
/// enable_certificates controls issuance of workload mTLS certificates.
///
/// If set, the GKE Workload Identity Certificates controller and node agent
/// will be deployed in the cluster, which can then be configured by creating
/// a WorkloadCertificateConfig Custom Resource. Requires Workload Identity
/// (workload_pool must be non-empty).
core.bool? enableCertificates;
MeshCertificates({this.enableCertificates});
MeshCertificates.fromJson(core.Map json_)
: this(enableCertificates: json_['enableCertificates'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enableCertificates = this.enableCertificates;
return {'enableCertificates': ?enableCertificates};
}
}
/// Progress metric is (string, int|float|string) pair.
class Metric {
/// For metrics with floating point value.
core.double? doubleValue;
/// For metrics with integer value.
core.String? intValue;
/// Metric name, e.g., "nodes total", "percent done".
///
/// Required.
core.String? name;
/// For metrics with custom values (ratios, visual progress, etc.).
core.String? stringValue;
Metric({this.doubleValue, this.intValue, this.name, this.stringValue});
Metric.fromJson(core.Map json_)
: this(
doubleValue: (json_['doubleValue'] as core.num?)?.toDouble(),
intValue: json_['intValue'] as core.String?,
name: json_['name'] as core.String?,
stringValue: json_['stringValue'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final doubleValue = this.doubleValue;
final intValue = this.intValue;
final name = this.name;
final stringValue = this.stringValue;
return {
'doubleValue': ?doubleValue,
'intValue': ?intValue,
'name': ?name,
'stringValue': ?stringValue,
};
}
}
/// MonitoringComponentConfig is cluster monitoring component configuration.
class MonitoringComponentConfig {
/// Select components to collect metrics.
///
/// An empty set would disable all monitoring.
core.List<core.String>? enableComponents;
MonitoringComponentConfig({this.enableComponents});
MonitoringComponentConfig.fromJson(core.Map json_)
: this(
enableComponents: (json_['enableComponents'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final enableComponents = this.enableComponents;
return {'enableComponents': ?enableComponents};
}
}
/// MonitoringConfig is cluster monitoring configuration.
class MonitoringConfig {
/// Configuration of Advanced Datapath Observability features.
AdvancedDatapathObservabilityConfig? advancedDatapathObservabilityConfig;
/// Monitoring components configuration
MonitoringComponentConfig? componentConfig;
/// Enable Google Cloud Managed Service for Prometheus in the cluster.
ManagedPrometheusConfig? managedPrometheusConfig;
MonitoringConfig({
this.advancedDatapathObservabilityConfig,
this.componentConfig,
this.managedPrometheusConfig,
});
MonitoringConfig.fromJson(core.Map json_)
: this(
advancedDatapathObservabilityConfig:
json_.containsKey('advancedDatapathObservabilityConfig')
? AdvancedDatapathObservabilityConfig.fromJson(
json_['advancedDatapathObservabilityConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
componentConfig: json_.containsKey('componentConfig')
? MonitoringComponentConfig.fromJson(
json_['componentConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
managedPrometheusConfig: json_.containsKey('managedPrometheusConfig')
? ManagedPrometheusConfig.fromJson(
json_['managedPrometheusConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final advancedDatapathObservabilityConfig =
this.advancedDatapathObservabilityConfig;
final componentConfig = this.componentConfig;
final managedPrometheusConfig = this.managedPrometheusConfig;
return {
'advancedDatapathObservabilityConfig':
?advancedDatapathObservabilityConfig,
'componentConfig': ?componentConfig,
'managedPrometheusConfig': ?managedPrometheusConfig,
};
}
}
/// NetworkConfig reports the relative names of network & subnetwork.
class NetworkConfig {
/// The desired datapath provider for this cluster.
///
/// By default, uses the IPTables-based kube-proxy implementation.
/// Possible string values are:
/// - "DATAPATH_PROVIDER_UNSPECIFIED" : Default value.
/// - "LEGACY_DATAPATH" : Use the IPTables implementation based on kube-proxy.
/// - "ADVANCED_DATAPATH" : Use the eBPF based GKE Dataplane V2 with
/// additional features. See the
/// [GKE Dataplane V2 documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/dataplane-v2)
/// for more.
core.String? datapathProvider;
/// Controls whether by default nodes have private IP addresses only.
///
/// It is invalid to specify both PrivateClusterConfig.enablePrivateNodes and
/// this field at the same time. To update the default setting, use
/// ClusterUpdate.desired_default_enable_private_nodes
core.bool? defaultEnablePrivateNodes;
/// Whether the cluster disables default in-node sNAT rules.
///
/// In-node sNAT rules will be disabled when default_snat_status is disabled.
/// When disabled is set to false, default IP masquerade rules will be applied
/// to the nodes to prevent sNAT on cluster internal traffic.
DefaultSnatStatus? defaultSnatStatus;
/// Disable L4 load balancer VPC firewalls to enable firewall policies.
core.bool? disableL4LbFirewallReconciliation;
/// DNSConfig contains clusterDNS config for this cluster.
DNSConfig? dnsConfig;
/// Whether CiliumClusterwideNetworkPolicy is enabled on this cluster.
core.bool? enableCiliumClusterwideNetworkPolicy;
/// Whether FQDN Network Policy is enabled on this cluster.
core.bool? enableFqdnNetworkPolicy;
/// Whether Intra-node visibility is enabled for this cluster.
///
/// This makes same node pod to pod traffic visible for VPC network.
core.bool? enableIntraNodeVisibility;
/// Whether L4ILB Subsetting is enabled for this cluster.
core.bool? enableL4ilbSubsetting;
/// Whether multi-networking is enabled for this cluster.
core.bool? enableMultiNetworking;
/// GatewayAPIConfig contains the desired config of Gateway API on this
/// cluster.
GatewayAPIConfig? gatewayApiConfig;
/// Specify the details of in-transit encryption.
///
/// Now named inter-node transparent encryption.
/// Possible string values are:
/// - "IN_TRANSIT_ENCRYPTION_CONFIG_UNSPECIFIED" : Unspecified, will be
/// inferred as default - IN_TRANSIT_ENCRYPTION_UNSPECIFIED.
/// - "IN_TRANSIT_ENCRYPTION_DISABLED" : In-transit encryption is disabled.
/// - "IN_TRANSIT_ENCRYPTION_INTER_NODE_TRANSPARENT" : Data in-transit is
/// encrypted using inter-node transparent encryption.
core.String? inTransitEncryptionConfig;
/// The relative name of the Google Compute Engine
/// [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
/// to which the cluster is connected.
///
/// Example: projects/my-project/global/networks/my-network
///
/// Output only.
core.String? network;
/// Network bandwidth tier configuration.
ClusterNetworkPerformanceConfig? networkPerformanceConfig;
/// The desired state of IPv6 connectivity to Google Services.
///
/// By default, no private IPv6 access to or from Google Services (all access
/// will be via IPv4)
/// Possible string values are:
/// - "PRIVATE_IPV6_GOOGLE_ACCESS_UNSPECIFIED" : Default value. Same as
/// DISABLED
/// - "PRIVATE_IPV6_GOOGLE_ACCESS_DISABLED" : No private access to or from
/// Google Services
/// - "PRIVATE_IPV6_GOOGLE_ACCESS_TO_GOOGLE" : Enables private IPv6 access to
/// Google Services from GKE
/// - "PRIVATE_IPV6_GOOGLE_ACCESS_BIDIRECTIONAL" : Enables private IPv6 access
/// to and from Google Services
core.String? privateIpv6GoogleAccess;
/// ServiceExternalIPsConfig specifies if services with externalIPs field are
/// blocked or not.
ServiceExternalIPsConfig? serviceExternalIpsConfig;
/// The relative name of the Google Compute Engine
/// [subnetwork](https://cloud.google.com/compute/docs/vpc) to which the
/// cluster is connected.
///
/// Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
///
/// Output only.
core.String? subnetwork;
NetworkConfig({
this.datapathProvider,
this.defaultEnablePrivateNodes,
this.defaultSnatStatus,
this.disableL4LbFirewallReconciliation,
this.dnsConfig,
this.enableCiliumClusterwideNetworkPolicy,
this.enableFqdnNetworkPolicy,
this.enableIntraNodeVisibility,
this.enableL4ilbSubsetting,
this.enableMultiNetworking,
this.gatewayApiConfig,
this.inTransitEncryptionConfig,
this.network,
this.networkPerformanceConfig,
this.privateIpv6GoogleAccess,
this.serviceExternalIpsConfig,
this.subnetwork,
});
NetworkConfig.fromJson(core.Map json_)
: this(
datapathProvider: json_['datapathProvider'] as core.String?,
defaultEnablePrivateNodes:
json_['defaultEnablePrivateNodes'] as core.bool?,
defaultSnatStatus: json_.containsKey('defaultSnatStatus')
? DefaultSnatStatus.fromJson(
json_['defaultSnatStatus']
as core.Map<core.String, core.dynamic>,
)
: null,
disableL4LbFirewallReconciliation:
json_['disableL4LbFirewallReconciliation'] as core.bool?,
dnsConfig: json_.containsKey('dnsConfig')
? DNSConfig.fromJson(
json_['dnsConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
enableCiliumClusterwideNetworkPolicy:
json_['enableCiliumClusterwideNetworkPolicy'] as core.bool?,
enableFqdnNetworkPolicy: json_['enableFqdnNetworkPolicy'] as core.bool?,
enableIntraNodeVisibility:
json_['enableIntraNodeVisibility'] as core.bool?,
enableL4ilbSubsetting: json_['enableL4ilbSubsetting'] as core.bool?,
enableMultiNetworking: json_['enableMultiNetworking'] as core.bool?,
gatewayApiConfig: json_.containsKey('gatewayApiConfig')
? GatewayAPIConfig.fromJson(
json_['gatewayApiConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
inTransitEncryptionConfig:
json_['inTransitEncryptionConfig'] as core.String?,
network: json_['network'] as core.String?,
networkPerformanceConfig: json_.containsKey('networkPerformanceConfig')
? ClusterNetworkPerformanceConfig.fromJson(
json_['networkPerformanceConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
privateIpv6GoogleAccess:
json_['privateIpv6GoogleAccess'] as core.String?,
serviceExternalIpsConfig: json_.containsKey('serviceExternalIpsConfig')
? ServiceExternalIPsConfig.fromJson(
json_['serviceExternalIpsConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
subnetwork: json_['subnetwork'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final datapathProvider = this.datapathProvider;
final defaultEnablePrivateNodes = this.defaultEnablePrivateNodes;
final defaultSnatStatus = this.defaultSnatStatus;
final disableL4LbFirewallReconciliation =
this.disableL4LbFirewallReconciliation;
final dnsConfig = this.dnsConfig;
final enableCiliumClusterwideNetworkPolicy =
this.enableCiliumClusterwideNetworkPolicy;
final enableFqdnNetworkPolicy = this.enableFqdnNetworkPolicy;
final enableIntraNodeVisibility = this.enableIntraNodeVisibility;
final enableL4ilbSubsetting = this.enableL4ilbSubsetting;
final enableMultiNetworking = this.enableMultiNetworking;
final gatewayApiConfig = this.gatewayApiConfig;
final inTransitEncryptionConfig = this.inTransitEncryptionConfig;
final network = this.network;
final networkPerformanceConfig = this.networkPerformanceConfig;
final privateIpv6GoogleAccess = this.privateIpv6GoogleAccess;
final serviceExternalIpsConfig = this.serviceExternalIpsConfig;
final subnetwork = this.subnetwork;
return {
'datapathProvider': ?datapathProvider,
'defaultEnablePrivateNodes': ?defaultEnablePrivateNodes,
'defaultSnatStatus': ?defaultSnatStatus,
'disableL4LbFirewallReconciliation': ?disableL4LbFirewallReconciliation,
'dnsConfig': ?dnsConfig,
'enableCiliumClusterwideNetworkPolicy':
?enableCiliumClusterwideNetworkPolicy,
'enableFqdnNetworkPolicy': ?enableFqdnNetworkPolicy,
'enableIntraNodeVisibility': ?enableIntraNodeVisibility,
'enableL4ilbSubsetting': ?enableL4ilbSubsetting,
'enableMultiNetworking': ?enableMultiNetworking,
'gatewayApiConfig': ?gatewayApiConfig,
'inTransitEncryptionConfig': ?inTransitEncryptionConfig,
'network': ?network,
'networkPerformanceConfig': ?networkPerformanceConfig,
'privateIpv6GoogleAccess': ?privateIpv6GoogleAccess,
'serviceExternalIpsConfig': ?serviceExternalIpsConfig,
'subnetwork': ?subnetwork,
};
}
}
/// Configuration of all network bandwidth tiers
class NetworkPerformanceConfig {
/// Specifies the total network bandwidth tier for the NodePool.
/// Possible string values are:
/// - "TIER_UNSPECIFIED" : Default value
/// - "TIER_1" : Higher bandwidth, actual values based on VM size.
core.String? totalEgressBandwidthTier;
NetworkPerformanceConfig({this.totalEgressBandwidthTier});
NetworkPerformanceConfig.fromJson(core.Map json_)
: this(
totalEgressBandwidthTier:
json_['totalEgressBandwidthTier'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final totalEgressBandwidthTier = this.totalEgressBandwidthTier;
return {'totalEgressBandwidthTier': ?totalEgressBandwidthTier};
}
}
/// Configuration options for the NetworkPolicy feature.
///
/// https://kubernetes.io/docs/concepts/services-networking/networkpolicies/
class NetworkPolicy {
/// Whether network policy is enabled on the cluster.
core.bool? enabled;
/// The selected network policy provider.
/// Possible string values are:
/// - "PROVIDER_UNSPECIFIED" : Not set
/// - "CALICO" : Tigera (Calico Felix).
core.String? provider;
NetworkPolicy({this.enabled, this.provider});
NetworkPolicy.fromJson(core.Map json_)
: this(
enabled: json_['enabled'] as core.bool?,
provider: json_['provider'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
final provider = this.provider;
return {'enabled': ?enabled, 'provider': ?provider};
}
}
/// Configuration for NetworkPolicy.
///
/// This only tracks whether the addon is enabled or not on the Master, it does
/// not track whether network policy is enabled for the nodes.
class NetworkPolicyConfig {
/// Whether NetworkPolicy is enabled for this cluster.
core.bool? disabled;
NetworkPolicyConfig({this.disabled});
NetworkPolicyConfig.fromJson(core.Map json_)
: this(disabled: json_['disabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final disabled = this.disabled;
return {'disabled': ?disabled};
}
}
/// Collection of Compute Engine network tags that can be applied to a node's
/// underlying VM instance.
class NetworkTags {
/// List of network tags.
core.List<core.String>? tags;
NetworkTags({this.tags});
NetworkTags.fromJson(core.Map json_)
: this(
tags: (json_['tags'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final tags = this.tags;
return {'tags': ?tags};
}
}
/// NetworkTierConfig contains network tier information.
class NetworkTierConfig {
/// Network tier configuration.
/// Possible string values are:
/// - "NETWORK_TIER_UNSPECIFIED" : By default, use project-level
/// configuration. When unspecified, the behavior defaults to
/// NETWORK_TIER_DEFAULT. For cluster updates, this implies no action (no-op).
/// - "NETWORK_TIER_DEFAULT" : Default network tier. Use project-level
/// configuration. User can specify this value, meaning they want to keep the
/// same behaviour as before cluster level network tier configuration is
/// introduced. This field ensures backward compatibility for the network tier
/// of cluster resources, such as node pools and load balancers, for their
/// external IP addresses.
/// - "NETWORK_TIER_PREMIUM" : Premium network tier.
/// - "NETWORK_TIER_STANDARD" : Standard network tier.
core.String? networkTier;
NetworkTierConfig({this.networkTier});
NetworkTierConfig.fromJson(core.Map json_)
: this(networkTier: json_['networkTier'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final networkTier = this.networkTier;
return {'networkTier': ?networkTier};
}
}
/// Specifies the NodeAffinity key, values, and affinity operator according to
/// [shared sole tenant node group affinities](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes#node_affinity_and_anti-affinity).
class NodeAffinity {
/// Key for NodeAffinity.
core.String? key;
/// Operator for NodeAffinity.
/// Possible string values are:
/// - "OPERATOR_UNSPECIFIED" : Invalid or unspecified affinity operator.
/// - "IN" : Affinity operator.
/// - "NOT_IN" : Anti-affinity operator.
core.String? operator;
/// Values for NodeAffinity.
core.List<core.String>? values;
NodeAffinity({this.key, this.operator, this.values});
NodeAffinity.fromJson(core.Map json_)
: this(
key: json_['key'] as core.String?,
operator: json_['operator'] as core.String?,
values: (json_['values'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final key = this.key;
final operator = this.operator;
final values = this.values;
return {'key': ?key, 'operator': ?operator, 'values': ?values};
}
}
/// Parameters that describe the nodes in a cluster.
///
/// GKE Autopilot clusters do not recognize parameters in `NodeConfig`. Use
/// AutoprovisioningNodePoolDefaults instead.
class NodeConfig {
/// A list of hardware accelerators to be attached to each node.
///
/// See https://cloud.google.com/compute/docs/gpus for more information about
/// support for GPUs.
core.List<AcceleratorConfig>? accelerators;
/// Advanced features for the Compute Engine VM.
AdvancedMachineFeatures? advancedMachineFeatures;
/// The boot disk configuration for the node pool.
BootDisk? bootDisk;
/// The Customer Managed Encryption Key used to encrypt the boot disk attached
/// to each node in the node pool.
///
/// This should be of the form
/// projects/\[KEY_PROJECT_ID\]/locations/\[LOCATION\]/keyRings/\[RING_NAME\]/cryptoKeys/\[KEY_NAME\].
/// For more information about protecting resources with Cloud KMS Keys please
/// see:
/// https://cloud.google.com/compute/docs/disks/customer-managed-encryption
core.String? bootDiskKmsKey;
/// Confidential nodes config.
///
/// All the nodes in the node pool will be Confidential VM once enabled.
ConfidentialNodes? confidentialNodes;
/// Consolidation delay defines duration after which the Cluster Autoscaler
/// can scale down underutilized nodes.
///
/// If not set, nodes are scaled down by default behavior, i.e. according to
/// the chosen autoscaling profile.
core.String? consolidationDelay;
/// Parameters for containerd customization.
ContainerdConfig? containerdConfig;
/// Size of the disk attached to each node, specified in GB.
///
/// The smallest allowed disk size is 10GB. If unspecified, the default disk
/// size is 100GB.
core.int? diskSizeGb;
/// Type of the disk attached to each node (e.g. 'pd-standard', 'pd-ssd' or
/// 'pd-balanced') If unspecified, the default disk type is 'pd-standard'
core.String? diskType;
/// effective_cgroup_mode is the cgroup mode actually used by the node pool.
///
/// It is determined by the cgroup mode specified in the LinuxNodeConfig or
/// the default cgroup mode based on the cluster creation version.
///
/// Output only.
/// Possible string values are:
/// - "EFFECTIVE_CGROUP_MODE_UNSPECIFIED" : EFFECTIVE_CGROUP_MODE_UNSPECIFIED
/// means the cgroup configuration for the node pool is unspecified, i.e. the
/// node pool is a Windows node pool.
/// - "EFFECTIVE_CGROUP_MODE_V1" : CGROUP_MODE_V1 means the node pool is
/// configured to use cgroupv1 for the cgroup configuration.
/// - "EFFECTIVE_CGROUP_MODE_V2" : CGROUP_MODE_V2 means the node pool is
/// configured to use cgroupv2 for the cgroup configuration.
core.String? effectiveCgroupMode;
/// Reserved for future use.
///
/// Optional.
core.bool? enableConfidentialStorage;
/// Parameters for the node ephemeral storage using Local SSDs.
///
/// If unspecified, ephemeral storage is backed by the boot disk.
EphemeralStorageLocalSsdConfig? ephemeralStorageLocalSsdConfig;
/// Enable or disable NCCL fast socket for the node pool.
FastSocket? fastSocket;
/// Flex Start flag for enabling Flex Start VM.
core.bool? flexStart;
/// Google Container File System (image streaming) configs.
GcfsConfig? gcfsConfig;
/// The configuration for GPU Direct
GPUDirectConfig? gpuDirectConfig;
/// Enable or disable gvnic in the node pool.
VirtualNIC? gvnic;
/// The image type to use for this node.
///
/// Note that for a given image type, the latest version of it will be used.
/// Please see
/// https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for
/// available image types.
core.String? imageType;
/// Node kubelet configs.
NodeKubeletConfig? kubeletConfig;
/// The Kubernetes labels (key/value pairs) to apply to each node.
///
/// The values in this field are added to the set of default labels Kubernetes
/// applies to nodes. This field has the following restrictions: * Labels must
/// use a valid Kubernetes syntax and character set, as defined in
/// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set.
/// * This field supports up to 1,024 total characters in a single request.
/// Depending on the Kubernetes version, keys in this field might conflict
/// with the keys of the default labels, which might change which of your
/// labels are applied to the nodes. Assume that the behavior is unpredictable
/// and avoid label key conflicts. For more information about the default
/// labels, see:
/// https://kubernetes.io/docs/reference/labels-annotations-taints/
core.Map<core.String, core.String>? labels;
/// Parameters that can be configured on Linux nodes.
LinuxNodeConfig? linuxNodeConfig;
/// Parameters for using raw-block Local NVMe SSDs.
LocalNvmeSsdBlockConfig? localNvmeSsdBlockConfig;
/// The number of local SSD disks to be attached to the node.
///
/// The limit for this value is dependent upon the maximum number of disks
/// available on a machine per zone. See:
/// https://cloud.google.com/compute/docs/disks/local-ssd for more
/// information.
core.int? localSsdCount;
/// Specifies which method should be used for encrypting the Local SSDs
/// attached to the node.
/// Possible string values are:
/// - "LOCAL_SSD_ENCRYPTION_MODE_UNSPECIFIED" : The given node will be
/// encrypted using keys managed by Google infrastructure and the keys will be
/// deleted when the node is deleted.
/// - "STANDARD_ENCRYPTION" : The given node will be encrypted using keys
/// managed by Google infrastructure and the keys will be deleted when the
/// node is deleted.
/// - "EPHEMERAL_KEY_ENCRYPTION" : The given node will opt-in for using
/// ephemeral key for encryption of Local SSDs. The Local SSDs will not be
/// able to recover data in case of node crash.
core.String? localSsdEncryptionMode;
/// Logging configuration.
NodePoolLoggingConfig? loggingConfig;
/// The name of a Google Compute Engine
/// [machine type](https://cloud.google.com/compute/docs/machine-types) If
/// unspecified, the default machine type is `e2-medium`.
core.String? machineType;
/// The maximum duration for the nodes to exist.
///
/// If unspecified, the nodes can exist indefinitely.
core.String? maxRunDuration;
/// The metadata key/value pairs assigned to instances in the cluster.
///
/// Keys must conform to the regexp `[a-zA-Z0-9-_]+` and be less than 128
/// bytes in length. These are reflected as part of a URL in the metadata
/// server. Additionally, to avoid ambiguity, keys must not conflict with any
/// other metadata keys for the project or be one of the reserved keys: -
/// "cluster-location" - "cluster-name" - "cluster-uid" - "configure-sh" -
/// "containerd-configure-sh" - "enable-os-login" - "gci-ensure-gke-docker" -
/// "gci-metrics-enabled" - "gci-update-strategy" - "instance-template" -
/// "kube-env" - "startup-script" - "user-data" - "disable-address-manager" -
/// "windows-startup-script-ps1" - "common-psm1" - "k8s-node-setup-psm1" -
/// "install-ssh-psm1" - "user-profile-psm1" Values are free-form strings, and
/// only have meaning as interpreted by the image running in the instance. The
/// only restriction placed on them is that each value's size must be less
/// than or equal to 32 KB. The total size of all keys and values must be less
/// than 512 KB.
core.Map<core.String, core.String>? metadata;
/// Minimum CPU platform to be used by this instance.
///
/// The instance may be scheduled on the specified or newer CPU platform.
/// Applicable values are the friendly names of CPU platforms, such as
/// `minCpuPlatform: "Intel Haswell"` or `minCpuPlatform: "Intel Sandy
/// Bridge"`. For more information, read
/// [how to specify min CPU platform](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform)
core.String? minCpuPlatform;
/// Setting this field will assign instances of this pool to run on the
/// specified node group.
///
/// This is useful for running workloads on
/// [sole tenant nodes](https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes).
core.String? nodeGroup;
/// The set of Google API scopes to be made available on all of the node VMs
/// under the "default" service account.
///
/// The following scopes are recommended, but not required, and by default are
/// not included: * `https://www.googleapis.com/auth/compute` is required for
/// mounting persistent storage on your nodes. *
/// `https://www.googleapis.com/auth/devstorage.read_only` is required for
/// communicating with **gcr.io** (the
/// [Artifact Registry](https://cloud.google.com/artifact-registry/)). If
/// unspecified, no scopes are added, unless Cloud Logging or Cloud Monitoring
/// are enabled, in which case their required scopes will be added.
core.List<core.String>? oauthScopes;
/// Whether the nodes are created as preemptible VM instances.
///
/// See: https://cloud.google.com/compute/docs/instances/preemptible for more
/// information about preemptible VM instances.
core.bool? preemptible;
/// The optional reservation affinity.
///
/// Setting this field will apply the specified
/// [Zonal Compute Reservation](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources)
/// to this node pool.
ReservationAffinity? reservationAffinity;
/// The resource labels for the node pool to use to annotate any related
/// Google Compute Engine resources.
core.Map<core.String, core.String>? resourceLabels;
/// A map of resource manager tag keys and values to be attached to the nodes.
ResourceManagerTags? resourceManagerTags;
/// Sandbox configuration for this node.
SandboxConfig? sandboxConfig;
/// Secondary boot disk update strategy.
SecondaryBootDiskUpdateStrategy? secondaryBootDiskUpdateStrategy;
/// List of secondary boot disks attached to the nodes.
core.List<SecondaryBootDisk>? secondaryBootDisks;
/// The Google Cloud Platform Service Account to be used by the node VMs.
///
/// Specify the email address of the Service Account; otherwise, if no Service
/// Account is specified, the "default" service account is used.
core.String? serviceAccount;
/// Shielded Instance options.
ShieldedInstanceConfig? shieldedInstanceConfig;
/// Parameters for node pools to be backed by shared sole tenant node groups.
SoleTenantConfig? soleTenantConfig;
/// Spot flag for enabling Spot VM, which is a rebrand of the existing
/// preemptible flag.
core.bool? spot;
/// List of Storage Pools where boot disks are provisioned.
core.List<core.String>? storagePools;
/// The list of instance tags applied to all nodes.
///
/// Tags are used to identify valid sources or targets for network firewalls
/// and are specified by the client during cluster or node pool creation. Each
/// tag within the list must comply with RFC1035.
core.List<core.String>? tags;
/// The taint configuration for the node pool.
///
/// Optional.
TaintConfig? taintConfig;
/// List of kubernetes taints to be applied to each node.
///
/// For more information, including usage and the valid values, see:
/// https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
core.List<NodeTaint>? taints;
/// Parameters that can be configured on Windows nodes.
WindowsNodeConfig? windowsNodeConfig;
/// The workload metadata configuration for this node.
WorkloadMetadataConfig? workloadMetadataConfig;
NodeConfig({
this.accelerators,
this.advancedMachineFeatures,
this.bootDisk,
this.bootDiskKmsKey,
this.confidentialNodes,
this.consolidationDelay,
this.containerdConfig,
this.diskSizeGb,
this.diskType,
this.effectiveCgroupMode,
this.enableConfidentialStorage,
this.ephemeralStorageLocalSsdConfig,
this.fastSocket,
this.flexStart,
this.gcfsConfig,
this.gpuDirectConfig,
this.gvnic,
this.imageType,
this.kubeletConfig,
this.labels,
this.linuxNodeConfig,
this.localNvmeSsdBlockConfig,
this.localSsdCount,
this.localSsdEncryptionMode,
this.loggingConfig,
this.machineType,
this.maxRunDuration,
this.metadata,
this.minCpuPlatform,
this.nodeGroup,
this.oauthScopes,
this.preemptible,
this.reservationAffinity,
this.resourceLabels,
this.resourceManagerTags,
this.sandboxConfig,
this.secondaryBootDiskUpdateStrategy,
this.secondaryBootDisks,
this.serviceAccount,
this.shieldedInstanceConfig,
this.soleTenantConfig,
this.spot,
this.storagePools,
this.tags,
this.taintConfig,
this.taints,
this.windowsNodeConfig,
this.workloadMetadataConfig,
});
NodeConfig.fromJson(core.Map json_)
: this(
accelerators: (json_['accelerators'] as core.List?)
?.map(
(value) => AcceleratorConfig.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
advancedMachineFeatures: json_.containsKey('advancedMachineFeatures')
? AdvancedMachineFeatures.fromJson(
json_['advancedMachineFeatures']
as core.Map<core.String, core.dynamic>,
)
: null,
bootDisk: json_.containsKey('bootDisk')
? BootDisk.fromJson(
json_['bootDisk'] as core.Map<core.String, core.dynamic>,
)
: null,
bootDiskKmsKey: json_['bootDiskKmsKey'] as core.String?,
confidentialNodes: json_.containsKey('confidentialNodes')
? ConfidentialNodes.fromJson(
json_['confidentialNodes']
as core.Map<core.String, core.dynamic>,
)
: null,
consolidationDelay: json_['consolidationDelay'] as core.String?,
containerdConfig: json_.containsKey('containerdConfig')
? ContainerdConfig.fromJson(
json_['containerdConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
diskSizeGb: json_['diskSizeGb'] as core.int?,
diskType: json_['diskType'] as core.String?,
effectiveCgroupMode: json_['effectiveCgroupMode'] as core.String?,
enableConfidentialStorage:
json_['enableConfidentialStorage'] as core.bool?,
ephemeralStorageLocalSsdConfig:
json_.containsKey('ephemeralStorageLocalSsdConfig')
? EphemeralStorageLocalSsdConfig.fromJson(
json_['ephemeralStorageLocalSsdConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
fastSocket: json_.containsKey('fastSocket')
? FastSocket.fromJson(
json_['fastSocket'] as core.Map<core.String, core.dynamic>,
)
: null,
flexStart: json_['flexStart'] as core.bool?,
gcfsConfig: json_.containsKey('gcfsConfig')
? GcfsConfig.fromJson(
json_['gcfsConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
gpuDirectConfig: json_.containsKey('gpuDirectConfig')
? GPUDirectConfig.fromJson(
json_['gpuDirectConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
gvnic: json_.containsKey('gvnic')
? VirtualNIC.fromJson(
json_['gvnic'] as core.Map<core.String, core.dynamic>,
)
: null,
imageType: json_['imageType'] as core.String?,
kubeletConfig: json_.containsKey('kubeletConfig')
? NodeKubeletConfig.fromJson(
json_['kubeletConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
labels: (json_['labels'] as core.Map<core.String, core.dynamic>?)?.map(
(key, value) => core.MapEntry(key, value as core.String),
),
linuxNodeConfig: json_.containsKey('linuxNodeConfig')
? LinuxNodeConfig.fromJson(
json_['linuxNodeConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
localNvmeSsdBlockConfig: json_.containsKey('localNvmeSsdBlockConfig')
? LocalNvmeSsdBlockConfig.fromJson(
json_['localNvmeSsdBlockConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
localSsdCount: json_['localSsdCount'] as core.int?,
localSsdEncryptionMode: json_['localSsdEncryptionMode'] as core.String?,
loggingConfig: json_.containsKey('loggingConfig')
? NodePoolLoggingConfig.fromJson(
json_['loggingConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
machineType: json_['machineType'] as core.String?,
maxRunDuration: json_['maxRunDuration'] as core.String?,
metadata: (json_['metadata'] as core.Map<core.String, core.dynamic>?)
?.map((key, value) => core.MapEntry(key, value as core.String)),
minCpuPlatform: json_['minCpuPlatform'] as core.String?,
nodeGroup: json_['nodeGroup'] as core.String?,
oauthScopes: (json_['oauthScopes'] as core.List?)
?.map((value) => value as core.String)
.toList(),
preemptible: json_['preemptible'] as core.bool?,
reservationAffinity: json_.containsKey('reservationAffinity')
? ReservationAffinity.fromJson(
json_['reservationAffinity']
as core.Map<core.String, core.dynamic>,
)
: null,
resourceLabels:
(json_['resourceLabels'] as core.Map<core.String, core.dynamic>?)
?.map((key, value) => core.MapEntry(key, value as core.String)),
resourceManagerTags: json_.containsKey('resourceManagerTags')
? ResourceManagerTags.fromJson(
json_['resourceManagerTags']
as core.Map<core.String, core.dynamic>,
)
: null,
sandboxConfig: json_.containsKey('sandboxConfig')
? SandboxConfig.fromJson(
json_['sandboxConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
secondaryBootDiskUpdateStrategy:
json_.containsKey('secondaryBootDiskUpdateStrategy')
? SecondaryBootDiskUpdateStrategy.fromJson(
json_['secondaryBootDiskUpdateStrategy']
as core.Map<core.String, core.dynamic>,
)
: null,
secondaryBootDisks: (json_['secondaryBootDisks'] as core.List?)
?.map(
(value) => SecondaryBootDisk.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
serviceAccount: json_['serviceAccount'] as core.String?,
shieldedInstanceConfig: json_.containsKey('shieldedInstanceConfig')
? ShieldedInstanceConfig.fromJson(
json_['shieldedInstanceConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
soleTenantConfig: json_.containsKey('soleTenantConfig')
? SoleTenantConfig.fromJson(
json_['soleTenantConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
spot: json_['spot'] as core.bool?,
storagePools: (json_['storagePools'] as core.List?)
?.map((value) => value as core.String)
.toList(),
tags: (json_['tags'] as core.List?)
?.map((value) => value as core.String)
.toList(),
taintConfig: json_.containsKey('taintConfig')
? TaintConfig.fromJson(
json_['taintConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
taints: (json_['taints'] as core.List?)
?.map(
(value) => NodeTaint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
windowsNodeConfig: json_.containsKey('windowsNodeConfig')
? WindowsNodeConfig.fromJson(
json_['windowsNodeConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
workloadMetadataConfig: json_.containsKey('workloadMetadataConfig')
? WorkloadMetadataConfig.fromJson(
json_['workloadMetadataConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final accelerators = this.accelerators;
final advancedMachineFeatures = this.advancedMachineFeatures;
final bootDisk = this.bootDisk;
final bootDiskKmsKey = this.bootDiskKmsKey;
final confidentialNodes = this.confidentialNodes;
final consolidationDelay = this.consolidationDelay;
final containerdConfig = this.containerdConfig;
final diskSizeGb = this.diskSizeGb;
final diskType = this.diskType;
final effectiveCgroupMode = this.effectiveCgroupMode;
final enableConfidentialStorage = this.enableConfidentialStorage;
final ephemeralStorageLocalSsdConfig = this.ephemeralStorageLocalSsdConfig;
final fastSocket = this.fastSocket;
final flexStart = this.flexStart;
final gcfsConfig = this.gcfsConfig;
final gpuDirectConfig = this.gpuDirectConfig;
final gvnic = this.gvnic;
final imageType = this.imageType;
final kubeletConfig = this.kubeletConfig;
final labels = this.labels;
final linuxNodeConfig = this.linuxNodeConfig;
final localNvmeSsdBlockConfig = this.localNvmeSsdBlockConfig;
final localSsdCount = this.localSsdCount;
final localSsdEncryptionMode = this.localSsdEncryptionMode;
final loggingConfig = this.loggingConfig;
final machineType = this.machineType;
final maxRunDuration = this.maxRunDuration;
final metadata = this.metadata;
final minCpuPlatform = this.minCpuPlatform;
final nodeGroup = this.nodeGroup;
final oauthScopes = this.oauthScopes;
final preemptible = this.preemptible;
final reservationAffinity = this.reservationAffinity;
final resourceLabels = this.resourceLabels;
final resourceManagerTags = this.resourceManagerTags;
final sandboxConfig = this.sandboxConfig;
final secondaryBootDiskUpdateStrategy =
this.secondaryBootDiskUpdateStrategy;
final secondaryBootDisks = this.secondaryBootDisks;
final serviceAccount = this.serviceAccount;
final shieldedInstanceConfig = this.shieldedInstanceConfig;
final soleTenantConfig = this.soleTenantConfig;
final spot = this.spot;
final storagePools = this.storagePools;
final tags = this.tags;
final taintConfig = this.taintConfig;
final taints = this.taints;
final windowsNodeConfig = this.windowsNodeConfig;
final workloadMetadataConfig = this.workloadMetadataConfig;
return {
'accelerators': ?accelerators,
'advancedMachineFeatures': ?advancedMachineFeatures,
'bootDisk': ?bootDisk,
'bootDiskKmsKey': ?bootDiskKmsKey,
'confidentialNodes': ?confidentialNodes,
'consolidationDelay': ?consolidationDelay,
'containerdConfig': ?containerdConfig,
'diskSizeGb': ?diskSizeGb,
'diskType': ?diskType,
'effectiveCgroupMode': ?effectiveCgroupMode,
'enableConfidentialStorage': ?enableConfidentialStorage,
'ephemeralStorageLocalSsdConfig': ?ephemeralStorageLocalSsdConfig,
'fastSocket': ?fastSocket,
'flexStart': ?flexStart,
'gcfsConfig': ?gcfsConfig,
'gpuDirectConfig': ?gpuDirectConfig,
'gvnic': ?gvnic,
'imageType': ?imageType,
'kubeletConfig': ?kubeletConfig,
'labels': ?labels,
'linuxNodeConfig': ?linuxNodeConfig,
'localNvmeSsdBlockConfig': ?localNvmeSsdBlockConfig,
'localSsdCount': ?localSsdCount,
'localSsdEncryptionMode': ?localSsdEncryptionMode,
'loggingConfig': ?loggingConfig,
'machineType': ?machineType,
'maxRunDuration': ?maxRunDuration,
'metadata': ?metadata,
'minCpuPlatform': ?minCpuPlatform,
'nodeGroup': ?nodeGroup,
'oauthScopes': ?oauthScopes,
'preemptible': ?preemptible,
'reservationAffinity': ?reservationAffinity,
'resourceLabels': ?resourceLabels,
'resourceManagerTags': ?resourceManagerTags,
'sandboxConfig': ?sandboxConfig,
'secondaryBootDiskUpdateStrategy': ?secondaryBootDiskUpdateStrategy,
'secondaryBootDisks': ?secondaryBootDisks,
'serviceAccount': ?serviceAccount,
'shieldedInstanceConfig': ?shieldedInstanceConfig,
'soleTenantConfig': ?soleTenantConfig,
'spot': ?spot,
'storagePools': ?storagePools,
'tags': ?tags,
'taintConfig': ?taintConfig,
'taints': ?taints,
'windowsNodeConfig': ?windowsNodeConfig,
'workloadMetadataConfig': ?workloadMetadataConfig,
};
}
}
/// Subset of NodeConfig message that has defaults.
class NodeConfigDefaults {
/// Parameters for containerd customization.
ContainerdConfig? containerdConfig;
/// GCFS (Google Container File System, also known as Riptide) options.
GcfsConfig? gcfsConfig;
/// Logging configuration for node pools.
NodePoolLoggingConfig? loggingConfig;
/// NodeKubeletConfig controls the defaults for new node-pools.
///
/// Currently only `insecure_kubelet_readonly_port_enabled` can be set here.
NodeKubeletConfig? nodeKubeletConfig;
NodeConfigDefaults({
this.containerdConfig,
this.gcfsConfig,
this.loggingConfig,
this.nodeKubeletConfig,
});
NodeConfigDefaults.fromJson(core.Map json_)
: this(
containerdConfig: json_.containsKey('containerdConfig')
? ContainerdConfig.fromJson(
json_['containerdConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
gcfsConfig: json_.containsKey('gcfsConfig')
? GcfsConfig.fromJson(
json_['gcfsConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
loggingConfig: json_.containsKey('loggingConfig')
? NodePoolLoggingConfig.fromJson(
json_['loggingConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
nodeKubeletConfig: json_.containsKey('nodeKubeletConfig')
? NodeKubeletConfig.fromJson(
json_['nodeKubeletConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final containerdConfig = this.containerdConfig;
final gcfsConfig = this.gcfsConfig;
final loggingConfig = this.loggingConfig;
final nodeKubeletConfig = this.nodeKubeletConfig;
return {
'containerdConfig': ?containerdConfig,
'gcfsConfig': ?gcfsConfig,
'loggingConfig': ?loggingConfig,
'nodeKubeletConfig': ?nodeKubeletConfig,
};
}
}
/// NodeDrainConfig contains the node drain related configurations for this node
/// pool.
class NodeDrainConfig {
/// Whether to respect PDB during node pool deletion.
core.bool? respectPdbDuringNodePoolDeletion;
NodeDrainConfig({this.respectPdbDuringNodePoolDeletion});
NodeDrainConfig.fromJson(core.Map json_)
: this(
respectPdbDuringNodePoolDeletion:
json_['respectPdbDuringNodePoolDeletion'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final respectPdbDuringNodePoolDeletion =
this.respectPdbDuringNodePoolDeletion;
return {
'respectPdbDuringNodePoolDeletion': ?respectPdbDuringNodePoolDeletion,
};
}
}
/// Configuration for kernel module loading on nodes.
class NodeKernelModuleLoading {
/// Set the node module loading policy for nodes in the node pool.
/// Possible string values are:
/// - "POLICY_UNSPECIFIED" : Default behavior. GKE selects the image based on
/// node type. For CPU and TPU nodes, the image will not allow loading
/// external kernel modules. For GPU nodes, the image will allow loading any
/// module, whether it is signed or not.
/// - "ENFORCE_SIGNED_MODULES" : Enforced signature verification: Node pools
/// will use a Container-Optimized OS image configured to allow loading of
/// *Google-signed* external kernel modules. Loadpin is enabled but configured
/// to exclude modules, and kernel module signature checking is enforced.
/// - "DO_NOT_ENFORCE_SIGNED_MODULES" : Mirrors existing DEFAULT behavior: For
/// CPU and TPU nodes, the image will not allow loading external kernel
/// modules. For GPU nodes, the image will allow loading any module, whether
/// it is signed or not.
core.String? policy;
NodeKernelModuleLoading({this.policy});
NodeKernelModuleLoading.fromJson(core.Map json_)
: this(policy: json_['policy'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final policy = this.policy;
return {'policy': ?policy};
}
}
/// Node kubelet configs.
class NodeKubeletConfig {
/// Defines a comma-separated allowlist of unsafe sysctls or sysctl patterns
/// (ending in `*`).
///
/// The unsafe namespaced sysctl groups are `kernel.shm*`, `kernel.msg*`,
/// `kernel.sem`, `fs.mqueue.*`, and `net.*`. Leaving this allowlist empty
/// means they cannot be set on Pods. To allow certain sysctls or sysctl
/// patterns to be set on Pods, list them separated by commas. For example:
/// `kernel.msg*,net.ipv4.route.min_pmtu`. See
/// https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/ for
/// more details.
///
/// Optional.
core.List<core.String>? allowedUnsafeSysctls;
/// Defines the maximum number of container log files that can be present for
/// a container.
///
/// See
/// https://kubernetes.io/docs/concepts/cluster-administration/logging/#log-rotation
/// The value must be an integer between 2 and 10, inclusive. The default
/// value is 5 if unspecified.
///
/// Optional.
core.int? containerLogMaxFiles;
/// Defines the maximum size of the container log file before it is rotated.
///
/// See
/// https://kubernetes.io/docs/concepts/cluster-administration/logging/#log-rotation
/// Valid format is positive number + unit, e.g. 100Ki, 10Mi. Valid units are
/// Ki, Mi, Gi. The value must be between 10Mi and 500Mi, inclusive. Note that
/// the total container log size (container_log_max_size *
/// container_log_max_files) cannot exceed 1% of the total storage of the
/// node, to avoid disk pressure caused by log files. The default value is
/// 10Mi if unspecified.
///
/// Optional.
core.String? containerLogMaxSize;
/// Enable CPU CFS quota enforcement for containers that specify CPU limits.
///
/// This option is enabled by default which makes kubelet use CFS quota
/// (https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt) to
/// enforce container CPU limits. Otherwise, CPU limits will not be enforced
/// at all. Disable this option to mitigate CPU throttling problems while
/// still having your pods to be in Guaranteed QoS class by specifying the CPU
/// limits. The default value is 'true' if unspecified.
core.bool? cpuCfsQuota;
/// Set the CPU CFS quota period value 'cpu.cfs_period_us'.
///
/// The string must be a sequence of decimal numbers, each with optional
/// fraction and a unit suffix, such as "300ms". Valid time units are "ns",
/// "us" (or "µs"), "ms", "s", "m", "h". The value must be a positive duration
/// between 1ms and 1 second, inclusive.
core.String? cpuCfsQuotaPeriod;
/// Control the CPU management policy on the node.
///
/// See
/// https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/
/// The following values are allowed. * "none": the default, which represents
/// the existing scheduling behavior. * "static": allows pods with certain
/// resource characteristics to be granted increased CPU affinity and
/// exclusivity on the node. The default value is 'none' if unspecified.
core.String? cpuManagerPolicy;
/// Contains configuration options to modify node-level parameters for
/// container restart behavior.
///
/// Optional.
CrashLoopBackOffConfig? crashLoopBackOff;
/// eviction_max_pod_grace_period_seconds is the maximum allowed grace period
/// (in seconds) to use when terminating pods in response to a soft eviction
/// threshold being met.
///
/// This value effectively caps the Pod's terminationGracePeriodSeconds value
/// during soft evictions. Default: 0. Range: \[0, 300\].
///
/// Optional.
core.int? evictionMaxPodGracePeriodSeconds;
/// eviction_minimum_reclaim is a map of signal names to quantities that
/// defines minimum reclaims, which describe the minimum amount of a given
/// resource the kubelet will reclaim when performing a pod eviction while
/// that resource is under pressure.
///
/// Optional.
EvictionMinimumReclaim? evictionMinimumReclaim;
/// eviction_soft is a map of signal names to quantities that defines soft
/// eviction thresholds.
///
/// Each signal is compared to its corresponding threshold to determine if a
/// pod eviction should occur.
///
/// Optional.
EvictionSignals? evictionSoft;
/// eviction_soft_grace_period is a map of signal names to quantities that
/// defines grace periods for each soft eviction signal.
///
/// The grace period is the amount of time that a pod must be under pressure
/// before an eviction occurs.
///
/// Optional.
EvictionGracePeriod? evictionSoftGracePeriod;
/// Defines the percent of disk usage after which image garbage collection is
/// always run.
///
/// The percent is calculated as this field value out of 100. The value must
/// be between 10 and 85, inclusive and greater than
/// image_gc_low_threshold_percent. The default value is 85 if unspecified.
///
/// Optional.
core.int? imageGcHighThresholdPercent;
/// Defines the percent of disk usage before which image garbage collection is
/// never run.
///
/// Lowest disk usage to garbage collect to. The percent is calculated as this
/// field value out of 100. The value must be between 10 and 85, inclusive and
/// smaller than image_gc_high_threshold_percent. The default value is 80 if
/// unspecified.
///
/// Optional.
core.int? imageGcLowThresholdPercent;
/// Defines the maximum age an image can be unused before it is garbage
/// collected.
///
/// The string must be a sequence of decimal numbers, each with optional
/// fraction and a unit suffix, such as "300s", "1.5h", and "2h45m". Valid
/// time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". The value must
/// be a positive duration greater than image_minimum_gc_age or "0s". The
/// default value is "0s" if unspecified, which disables this field, meaning
/// images won't be garbage collected based on being unused for too long.
///
/// Optional.
core.String? imageMaximumGcAge;
/// Defines the minimum age for an unused image before it is garbage
/// collected.
///
/// The string must be a sequence of decimal numbers, each with optional
/// fraction and a unit suffix, such as "300s", "1.5h", and "2h45m". Valid
/// time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". The value must
/// be a positive duration less than or equal to 2 minutes. The default value
/// is "2m0s" if unspecified.
///
/// Optional.
core.String? imageMinimumGcAge;
/// Enable or disable Kubelet read only port.
core.bool? insecureKubeletReadonlyPortEnabled;
/// Defines the maximum number of image pulls in parallel.
///
/// The range is 2 to 5, inclusive. The default value is 2 or 3 depending on
/// the disk type. See
/// https://kubernetes.io/docs/concepts/containers/images/#maximum-parallel-image-pulls
/// for more details.
///
/// Optional.
core.int? maxParallelImagePulls;
/// Controls NUMA-aware Memory Manager configuration on the node.
///
/// For more information, see:
/// https://kubernetes.io/docs/tasks/administer-cluster/memory-manager/
///
/// Optional.
MemoryManager? memoryManager;
/// Set the Pod PID limits.
///
/// See
/// https://kubernetes.io/docs/concepts/policy/pid-limiting/#pod-pid-limits
/// Controls the maximum number of processes allowed to run in a pod. The
/// value must be greater than or equal to 1024 and less than 4194304.
core.String? podPidsLimit;
/// shutdown_grace_period_critical_pods_seconds is the maximum allowed grace
/// period (in seconds) used to terminate critical pods during a node
/// shutdown.
///
/// This value should be \<= shutdown_grace_period_seconds, and is only valid
/// if shutdown_grace_period_seconds is set.
/// https://kubernetes.io/docs/concepts/cluster-administration/node-shutdown/
/// Range: \[0, 120\].
///
/// Optional.
core.int? shutdownGracePeriodCriticalPodsSeconds;
/// shutdown_grace_period_seconds is the maximum allowed grace period (in
/// seconds) the total duration that the node should delay the shutdown during
/// a graceful shutdown.
///
/// This is the total grace period for pod termination for both regular and
/// critical pods.
/// https://kubernetes.io/docs/concepts/cluster-administration/node-shutdown/
/// If set to 0, node will not enable the graceful node shutdown
/// functionality. This field is only valid for Spot VMs. Allowed values: 0,
/// 30, 120.
///
/// Optional.
core.int? shutdownGracePeriodSeconds;
/// Defines whether to enable single process OOM killer.
///
/// If true, will prevent the memory.oom.group flag from being set for
/// container cgroups in cgroups v2. This causes processes in the container to
/// be OOM killed individually instead of as a group.
///
/// Optional.
core.bool? singleProcessOomKill;
/// Controls Topology Manager configuration on the node.
///
/// For more information, see:
/// https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/
///
/// Optional.
TopologyManager? topologyManager;
NodeKubeletConfig({
this.allowedUnsafeSysctls,
this.containerLogMaxFiles,
this.containerLogMaxSize,
this.cpuCfsQuota,
this.cpuCfsQuotaPeriod,
this.cpuManagerPolicy,
this.crashLoopBackOff,
this.evictionMaxPodGracePeriodSeconds,
this.evictionMinimumReclaim,
this.evictionSoft,
this.evictionSoftGracePeriod,
this.imageGcHighThresholdPercent,
this.imageGcLowThresholdPercent,
this.imageMaximumGcAge,
this.imageMinimumGcAge,
this.insecureKubeletReadonlyPortEnabled,
this.maxParallelImagePulls,
this.memoryManager,
this.podPidsLimit,
this.shutdownGracePeriodCriticalPodsSeconds,
this.shutdownGracePeriodSeconds,
this.singleProcessOomKill,
this.topologyManager,
});
NodeKubeletConfig.fromJson(core.Map json_)
: this(
allowedUnsafeSysctls: (json_['allowedUnsafeSysctls'] as core.List?)
?.map((value) => value as core.String)
.toList(),
containerLogMaxFiles: json_['containerLogMaxFiles'] as core.int?,
containerLogMaxSize: json_['containerLogMaxSize'] as core.String?,
cpuCfsQuota: json_['cpuCfsQuota'] as core.bool?,
cpuCfsQuotaPeriod: json_['cpuCfsQuotaPeriod'] as core.String?,
cpuManagerPolicy: json_['cpuManagerPolicy'] as core.String?,
crashLoopBackOff: json_.containsKey('crashLoopBackOff')
? CrashLoopBackOffConfig.fromJson(
json_['crashLoopBackOff']
as core.Map<core.String, core.dynamic>,
)
: null,
evictionMaxPodGracePeriodSeconds:
json_['evictionMaxPodGracePeriodSeconds'] as core.int?,
evictionMinimumReclaim: json_.containsKey('evictionMinimumReclaim')
? EvictionMinimumReclaim.fromJson(
json_['evictionMinimumReclaim']
as core.Map<core.String, core.dynamic>,
)
: null,
evictionSoft: json_.containsKey('evictionSoft')
? EvictionSignals.fromJson(
json_['evictionSoft'] as core.Map<core.String, core.dynamic>,
)
: null,
evictionSoftGracePeriod: json_.containsKey('evictionSoftGracePeriod')
? EvictionGracePeriod.fromJson(
json_['evictionSoftGracePeriod']
as core.Map<core.String, core.dynamic>,
)
: null,
imageGcHighThresholdPercent:
json_['imageGcHighThresholdPercent'] as core.int?,
imageGcLowThresholdPercent:
json_['imageGcLowThresholdPercent'] as core.int?,
imageMaximumGcAge: json_['imageMaximumGcAge'] as core.String?,
imageMinimumGcAge: json_['imageMinimumGcAge'] as core.String?,
insecureKubeletReadonlyPortEnabled:
json_['insecureKubeletReadonlyPortEnabled'] as core.bool?,
maxParallelImagePulls: json_['maxParallelImagePulls'] as core.int?,
memoryManager: json_.containsKey('memoryManager')
? MemoryManager.fromJson(
json_['memoryManager'] as core.Map<core.String, core.dynamic>,
)
: null,
podPidsLimit: json_['podPidsLimit'] as core.String?,
shutdownGracePeriodCriticalPodsSeconds:
json_['shutdownGracePeriodCriticalPodsSeconds'] as core.int?,
shutdownGracePeriodSeconds:
json_['shutdownGracePeriodSeconds'] as core.int?,
singleProcessOomKill: json_['singleProcessOomKill'] as core.bool?,
topologyManager: json_.containsKey('topologyManager')
? TopologyManager.fromJson(
json_['topologyManager'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final allowedUnsafeSysctls = this.allowedUnsafeSysctls;
final containerLogMaxFiles = this.containerLogMaxFiles;
final containerLogMaxSize = this.containerLogMaxSize;
final cpuCfsQuota = this.cpuCfsQuota;
final cpuCfsQuotaPeriod = this.cpuCfsQuotaPeriod;
final cpuManagerPolicy = this.cpuManagerPolicy;
final crashLoopBackOff = this.crashLoopBackOff;
final evictionMaxPodGracePeriodSeconds =
this.evictionMaxPodGracePeriodSeconds;
final evictionMinimumReclaim = this.evictionMinimumReclaim;
final evictionSoft = this.evictionSoft;
final evictionSoftGracePeriod = this.evictionSoftGracePeriod;
final imageGcHighThresholdPercent = this.imageGcHighThresholdPercent;
final imageGcLowThresholdPercent = this.imageGcLowThresholdPercent;
final imageMaximumGcAge = this.imageMaximumGcAge;
final imageMinimumGcAge = this.imageMinimumGcAge;
final insecureKubeletReadonlyPortEnabled =
this.insecureKubeletReadonlyPortEnabled;
final maxParallelImagePulls = this.maxParallelImagePulls;
final memoryManager = this.memoryManager;
final podPidsLimit = this.podPidsLimit;
final shutdownGracePeriodCriticalPodsSeconds =
this.shutdownGracePeriodCriticalPodsSeconds;
final shutdownGracePeriodSeconds = this.shutdownGracePeriodSeconds;
final singleProcessOomKill = this.singleProcessOomKill;
final topologyManager = this.topologyManager;
return {
'allowedUnsafeSysctls': ?allowedUnsafeSysctls,
'containerLogMaxFiles': ?containerLogMaxFiles,
'containerLogMaxSize': ?containerLogMaxSize,
'cpuCfsQuota': ?cpuCfsQuota,
'cpuCfsQuotaPeriod': ?cpuCfsQuotaPeriod,
'cpuManagerPolicy': ?cpuManagerPolicy,
'crashLoopBackOff': ?crashLoopBackOff,
'evictionMaxPodGracePeriodSeconds': ?evictionMaxPodGracePeriodSeconds,
'evictionMinimumReclaim': ?evictionMinimumReclaim,
'evictionSoft': ?evictionSoft,
'evictionSoftGracePeriod': ?evictionSoftGracePeriod,
'imageGcHighThresholdPercent': ?imageGcHighThresholdPercent,
'imageGcLowThresholdPercent': ?imageGcLowThresholdPercent,
'imageMaximumGcAge': ?imageMaximumGcAge,
'imageMinimumGcAge': ?imageMinimumGcAge,
'insecureKubeletReadonlyPortEnabled': ?insecureKubeletReadonlyPortEnabled,
'maxParallelImagePulls': ?maxParallelImagePulls,
'memoryManager': ?memoryManager,
'podPidsLimit': ?podPidsLimit,
'shutdownGracePeriodCriticalPodsSeconds':
?shutdownGracePeriodCriticalPodsSeconds,
'shutdownGracePeriodSeconds': ?shutdownGracePeriodSeconds,
'singleProcessOomKill': ?singleProcessOomKill,
'topologyManager': ?topologyManager,
};
}
}
/// Collection of node-level
/// [Kubernetes labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels).
typedef NodeLabels = $Labels;
/// NodeManagement defines the set of node management services turned on for the
/// node pool.
class NodeManagement {
/// A flag that specifies whether the node auto-repair is enabled for the node
/// pool.
///
/// If enabled, the nodes in this node pool will be monitored and, if they
/// fail health checks too many times, an automatic repair action will be
/// triggered.
core.bool? autoRepair;
/// A flag that specifies whether node auto-upgrade is enabled for the node
/// pool.
///
/// If enabled, node auto-upgrade helps keep the nodes in your node pool up to
/// date with the latest release version of Kubernetes.
core.bool? autoUpgrade;
/// Specifies the Auto Upgrade knobs for the node pool.
AutoUpgradeOptions? upgradeOptions;
NodeManagement({this.autoRepair, this.autoUpgrade, this.upgradeOptions});
NodeManagement.fromJson(core.Map json_)
: this(
autoRepair: json_['autoRepair'] as core.bool?,
autoUpgrade: json_['autoUpgrade'] as core.bool?,
upgradeOptions: json_.containsKey('upgradeOptions')
? AutoUpgradeOptions.fromJson(
json_['upgradeOptions'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final autoRepair = this.autoRepair;
final autoUpgrade = this.autoUpgrade;
final upgradeOptions = this.upgradeOptions;
return {
'autoRepair': ?autoRepair,
'autoUpgrade': ?autoUpgrade,
'upgradeOptions': ?upgradeOptions,
};
}
}
/// Parameters for node pool-level network config.
class NodeNetworkConfig {
/// The accelerator network profile for the node pool.
///
/// For now the only valid value is "auto". If specified, the network
/// configuration of the nodes in this node pool will be managed by this
/// profile for the supported machine types, zone, etc.
///
/// Immutable.
core.String? acceleratorNetworkProfile;
/// We specify the additional node networks for this node pool using this
/// list.
///
/// Each node network corresponds to an additional interface
core.List<AdditionalNodeNetworkConfig>? additionalNodeNetworkConfigs;
/// We specify the additional pod networks for this node pool using this list.
///
/// Each pod network corresponds to an additional alias IP range for the node
core.List<AdditionalPodNetworkConfig>? additionalPodNetworkConfigs;
/// Input only.
///
/// Whether to create a new range for pod IPs in this node pool. Defaults are
/// provided for `pod_range` and `pod_ipv4_cidr_block` if they are not
/// specified. If neither `create_pod_range` or `pod_range` are specified, the
/// cluster-level default (`ip_allocation_policy.cluster_ipv4_cidr_block`) is
/// used. Only applicable if `ip_allocation_policy.use_ip_aliases` is true.
/// This field cannot be changed after the node pool has been created.
core.bool? createPodRange;
/// Whether nodes have internal IP addresses only.
///
/// If enable_private_nodes is not specified, then the value is derived from
/// Cluster.NetworkConfig.default_enable_private_nodes
core.bool? enablePrivateNodes;
/// Network bandwidth tier configuration.
NetworkPerformanceConfig? networkPerformanceConfig;
/// The network tier configuration for the node pool inherits from the
/// cluster-level configuration and remains immutable throughout the node
/// pool's lifecycle, including during upgrades.
///
/// Output only.
NetworkTierConfig? networkTierConfig;
/// \[PRIVATE FIELD\] Pod CIDR size overprovisioning config for the node pool.
///
/// Pod CIDR size per node depends on max_pods_per_node. By default, the value
/// of max_pods_per_node is rounded off to next power of 2 and we then double
/// that to get the size of pod CIDR block per node. Example:
/// max_pods_per_node of 30 would result in 64 IPs (/26). This config can
/// disable the doubling of IPs (we still round off to next power of 2)
/// Example: max_pods_per_node of 30 will result in 32 IPs (/27) when
/// overprovisioning is disabled.
PodCIDROverprovisionConfig? podCidrOverprovisionConfig;
/// The IP address range for pod IPs in this node pool.
///
/// Only applicable if `create_pod_range` is true. Set to blank to have a
/// range chosen with the default size. Set to /netmask (e.g. `/14`) to have a
/// range chosen with a specific netmask. Set to a
/// [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)
/// notation (e.g. `10.96.0.0/14`) to pick a specific range to use. Only
/// applicable if `ip_allocation_policy.use_ip_aliases` is true. This field
/// cannot be changed after the node pool has been created.
core.String? podIpv4CidrBlock;
/// The utilization of the IPv4 range for the pod.
///
/// The ratio is Usage/\[Total number of IPs in the secondary range\],
/// Usage=numNodes*numZones*podIPsPerNode.
///
/// Output only.
core.double? podIpv4RangeUtilization;
/// The ID of the secondary range for pod IPs.
///
/// If `create_pod_range` is true, this ID is used for the new range. If
/// `create_pod_range` is false, uses an existing secondary range with this
/// ID. Only applicable if `ip_allocation_policy.use_ip_aliases` is true. This
/// field cannot be changed after the node pool has been created.
core.String? podRange;
/// The subnetwork name/path for the node pool.
///
/// Format: projects/{project}/regions/{region}/subnetworks/{subnetwork} If
/// the cluster is associated with multiple subnetworks, the subnetwork can be
/// either: - A user supplied subnetwork name during node pool creation (e.g.,
/// `my-subnet`). The name must be between 1 and 63 characters long, start
/// with a letter, contain only letters, numbers, and hyphens, and end with a
/// letter or a number. - A full subnetwork path during node pool creation,
/// such as `projects/gke-project/regions/us-central1/subnetworks/my-subnet` -
/// A subnetwork path picked based on the IP utilization during node pool
/// creation and is immutable.
///
/// Optional.
core.String? subnetwork;
NodeNetworkConfig({
this.acceleratorNetworkProfile,
this.additionalNodeNetworkConfigs,
this.additionalPodNetworkConfigs,
this.createPodRange,
this.enablePrivateNodes,
this.networkPerformanceConfig,
this.networkTierConfig,
this.podCidrOverprovisionConfig,
this.podIpv4CidrBlock,
this.podIpv4RangeUtilization,
this.podRange,
this.subnetwork,
});
NodeNetworkConfig.fromJson(core.Map json_)
: this(
acceleratorNetworkProfile:
json_['acceleratorNetworkProfile'] as core.String?,
additionalNodeNetworkConfigs:
(json_['additionalNodeNetworkConfigs'] as core.List?)
?.map(
(value) => AdditionalNodeNetworkConfig.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
additionalPodNetworkConfigs:
(json_['additionalPodNetworkConfigs'] as core.List?)
?.map(
(value) => AdditionalPodNetworkConfig.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
createPodRange: json_['createPodRange'] as core.bool?,
enablePrivateNodes: json_['enablePrivateNodes'] as core.bool?,
networkPerformanceConfig: json_.containsKey('networkPerformanceConfig')
? NetworkPerformanceConfig.fromJson(
json_['networkPerformanceConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
networkTierConfig: json_.containsKey('networkTierConfig')
? NetworkTierConfig.fromJson(
json_['networkTierConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
podCidrOverprovisionConfig:
json_.containsKey('podCidrOverprovisionConfig')
? PodCIDROverprovisionConfig.fromJson(
json_['podCidrOverprovisionConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
podIpv4CidrBlock: json_['podIpv4CidrBlock'] as core.String?,
podIpv4RangeUtilization: (json_['podIpv4RangeUtilization'] as core.num?)
?.toDouble(),
podRange: json_['podRange'] as core.String?,
subnetwork: json_['subnetwork'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final acceleratorNetworkProfile = this.acceleratorNetworkProfile;
final additionalNodeNetworkConfigs = this.additionalNodeNetworkConfigs;
final additionalPodNetworkConfigs = this.additionalPodNetworkConfigs;
final createPodRange = this.createPodRange;
final enablePrivateNodes = this.enablePrivateNodes;
final networkPerformanceConfig = this.networkPerformanceConfig;
final networkTierConfig = this.networkTierConfig;
final podCidrOverprovisionConfig = this.podCidrOverprovisionConfig;
final podIpv4CidrBlock = this.podIpv4CidrBlock;
final podIpv4RangeUtilization = this.podIpv4RangeUtilization;
final podRange = this.podRange;
final subnetwork = this.subnetwork;
return {
'acceleratorNetworkProfile': ?acceleratorNetworkProfile,
'additionalNodeNetworkConfigs': ?additionalNodeNetworkConfigs,
'additionalPodNetworkConfigs': ?additionalPodNetworkConfigs,
'createPodRange': ?createPodRange,
'enablePrivateNodes': ?enablePrivateNodes,
'networkPerformanceConfig': ?networkPerformanceConfig,
'networkTierConfig': ?networkTierConfig,
'podCidrOverprovisionConfig': ?podCidrOverprovisionConfig,
'podIpv4CidrBlock': ?podIpv4CidrBlock,
'podIpv4RangeUtilization': ?podIpv4RangeUtilization,
'podRange': ?podRange,
'subnetwork': ?subnetwork,
};
}
}
/// NodePool contains the name and configuration for a cluster's node pool.
///
/// Node pools are a set of nodes (i.e. VM's), with a common configuration and
/// specification, under the control of the cluster master. They may have a set
/// of Kubernetes labels applied to them, which may be used to reference them
/// during pod scheduling. They may also be resized up or down, to accommodate
/// the workload.
class NodePool {
/// Specifies the autopilot configuration for this node pool.
///
/// This field is exclusively reserved for Cluster Autoscaler.
AutopilotConfig? autopilotConfig;
/// Autoscaler configuration for this NodePool.
///
/// Autoscaler is enabled only if a valid configuration is present.
NodePoolAutoscaling? autoscaling;
/// Enable best effort provisioning for nodes
BestEffortProvisioning? bestEffortProvisioning;
/// Which conditions caused the current node pool state.
core.List<StatusCondition>? conditions;
/// The node configuration of the pool.
NodeConfig? config;
/// This checksum is computed by the server based on the value of node pool
/// fields, and may be sent on update requests to ensure the client has an
/// up-to-date value before proceeding.
core.String? etag;
/// The initial node count for the pool.
///
/// You must ensure that your Compute Engine
/// [resource quota](https://cloud.google.com/compute/quotas) is sufficient
/// for this number of instances. You must also have available firewall and
/// routes quota.
core.int? initialNodeCount;
/// The resource URLs of the
/// [managed instance groups](https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances)
/// associated with this node pool.
///
/// During the node pool blue-green upgrade operation, the URLs contain both
/// blue and green resources.
///
/// Output only.
core.List<core.String>? instanceGroupUrls;
/// The list of Google Compute Engine
/// [zones](https://cloud.google.com/compute/docs/zones#available) in which
/// the NodePool's nodes should be located.
///
/// If this value is unspecified during node pool creation, the
/// [Cluster.Locations](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1/projects.locations.clusters#Cluster.FIELDS.locations)
/// value will be used, instead. Warning: changing node pool locations will
/// result in nodes being added and/or removed.
core.List<core.String>? locations;
/// NodeManagement configuration for this NodePool.
NodeManagement? management;
/// The constraint on the maximum number of pods that can be run
/// simultaneously on a node in the node pool.
MaxPodsConstraint? maxPodsConstraint;
/// The name of the node pool.
core.String? name;
/// Networking configuration for this NodePool.
///
/// If specified, it overrides the cluster-level defaults.
NodeNetworkConfig? networkConfig;
/// Specifies the node drain configuration for this node pool.
NodeDrainConfig? nodeDrainConfig;
/// Specifies the node placement policy.
PlacementPolicy? placementPolicy;
/// The pod CIDR block size per node in this node pool.
///
/// Output only.
core.int? podIpv4CidrSize;
/// Specifies the configuration of queued provisioning.
QueuedProvisioning? queuedProvisioning;
/// Server-defined URL for the resource.
///
/// Output only.
core.String? selfLink;
/// The status of the nodes in this pool instance.
///
/// Output only.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Not set.
/// - "PROVISIONING" : The PROVISIONING state indicates the node pool is being
/// created.
/// - "RUNNING" : The RUNNING state indicates the node pool has been created
/// and is fully usable.
/// - "RUNNING_WITH_ERROR" : The RUNNING_WITH_ERROR state indicates the node
/// pool has been created and is partially usable. Some error state has
/// occurred and some functionality may be impaired. Customer may need to
/// reissue a request or trigger a new update.
/// - "RECONCILING" : The RECONCILING state indicates that some work is
/// actively being done on the node pool, such as upgrading node software.
/// Details can be found in the `statusMessage` field.
/// - "STOPPING" : The STOPPING state indicates the node pool is being
/// deleted.
/// - "ERROR" : The ERROR state indicates the node pool may be unusable.
/// Details can be found in the `statusMessage` field.
core.String? status;
/// Use conditions instead.
///
/// Additional information about the current status of this node pool
/// instance, if available.
///
/// Output only. Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? statusMessage;
/// Update info contains relevant information during a node pool update.
///
/// Output only.
UpdateInfo? updateInfo;
/// Upgrade settings control disruption and speed of the upgrade.
UpgradeSettings? upgradeSettings;
/// The version of Kubernetes running on this NodePool's nodes.
///
/// If unspecified, it defaults as described
/// [here](https://cloud.google.com/kubernetes-engine/versioning#specifying_node_version).
core.String? version;
NodePool({
this.autopilotConfig,
this.autoscaling,
this.bestEffortProvisioning,
this.conditions,
this.config,
this.etag,
this.initialNodeCount,
this.instanceGroupUrls,
this.locations,
this.management,
this.maxPodsConstraint,
this.name,
this.networkConfig,
this.nodeDrainConfig,
this.placementPolicy,
this.podIpv4CidrSize,
this.queuedProvisioning,
this.selfLink,
this.status,
this.statusMessage,
this.updateInfo,
this.upgradeSettings,
this.version,
});
NodePool.fromJson(core.Map json_)
: this(
autopilotConfig: json_.containsKey('autopilotConfig')
? AutopilotConfig.fromJson(
json_['autopilotConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
autoscaling: json_.containsKey('autoscaling')
? NodePoolAutoscaling.fromJson(
json_['autoscaling'] as core.Map<core.String, core.dynamic>,
)
: null,
bestEffortProvisioning: json_.containsKey('bestEffortProvisioning')
? BestEffortProvisioning.fromJson(
json_['bestEffortProvisioning']
as core.Map<core.String, core.dynamic>,
)
: null,
conditions: (json_['conditions'] as core.List?)
?.map(
(value) => StatusCondition.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
config: json_.containsKey('config')
? NodeConfig.fromJson(
json_['config'] as core.Map<core.String, core.dynamic>,
)
: null,
etag: json_['etag'] as core.String?,
initialNodeCount: json_['initialNodeCount'] as core.int?,
instanceGroupUrls: (json_['instanceGroupUrls'] as core.List?)
?.map((value) => value as core.String)
.toList(),
locations: (json_['locations'] as core.List?)
?.map((value) => value as core.String)
.toList(),
management: json_.containsKey('management')
? NodeManagement.fromJson(
json_['management'] as core.Map<core.String, core.dynamic>,
)
: null,
maxPodsConstraint: json_.containsKey('maxPodsConstraint')
? MaxPodsConstraint.fromJson(
json_['maxPodsConstraint']
as core.Map<core.String, core.dynamic>,
)
: null,
name: json_['name'] as core.String?,
networkConfig: json_.containsKey('networkConfig')
? NodeNetworkConfig.fromJson(
json_['networkConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
nodeDrainConfig: json_.containsKey('nodeDrainConfig')
? NodeDrainConfig.fromJson(
json_['nodeDrainConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
placementPolicy: json_.containsKey('placementPolicy')
? PlacementPolicy.fromJson(
json_['placementPolicy'] as core.Map<core.String, core.dynamic>,
)
: null,
podIpv4CidrSize: json_['podIpv4CidrSize'] as core.int?,
queuedProvisioning: json_.containsKey('queuedProvisioning')
? QueuedProvisioning.fromJson(
json_['queuedProvisioning']
as core.Map<core.String, core.dynamic>,
)
: null,
selfLink: json_['selfLink'] as core.String?,
status: json_['status'] as core.String?,
statusMessage: json_['statusMessage'] as core.String?,
updateInfo: json_.containsKey('updateInfo')
? UpdateInfo.fromJson(
json_['updateInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
upgradeSettings: json_.containsKey('upgradeSettings')
? UpgradeSettings.fromJson(
json_['upgradeSettings'] as core.Map<core.String, core.dynamic>,
)
: null,
version: json_['version'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final autopilotConfig = this.autopilotConfig;
final autoscaling = this.autoscaling;
final bestEffortProvisioning = this.bestEffortProvisioning;
final conditions = this.conditions;
final config = this.config;
final etag = this.etag;
final initialNodeCount = this.initialNodeCount;
final instanceGroupUrls = this.instanceGroupUrls;
final locations = this.locations;
final management = this.management;
final maxPodsConstraint = this.maxPodsConstraint;
final name = this.name;
final networkConfig = this.networkConfig;
final nodeDrainConfig = this.nodeDrainConfig;
final placementPolicy = this.placementPolicy;
final podIpv4CidrSize = this.podIpv4CidrSize;
final queuedProvisioning = this.queuedProvisioning;
final selfLink = this.selfLink;
final status = this.status;
final statusMessage = this.statusMessage;
final updateInfo = this.updateInfo;
final upgradeSettings = this.upgradeSettings;
final version = this.version;
return {
'autopilotConfig': ?autopilotConfig,
'autoscaling': ?autoscaling,
'bestEffortProvisioning': ?bestEffortProvisioning,
'conditions': ?conditions,
'config': ?config,
'etag': ?etag,
'initialNodeCount': ?initialNodeCount,
'instanceGroupUrls': ?instanceGroupUrls,
'locations': ?locations,
'management': ?management,
'maxPodsConstraint': ?maxPodsConstraint,
'name': ?name,
'networkConfig': ?networkConfig,
'nodeDrainConfig': ?nodeDrainConfig,
'placementPolicy': ?placementPolicy,
'podIpv4CidrSize': ?podIpv4CidrSize,
'queuedProvisioning': ?queuedProvisioning,
'selfLink': ?selfLink,
'status': ?status,
'statusMessage': ?statusMessage,
'updateInfo': ?updateInfo,
'upgradeSettings': ?upgradeSettings,
'version': ?version,
};
}
}
/// Node pool configs that apply to all auto-provisioned node pools in autopilot
/// clusters and node auto-provisioning enabled clusters.
class NodePoolAutoConfig {
/// Configuration options for Linux nodes.
///
/// Output only.
LinuxNodeConfig? linuxNodeConfig;
/// The list of instance tags applied to all nodes.
///
/// Tags are used to identify valid sources or targets for network firewalls
/// and are specified by the client during cluster creation. Each tag within
/// the list must comply with RFC1035.
NetworkTags? networkTags;
/// NodeKubeletConfig controls the defaults for autoprovisioned node-pools.
///
/// Currently only `insecure_kubelet_readonly_port_enabled` can be set here.
NodeKubeletConfig? nodeKubeletConfig;
/// Resource manager tag keys and values to be attached to the nodes for
/// managing Compute Engine firewalls using Network Firewall Policies.
ResourceManagerTags? resourceManagerTags;
NodePoolAutoConfig({
this.linuxNodeConfig,
this.networkTags,
this.nodeKubeletConfig,
this.resourceManagerTags,
});
NodePoolAutoConfig.fromJson(core.Map json_)
: this(
linuxNodeConfig: json_.containsKey('linuxNodeConfig')
? LinuxNodeConfig.fromJson(
json_['linuxNodeConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
networkTags: json_.containsKey('networkTags')
? NetworkTags.fromJson(
json_['networkTags'] as core.Map<core.String, core.dynamic>,
)
: null,
nodeKubeletConfig: json_.containsKey('nodeKubeletConfig')
? NodeKubeletConfig.fromJson(
json_['nodeKubeletConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
resourceManagerTags: json_.containsKey('resourceManagerTags')
? ResourceManagerTags.fromJson(
json_['resourceManagerTags']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final linuxNodeConfig = this.linuxNodeConfig;
final networkTags = this.networkTags;
final nodeKubeletConfig = this.nodeKubeletConfig;
final resourceManagerTags = this.resourceManagerTags;
return {
'linuxNodeConfig': ?linuxNodeConfig,
'networkTags': ?networkTags,
'nodeKubeletConfig': ?nodeKubeletConfig,
'resourceManagerTags': ?resourceManagerTags,
};
}
}
/// NodePoolAutoscaling contains information required by cluster autoscaler to
/// adjust the size of the node pool to the current cluster usage.
class NodePoolAutoscaling {
/// Can this node pool be deleted automatically.
core.bool? autoprovisioned;
/// Is autoscaling enabled for this node pool.
core.bool? enabled;
/// Location policy used when scaling up a node pool.
/// Possible string values are:
/// - "LOCATION_POLICY_UNSPECIFIED" : Not set.
/// - "BALANCED" : BALANCED is a best effort policy that aims to balance the
/// sizes of different zones.
/// - "ANY" : ANY policy picks zones that have the highest capacity available.
core.String? locationPolicy;
/// Maximum number of nodes for one location in the node pool.
///
/// Must be \>= min_node_count. There has to be enough quota to scale up the
/// cluster.
core.int? maxNodeCount;
/// Minimum number of nodes for one location in the node pool.
///
/// Must be greater than or equal to 0 and less than or equal to
/// max_node_count.
core.int? minNodeCount;
/// Maximum number of nodes in the node pool.
///
/// Must be greater than or equal to total_min_node_count. There has to be
/// enough quota to scale up the cluster. The total_*_node_count fields are
/// mutually exclusive with the *_node_count fields.
core.int? totalMaxNodeCount;
/// Minimum number of nodes in the node pool.
///
/// Must be greater than or equal to 0 and less than or equal to
/// total_max_node_count. The total_*_node_count fields are mutually exclusive
/// with the *_node_count fields.
core.int? totalMinNodeCount;
NodePoolAutoscaling({
this.autoprovisioned,
this.enabled,
this.locationPolicy,
this.maxNodeCount,
this.minNodeCount,
this.totalMaxNodeCount,
this.totalMinNodeCount,
});
NodePoolAutoscaling.fromJson(core.Map json_)
: this(
autoprovisioned: json_['autoprovisioned'] as core.bool?,
enabled: json_['enabled'] as core.bool?,
locationPolicy: json_['locationPolicy'] as core.String?,
maxNodeCount: json_['maxNodeCount'] as core.int?,
minNodeCount: json_['minNodeCount'] as core.int?,
totalMaxNodeCount: json_['totalMaxNodeCount'] as core.int?,
totalMinNodeCount: json_['totalMinNodeCount'] as core.int?,
);
core.Map<core.String, core.dynamic> toJson() {
final autoprovisioned = this.autoprovisioned;
final enabled = this.enabled;
final locationPolicy = this.locationPolicy;
final maxNodeCount = this.maxNodeCount;
final minNodeCount = this.minNodeCount;
final totalMaxNodeCount = this.totalMaxNodeCount;
final totalMinNodeCount = this.totalMinNodeCount;
return {
'autoprovisioned': ?autoprovisioned,
'enabled': ?enabled,
'locationPolicy': ?locationPolicy,
'maxNodeCount': ?maxNodeCount,
'minNodeCount': ?minNodeCount,
'totalMaxNodeCount': ?totalMaxNodeCount,
'totalMinNodeCount': ?totalMinNodeCount,
};
}
}
/// Subset of Nodepool message that has defaults.
class NodePoolDefaults {
/// Subset of NodeConfig message that has defaults.
NodeConfigDefaults? nodeConfigDefaults;
NodePoolDefaults({this.nodeConfigDefaults});
NodePoolDefaults.fromJson(core.Map json_)
: this(
nodeConfigDefaults: json_.containsKey('nodeConfigDefaults')
? NodeConfigDefaults.fromJson(
json_['nodeConfigDefaults']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final nodeConfigDefaults = this.nodeConfigDefaults;
return {'nodeConfigDefaults': ?nodeConfigDefaults};
}
}
/// NodePoolLoggingConfig specifies logging configuration for node pools.
class NodePoolLoggingConfig {
/// Logging variant configuration.
LoggingVariantConfig? variantConfig;
NodePoolLoggingConfig({this.variantConfig});
NodePoolLoggingConfig.fromJson(core.Map json_)
: this(
variantConfig: json_.containsKey('variantConfig')
? LoggingVariantConfig.fromJson(
json_['variantConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final variantConfig = this.variantConfig;
return {'variantConfig': ?variantConfig};
}
}
/// NodePoolUpgradeInfo contains the upgrade information of a node pool.
class NodePoolUpgradeInfo {
/// The auto upgrade status.
core.List<core.String>? autoUpgradeStatus;
/// The node pool's current minor version's end of extended support timestamp.
core.String? endOfExtendedSupportTimestamp;
/// The node pool's current minor version's end of standard support timestamp.
core.String? endOfStandardSupportTimestamp;
/// minor_target_version indicates the target version for minor upgrade.
core.String? minorTargetVersion;
/// patch_target_version indicates the target version for patch upgrade.
core.String? patchTargetVersion;
/// The auto upgrade paused reason.
core.List<core.String>? pausedReason;
/// The list of past auto upgrades.
core.List<UpgradeDetails>? upgradeDetails;
NodePoolUpgradeInfo({
this.autoUpgradeStatus,
this.endOfExtendedSupportTimestamp,
this.endOfStandardSupportTimestamp,
this.minorTargetVersion,
this.patchTargetVersion,
this.pausedReason,
this.upgradeDetails,
});
NodePoolUpgradeInfo.fromJson(core.Map json_)
: this(
autoUpgradeStatus: (json_['autoUpgradeStatus'] as core.List?)
?.map((value) => value as core.String)
.toList(),
endOfExtendedSupportTimestamp:
json_['endOfExtendedSupportTimestamp'] as core.String?,
endOfStandardSupportTimestamp:
json_['endOfStandardSupportTimestamp'] as core.String?,
minorTargetVersion: json_['minorTargetVersion'] as core.String?,
patchTargetVersion: json_['patchTargetVersion'] as core.String?,
pausedReason: (json_['pausedReason'] as core.List?)
?.map((value) => value as core.String)
.toList(),
upgradeDetails: (json_['upgradeDetails'] as core.List?)
?.map(
(value) => UpgradeDetails.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final autoUpgradeStatus = this.autoUpgradeStatus;
final endOfExtendedSupportTimestamp = this.endOfExtendedSupportTimestamp;
final endOfStandardSupportTimestamp = this.endOfStandardSupportTimestamp;
final minorTargetVersion = this.minorTargetVersion;
final patchTargetVersion = this.patchTargetVersion;
final pausedReason = this.pausedReason;
final upgradeDetails = this.upgradeDetails;
return {
'autoUpgradeStatus': ?autoUpgradeStatus,
'endOfExtendedSupportTimestamp': ?endOfExtendedSupportTimestamp,
'endOfStandardSupportTimestamp': ?endOfStandardSupportTimestamp,
'minorTargetVersion': ?minorTargetVersion,
'patchTargetVersion': ?patchTargetVersion,
'pausedReason': ?pausedReason,
'upgradeDetails': ?upgradeDetails,
};
}
}
/// Kubernetes taint is composed of three fields: key, value, and effect.
///
/// Effect can only be one of three types: NoSchedule, PreferNoSchedule or
/// NoExecute. See
/// [here](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration)
/// for more information, including usage and the valid values.
class NodeTaint {
/// Effect for taint.
/// Possible string values are:
/// - "EFFECT_UNSPECIFIED" : Not set
/// - "NO_SCHEDULE" : NoSchedule
/// - "PREFER_NO_SCHEDULE" : PreferNoSchedule
/// - "NO_EXECUTE" : NoExecute
core.String? effect;
/// Key for taint.
core.String? key;
/// Value for taint.
core.String? value;
NodeTaint({this.effect, this.key, this.value});
NodeTaint.fromJson(core.Map json_)
: this(
effect: json_['effect'] as core.String?,
key: json_['key'] as core.String?,
value: json_['value'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final effect = this.effect;
final key = this.key;
final value = this.value;
return {'effect': ?effect, 'key': ?key, 'value': ?value};
}
}
/// Collection of Kubernetes
/// [node taints](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration).
class NodeTaints {
/// List of node taints.
core.List<NodeTaint>? taints;
NodeTaints({this.taints});
NodeTaints.fromJson(core.Map json_)
: this(
taints: (json_['taints'] as core.List?)
?.map(
(value) => NodeTaint.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final taints = this.taints;
return {'taints': ?taints};
}
}
/// NotificationConfig is the configuration of notifications.
class NotificationConfig {
/// Notification config for Pub/Sub.
PubSub? pubsub;
NotificationConfig({this.pubsub});
NotificationConfig.fromJson(core.Map json_)
: this(
pubsub: json_.containsKey('pubsub')
? PubSub.fromJson(
json_['pubsub'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final pubsub = this.pubsub;
return {'pubsub': ?pubsub};
}
}
/// This operation resource represents operations that may have happened or are
/// happening on the cluster.
///
/// All fields are output only.
class Operation {
/// Which conditions caused the current cluster state.
///
/// Deprecated. Use field error instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<StatusCondition>? clusterConditions;
/// Detailed operation progress, if available.
///
/// Output only.
core.String? detail;
/// The time the operation completed, in
/// [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
///
/// Output only.
core.String? endTime;
/// The error result of the operation in case of failure.
Status? error;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
/// or
/// [region](https://cloud.google.com/compute/docs/regions-zones/regions-zones#available)
/// in which the cluster resides.
///
/// Output only.
core.String? location;
/// The server-assigned ID for the operation.
///
/// Output only.
core.String? name;
/// Which conditions caused the current node pool state.
///
/// Deprecated. Use field error instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.List<StatusCondition>? nodepoolConditions;
/// The operation type.
///
/// Output only.
/// Possible string values are:
/// - "TYPE_UNSPECIFIED" : Not set.
/// - "CREATE_CLUSTER" : The cluster is being created. The cluster should be
/// assumed to be unusable until the operation finishes. In the event of the
/// operation failing, the cluster will enter the ERROR state and eventually
/// be deleted.
/// - "DELETE_CLUSTER" : The cluster is being deleted. The cluster should be
/// assumed to be unusable as soon as this operation starts. In the event of
/// the operation failing, the cluster will enter the ERROR state and the
/// deletion will be automatically retried until completed.
/// - "UPGRADE_MASTER" : The cluster version is being updated. Note that this
/// includes "upgrades" to the same version, which are simply a recreation.
/// This also includes
/// \[auto-upgrades\](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-upgrades#upgrading_automatically).
/// For more details, see
/// [documentation on cluster upgrades](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-upgrades#cluster_upgrades).
/// - "UPGRADE_NODES" : A node pool is being updated. Despite calling this an
/// "upgrade", this includes most forms of updates to node pools. This also
/// includes
/// \[auto-upgrades\](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-upgrades).
/// This operation sets the progress field and may be canceled. The upgrade
/// strategy depends on
/// [node pool configuration](https://cloud.google.com/kubernetes-engine/docs/concepts/node-pool-upgrade-strategies).
/// The nodes are generally still usable during this operation.
/// - "REPAIR_CLUSTER" : A problem has been detected with the control plane
/// and is being repaired. This operation type is initiated by GKE. For more
/// details, see
/// [documentation on repairs](https://cloud.google.com/kubernetes-engine/docs/concepts/maintenance-windows-and-exclusions#repairs).
/// - "UPDATE_CLUSTER" : The cluster is being updated. This is a broad
/// category of operations and includes operations that only change metadata
/// as well as those that must recreate the entire cluster. If the control
/// plane must be recreated, this will cause temporary downtime for zonal
/// clusters. Some features require recreating the nodes as well. Those will
/// be recreated as separate operations and the update may not be completely
/// functional until the node pools recreations finish. Node recreations will
/// generally follow
/// [maintenance policies](https://cloud.google.com/kubernetes-engine/docs/concepts/maintenance-windows-and-exclusions).
/// Some GKE-initiated operations use this type. This includes certain types
/// of auto-upgrades and incident mitigations.
/// - "CREATE_NODE_POOL" : A node pool is being created. The node pool should
/// be assumed to be unusable until this operation finishes. In the event of
/// an error, the node pool may be partially created. If enabled,
/// [node autoprovisioning](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-provisioning)
/// may have automatically initiated such operations.
/// - "DELETE_NODE_POOL" : The node pool is being deleted. The node pool
/// should be assumed to be unusable as soon as this operation starts.
/// - "SET_NODE_POOL_MANAGEMENT" : The node pool's manamagent field is being
/// updated. These operations only update metadata and may be concurrent with
/// most other operations.
/// - "AUTO_REPAIR_NODES" : A problem has been detected with nodes and
/// [they are being repaired](https://cloud.google.com/kubernetes-engine/docs/how-to/node-auto-repair).
/// This operation type is initiated by GKE, typically automatically. This
/// operation may be concurrent with other operations and there may be
/// multiple repairs occurring on the same node pool.
/// - "AUTO_UPGRADE_NODES" : Unused. Automatic node upgrade uses
/// UPGRADE_NODES.
/// - "SET_LABELS" : Unused. Updating labels uses UPDATE_CLUSTER.
/// - "SET_MASTER_AUTH" : Unused. Updating master auth uses UPDATE_CLUSTER.
/// - "SET_NODE_POOL_SIZE" : The node pool is being resized. With the
/// exception of resizing to or from size zero, the node pool is generally
/// usable during this operation.
/// - "SET_NETWORK_POLICY" : Unused. Updating network policy uses
/// UPDATE_CLUSTER.
/// - "SET_MAINTENANCE_POLICY" : Unused. Updating maintenance policy uses
/// UPDATE_CLUSTER.
/// - "RESIZE_CLUSTER" : The control plane is being resized. This operation
/// type is initiated by GKE. These operations are often performed
/// preemptively to ensure that the control plane has sufficient resources and
/// is not typically an indication of issues. For more details, see
/// [documentation on resizes](https://cloud.google.com/kubernetes-engine/docs/concepts/maintenance-windows-and-exclusions#repairs).
/// - "FLEET_FEATURE_UPGRADE" : Fleet features of GKE Enterprise are being
/// upgraded. The cluster should be assumed to be blocked for other upgrades
/// until the operation finishes.
core.String? operationType;
/// Progress information for an operation.
///
/// Output only.
OperationProgress? progress;
/// Server-defined URI for the operation.
///
/// Example:
/// `https://container.googleapis.com/v1alpha1/projects/123/locations/us-central1/operations/operation-123`.
///
/// Output only.
core.String? selfLink;
/// The time the operation started, in
/// [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.
///
/// Output only.
core.String? startTime;
/// The current status of the operation.
///
/// Output only.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Not set.
/// - "PENDING" : The operation has been created.
/// - "RUNNING" : The operation is currently running.
/// - "DONE" : The operation is done, either cancelled or completed.
/// - "ABORTING" : The operation is aborting.
core.String? status;
/// If an error has occurred, a textual description of the error.
///
/// Deprecated. Use the field error instead.
///
/// Output only.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? statusMessage;
/// Server-defined URI for the target of the operation.
///
/// The format of this is a URI to the resource being modified (such as a
/// cluster, node pool, or node). For node pool repairs, there may be multiple
/// nodes being repaired, but only one will be the target. Examples: - ##
/// `https://container.googleapis.com/v1/projects/123/locations/us-central1/clusters/my-cluster`
/// ##
/// `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np`
/// `https://container.googleapis.com/v1/projects/123/zones/us-central1-c/clusters/my-cluster/nodePools/my-np/node/my-node`
///
/// Output only.
core.String? targetLink;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// operation is taking place.
///
/// This field is deprecated, use location instead.
///
/// Output only.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
Operation({
this.clusterConditions,
this.detail,
this.endTime,
this.error,
this.location,
this.name,
this.nodepoolConditions,
this.operationType,
this.progress,
this.selfLink,
this.startTime,
this.status,
this.statusMessage,
this.targetLink,
this.zone,
});
Operation.fromJson(core.Map json_)
: this(
clusterConditions: (json_['clusterConditions'] as core.List?)
?.map(
(value) => StatusCondition.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
detail: json_['detail'] as core.String?,
endTime: json_['endTime'] as core.String?,
error: json_.containsKey('error')
? Status.fromJson(
json_['error'] as core.Map<core.String, core.dynamic>,
)
: null,
location: json_['location'] as core.String?,
name: json_['name'] as core.String?,
nodepoolConditions: (json_['nodepoolConditions'] as core.List?)
?.map(
(value) => StatusCondition.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
operationType: json_['operationType'] as core.String?,
progress: json_.containsKey('progress')
? OperationProgress.fromJson(
json_['progress'] as core.Map<core.String, core.dynamic>,
)
: null,
selfLink: json_['selfLink'] as core.String?,
startTime: json_['startTime'] as core.String?,
status: json_['status'] as core.String?,
statusMessage: json_['statusMessage'] as core.String?,
targetLink: json_['targetLink'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterConditions = this.clusterConditions;
final detail = this.detail;
final endTime = this.endTime;
final error = this.error;
final location = this.location;
final name = this.name;
final nodepoolConditions = this.nodepoolConditions;
final operationType = this.operationType;
final progress = this.progress;
final selfLink = this.selfLink;
final startTime = this.startTime;
final status = this.status;
final statusMessage = this.statusMessage;
final targetLink = this.targetLink;
final zone = this.zone;
return {
'clusterConditions': ?clusterConditions,
'detail': ?detail,
'endTime': ?endTime,
'error': ?error,
'location': ?location,
'name': ?name,
'nodepoolConditions': ?nodepoolConditions,
'operationType': ?operationType,
'progress': ?progress,
'selfLink': ?selfLink,
'startTime': ?startTime,
'status': ?status,
'statusMessage': ?statusMessage,
'targetLink': ?targetLink,
'zone': ?zone,
};
}
}
/// OperationError records errors seen from CloudKMS keys encountered during
/// updates to DatabaseEncryption configuration.
class OperationError {
/// Description of the error seen during the operation.
core.String? errorMessage;
/// CloudKMS key resource that had the error.
core.String? keyName;
/// Time when the CloudKMS error was seen.
core.String? timestamp;
OperationError({this.errorMessage, this.keyName, this.timestamp});
OperationError.fromJson(core.Map json_)
: this(
errorMessage: json_['errorMessage'] as core.String?,
keyName: json_['keyName'] as core.String?,
timestamp: json_['timestamp'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final errorMessage = this.errorMessage;
final keyName = this.keyName;
final timestamp = this.timestamp;
return {
'errorMessage': ?errorMessage,
'keyName': ?keyName,
'timestamp': ?timestamp,
};
}
}
/// Information about operation (or operation stage) progress.
class OperationProgress {
/// Progress metric bundle, for example: metrics: \[{name: "nodes done",
/// int_value: 15}, {name: "nodes total", int_value: 32}\] or metrics:
/// \[{name: "progress", double_value: 0.56}, {name: "progress scale",
/// double_value: 1.0}\]
core.List<Metric>? metrics;
/// A non-parameterized string describing an operation stage.
///
/// Unset for single-stage operations.
core.String? name;
/// Substages of an operation or a stage.
core.List<OperationProgress>? stages;
/// Status of an operation stage.
///
/// Unset for single-stage operations.
/// Possible string values are:
/// - "STATUS_UNSPECIFIED" : Not set.
/// - "PENDING" : The operation has been created.
/// - "RUNNING" : The operation is currently running.
/// - "DONE" : The operation is done, either cancelled or completed.
/// - "ABORTING" : The operation is aborting.
core.String? status;
OperationProgress({this.metrics, this.name, this.stages, this.status});
OperationProgress.fromJson(core.Map json_)
: this(
metrics: (json_['metrics'] as core.List?)
?.map(
(value) =>
Metric.fromJson(value as core.Map<core.String, core.dynamic>),
)
.toList(),
name: json_['name'] as core.String?,
stages: (json_['stages'] as core.List?)
?.map(
(value) => OperationProgress.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
status: json_['status'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final metrics = this.metrics;
final name = this.name;
final stages = this.stages;
final status = this.status;
return {
'metrics': ?metrics,
'name': ?name,
'stages': ?stages,
'status': ?status,
};
}
}
/// Configuration for the Cloud Storage Parallelstore CSI driver.
class ParallelstoreCsiDriverConfig {
/// Whether the Cloud Storage Parallelstore CSI driver is enabled for this
/// cluster.
core.bool? enabled;
ParallelstoreCsiDriverConfig({this.enabled});
ParallelstoreCsiDriverConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// ParentProductConfig is the configuration of the parent product of the
/// cluster.
///
/// This field is used by Google internal products that are built on top of a
/// GKE cluster and take the ownership of the cluster.
class ParentProductConfig {
/// Labels contain the configuration of the parent product.
core.Map<core.String, core.String>? labels;
/// Name of the parent product associated with the cluster.
core.String? productName;
ParentProductConfig({this.labels, this.productName});
ParentProductConfig.fromJson(core.Map json_)
: this(
labels: (json_['labels'] as core.Map<core.String, core.dynamic>?)?.map(
(key, value) => core.MapEntry(key, value as core.String),
),
productName: json_['productName'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final labels = this.labels;
final productName = this.productName;
return {'labels': ?labels, 'productName': ?productName};
}
}
/// PlacementPolicy defines the placement policy used by the node pool.
class PlacementPolicy {
/// If set, refers to the name of a custom resource policy supplied by the
/// user.
///
/// The resource policy must be in the same project and region as the node
/// pool. If not found, InvalidArgument error is returned.
core.String? policyName;
/// TPU placement topology for pod slice node pool.
///
/// https://cloud.google.com/tpu/docs/types-topologies#tpu_topologies
///
/// Optional.
core.String? tpuTopology;
/// The type of placement.
/// Possible string values are:
/// - "TYPE_UNSPECIFIED" : TYPE_UNSPECIFIED specifies no requirements on nodes
/// placement.
/// - "COMPACT" : COMPACT specifies node placement in the same availability
/// domain to ensure low communication latency.
core.String? type;
PlacementPolicy({this.policyName, this.tpuTopology, this.type});
PlacementPolicy.fromJson(core.Map json_)
: this(
policyName: json_['policyName'] as core.String?,
tpuTopology: json_['tpuTopology'] as core.String?,
type: json_['type'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final policyName = this.policyName;
final tpuTopology = this.tpuTopology;
final type = this.type;
return {
'policyName': ?policyName,
'tpuTopology': ?tpuTopology,
'type': ?type,
};
}
}
/// PodAutoscaling is used for configuration of parameters for workload
/// autoscaling.
class PodAutoscaling {
/// Selected Horizontal Pod Autoscaling profile.
/// Possible string values are:
/// - "HPA_PROFILE_UNSPECIFIED" : HPA_PROFILE_UNSPECIFIED is used when no
/// custom HPA profile is set.
/// - "NONE" : Customers explicitly opt-out of HPA profiles.
/// - "PERFORMANCE" : PERFORMANCE is used when customers opt-in to the
/// performance HPA profile. In this profile we support a higher number of
/// HPAs per cluster and faster metrics collection for workload autoscaling.
core.String? hpaProfile;
PodAutoscaling({this.hpaProfile});
PodAutoscaling.fromJson(core.Map json_)
: this(hpaProfile: json_['hpaProfile'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final hpaProfile = this.hpaProfile;
return {'hpaProfile': ?hpaProfile};
}
}
/// \[PRIVATE FIELD\] Config for pod CIDR size overprovisioning.
class PodCIDROverprovisionConfig {
/// Whether Pod CIDR overprovisioning is disabled.
///
/// Note: Pod CIDR overprovisioning is enabled by default.
core.bool? disable;
PodCIDROverprovisionConfig({this.disable});
PodCIDROverprovisionConfig.fromJson(core.Map json_)
: this(disable: json_['disable'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final disable = this.disable;
return {'disable': ?disable};
}
}
/// PodSnapshotConfig is the configuration for GKE Pod Snapshots feature.
class PodSnapshotConfig {
/// Whether or not the Pod Snapshots feature is enabled.
core.bool? enabled;
PodSnapshotConfig({this.enabled});
PodSnapshotConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Configuration options for private clusters.
class PrivateClusterConfig {
/// Whether the master's internal IP address is used as the cluster endpoint.
///
/// Deprecated: Use
/// ControlPlaneEndpointsConfig.IPEndpointsConfig.enable_public_endpoint
/// instead. Note that the value of enable_public_endpoint is reversed: if
/// enable_private_endpoint is false, then enable_public_endpoint will be
/// true.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? enablePrivateEndpoint;
/// Whether nodes have internal IP addresses only.
///
/// If enabled, all nodes are given only RFC 1918 private addresses and
/// communicate with the master via private networking. Deprecated: Use
/// NetworkConfig.default_enable_private_nodes instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.bool? enablePrivateNodes;
/// Controls master global access settings.
///
/// Deprecated: Use
/// ControlPlaneEndpointsConfig.IPEndpointsConfig.enable_global_access
/// instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
PrivateClusterMasterGlobalAccessConfig? masterGlobalAccessConfig;
/// The IP range in CIDR notation to use for the hosted master network.
///
/// This range will be used for assigning internal IP addresses to the master
/// or set of masters, as well as the ILB VIP. This range must not overlap
/// with any other ranges in use within the cluster's network.
core.String? masterIpv4CidrBlock;
/// The peering name in the customer VPC used by this cluster.
///
/// Output only.
core.String? peeringName;
/// The internal IP address of this cluster's master endpoint.
///
/// Deprecated: Use
/// ControlPlaneEndpointsConfig.IPEndpointsConfig.private_endpoint instead.
///
/// Output only.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? privateEndpoint;
/// Subnet to provision the master's private endpoint during cluster creation.
///
/// Specified in projects / * /regions / * /subnetworks / * format.
/// Deprecated: Use
/// ControlPlaneEndpointsConfig.IPEndpointsConfig.private_endpoint_subnetwork
/// instead.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? privateEndpointSubnetwork;
/// The external IP address of this cluster's master endpoint.
///
/// Deprecated:Use
/// ControlPlaneEndpointsConfig.IPEndpointsConfig.public_endpoint instead.
///
/// Output only.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? publicEndpoint;
PrivateClusterConfig({
this.enablePrivateEndpoint,
this.enablePrivateNodes,
this.masterGlobalAccessConfig,
this.masterIpv4CidrBlock,
this.peeringName,
this.privateEndpoint,
this.privateEndpointSubnetwork,
this.publicEndpoint,
});
PrivateClusterConfig.fromJson(core.Map json_)
: this(
enablePrivateEndpoint: json_['enablePrivateEndpoint'] as core.bool?,
enablePrivateNodes: json_['enablePrivateNodes'] as core.bool?,
masterGlobalAccessConfig: json_.containsKey('masterGlobalAccessConfig')
? PrivateClusterMasterGlobalAccessConfig.fromJson(
json_['masterGlobalAccessConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
masterIpv4CidrBlock: json_['masterIpv4CidrBlock'] as core.String?,
peeringName: json_['peeringName'] as core.String?,
privateEndpoint: json_['privateEndpoint'] as core.String?,
privateEndpointSubnetwork:
json_['privateEndpointSubnetwork'] as core.String?,
publicEndpoint: json_['publicEndpoint'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final enablePrivateEndpoint = this.enablePrivateEndpoint;
final enablePrivateNodes = this.enablePrivateNodes;
final masterGlobalAccessConfig = this.masterGlobalAccessConfig;
final masterIpv4CidrBlock = this.masterIpv4CidrBlock;
final peeringName = this.peeringName;
final privateEndpoint = this.privateEndpoint;
final privateEndpointSubnetwork = this.privateEndpointSubnetwork;
final publicEndpoint = this.publicEndpoint;
return {
'enablePrivateEndpoint': ?enablePrivateEndpoint,
'enablePrivateNodes': ?enablePrivateNodes,
'masterGlobalAccessConfig': ?masterGlobalAccessConfig,
'masterIpv4CidrBlock': ?masterIpv4CidrBlock,
'peeringName': ?peeringName,
'privateEndpoint': ?privateEndpoint,
'privateEndpointSubnetwork': ?privateEndpointSubnetwork,
'publicEndpoint': ?publicEndpoint,
};
}
}
/// Configuration for controlling master global access settings.
class PrivateClusterMasterGlobalAccessConfig {
/// Whenever master is accessible globally or not.
core.bool? enabled;
PrivateClusterMasterGlobalAccessConfig({this.enabled});
PrivateClusterMasterGlobalAccessConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// PrivateRegistryAccessConfig contains access configuration for private
/// container registries.
class PrivateRegistryAccessConfig {
/// Private registry access configuration.
core.List<CertificateAuthorityDomainConfig>? certificateAuthorityDomainConfig;
/// Private registry access is enabled.
core.bool? enabled;
PrivateRegistryAccessConfig({
this.certificateAuthorityDomainConfig,
this.enabled,
});
PrivateRegistryAccessConfig.fromJson(core.Map json_)
: this(
certificateAuthorityDomainConfig:
(json_['certificateAuthorityDomainConfig'] as core.List?)
?.map(
(value) => CertificateAuthorityDomainConfig.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
enabled: json_['enabled'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final certificateAuthorityDomainConfig =
this.certificateAuthorityDomainConfig;
final enabled = this.enabled;
return {
'certificateAuthorityDomainConfig': ?certificateAuthorityDomainConfig,
'enabled': ?enabled,
};
}
}
/// PrivilegedAdmissionConfig stores the list of authorized allowlist paths for
/// the cluster.
class PrivilegedAdmissionConfig {
/// The customer allowlist Cloud Storage paths for the cluster.
///
/// These paths are used with the `--autopilot-privileged-admission` flag to
/// authorize privileged workloads in Autopilot clusters. Paths can be
/// GKE-owned, in the format `gke:////`, or customer-owned, in the format
/// `gs:///`. Wildcards (`*`) are supported to authorize all allowlists under
/// specific paths or directories. Example: `gs://my-bucket / * ` will
/// authorize all allowlists under the `my-bucket` bucket.
core.List<core.String>? allowlistPaths;
PrivilegedAdmissionConfig({this.allowlistPaths});
PrivilegedAdmissionConfig.fromJson(core.Map json_)
: this(
allowlistPaths: (json_['allowlistPaths'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final allowlistPaths = this.allowlistPaths;
return {'allowlistPaths': ?allowlistPaths};
}
}
/// Pub/Sub specific notification config.
class PubSub {
/// Enable notifications for Pub/Sub.
core.bool? enabled;
/// Allows filtering to one or more specific event types.
///
/// If no filter is specified, or if a filter is specified with no event
/// types, all event types will be sent
Filter? filter;
/// The desired Pub/Sub topic to which notifications will be sent by GKE.
///
/// Format is `projects/{project}/topics/{topic}`.
core.String? topic;
PubSub({this.enabled, this.filter, this.topic});
PubSub.fromJson(core.Map json_)
: this(
enabled: json_['enabled'] as core.bool?,
filter: json_.containsKey('filter')
? Filter.fromJson(
json_['filter'] as core.Map<core.String, core.dynamic>,
)
: null,
topic: json_['topic'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
final filter = this.filter;
final topic = this.topic;
return {'enabled': ?enabled, 'filter': ?filter, 'topic': ?topic};
}
}
/// QueuedProvisioning defines the queued provisioning used by the node pool.
class QueuedProvisioning {
/// Denotes that this node pool is QRM specific, meaning nodes can be only
/// obtained through queuing via the Cluster Autoscaler ProvisioningRequest
/// API.
core.bool? enabled;
QueuedProvisioning({this.enabled});
QueuedProvisioning.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// RBACBindingConfig allows user to restrict ClusterRoleBindings an
/// RoleBindings that can be created.
class RBACBindingConfig {
/// Setting this to true will allow any ClusterRoleBinding and RoleBinding
/// with subjects system:authenticated.
core.bool? enableInsecureBindingSystemAuthenticated;
/// Setting this to true will allow any ClusterRoleBinding and RoleBinding
/// with subjets system:anonymous or system:unauthenticated.
core.bool? enableInsecureBindingSystemUnauthenticated;
RBACBindingConfig({
this.enableInsecureBindingSystemAuthenticated,
this.enableInsecureBindingSystemUnauthenticated,
});
RBACBindingConfig.fromJson(core.Map json_)
: this(
enableInsecureBindingSystemAuthenticated:
json_['enableInsecureBindingSystemAuthenticated'] as core.bool?,
enableInsecureBindingSystemUnauthenticated:
json_['enableInsecureBindingSystemUnauthenticated'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final enableInsecureBindingSystemAuthenticated =
this.enableInsecureBindingSystemAuthenticated;
final enableInsecureBindingSystemUnauthenticated =
this.enableInsecureBindingSystemUnauthenticated;
return {
'enableInsecureBindingSystemAuthenticated':
?enableInsecureBindingSystemAuthenticated,
'enableInsecureBindingSystemUnauthenticated':
?enableInsecureBindingSystemUnauthenticated,
};
}
}
/// RangeInfo contains the range name and the range utilization by this cluster.
class RangeInfo {
/// Name of a range.
///
/// Output only.
core.String? rangeName;
/// The utilization of the range.
///
/// Output only.
core.double? utilization;
RangeInfo({this.rangeName, this.utilization});
RangeInfo.fromJson(core.Map json_)
: this(
rangeName: json_['rangeName'] as core.String?,
utilization: (json_['utilization'] as core.num?)?.toDouble(),
);
core.Map<core.String, core.dynamic> toJson() {
final rangeName = this.rangeName;
final utilization = this.utilization;
return {'rangeName': ?rangeName, 'utilization': ?utilization};
}
}
/// RayClusterLoggingConfig specifies configuration of Ray logging.
class RayClusterLoggingConfig {
/// Enable log collection for Ray clusters.
core.bool? enabled;
RayClusterLoggingConfig({this.enabled});
RayClusterLoggingConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// RayClusterMonitoringConfig specifies monitoring configuration for Ray
/// clusters.
class RayClusterMonitoringConfig {
/// Enable metrics collection for Ray clusters.
core.bool? enabled;
RayClusterMonitoringConfig({this.enabled});
RayClusterMonitoringConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Configuration options for the Ray Operator add-on.
class RayOperatorConfig {
/// Whether the Ray Operator addon is enabled for this cluster.
core.bool? enabled;
/// Logging configuration for Ray clusters.
///
/// Optional.
RayClusterLoggingConfig? rayClusterLoggingConfig;
/// Monitoring configuration for Ray clusters.
///
/// Optional.
RayClusterMonitoringConfig? rayClusterMonitoringConfig;
RayOperatorConfig({
this.enabled,
this.rayClusterLoggingConfig,
this.rayClusterMonitoringConfig,
});
RayOperatorConfig.fromJson(core.Map json_)
: this(
enabled: json_['enabled'] as core.bool?,
rayClusterLoggingConfig: json_.containsKey('rayClusterLoggingConfig')
? RayClusterLoggingConfig.fromJson(
json_['rayClusterLoggingConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
rayClusterMonitoringConfig:
json_.containsKey('rayClusterMonitoringConfig')
? RayClusterMonitoringConfig.fromJson(
json_['rayClusterMonitoringConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
final rayClusterLoggingConfig = this.rayClusterLoggingConfig;
final rayClusterMonitoringConfig = this.rayClusterMonitoringConfig;
return {
'enabled': ?enabled,
'rayClusterLoggingConfig': ?rayClusterLoggingConfig,
'rayClusterMonitoringConfig': ?rayClusterMonitoringConfig,
};
}
}
/// Represents an arbitrary window of time that recurs.
class RecurringTimeWindow {
/// An RRULE (https://tools.ietf.org/html/rfc5545#section-3.8.5.3) for how
/// this window recurs.
///
/// They go on for the span of time between the start and end time. For
/// example, to have something repeat every weekday, you'd use:
/// `FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR` To repeat some window daily (equivalent
/// to the DailyMaintenanceWindow): `FREQ=DAILY` For the first weekend of
/// every month: `FREQ=MONTHLY;BYSETPOS=1;BYDAY=SA,SU` This specifies how
/// frequently the window starts. Eg, if you wanted to have a 9-5 UTC-4 window
/// every weekday, you'd use something like: ``` start time =
/// 2019-01-01T09:00:00-0400 end time = 2019-01-01T17:00:00-0400 recurrence =
/// FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR ``` Windows can span multiple days. Eg,
/// to make the window encompass every weekend from midnight Saturday till the
/// last minute of Sunday UTC: ``` start time = 2019-01-05T00:00:00Z end time
/// = 2019-01-07T23:59:00Z recurrence = FREQ=WEEKLY;BYDAY=SA ``` Note the
/// start and end time's specific dates are largely arbitrary except to
/// specify duration of the window and when it first starts. The FREQ values
/// of HOURLY, MINUTELY, and SECONDLY are not supported.
core.String? recurrence;
/// The window of the first recurrence.
TimeWindow? window;
RecurringTimeWindow({this.recurrence, this.window});
RecurringTimeWindow.fromJson(core.Map json_)
: this(
recurrence: json_['recurrence'] as core.String?,
window: json_.containsKey('window')
? TimeWindow.fromJson(
json_['window'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final recurrence = this.recurrence;
final window = this.window;
return {'recurrence': ?recurrence, 'window': ?window};
}
}
/// RegistryHeader configures headers for the registry.
class RegistryHeader {
/// Key configures the header key.
core.String? key;
/// Value configures the header value.
core.List<core.String>? value;
RegistryHeader({this.key, this.value});
RegistryHeader.fromJson(core.Map json_)
: this(
key: json_['key'] as core.String?,
value: (json_['value'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final key = this.key;
final value = this.value;
return {'key': ?key, 'value': ?value};
}
}
/// RegistryHostConfig configures the top-level structure for a single
/// containerd registry server's configuration, which represents one hosts.toml
/// file on the node.
///
/// It will override the same fqdns in PrivateRegistryAccessConfig.
class RegistryHostConfig {
/// HostConfig configures a list of host-specific configurations for the
/// server.
///
/// Each server can have at most 10 host configurations.
core.List<HostConfig>? hosts;
/// Defines the host name of the registry server, which will be used to create
/// configuration file as /etc/containerd/hosts.d//hosts.toml.
///
/// It supports fully qualified domain names (FQDN) and IP addresses:
/// Specifying port is supported, while scheme and path are NOT supported.
/// Wildcards are NOT supported. Examples: - `my.customdomain.com` -
/// `10.0.1.2:5000`
core.String? server;
RegistryHostConfig({this.hosts, this.server});
RegistryHostConfig.fromJson(core.Map json_)
: this(
hosts: (json_['hosts'] as core.List?)
?.map(
(value) => HostConfig.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
server: json_['server'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final hosts = this.hosts;
final server = this.server;
return {'hosts': ?hosts, 'server': ?server};
}
}
/// ReleaseChannel indicates which release channel a cluster is subscribed to.
///
/// Release channels are arranged in order of risk. When a cluster is subscribed
/// to a release channel, Google maintains both the master version and the node
/// version. Node auto-upgrade defaults to true and cannot be disabled.
class ReleaseChannel {
/// channel specifies which release channel the cluster is subscribed to.
/// Possible string values are:
/// - "UNSPECIFIED" : No channel specified.
/// - "RAPID" : RAPID channel is offered on an early access basis for
/// customers who want to test new releases. WARNING: Versions available in
/// the RAPID Channel may be subject to unresolved issues with no known
/// workaround and are not subject to any SLAs.
/// - "REGULAR" : Clusters subscribed to REGULAR receive versions that are
/// considered GA quality. REGULAR is intended for production users who want
/// to take advantage of new features.
/// - "STABLE" : Clusters subscribed to STABLE receive versions that are known
/// to be stable and reliable in production.
/// - "EXTENDED" : Clusters subscribed to EXTENDED receive extended support
/// and availability for versions which are known to be stable and reliable in
/// production.
core.String? channel;
ReleaseChannel({this.channel});
ReleaseChannel.fromJson(core.Map json_)
: this(channel: json_['channel'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final channel = this.channel;
return {'channel': ?channel};
}
}
/// ReleaseChannelConfig exposes configuration for a release channel.
class ReleaseChannelConfig {
/// The release channel this configuration applies to.
/// Possible string values are:
/// - "UNSPECIFIED" : No channel specified.
/// - "RAPID" : RAPID channel is offered on an early access basis for
/// customers who want to test new releases. WARNING: Versions available in
/// the RAPID Channel may be subject to unresolved issues with no known
/// workaround and are not subject to any SLAs.
/// - "REGULAR" : Clusters subscribed to REGULAR receive versions that are
/// considered GA quality. REGULAR is intended for production users who want
/// to take advantage of new features.
/// - "STABLE" : Clusters subscribed to STABLE receive versions that are known
/// to be stable and reliable in production.
/// - "EXTENDED" : Clusters subscribed to EXTENDED receive extended support
/// and availability for versions which are known to be stable and reliable in
/// production.
core.String? channel;
/// The default version for newly created clusters on the channel.
core.String? defaultVersion;
/// The auto upgrade target version for clusters on the channel.
core.String? upgradeTargetVersion;
/// List of valid versions for the channel.
core.List<core.String>? validVersions;
ReleaseChannelConfig({
this.channel,
this.defaultVersion,
this.upgradeTargetVersion,
this.validVersions,
});
ReleaseChannelConfig.fromJson(core.Map json_)
: this(
channel: json_['channel'] as core.String?,
defaultVersion: json_['defaultVersion'] as core.String?,
upgradeTargetVersion: json_['upgradeTargetVersion'] as core.String?,
validVersions: (json_['validVersions'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final channel = this.channel;
final defaultVersion = this.defaultVersion;
final upgradeTargetVersion = this.upgradeTargetVersion;
final validVersions = this.validVersions;
return {
'channel': ?channel,
'defaultVersion': ?defaultVersion,
'upgradeTargetVersion': ?upgradeTargetVersion,
'validVersions': ?validVersions,
};
}
}
/// [ReservationAffinity](https://cloud.google.com/compute/docs/instances/reserving-zonal-resources)
/// is the configuration of desired reservation which instances could take
/// capacity from.
class ReservationAffinity {
/// Corresponds to the type of reservation consumption.
/// Possible string values are:
/// - "UNSPECIFIED" : Default value. This should not be used.
/// - "NO_RESERVATION" : Do not consume from any reserved capacity.
/// - "ANY_RESERVATION" : Consume any reservation available.
/// - "SPECIFIC_RESERVATION" : Must consume from a specific reservation. Must
/// specify key value fields for specifying the reservations.
core.String? consumeReservationType;
/// Corresponds to the label key of a reservation resource.
///
/// To target a SPECIFIC_RESERVATION by name, specify
/// "compute.googleapis.com/reservation-name" as the key and specify the name
/// of your reservation as its value.
core.String? key;
/// Corresponds to the label value(s) of reservation resource(s).
core.List<core.String>? values;
ReservationAffinity({this.consumeReservationType, this.key, this.values});
ReservationAffinity.fromJson(core.Map json_)
: this(
consumeReservationType: json_['consumeReservationType'] as core.String?,
key: json_['key'] as core.String?,
values: (json_['values'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final consumeReservationType = this.consumeReservationType;
final key = this.key;
final values = this.values;
return {
'consumeReservationType': ?consumeReservationType,
'key': ?key,
'values': ?values,
};
}
}
/// Collection of
/// [Resource Manager labels](https://cloud.google.com/resource-manager/docs/creating-managing-labels).
typedef ResourceLabels = $Labels;
/// Contains information about amount of some resource in the cluster.
///
/// For memory, value should be in GB.
class ResourceLimit {
/// Maximum amount of the resource in the cluster.
core.String? maximum;
/// Minimum amount of the resource in the cluster.
core.String? minimum;
/// Resource name "cpu", "memory" or gpu-specific string.
core.String? resourceType;
ResourceLimit({this.maximum, this.minimum, this.resourceType});
ResourceLimit.fromJson(core.Map json_)
: this(
maximum: json_['maximum'] as core.String?,
minimum: json_['minimum'] as core.String?,
resourceType: json_['resourceType'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final maximum = this.maximum;
final minimum = this.minimum;
final resourceType = this.resourceType;
return {
'maximum': ?maximum,
'minimum': ?minimum,
'resourceType': ?resourceType,
};
}
}
/// A map of resource manager tag keys and values to be attached to the nodes
/// for managing Compute Engine firewalls using Network Firewall Policies.
///
/// Tags must be according to specifications in
/// https://cloud.google.com/vpc/docs/tags-firewalls-overview#specifications. A
/// maximum of 5 tag key-value pairs can be specified. Existing tags will be
/// replaced with new values.
class ResourceManagerTags {
/// TagKeyValue must be in one of the following formats (\[KEY\]=\[VALUE\]) 1.
///
/// `tagKeys/{tag_key_id}=tagValues/{tag_value_id}` 2.
/// `{org_id}/{tag_key_name}={tag_value_name}` 3.
/// `{project_id}/{tag_key_name}={tag_value_name}`
core.Map<core.String, core.String>? tags;
ResourceManagerTags({this.tags});
ResourceManagerTags.fromJson(core.Map json_)
: this(
tags: (json_['tags'] as core.Map<core.String, core.dynamic>?)?.map(
(key, value) => core.MapEntry(key, value as core.String),
),
);
core.Map<core.String, core.dynamic> toJson() {
final tags = this.tags;
return {'tags': ?tags};
}
}
/// Configuration for exporting cluster resource usages.
class ResourceUsageExportConfig {
/// Configuration to use BigQuery as usage export destination.
BigQueryDestination? bigqueryDestination;
/// Configuration to enable resource consumption metering.
ConsumptionMeteringConfig? consumptionMeteringConfig;
/// Whether to enable network egress metering for this cluster.
///
/// If enabled, a daemonset will be created in the cluster to meter network
/// egress traffic.
core.bool? enableNetworkEgressMetering;
ResourceUsageExportConfig({
this.bigqueryDestination,
this.consumptionMeteringConfig,
this.enableNetworkEgressMetering,
});
ResourceUsageExportConfig.fromJson(core.Map json_)
: this(
bigqueryDestination: json_.containsKey('bigqueryDestination')
? BigQueryDestination.fromJson(
json_['bigqueryDestination']
as core.Map<core.String, core.dynamic>,
)
: null,
consumptionMeteringConfig:
json_.containsKey('consumptionMeteringConfig')
? ConsumptionMeteringConfig.fromJson(
json_['consumptionMeteringConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
enableNetworkEgressMetering:
json_['enableNetworkEgressMetering'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final bigqueryDestination = this.bigqueryDestination;
final consumptionMeteringConfig = this.consumptionMeteringConfig;
final enableNetworkEgressMetering = this.enableNetworkEgressMetering;
return {
'bigqueryDestination': ?bigqueryDestination,
'consumptionMeteringConfig': ?consumptionMeteringConfig,
'enableNetworkEgressMetering': ?enableNetworkEgressMetering,
};
}
}
/// RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed
/// NodePool upgrade.
///
/// This will be an no-op if the last upgrade successfully completed.
class RollbackNodePoolUpgradeRequest {
/// The name of the cluster to rollback.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The name (project, location, cluster, node pool id) of the node poll to
/// rollback upgrade.
///
/// Specified in the format `projects / * /locations / * /clusters / *
/// /nodePools / * `.
core.String? name;
/// The name of the node pool to rollback.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? nodePoolId;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// Option for rollback to ignore the PodDisruptionBudget.
///
/// Default value is false.
core.bool? respectPdb;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
RollbackNodePoolUpgradeRequest({
this.clusterId,
this.name,
this.nodePoolId,
this.projectId,
this.respectPdb,
this.zone,
});
RollbackNodePoolUpgradeRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
name: json_['name'] as core.String?,
nodePoolId: json_['nodePoolId'] as core.String?,
projectId: json_['projectId'] as core.String?,
respectPdb: json_['respectPdb'] as core.bool?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final name = this.name;
final nodePoolId = this.nodePoolId;
final projectId = this.projectId;
final respectPdb = this.respectPdb;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'name': ?name,
'nodePoolId': ?nodePoolId,
'projectId': ?projectId,
'respectPdb': ?respectPdb,
'zone': ?zone,
};
}
}
/// RotationConfig is config for secret manager auto rotation.
typedef RotationConfig = $RotationConfig;
/// SandboxConfig contains configurations of the sandbox to use for the node.
class SandboxConfig {
/// Type of the sandbox to use for the node.
/// Possible string values are:
/// - "UNSPECIFIED" : Default value. This should not be used.
/// - "GVISOR" : Run sandbox using gvisor.
core.String? type;
SandboxConfig({this.type});
SandboxConfig.fromJson(core.Map json_)
: this(type: json_['type'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final type = this.type;
return {'type': ?type};
}
}
/// Configuration for scheduled upgrades on the cluster.
class ScheduleUpgradeConfig {
/// Whether or not scheduled upgrades are enabled.
///
/// Optional.
core.bool? enabled;
ScheduleUpgradeConfig({this.enabled});
ScheduleUpgradeConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// SecondaryBootDisk represents a persistent disk attached to a node with
/// special configurations based on its mode.
class SecondaryBootDisk {
/// Fully-qualified resource ID for an existing disk image.
core.String? diskImage;
/// Disk mode (container image cache, etc.)
/// Possible string values are:
/// - "MODE_UNSPECIFIED" : MODE_UNSPECIFIED is when mode is not set.
/// - "CONTAINER_IMAGE_CACHE" : CONTAINER_IMAGE_CACHE is for using the
/// secondary boot disk as a container image cache.
core.String? mode;
SecondaryBootDisk({this.diskImage, this.mode});
SecondaryBootDisk.fromJson(core.Map json_)
: this(
diskImage: json_['diskImage'] as core.String?,
mode: json_['mode'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final diskImage = this.diskImage;
final mode = this.mode;
return {'diskImage': ?diskImage, 'mode': ?mode};
}
}
/// SecondaryBootDiskUpdateStrategy is a placeholder which will be extended in
/// the future to define different options for updating secondary boot disks.
typedef SecondaryBootDiskUpdateStrategy = $Empty;
/// SecretManagerConfig is config for secret manager enablement.
class SecretManagerConfig {
/// Enable/Disable Secret Manager Config.
core.bool? enabled;
/// Rotation config for secret manager.
RotationConfig? rotationConfig;
SecretManagerConfig({this.enabled, this.rotationConfig});
SecretManagerConfig.fromJson(core.Map json_)
: this(
enabled: json_['enabled'] as core.bool?,
rotationConfig: json_.containsKey('rotationConfig')
? RotationConfig.fromJson(
json_['rotationConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
final rotationConfig = this.rotationConfig;
return {'enabled': ?enabled, 'rotationConfig': ?rotationConfig};
}
}
/// Configuration for sync Secret Manager secrets as k8s secrets.
class SecretSyncConfig {
/// Enable/Disable Secret Sync Config.
core.bool? enabled;
/// Rotation config for secret manager.
SyncRotationConfig? rotationConfig;
SecretSyncConfig({this.enabled, this.rotationConfig});
SecretSyncConfig.fromJson(core.Map json_)
: this(
enabled: json_['enabled'] as core.bool?,
rotationConfig: json_.containsKey('rotationConfig')
? SyncRotationConfig.fromJson(
json_['rotationConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
final rotationConfig = this.rotationConfig;
return {'enabled': ?enabled, 'rotationConfig': ?rotationConfig};
}
}
/// SecurityPostureConfig defines the flags needed to enable/disable features
/// for the Security Posture API.
typedef SecurityPostureConfig = $SecurityPostureConfig;
/// Kubernetes Engine service configuration.
class ServerConfig {
/// List of release channel configurations.
core.List<ReleaseChannelConfig>? channels;
/// Version of Kubernetes the service deploys by default.
core.String? defaultClusterVersion;
/// Default image type.
core.String? defaultImageType;
/// List of valid image types.
core.List<core.String>? validImageTypes;
/// List of valid master versions, in descending order.
core.List<core.String>? validMasterVersions;
/// List of valid node upgrade target versions, in descending order.
core.List<core.String>? validNodeVersions;
ServerConfig({
this.channels,
this.defaultClusterVersion,
this.defaultImageType,
this.validImageTypes,
this.validMasterVersions,
this.validNodeVersions,
});
ServerConfig.fromJson(core.Map json_)
: this(
channels: (json_['channels'] as core.List?)
?.map(
(value) => ReleaseChannelConfig.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
defaultClusterVersion: json_['defaultClusterVersion'] as core.String?,
defaultImageType: json_['defaultImageType'] as core.String?,
validImageTypes: (json_['validImageTypes'] as core.List?)
?.map((value) => value as core.String)
.toList(),
validMasterVersions: (json_['validMasterVersions'] as core.List?)
?.map((value) => value as core.String)
.toList(),
validNodeVersions: (json_['validNodeVersions'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final channels = this.channels;
final defaultClusterVersion = this.defaultClusterVersion;
final defaultImageType = this.defaultImageType;
final validImageTypes = this.validImageTypes;
final validMasterVersions = this.validMasterVersions;
final validNodeVersions = this.validNodeVersions;
return {
'channels': ?channels,
'defaultClusterVersion': ?defaultClusterVersion,
'defaultImageType': ?defaultImageType,
'validImageTypes': ?validImageTypes,
'validMasterVersions': ?validMasterVersions,
'validNodeVersions': ?validNodeVersions,
};
}
}
/// Config to block services with externalIPs field.
class ServiceExternalIPsConfig {
/// Whether Services with ExternalIPs field are allowed or not.
core.bool? enabled;
ServiceExternalIPsConfig({this.enabled});
ServiceExternalIPsConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// SetAddonsConfigRequest sets the addons associated with the cluster.
class SetAddonsConfigRequest {
/// The desired configurations for the various addons available to run in the
/// cluster.
///
/// Required.
AddonsConfig? addonsConfig;
/// The name of the cluster to upgrade.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The name (project, location, cluster) of the cluster to set addons.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
SetAddonsConfigRequest({
this.addonsConfig,
this.clusterId,
this.name,
this.projectId,
this.zone,
});
SetAddonsConfigRequest.fromJson(core.Map json_)
: this(
addonsConfig: json_.containsKey('addonsConfig')
? AddonsConfig.fromJson(
json_['addonsConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
clusterId: json_['clusterId'] as core.String?,
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final addonsConfig = this.addonsConfig;
final clusterId = this.clusterId;
final name = this.name;
final projectId = this.projectId;
final zone = this.zone;
return {
'addonsConfig': ?addonsConfig,
'clusterId': ?clusterId,
'name': ?name,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// SetLabelsRequest sets the Google Cloud Platform labels on a Google Container
/// Engine cluster, which will in turn set them for Google Compute Engine
/// resources used by that cluster
class SetLabelsRequest {
/// The name of the cluster.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The fingerprint of the previous set of labels for this resource, used to
/// detect conflicts.
///
/// The fingerprint is initially generated by Kubernetes Engine and changes
/// after every request to modify or update labels. You must always provide an
/// up-to-date fingerprint hash when updating or changing labels. Make a
/// `get()` request to the resource to get the latest fingerprint.
///
/// Required.
core.String? labelFingerprint;
/// The name (project, location, cluster name) of the cluster to set labels.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The labels to set for that cluster.
///
/// Required.
core.Map<core.String, core.String>? resourceLabels;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
SetLabelsRequest({
this.clusterId,
this.labelFingerprint,
this.name,
this.projectId,
this.resourceLabels,
this.zone,
});
SetLabelsRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
labelFingerprint: json_['labelFingerprint'] as core.String?,
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
resourceLabels:
(json_['resourceLabels'] as core.Map<core.String, core.dynamic>?)
?.map((key, value) => core.MapEntry(key, value as core.String)),
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final labelFingerprint = this.labelFingerprint;
final name = this.name;
final projectId = this.projectId;
final resourceLabels = this.resourceLabels;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'labelFingerprint': ?labelFingerprint,
'name': ?name,
'projectId': ?projectId,
'resourceLabels': ?resourceLabels,
'zone': ?zone,
};
}
}
/// SetLegacyAbacRequest enables or disables the ABAC authorization mechanism
/// for a cluster.
class SetLegacyAbacRequest {
/// The name of the cluster to update.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// Whether ABAC authorization will be enabled in the cluster.
///
/// Required.
core.bool? enabled;
/// The name (project, location, cluster name) of the cluster to set legacy
/// abac.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
SetLegacyAbacRequest({
this.clusterId,
this.enabled,
this.name,
this.projectId,
this.zone,
});
SetLegacyAbacRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
enabled: json_['enabled'] as core.bool?,
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final enabled = this.enabled;
final name = this.name;
final projectId = this.projectId;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'enabled': ?enabled,
'name': ?name,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// SetLocationsRequest sets the locations of the cluster.
class SetLocationsRequest {
/// The name of the cluster to upgrade.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The desired list of Google Compute Engine
/// [zones](https://cloud.google.com/compute/docs/zones#available) in which
/// the cluster's nodes should be located.
///
/// Changing the locations a cluster is in will result in nodes being either
/// created or removed from the cluster, depending on whether locations are
/// being added or removed. This list must always include the cluster's
/// primary zone.
///
/// Required.
core.List<core.String>? locations;
/// The name (project, location, cluster) of the cluster to set locations.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
SetLocationsRequest({
this.clusterId,
this.locations,
this.name,
this.projectId,
this.zone,
});
SetLocationsRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
locations: (json_['locations'] as core.List?)
?.map((value) => value as core.String)
.toList(),
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final locations = this.locations;
final name = this.name;
final projectId = this.projectId;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'locations': ?locations,
'name': ?name,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// SetLoggingServiceRequest sets the logging service of a cluster.
class SetLoggingServiceRequest {
/// The name of the cluster to upgrade.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The logging service the cluster should use to write logs.
///
/// Currently available options: * `logging.googleapis.com/kubernetes` - The
/// Cloud Logging service with a Kubernetes-native resource model *
/// `logging.googleapis.com` - The legacy Cloud Logging service (no longer
/// available as of GKE 1.15). * `none` - no logs will be exported from the
/// cluster. If left as an empty string,`logging.googleapis.com/kubernetes`
/// will be used for GKE 1.14+ or `logging.googleapis.com` for earlier
/// versions.
///
/// Required.
core.String? loggingService;
/// The name (project, location, cluster) of the cluster to set logging.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
SetLoggingServiceRequest({
this.clusterId,
this.loggingService,
this.name,
this.projectId,
this.zone,
});
SetLoggingServiceRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
loggingService: json_['loggingService'] as core.String?,
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final loggingService = this.loggingService;
final name = this.name;
final projectId = this.projectId;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'loggingService': ?loggingService,
'name': ?name,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// SetMaintenancePolicyRequest sets the maintenance policy for a cluster.
class SetMaintenancePolicyRequest {
/// The name of the cluster to update.
///
/// Required.
core.String? clusterId;
/// The maintenance policy to be set for the cluster.
///
/// An empty field clears the existing maintenance policy.
///
/// Required.
MaintenancePolicy? maintenancePolicy;
/// The name (project, location, cluster name) of the cluster to set
/// maintenance policy.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// Required.
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// Required.
core.String? zone;
SetMaintenancePolicyRequest({
this.clusterId,
this.maintenancePolicy,
this.name,
this.projectId,
this.zone,
});
SetMaintenancePolicyRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
maintenancePolicy: json_.containsKey('maintenancePolicy')
? MaintenancePolicy.fromJson(
json_['maintenancePolicy']
as core.Map<core.String, core.dynamic>,
)
: null,
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final maintenancePolicy = this.maintenancePolicy;
final name = this.name;
final projectId = this.projectId;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'maintenancePolicy': ?maintenancePolicy,
'name': ?name,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// SetMasterAuthRequest updates the admin password of a cluster.
class SetMasterAuthRequest {
/// The exact form of action to be taken on the master auth.
///
/// Required.
/// Possible string values are:
/// - "UNKNOWN" : Operation is unknown and will error out.
/// - "SET_PASSWORD" : Set the password to a user generated value.
/// - "GENERATE_PASSWORD" : Generate a new password and set it to that.
/// - "SET_USERNAME" : Set the username. If an empty username is provided,
/// basic authentication is disabled for the cluster. If a non-empty username
/// is provided, basic authentication is enabled, with either a provided
/// password or a generated one.
core.String? action;
/// The name of the cluster to upgrade.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The name (project, location, cluster) of the cluster to set auth.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// A description of the update.
///
/// Required.
MasterAuth? update;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
SetMasterAuthRequest({
this.action,
this.clusterId,
this.name,
this.projectId,
this.update,
this.zone,
});
SetMasterAuthRequest.fromJson(core.Map json_)
: this(
action: json_['action'] as core.String?,
clusterId: json_['clusterId'] as core.String?,
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
update: json_.containsKey('update')
? MasterAuth.fromJson(
json_['update'] as core.Map<core.String, core.dynamic>,
)
: null,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final action = this.action;
final clusterId = this.clusterId;
final name = this.name;
final projectId = this.projectId;
final update = this.update;
final zone = this.zone;
return {
'action': ?action,
'clusterId': ?clusterId,
'name': ?name,
'projectId': ?projectId,
'update': ?update,
'zone': ?zone,
};
}
}
/// SetMonitoringServiceRequest sets the monitoring service of a cluster.
class SetMonitoringServiceRequest {
/// The name of the cluster to upgrade.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The monitoring service the cluster should use to write metrics.
///
/// Currently available options: * `monitoring.googleapis.com/kubernetes` -
/// The Cloud Monitoring service with a Kubernetes-native resource model *
/// `monitoring.googleapis.com` - The legacy Cloud Monitoring service (no
/// longer available as of GKE 1.15). * `none` - No metrics will be exported
/// from the cluster. If left as an empty
/// string,`monitoring.googleapis.com/kubernetes` will be used for GKE 1.14+
/// or `monitoring.googleapis.com` for earlier versions.
///
/// Required.
core.String? monitoringService;
/// The name (project, location, cluster) of the cluster to set monitoring.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
SetMonitoringServiceRequest({
this.clusterId,
this.monitoringService,
this.name,
this.projectId,
this.zone,
});
SetMonitoringServiceRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
monitoringService: json_['monitoringService'] as core.String?,
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final monitoringService = this.monitoringService;
final name = this.name;
final projectId = this.projectId;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'monitoringService': ?monitoringService,
'name': ?name,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// SetNetworkPolicyRequest enables/disables network policy for a cluster.
class SetNetworkPolicyRequest {
/// The name of the cluster.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The name (project, location, cluster name) of the cluster to set
/// networking policy.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// Configuration options for the NetworkPolicy feature.
///
/// Required.
NetworkPolicy? networkPolicy;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
SetNetworkPolicyRequest({
this.clusterId,
this.name,
this.networkPolicy,
this.projectId,
this.zone,
});
SetNetworkPolicyRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
name: json_['name'] as core.String?,
networkPolicy: json_.containsKey('networkPolicy')
? NetworkPolicy.fromJson(
json_['networkPolicy'] as core.Map<core.String, core.dynamic>,
)
: null,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final name = this.name;
final networkPolicy = this.networkPolicy;
final projectId = this.projectId;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'name': ?name,
'networkPolicy': ?networkPolicy,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.
class SetNodePoolAutoscalingRequest {
/// Autoscaling configuration for the node pool.
///
/// Required.
NodePoolAutoscaling? autoscaling;
/// The name of the cluster to upgrade.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The name (project, location, cluster, node pool) of the node pool to set
/// autoscaler settings.
///
/// Specified in the format `projects / * /locations / * /clusters / *
/// /nodePools / * `.
core.String? name;
/// The name of the node pool to upgrade.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? nodePoolId;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
SetNodePoolAutoscalingRequest({
this.autoscaling,
this.clusterId,
this.name,
this.nodePoolId,
this.projectId,
this.zone,
});
SetNodePoolAutoscalingRequest.fromJson(core.Map json_)
: this(
autoscaling: json_.containsKey('autoscaling')
? NodePoolAutoscaling.fromJson(
json_['autoscaling'] as core.Map<core.String, core.dynamic>,
)
: null,
clusterId: json_['clusterId'] as core.String?,
name: json_['name'] as core.String?,
nodePoolId: json_['nodePoolId'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final autoscaling = this.autoscaling;
final clusterId = this.clusterId;
final name = this.name;
final nodePoolId = this.nodePoolId;
final projectId = this.projectId;
final zone = this.zone;
return {
'autoscaling': ?autoscaling,
'clusterId': ?clusterId,
'name': ?name,
'nodePoolId': ?nodePoolId,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// SetNodePoolManagementRequest sets the node management properties of a node
/// pool.
class SetNodePoolManagementRequest {
/// The name of the cluster to update.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// NodeManagement configuration for the node pool.
///
/// Required.
NodeManagement? management;
/// The name (project, location, cluster, node pool id) of the node pool to
/// set management properties.
///
/// Specified in the format `projects / * /locations / * /clusters / *
/// /nodePools / * `.
core.String? name;
/// The name of the node pool to update.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? nodePoolId;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
SetNodePoolManagementRequest({
this.clusterId,
this.management,
this.name,
this.nodePoolId,
this.projectId,
this.zone,
});
SetNodePoolManagementRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
management: json_.containsKey('management')
? NodeManagement.fromJson(
json_['management'] as core.Map<core.String, core.dynamic>,
)
: null,
name: json_['name'] as core.String?,
nodePoolId: json_['nodePoolId'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final management = this.management;
final name = this.name;
final nodePoolId = this.nodePoolId;
final projectId = this.projectId;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'management': ?management,
'name': ?name,
'nodePoolId': ?nodePoolId,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// SetNodePoolSizeRequest sets the size of a node pool.
class SetNodePoolSizeRequest {
/// The name of the cluster to update.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The name (project, location, cluster, node pool id) of the node pool to
/// set size.
///
/// Specified in the format `projects / * /locations / * /clusters / *
/// /nodePools / * `.
core.String? name;
/// The desired node count for the pool.
///
/// Required.
core.int? nodeCount;
/// The name of the node pool to update.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? nodePoolId;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
SetNodePoolSizeRequest({
this.clusterId,
this.name,
this.nodeCount,
this.nodePoolId,
this.projectId,
this.zone,
});
SetNodePoolSizeRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
name: json_['name'] as core.String?,
nodeCount: json_['nodeCount'] as core.int?,
nodePoolId: json_['nodePoolId'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final name = this.name;
final nodeCount = this.nodeCount;
final nodePoolId = this.nodePoolId;
final projectId = this.projectId;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'name': ?name,
'nodeCount': ?nodeCount,
'nodePoolId': ?nodePoolId,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// A set of Shielded Instance options.
class ShieldedInstanceConfig {
/// Defines whether the instance has integrity monitoring enabled.
///
/// Enables monitoring and attestation of the boot integrity of the instance.
/// The attestation is performed against the integrity policy baseline. This
/// baseline is initially derived from the implicitly trusted boot image when
/// the instance is created.
core.bool? enableIntegrityMonitoring;
/// Defines whether the instance has Secure Boot enabled.
///
/// Secure Boot helps ensure that the system only runs authentic software by
/// verifying the digital signature of all boot components, and halting the
/// boot process if signature verification fails.
core.bool? enableSecureBoot;
ShieldedInstanceConfig({
this.enableIntegrityMonitoring,
this.enableSecureBoot,
});
ShieldedInstanceConfig.fromJson(core.Map json_)
: this(
enableIntegrityMonitoring:
json_['enableIntegrityMonitoring'] as core.bool?,
enableSecureBoot: json_['enableSecureBoot'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final enableIntegrityMonitoring = this.enableIntegrityMonitoring;
final enableSecureBoot = this.enableSecureBoot;
return {
'enableIntegrityMonitoring': ?enableIntegrityMonitoring,
'enableSecureBoot': ?enableSecureBoot,
};
}
}
/// Configuration of Shielded Nodes feature.
class ShieldedNodes {
/// Whether Shielded Nodes features are enabled on all nodes in this cluster.
core.bool? enabled;
ShieldedNodes({this.enabled});
ShieldedNodes.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Configuration for the Slice Controller.
class SliceControllerConfig {
/// Indicates whether Slice Controller is enabled in the cluster.
///
/// Optional.
core.bool? enabled;
SliceControllerConfig({this.enabled});
SliceControllerConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Configuration for the Slurm Operator.
class SlurmOperatorConfig {
/// When enabled, it runs a Slurm Operator that manages the set of compute
/// pods for Slurm Cluster.
core.bool? enabled;
SlurmOperatorConfig({this.enabled});
SlurmOperatorConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// SoleTenantConfig contains the NodeAffinities to specify what shared sole
/// tenant node groups should back the node pool.
class SoleTenantConfig {
/// The minimum number of virtual CPUs this instance will consume when running
/// on a sole-tenant node.
///
/// This field can only be set if the node pool is created in a shared
/// sole-tenant node group.
///
/// Optional.
core.int? minNodeCpus;
/// NodeAffinities used to match to a shared sole tenant node group.
core.List<NodeAffinity>? nodeAffinities;
SoleTenantConfig({this.minNodeCpus, this.nodeAffinities});
SoleTenantConfig.fromJson(core.Map json_)
: this(
minNodeCpus: json_['minNodeCpus'] as core.int?,
nodeAffinities: (json_['nodeAffinities'] as core.List?)
?.map(
(value) => NodeAffinity.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final minNodeCpus = this.minNodeCpus;
final nodeAffinities = this.nodeAffinities;
return {'minNodeCpus': ?minNodeCpus, 'nodeAffinities': ?nodeAffinities};
}
}
/// Standard rollout policy is the default policy for blue-green.
class StandardRolloutPolicy {
/// Number of blue nodes to drain in a batch.
core.int? batchNodeCount;
/// Percentage of the blue pool nodes to drain in a batch.
///
/// The range of this field should be (0.0, 1.0\].
core.double? batchPercentage;
/// Soak time after each batch gets drained.
///
/// Default to zero.
core.String? batchSoakDuration;
StandardRolloutPolicy({
this.batchNodeCount,
this.batchPercentage,
this.batchSoakDuration,
});
StandardRolloutPolicy.fromJson(core.Map json_)
: this(
batchNodeCount: json_['batchNodeCount'] as core.int?,
batchPercentage: (json_['batchPercentage'] as core.num?)?.toDouble(),
batchSoakDuration: json_['batchSoakDuration'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final batchNodeCount = this.batchNodeCount;
final batchPercentage = this.batchPercentage;
final batchSoakDuration = this.batchSoakDuration;
return {
'batchNodeCount': ?batchNodeCount,
'batchPercentage': ?batchPercentage,
'batchSoakDuration': ?batchSoakDuration,
};
}
}
/// StartIPRotationRequest creates a new IP for the cluster and then performs a
/// node upgrade on each node pool to point to the new IP.
class StartIPRotationRequest {
/// The name of the cluster.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The name (project, location, cluster name) of the cluster to start IP
/// rotation.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// Whether to rotate credentials during IP rotation.
core.bool? rotateCredentials;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
StartIPRotationRequest({
this.clusterId,
this.name,
this.projectId,
this.rotateCredentials,
this.zone,
});
StartIPRotationRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
rotateCredentials: json_['rotateCredentials'] as core.bool?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final name = this.name;
final projectId = this.projectId;
final rotateCredentials = this.rotateCredentials;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'name': ?name,
'projectId': ?projectId,
'rotateCredentials': ?rotateCredentials,
'zone': ?zone,
};
}
}
/// Configuration for the Stateful HA add-on.
class StatefulHAConfig {
/// Whether the Stateful HA add-on is enabled for this cluster.
core.bool? enabled;
StatefulHAConfig({this.enabled});
StatefulHAConfig.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// The `Status` type defines a logical error model that is suitable for
/// different programming environments, including REST APIs and RPC APIs.
///
/// It is used by [gRPC](https://github.com/grpc). Each `Status` message
/// contains three pieces of data: error code, error message, and error details.
/// You can find out more about this error model and how to work with it in the
/// [API Design Guide](https://cloud.google.com/apis/design/errors).
typedef Status = $Status00;
/// StatusCondition describes why a cluster or a node pool has a certain status
/// (e.g., ERROR or DEGRADED).
class StatusCondition {
/// Canonical code of the condition.
/// Possible string values are:
/// - "OK" : Not an error; returned on success. HTTP Mapping: 200 OK
/// - "CANCELLED" : The operation was cancelled, typically by the caller. HTTP
/// Mapping: 499 Client Closed Request
/// - "UNKNOWN" : Unknown error. For example, this error may be returned when
/// a `Status` value received from another address space belongs to an error
/// space that is not known in this address space. Also errors raised by APIs
/// that do not return enough error information may be converted to this
/// error. HTTP Mapping: 500 Internal Server Error
/// - "INVALID_ARGUMENT" : The client specified an invalid argument. Note that
/// this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates
/// arguments that are problematic regardless of the state of the system
/// (e.g., a malformed file name). HTTP Mapping: 400 Bad Request
/// - "DEADLINE_EXCEEDED" : The deadline expired before the operation could
/// complete. For operations that change the state of the system, this error
/// may be returned even if the operation has completed successfully. For
/// example, a successful response from a server could have been delayed long
/// enough for the deadline to expire. HTTP Mapping: 504 Gateway Timeout
/// - "NOT_FOUND" : Some requested entity (e.g., file or directory) was not
/// found. Note to server developers: if a request is denied for an entire
/// class of users, such as gradual feature rollout or undocumented allowlist,
/// `NOT_FOUND` may be used. If a request is denied for some users within a
/// class of users, such as user-based access control, `PERMISSION_DENIED`
/// must be used. HTTP Mapping: 404 Not Found
/// - "ALREADY_EXISTS" : The entity that a client attempted to create (e.g.,
/// file or directory) already exists. HTTP Mapping: 409 Conflict
/// - "PERMISSION_DENIED" : The caller does not have permission to execute the
/// specified operation. `PERMISSION_DENIED` must not be used for rejections
/// caused by exhausting some resource (use `RESOURCE_EXHAUSTED` instead for
/// those errors). `PERMISSION_DENIED` must not be used if the caller can not
/// be identified (use `UNAUTHENTICATED` instead for those errors). This error
/// code does not imply the request is valid or the requested entity exists or
/// satisfies other pre-conditions. HTTP Mapping: 403 Forbidden
/// - "UNAUTHENTICATED" : The request does not have valid authentication
/// credentials for the operation. HTTP Mapping: 401 Unauthorized
/// - "RESOURCE_EXHAUSTED" : Some resource has been exhausted, perhaps a
/// per-user quota, or perhaps the entire file system is out of space. HTTP
/// Mapping: 429 Too Many Requests
/// - "FAILED_PRECONDITION" : The operation was rejected because the system is
/// not in a state required for the operation's execution. For example, the
/// directory to be deleted is non-empty, an rmdir operation is applied to a
/// non-directory, etc. Service implementors can use the following guidelines
/// to decide between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: (a)
/// Use `UNAVAILABLE` if the client can retry just the failing call. (b) Use
/// `ABORTED` if the client should retry at a higher level. For example, when
/// a client-specified test-and-set fails, indicating the client should
/// restart a read-modify-write sequence. (c) Use `FAILED_PRECONDITION` if the
/// client should not retry until the system state has been explicitly fixed.
/// For example, if an "rmdir" fails because the directory is non-empty,
/// `FAILED_PRECONDITION` should be returned since the client should not retry
/// unless the files are deleted from the directory. HTTP Mapping: 400 Bad
/// Request
/// - "ABORTED" : The operation was aborted, typically due to a concurrency
/// issue such as a sequencer check failure or transaction abort. See the
/// guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`,
/// and `UNAVAILABLE`. HTTP Mapping: 409 Conflict
/// - "OUT_OF_RANGE" : The operation was attempted past the valid range. E.g.,
/// seeking or reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error
/// indicates a problem that may be fixed if the system state changes. For
/// example, a 32-bit file system will generate `INVALID_ARGUMENT` if asked to
/// read at an offset that is not in the range \[0,2^32-1\], but it will
/// generate `OUT_OF_RANGE` if asked to read from an offset past the current
/// file size. There is a fair bit of overlap between `FAILED_PRECONDITION`
/// and `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific
/// error) when it applies so that callers who are iterating through a space
/// can easily look for an `OUT_OF_RANGE` error to detect when they are done.
/// HTTP Mapping: 400 Bad Request
/// - "UNIMPLEMENTED" : The operation is not implemented or is not
/// supported/enabled in this service. HTTP Mapping: 501 Not Implemented
/// - "INTERNAL" : Internal errors. This means that some invariants expected
/// by the underlying system have been broken. This error code is reserved for
/// serious errors. HTTP Mapping: 500 Internal Server Error
/// - "UNAVAILABLE" : The service is currently unavailable. This is most
/// likely a transient condition, which can be corrected by retrying with a
/// backoff. Note that it is not always safe to retry non-idempotent
/// operations. See the guidelines above for deciding between
/// `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 503
/// Service Unavailable
/// - "DATA_LOSS" : Unrecoverable data loss or corruption. HTTP Mapping: 500
/// Internal Server Error
core.String? canonicalCode;
/// Machine-friendly representation of the condition Deprecated.
///
/// Use canonical_code instead.
/// Possible string values are:
/// - "UNKNOWN" : UNKNOWN indicates a generic condition.
/// - "GCE_STOCKOUT" : GCE_STOCKOUT indicates that Google Compute Engine
/// resources are temporarily unavailable.
/// - "GKE_SERVICE_ACCOUNT_DELETED" : GKE_SERVICE_ACCOUNT_DELETED indicates
/// that the user deleted their robot service account.
/// - "GCE_QUOTA_EXCEEDED" : Google Compute Engine quota was exceeded.
/// - "SET_BY_OPERATOR" : Cluster state was manually changed by an SRE due to
/// a system logic error.
/// - "CLOUD_KMS_KEY_ERROR" : Unable to perform an encrypt operation against
/// the CloudKMS key used for etcd level encryption.
/// - "CA_EXPIRING" : Cluster CA is expiring soon.
/// - "NODE_SERVICE_ACCOUNT_MISSING_PERMISSIONS" : Node service account is
/// missing permissions.
/// - "CLOUD_KMS_KEY_DESTROYED" : Cloud KMS key version used for etcd level
/// encryption has been destroyed. This is a permanent error.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? code;
/// Human-friendly representation of the condition
core.String? message;
StatusCondition({this.canonicalCode, this.code, this.message});
StatusCondition.fromJson(core.Map json_)
: this(
canonicalCode: json_['canonicalCode'] as core.String?,
code: json_['code'] as core.String?,
message: json_['message'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final canonicalCode = this.canonicalCode;
final code = this.code;
final message = this.message;
return {
'canonicalCode': ?canonicalCode,
'code': ?code,
'message': ?message,
};
}
}
/// Configuration for swap memory on a node pool.
class SwapConfig {
/// Swap on the node's boot disk.
BootDiskProfile? bootDiskProfile;
/// Provisions a new, separate local NVMe SSD exclusively for swap.
DedicatedLocalSsdProfile? dedicatedLocalSsdProfile;
/// Enables or disables swap for the node pool.
///
/// Optional.
core.bool? enabled;
/// If omitted, swap space is encrypted by default.
///
/// Optional.
EncryptionConfig? encryptionConfig;
/// Swap on the local SSD shared with pod ephemeral storage.
EphemeralLocalSsdProfile? ephemeralLocalSsdProfile;
SwapConfig({
this.bootDiskProfile,
this.dedicatedLocalSsdProfile,
this.enabled,
this.encryptionConfig,
this.ephemeralLocalSsdProfile,
});
SwapConfig.fromJson(core.Map json_)
: this(
bootDiskProfile: json_.containsKey('bootDiskProfile')
? BootDiskProfile.fromJson(
json_['bootDiskProfile'] as core.Map<core.String, core.dynamic>,
)
: null,
dedicatedLocalSsdProfile: json_.containsKey('dedicatedLocalSsdProfile')
? DedicatedLocalSsdProfile.fromJson(
json_['dedicatedLocalSsdProfile']
as core.Map<core.String, core.dynamic>,
)
: null,
enabled: json_['enabled'] as core.bool?,
encryptionConfig: json_.containsKey('encryptionConfig')
? EncryptionConfig.fromJson(
json_['encryptionConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
ephemeralLocalSsdProfile: json_.containsKey('ephemeralLocalSsdProfile')
? EphemeralLocalSsdProfile.fromJson(
json_['ephemeralLocalSsdProfile']
as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final bootDiskProfile = this.bootDiskProfile;
final dedicatedLocalSsdProfile = this.dedicatedLocalSsdProfile;
final enabled = this.enabled;
final encryptionConfig = this.encryptionConfig;
final ephemeralLocalSsdProfile = this.ephemeralLocalSsdProfile;
return {
'bootDiskProfile': ?bootDiskProfile,
'dedicatedLocalSsdProfile': ?dedicatedLocalSsdProfile,
'enabled': ?enabled,
'encryptionConfig': ?encryptionConfig,
'ephemeralLocalSsdProfile': ?ephemeralLocalSsdProfile,
};
}
}
/// SyncRotationConfig is config for secret manager auto rotation.
typedef SyncRotationConfig = $RotationConfig;
/// TaintConfig contains the configuration for the taints of the node pool.
class TaintConfig {
/// Controls architecture tainting behavior.
///
/// Optional.
/// Possible string values are:
/// - "ARCHITECTURE_TAINT_BEHAVIOR_UNSPECIFIED" : Specifies that the behavior
/// is unspecified, defaults to ARM.
/// - "NONE" : Disables default architecture taints on the node pool.
/// - "ARM" : Taints all the nodes in the node pool with the default ARM
/// taint.
core.String? architectureTaintBehavior;
TaintConfig({this.architectureTaintBehavior});
TaintConfig.fromJson(core.Map json_)
: this(
architectureTaintBehavior:
json_['architectureTaintBehavior'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final architectureTaintBehavior = this.architectureTaintBehavior;
return {'architectureTaintBehavior': ?architectureTaintBehavior};
}
}
/// Represents an arbitrary window of time.
class TimeWindow {
/// The time that the window ends.
///
/// The end time should take place after the start time.
core.String? endTime;
/// MaintenanceExclusionOptions provides maintenance exclusion related
/// options.
MaintenanceExclusionOptions? maintenanceExclusionOptions;
/// The time that the window first starts.
core.String? startTime;
TimeWindow({this.endTime, this.maintenanceExclusionOptions, this.startTime});
TimeWindow.fromJson(core.Map json_)
: this(
endTime: json_['endTime'] as core.String?,
maintenanceExclusionOptions:
json_.containsKey('maintenanceExclusionOptions')
? MaintenanceExclusionOptions.fromJson(
json_['maintenanceExclusionOptions']
as core.Map<core.String, core.dynamic>,
)
: null,
startTime: json_['startTime'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final endTime = this.endTime;
final maintenanceExclusionOptions = this.maintenanceExclusionOptions;
final startTime = this.startTime;
return {
'endTime': ?endTime,
'maintenanceExclusionOptions': ?maintenanceExclusionOptions,
'startTime': ?startTime,
};
}
}
/// TopologyManager defines the configuration options for Topology Manager
/// feature.
///
/// See https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/
class TopologyManager {
/// Configures the strategy for resource alignment.
///
/// Allowed values are: * none: the default policy, and does not perform any
/// topology alignment. * restricted: the topology manager stores the
/// preferred NUMA node affinity for the container, and will reject the pod if
/// the affinity if not preferred. * best-effort: the topology manager stores
/// the preferred NUMA node affinity for the container. If the affinity is not
/// preferred, the topology manager will admit the pod to the node anyway. *
/// single-numa-node: the topology manager determines if the single NUMA node
/// affinity is possible. If it is, Topology Manager will store this and the
/// Hint Providers can then use this information when making the resource
/// allocation decision. If, however, this is not possible then the Topology
/// Manager will reject the pod from the node. This will result in a pod in a
/// Terminated state with a pod admission failure. The default policy value is
/// 'none' if unspecified. Details about each strategy can be found
/// [here](https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/#topology-manager-policies).
core.String? policy;
/// The Topology Manager aligns resources in following scopes: * container *
/// pod The default scope is 'container' if unspecified.
///
/// See
/// https://kubernetes.io/docs/tasks/administer-cluster/topology-manager/#topology-manager-scopes
core.String? scope;
TopologyManager({this.policy, this.scope});
TopologyManager.fromJson(core.Map json_)
: this(
policy: json_['policy'] as core.String?,
scope: json_['scope'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final policy = this.policy;
final scope = this.scope;
return {'policy': ?policy, 'scope': ?scope};
}
}
/// UpdateClusterRequest updates the settings of a cluster.
class UpdateClusterRequest {
/// The name of the cluster to upgrade.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The name (project, location, cluster) of the cluster to update.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// A description of the update.
///
/// Required.
ClusterUpdate? update;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
UpdateClusterRequest({
this.clusterId,
this.name,
this.projectId,
this.update,
this.zone,
});
UpdateClusterRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
update: json_.containsKey('update')
? ClusterUpdate.fromJson(
json_['update'] as core.Map<core.String, core.dynamic>,
)
: null,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final name = this.name;
final projectId = this.projectId;
final update = this.update;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'name': ?name,
'projectId': ?projectId,
'update': ?update,
'zone': ?zone,
};
}
}
/// UpdateInfo contains resource (instance groups, etc), status and other
/// intermediate information relevant to a node pool upgrade.
class UpdateInfo {
/// Information of a blue-green upgrade.
BlueGreenInfo? blueGreenInfo;
UpdateInfo({this.blueGreenInfo});
UpdateInfo.fromJson(core.Map json_)
: this(
blueGreenInfo: json_.containsKey('blueGreenInfo')
? BlueGreenInfo.fromJson(
json_['blueGreenInfo'] as core.Map<core.String, core.dynamic>,
)
: null,
);
core.Map<core.String, core.dynamic> toJson() {
final blueGreenInfo = this.blueGreenInfo;
return {'blueGreenInfo': ?blueGreenInfo};
}
}
/// UpdateMasterRequest updates the master of the cluster.
class UpdateMasterRequest {
/// The name of the cluster to upgrade.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// The Kubernetes version to change the master to.
///
/// Users may specify either explicit versions offered by Kubernetes Engine or
/// version aliases, which have the following behavior: - "latest": picks the
/// highest valid Kubernetes version - "1.X": picks the highest valid
/// patch+gke.N patch in the 1.X version - "1.X.Y": picks the highest valid
/// gke.N patch in the 1.X.Y version - "1.X.Y-gke.N": picks an explicit
/// Kubernetes version - "-": picks the default Kubernetes version
///
/// Required.
core.String? masterVersion;
/// The name (project, location, cluster) of the cluster to update.
///
/// Specified in the format `projects / * /locations / * /clusters / * `.
core.String? name;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
UpdateMasterRequest({
this.clusterId,
this.masterVersion,
this.name,
this.projectId,
this.zone,
});
UpdateMasterRequest.fromJson(core.Map json_)
: this(
clusterId: json_['clusterId'] as core.String?,
masterVersion: json_['masterVersion'] as core.String?,
name: json_['name'] as core.String?,
projectId: json_['projectId'] as core.String?,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final clusterId = this.clusterId;
final masterVersion = this.masterVersion;
final name = this.name;
final projectId = this.projectId;
final zone = this.zone;
return {
'clusterId': ?clusterId,
'masterVersion': ?masterVersion,
'name': ?name,
'projectId': ?projectId,
'zone': ?zone,
};
}
}
/// UpdateNodePoolRequests update a node pool's image and/or version.
class UpdateNodePoolRequest {
/// A list of hardware accelerators to be attached to each node.
///
/// See https://cloud.google.com/compute/docs/gpus for more information about
/// support for GPUs.
core.List<AcceleratorConfig>? accelerators;
/// The desired boot disk config for nodes in the node pool.
///
/// Initiates an upgrade operation that migrates the nodes in the node pool to
/// the specified boot disk config.
BootDisk? bootDisk;
/// The name of the cluster to upgrade.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? clusterId;
/// Confidential nodes config.
///
/// All the nodes in the node pool will be Confidential VM once enabled.
ConfidentialNodes? confidentialNodes;
/// Consolidation delay defines duration after which the Cluster Autoscaler
/// can scale down underutilized nodes.
///
/// If not set, nodes are scaled down by default behavior, i.e. according to
/// the chosen autoscaling profile.
core.String? consolidationDelay;
/// The desired containerd config for nodes in the node pool.
///
/// Initiates an upgrade operation that recreates the nodes with the new
/// config.
ContainerdConfig? containerdConfig;
/// The desired disk size for nodes in the node pool specified in GB.
///
/// The smallest allowed disk size is 10GB. Initiates an upgrade operation
/// that migrates the nodes in the node pool to the specified disk size.
///
/// Optional.
core.String? diskSizeGb;
/// The desired disk type (e.g. 'pd-standard', 'pd-ssd' or 'pd-balanced') for
/// nodes in the node pool.
///
/// Initiates an upgrade operation that migrates the nodes in the node pool to
/// the specified disk type.
///
/// Optional.
core.String? diskType;
/// The current etag of the node pool.
///
/// If an etag is provided and does not match the current etag of the node
/// pool, update will be blocked and an ABORTED error will be returned.
core.String? etag;
/// Enable or disable NCCL fast socket for the node pool.
FastSocket? fastSocket;
/// Flex Start flag for enabling Flex Start VM.
core.bool? flexStart;
/// GCFS config.
GcfsConfig? gcfsConfig;
/// Enable or disable gvnic on the node pool.
VirtualNIC? gvnic;
/// The desired image type for the node pool.
///
/// Please see
/// https://cloud.google.com/kubernetes-engine/docs/concepts/node-images for
/// available image types.
///
/// Required.
core.String? imageType;
/// Node kubelet configs.
NodeKubeletConfig? kubeletConfig;
/// The desired node labels to be applied to all nodes in the node pool.
///
/// If this field is not present, the labels will not be changed. Otherwise,
/// the existing node labels will be *replaced* with the provided labels.
NodeLabels? labels;
/// Parameters that can be configured on Linux nodes.
LinuxNodeConfig? linuxNodeConfig;
/// The desired list of Google Compute Engine
/// [zones](https://cloud.google.com/compute/docs/zones#available) in which
/// the node pool's nodes should be located.
///
/// Changing the locations for a node pool will result in nodes being either
/// created or removed from the node pool, depending on whether locations are
/// being added or removed. Warning: It is recommended to update node pool
/// locations in a standalone API call. Do not combine a location update with
/// changes to other fields (such as `tags`, `labels`, `taints`, etc.) in the
/// same request. Otherwise, the API performs a structural modification where
/// changes to other fields will only apply to newly created nodes and will
/// not be applied to existing nodes in the node pool. To ensure all nodes are
/// updated consistently, use a separate API call for location changes.
core.List<core.String>? locations;
/// Logging configuration.
NodePoolLoggingConfig? loggingConfig;
/// The desired
/// [Google Compute Engine machine type](https://cloud.google.com/compute/docs/machine-types)
/// for nodes in the node pool.
///
/// Initiates an upgrade operation that migrates the nodes in the node pool to
/// the specified machine type.
///
/// Optional.
core.String? machineType;
/// The maximum duration for the nodes to exist.
///
/// If unspecified, the nodes can exist indefinitely.
core.String? maxRunDuration;
/// The name (project, location, cluster, node pool) of the node pool to
/// update.
///
/// Specified in the format `projects / * /locations / * /clusters / *
/// /nodePools / * `.
core.String? name;
/// The desired node drain configuration for nodes in the node pool.
NodeDrainConfig? nodeDrainConfig;
/// Node network config.
NodeNetworkConfig? nodeNetworkConfig;
/// The name of the node pool to upgrade.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? nodePoolId;
/// The Kubernetes version to change the nodes to (typically an upgrade).
///
/// Users may specify either explicit versions offered by Kubernetes Engine or
/// version aliases, which have the following behavior: - "latest": picks the
/// highest valid Kubernetes version - "1.X": picks the highest valid
/// patch+gke.N patch in the 1.X version - "1.X.Y": picks the highest valid
/// gke.N patch in the 1.X.Y version - "1.X.Y-gke.N": picks an explicit
/// Kubernetes version - "-": picks the Kubernetes master version
///
/// Required.
core.String? nodeVersion;
/// The Google Developers Console
/// [project ID or project number](https://cloud.google.com/resource-manager/docs/creating-managing-projects).
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? projectId;
/// Specifies the configuration of queued provisioning.
QueuedProvisioning? queuedProvisioning;
/// The resource labels for the node pool to use to annotate any related
/// Google Compute Engine resources.
ResourceLabels? resourceLabels;
/// Desired resource manager tag keys and values to be attached to the nodes
/// for managing Compute Engine firewalls using Network Firewall Policies.
///
/// Existing tags will be replaced with new values.
ResourceManagerTags? resourceManagerTags;
/// List of Storage Pools where boot disks are provisioned.
///
/// Existing Storage Pools will be replaced with storage-pools.
core.List<core.String>? storagePools;
/// The desired network tags to be applied to all nodes in the node pool.
///
/// If this field is not present, the tags will not be changed. Otherwise, the
/// existing network tags will be *replaced* with the provided tags.
NetworkTags? tags;
/// The desired node taints to be applied to all nodes in the node pool.
///
/// If this field is not present, the taints will not be changed. Otherwise,
/// the existing node taints will be *replaced* with the provided taints.
NodeTaints? taints;
/// Upgrade settings control disruption and speed of the upgrade.
UpgradeSettings? upgradeSettings;
/// Parameters that can be configured on Windows nodes.
WindowsNodeConfig? windowsNodeConfig;
/// The desired workload metadata config for the node pool.
WorkloadMetadataConfig? workloadMetadataConfig;
/// The name of the Google Compute Engine
/// [zone](https://cloud.google.com/compute/docs/zones#available) in which the
/// cluster resides.
///
/// This field has been deprecated and replaced by the name field.
///
/// Deprecated.
@core.Deprecated(
'Not supported. Member documentation may have more information.',
)
core.String? zone;
UpdateNodePoolRequest({
this.accelerators,
this.bootDisk,
this.clusterId,
this.confidentialNodes,
this.consolidationDelay,
this.containerdConfig,
this.diskSizeGb,
this.diskType,
this.etag,
this.fastSocket,
this.flexStart,
this.gcfsConfig,
this.gvnic,
this.imageType,
this.kubeletConfig,
this.labels,
this.linuxNodeConfig,
this.locations,
this.loggingConfig,
this.machineType,
this.maxRunDuration,
this.name,
this.nodeDrainConfig,
this.nodeNetworkConfig,
this.nodePoolId,
this.nodeVersion,
this.projectId,
this.queuedProvisioning,
this.resourceLabels,
this.resourceManagerTags,
this.storagePools,
this.tags,
this.taints,
this.upgradeSettings,
this.windowsNodeConfig,
this.workloadMetadataConfig,
this.zone,
});
UpdateNodePoolRequest.fromJson(core.Map json_)
: this(
accelerators: (json_['accelerators'] as core.List?)
?.map(
(value) => AcceleratorConfig.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
bootDisk: json_.containsKey('bootDisk')
? BootDisk.fromJson(
json_['bootDisk'] as core.Map<core.String, core.dynamic>,
)
: null,
clusterId: json_['clusterId'] as core.String?,
confidentialNodes: json_.containsKey('confidentialNodes')
? ConfidentialNodes.fromJson(
json_['confidentialNodes']
as core.Map<core.String, core.dynamic>,
)
: null,
consolidationDelay: json_['consolidationDelay'] as core.String?,
containerdConfig: json_.containsKey('containerdConfig')
? ContainerdConfig.fromJson(
json_['containerdConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
diskSizeGb: json_['diskSizeGb'] as core.String?,
diskType: json_['diskType'] as core.String?,
etag: json_['etag'] as core.String?,
fastSocket: json_.containsKey('fastSocket')
? FastSocket.fromJson(
json_['fastSocket'] as core.Map<core.String, core.dynamic>,
)
: null,
flexStart: json_['flexStart'] as core.bool?,
gcfsConfig: json_.containsKey('gcfsConfig')
? GcfsConfig.fromJson(
json_['gcfsConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
gvnic: json_.containsKey('gvnic')
? VirtualNIC.fromJson(
json_['gvnic'] as core.Map<core.String, core.dynamic>,
)
: null,
imageType: json_['imageType'] as core.String?,
kubeletConfig: json_.containsKey('kubeletConfig')
? NodeKubeletConfig.fromJson(
json_['kubeletConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
labels: json_.containsKey('labels')
? NodeLabels.fromJson(
json_['labels'] as core.Map<core.String, core.dynamic>,
)
: null,
linuxNodeConfig: json_.containsKey('linuxNodeConfig')
? LinuxNodeConfig.fromJson(
json_['linuxNodeConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
locations: (json_['locations'] as core.List?)
?.map((value) => value as core.String)
.toList(),
loggingConfig: json_.containsKey('loggingConfig')
? NodePoolLoggingConfig.fromJson(
json_['loggingConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
machineType: json_['machineType'] as core.String?,
maxRunDuration: json_['maxRunDuration'] as core.String?,
name: json_['name'] as core.String?,
nodeDrainConfig: json_.containsKey('nodeDrainConfig')
? NodeDrainConfig.fromJson(
json_['nodeDrainConfig'] as core.Map<core.String, core.dynamic>,
)
: null,
nodeNetworkConfig: json_.containsKey('nodeNetworkConfig')
? NodeNetworkConfig.fromJson(
json_['nodeNetworkConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
nodePoolId: json_['nodePoolId'] as core.String?,
nodeVersion: json_['nodeVersion'] as core.String?,
projectId: json_['projectId'] as core.String?,
queuedProvisioning: json_.containsKey('queuedProvisioning')
? QueuedProvisioning.fromJson(
json_['queuedProvisioning']
as core.Map<core.String, core.dynamic>,
)
: null,
resourceLabels: json_.containsKey('resourceLabels')
? ResourceLabels.fromJson(
json_['resourceLabels'] as core.Map<core.String, core.dynamic>,
)
: null,
resourceManagerTags: json_.containsKey('resourceManagerTags')
? ResourceManagerTags.fromJson(
json_['resourceManagerTags']
as core.Map<core.String, core.dynamic>,
)
: null,
storagePools: (json_['storagePools'] as core.List?)
?.map((value) => value as core.String)
.toList(),
tags: json_.containsKey('tags')
? NetworkTags.fromJson(
json_['tags'] as core.Map<core.String, core.dynamic>,
)
: null,
taints: json_.containsKey('taints')
? NodeTaints.fromJson(
json_['taints'] as core.Map<core.String, core.dynamic>,
)
: null,
upgradeSettings: json_.containsKey('upgradeSettings')
? UpgradeSettings.fromJson(
json_['upgradeSettings'] as core.Map<core.String, core.dynamic>,
)
: null,
windowsNodeConfig: json_.containsKey('windowsNodeConfig')
? WindowsNodeConfig.fromJson(
json_['windowsNodeConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
workloadMetadataConfig: json_.containsKey('workloadMetadataConfig')
? WorkloadMetadataConfig.fromJson(
json_['workloadMetadataConfig']
as core.Map<core.String, core.dynamic>,
)
: null,
zone: json_['zone'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final accelerators = this.accelerators;
final bootDisk = this.bootDisk;
final clusterId = this.clusterId;
final confidentialNodes = this.confidentialNodes;
final consolidationDelay = this.consolidationDelay;
final containerdConfig = this.containerdConfig;
final diskSizeGb = this.diskSizeGb;
final diskType = this.diskType;
final etag = this.etag;
final fastSocket = this.fastSocket;
final flexStart = this.flexStart;
final gcfsConfig = this.gcfsConfig;
final gvnic = this.gvnic;
final imageType = this.imageType;
final kubeletConfig = this.kubeletConfig;
final labels = this.labels;
final linuxNodeConfig = this.linuxNodeConfig;
final locations = this.locations;
final loggingConfig = this.loggingConfig;
final machineType = this.machineType;
final maxRunDuration = this.maxRunDuration;
final name = this.name;
final nodeDrainConfig = this.nodeDrainConfig;
final nodeNetworkConfig = this.nodeNetworkConfig;
final nodePoolId = this.nodePoolId;
final nodeVersion = this.nodeVersion;
final projectId = this.projectId;
final queuedProvisioning = this.queuedProvisioning;
final resourceLabels = this.resourceLabels;
final resourceManagerTags = this.resourceManagerTags;
final storagePools = this.storagePools;
final tags = this.tags;
final taints = this.taints;
final upgradeSettings = this.upgradeSettings;
final windowsNodeConfig = this.windowsNodeConfig;
final workloadMetadataConfig = this.workloadMetadataConfig;
final zone = this.zone;
return {
'accelerators': ?accelerators,
'bootDisk': ?bootDisk,
'clusterId': ?clusterId,
'confidentialNodes': ?confidentialNodes,
'consolidationDelay': ?consolidationDelay,
'containerdConfig': ?containerdConfig,
'diskSizeGb': ?diskSizeGb,
'diskType': ?diskType,
'etag': ?etag,
'fastSocket': ?fastSocket,
'flexStart': ?flexStart,
'gcfsConfig': ?gcfsConfig,
'gvnic': ?gvnic,
'imageType': ?imageType,
'kubeletConfig': ?kubeletConfig,
'labels': ?labels,
'linuxNodeConfig': ?linuxNodeConfig,
'locations': ?locations,
'loggingConfig': ?loggingConfig,
'machineType': ?machineType,
'maxRunDuration': ?maxRunDuration,
'name': ?name,
'nodeDrainConfig': ?nodeDrainConfig,
'nodeNetworkConfig': ?nodeNetworkConfig,
'nodePoolId': ?nodePoolId,
'nodeVersion': ?nodeVersion,
'projectId': ?projectId,
'queuedProvisioning': ?queuedProvisioning,
'resourceLabels': ?resourceLabels,
'resourceManagerTags': ?resourceManagerTags,
'storagePools': ?storagePools,
'tags': ?tags,
'taints': ?taints,
'upgradeSettings': ?upgradeSettings,
'windowsNodeConfig': ?windowsNodeConfig,
'workloadMetadataConfig': ?workloadMetadataConfig,
'zone': ?zone,
};
}
}
/// UpgradeDetails contains detailed information of each individual upgrade
/// operation.
class UpgradeDetails {
/// The end timestamp of the upgrade.
core.String? endTime;
/// The version before the upgrade.
core.String? initialVersion;
/// The start timestamp of the upgrade.
core.String? startTime;
/// The start type of the upgrade.
/// Possible string values are:
/// - "START_TYPE_UNSPECIFIED" : Upgrade start type is unspecified.
/// - "AUTOMATIC" : Upgrade started automatically.
/// - "MANUAL" : Upgrade started manually.
core.String? startType;
/// The state of the upgrade.
///
/// Output only.
/// Possible string values are:
/// - "UNKNOWN" : Upgrade state is unknown.
/// - "FAILED" : Upgrade has failed with an error.
/// - "SUCCEEDED" : Upgrade has succeeded.
/// - "CANCELED" : Upgrade has been canceled.
/// - "RUNNING" : Upgrade is running.
core.String? state;
/// The version after the upgrade.
core.String? targetVersion;
UpgradeDetails({
this.endTime,
this.initialVersion,
this.startTime,
this.startType,
this.state,
this.targetVersion,
});
UpgradeDetails.fromJson(core.Map json_)
: this(
endTime: json_['endTime'] as core.String?,
initialVersion: json_['initialVersion'] as core.String?,
startTime: json_['startTime'] as core.String?,
startType: json_['startType'] as core.String?,
state: json_['state'] as core.String?,
targetVersion: json_['targetVersion'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final endTime = this.endTime;
final initialVersion = this.initialVersion;
final startTime = this.startTime;
final startType = this.startType;
final state = this.state;
final targetVersion = this.targetVersion;
return {
'endTime': ?endTime,
'initialVersion': ?initialVersion,
'startTime': ?startTime,
'startType': ?startType,
'state': ?state,
'targetVersion': ?targetVersion,
};
}
}
/// These upgrade settings control the level of parallelism and the level of
/// disruption caused by an upgrade.
///
/// maxUnavailable controls the number of nodes that can be simultaneously
/// unavailable. maxSurge controls the number of additional nodes that can be
/// added to the node pool temporarily for the time of the upgrade to increase
/// the number of available nodes. (maxUnavailable + maxSurge) determines the
/// level of parallelism (how many nodes are being upgraded at the same time).
/// Note: upgrades inevitably introduce some disruption since workloads need to
/// be moved from old nodes to new, upgraded ones. Even if maxUnavailable=0,
/// this holds true. (Disruption stays within the limits of PodDisruptionBudget,
/// if it is configured.) Consider a hypothetical node pool with 5 nodes having
/// maxSurge=2, maxUnavailable=1. This means the upgrade process upgrades 3
/// nodes simultaneously. It creates 2 additional (upgraded) nodes, then it
/// brings down 3 old (not yet upgraded) nodes at the same time. This ensures
/// that there are always at least 4 nodes available. These upgrade settings
/// configure the upgrade strategy for the node pool. Use strategy to switch
/// between the strategies applied to the node pool. If the strategy is ROLLING,
/// use max_surge and max_unavailable to control the level of parallelism and
/// the level of disruption caused by upgrade. 1. maxSurge controls the number
/// of additional nodes that can be added to the node pool temporarily for the
/// time of the upgrade to increase the number of available nodes. 2.
/// maxUnavailable controls the number of nodes that can be simultaneously
/// unavailable. 3. (maxUnavailable + maxSurge) determines the level of
/// parallelism (how many nodes are being upgraded at the same time). If the
/// strategy is BLUE_GREEN, use blue_green_settings to configure the blue-green
/// upgrade related settings. 1. standard_rollout_policy is the default policy.
/// The policy is used to control the way blue pool gets drained. The draining
/// is executed in the batch mode. The batch size could be specified as either
/// percentage of the node pool size or the number of nodes. batch_soak_duration
/// is the soak time after each batch gets drained. 2. node_pool_soak_duration
/// is the soak time after all blue nodes are drained. After this period, the
/// blue pool nodes will be deleted.
class UpgradeSettings {
/// Settings for blue-green upgrade strategy.
BlueGreenSettings? blueGreenSettings;
/// The maximum number of nodes that can be created beyond the current size of
/// the node pool during the upgrade process.
core.int? maxSurge;
/// The maximum number of nodes that can be simultaneously unavailable during
/// the upgrade process.
///
/// A node is considered available if its status is Ready.
core.int? maxUnavailable;
/// Update strategy of the node pool.
/// Possible string values are:
/// - "NODE_POOL_UPDATE_STRATEGY_UNSPECIFIED" : Default value if unset. GKE
/// internally defaults the update strategy to SURGE for unspecified
/// strategies.
/// - "BLUE_GREEN" : blue-green upgrade.
/// - "SURGE" : SURGE is the traditional way of upgrade a node pool. max_surge
/// and max_unavailable determines the level of upgrade parallelism.
/// - "SHORT_LIVED" : SHORT_LIVED is the dedicated upgrade strategy for
/// QueuedProvisioning and flex start node pools scaled up only by enqueueing
/// to the Dynamic Workload Scheduler (DWS).
core.String? strategy;
UpgradeSettings({
this.blueGreenSettings,
this.maxSurge,
this.maxUnavailable,
this.strategy,
});
UpgradeSettings.fromJson(core.Map json_)
: this(
blueGreenSettings: json_.containsKey('blueGreenSettings')
? BlueGreenSettings.fromJson(
json_['blueGreenSettings']
as core.Map<core.String, core.dynamic>,
)
: null,
maxSurge: json_['maxSurge'] as core.int?,
maxUnavailable: json_['maxUnavailable'] as core.int?,
strategy: json_['strategy'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final blueGreenSettings = this.blueGreenSettings;
final maxSurge = this.maxSurge;
final maxUnavailable = this.maxUnavailable;
final strategy = this.strategy;
return {
'blueGreenSettings': ?blueGreenSettings,
'maxSurge': ?maxSurge,
'maxUnavailable': ?maxUnavailable,
'strategy': ?strategy,
};
}
}
/// UsableSubnetwork resource returns the subnetwork name, its associated
/// network and the primary CIDR range.
class UsableSubnetwork {
/// The range of internal addresses that are owned by this subnetwork.
core.String? ipCidrRange;
/// Network Name.
///
/// Example: projects/my-project/global/networks/my-network
core.String? network;
/// Secondary IP ranges.
core.List<UsableSubnetworkSecondaryRange>? secondaryIpRanges;
/// A human readable status message representing the reasons for cases where
/// the caller cannot use the secondary ranges under the subnet.
///
/// For example if the secondary_ip_ranges is empty due to a permission issue,
/// an insufficient permission message will be given by status_message.
core.String? statusMessage;
/// Subnetwork Name.
///
/// Example: projects/my-project/regions/us-central1/subnetworks/my-subnet
core.String? subnetwork;
UsableSubnetwork({
this.ipCidrRange,
this.network,
this.secondaryIpRanges,
this.statusMessage,
this.subnetwork,
});
UsableSubnetwork.fromJson(core.Map json_)
: this(
ipCidrRange: json_['ipCidrRange'] as core.String?,
network: json_['network'] as core.String?,
secondaryIpRanges: (json_['secondaryIpRanges'] as core.List?)
?.map(
(value) => UsableSubnetworkSecondaryRange.fromJson(
value as core.Map<core.String, core.dynamic>,
),
)
.toList(),
statusMessage: json_['statusMessage'] as core.String?,
subnetwork: json_['subnetwork'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final ipCidrRange = this.ipCidrRange;
final network = this.network;
final secondaryIpRanges = this.secondaryIpRanges;
final statusMessage = this.statusMessage;
final subnetwork = this.subnetwork;
return {
'ipCidrRange': ?ipCidrRange,
'network': ?network,
'secondaryIpRanges': ?secondaryIpRanges,
'statusMessage': ?statusMessage,
'subnetwork': ?subnetwork,
};
}
}
/// Secondary IP range of a usable subnetwork.
class UsableSubnetworkSecondaryRange {
/// The range of IP addresses belonging to this subnetwork secondary range.
core.String? ipCidrRange;
/// The name associated with this subnetwork secondary range, used when adding
/// an alias IP range to a VM instance.
core.String? rangeName;
/// This field is to determine the status of the secondary range programmably.
/// Possible string values are:
/// - "UNKNOWN" : UNKNOWN is the zero value of the Status enum. It's not a
/// valid status.
/// - "UNUSED" : UNUSED denotes that this range is unclaimed by any cluster.
/// - "IN_USE_SERVICE" : IN_USE_SERVICE denotes that this range is claimed by
/// cluster(s) for services. User-managed services range can be shared between
/// clusters within the same subnetwork.
/// - "IN_USE_SHAREABLE_POD" : IN_USE_SHAREABLE_POD denotes this range was
/// created by the network admin and is currently claimed by a cluster for
/// pods. It can only be used by other clusters as a pod range.
/// - "IN_USE_MANAGED_POD" : IN_USE_MANAGED_POD denotes this range was created
/// by GKE and is claimed for pods. It cannot be used for other clusters.
core.String? status;
UsableSubnetworkSecondaryRange({
this.ipCidrRange,
this.rangeName,
this.status,
});
UsableSubnetworkSecondaryRange.fromJson(core.Map json_)
: this(
ipCidrRange: json_['ipCidrRange'] as core.String?,
rangeName: json_['rangeName'] as core.String?,
status: json_['status'] as core.String?,
);
core.Map<core.String, core.dynamic> toJson() {
final ipCidrRange = this.ipCidrRange;
final rangeName = this.rangeName;
final status = this.status;
return {
'ipCidrRange': ?ipCidrRange,
'rangeName': ?rangeName,
'status': ?status,
};
}
}
/// UserManagedKeysConfig holds the resource address to Keys which are used for
/// signing certs and token that are used for communication within cluster.
class UserManagedKeysConfig {
/// The Certificate Authority Service caPool to use for the aggregation CA in
/// this cluster.
core.String? aggregationCa;
/// The Certificate Authority Service caPool to use for the cluster CA in this
/// cluster.
core.String? clusterCa;
/// The Cloud KMS cryptoKey to use for Confidential Hyperdisk on the control
/// plane nodes.
core.String? controlPlaneDiskEncryptionKey;
/// All of the versions of the Cloud KMS cryptoKey that are used by
/// Confidential Hyperdisks on the control plane nodes.
///
/// Output only.
core.List<core.String>? controlPlaneDiskEncryptionKeyVersions;
/// Resource path of the Certificate Authority Service caPool to use for the
/// etcd API CA in this cluster.
core.String? etcdApiCa;
/// Resource path of the Certificate Authority Service caPool to use for the
/// etcd peer CA in this cluster.
core.String? etcdPeerCa;
/// Resource path of the Cloud KMS cryptoKey to use for encryption of internal
/// etcd backups.
core.String? gkeopsEtcdBackupEncryptionKey;
/// The Cloud KMS cryptoKeyVersions to use for signing service account JWTs
/// issued by this cluster.
///
/// Format:
/// `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{cryptoKey}/cryptoKeyVersions/{cryptoKeyVersion}`
core.List<core.String>? serviceAccountSigningKeys;
/// The Cloud KMS cryptoKeyVersions to use for verifying service account JWTs
/// issued by this cluster.
///
/// Format:
/// `projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{cryptoKey}/cryptoKeyVersions/{cryptoKeyVersion}`
core.List<core.String>? serviceAccountVerificationKeys;
UserManagedKeysConfig({
this.aggregationCa,
this.clusterCa,
this.controlPlaneDiskEncryptionKey,
this.controlPlaneDiskEncryptionKeyVersions,
this.etcdApiCa,
this.etcdPeerCa,
this.gkeopsEtcdBackupEncryptionKey,
this.serviceAccountSigningKeys,
this.serviceAccountVerificationKeys,
});
UserManagedKeysConfig.fromJson(core.Map json_)
: this(
aggregationCa: json_['aggregationCa'] as core.String?,
clusterCa: json_['clusterCa'] as core.String?,
controlPlaneDiskEncryptionKey:
json_['controlPlaneDiskEncryptionKey'] as core.String?,
controlPlaneDiskEncryptionKeyVersions:
(json_['controlPlaneDiskEncryptionKeyVersions'] as core.List?)
?.map((value) => value as core.String)
.toList(),
etcdApiCa: json_['etcdApiCa'] as core.String?,
etcdPeerCa: json_['etcdPeerCa'] as core.String?,
gkeopsEtcdBackupEncryptionKey:
json_['gkeopsEtcdBackupEncryptionKey'] as core.String?,
serviceAccountSigningKeys:
(json_['serviceAccountSigningKeys'] as core.List?)
?.map((value) => value as core.String)
.toList(),
serviceAccountVerificationKeys:
(json_['serviceAccountVerificationKeys'] as core.List?)
?.map((value) => value as core.String)
.toList(),
);
core.Map<core.String, core.dynamic> toJson() {
final aggregationCa = this.aggregationCa;
final clusterCa = this.clusterCa;
final controlPlaneDiskEncryptionKey = this.controlPlaneDiskEncryptionKey;
final controlPlaneDiskEncryptionKeyVersions =
this.controlPlaneDiskEncryptionKeyVersions;
final etcdApiCa = this.etcdApiCa;
final etcdPeerCa = this.etcdPeerCa;
final gkeopsEtcdBackupEncryptionKey = this.gkeopsEtcdBackupEncryptionKey;
final serviceAccountSigningKeys = this.serviceAccountSigningKeys;
final serviceAccountVerificationKeys = this.serviceAccountVerificationKeys;
return {
'aggregationCa': ?aggregationCa,
'clusterCa': ?clusterCa,
'controlPlaneDiskEncryptionKey': ?controlPlaneDiskEncryptionKey,
'controlPlaneDiskEncryptionKeyVersions':
?controlPlaneDiskEncryptionKeyVersions,
'etcdApiCa': ?etcdApiCa,
'etcdPeerCa': ?etcdPeerCa,
'gkeopsEtcdBackupEncryptionKey': ?gkeopsEtcdBackupEncryptionKey,
'serviceAccountSigningKeys': ?serviceAccountSigningKeys,
'serviceAccountVerificationKeys': ?serviceAccountVerificationKeys,
};
}
}
/// VerticalPodAutoscaling contains global, per-cluster information required by
/// Vertical Pod Autoscaler to automatically adjust the resources of pods
/// controlled by it.
class VerticalPodAutoscaling {
/// Enables vertical pod autoscaling.
core.bool? enabled;
VerticalPodAutoscaling({this.enabled});
VerticalPodAutoscaling.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Configuration of gVNIC feature.
class VirtualNIC {
/// Whether gVNIC features are enabled in the node pool.
core.bool? enabled;
VirtualNIC({this.enabled});
VirtualNIC.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}
/// Parameters that can be configured on Windows nodes.
///
/// Windows Node Config that define the parameters that will be used to
/// configure the Windows node pool settings.
class WindowsNodeConfig {
/// OSVersion specifies the Windows node config to be used on the node.
/// Possible string values are:
/// - "OS_VERSION_UNSPECIFIED" : When OSVersion is not specified.
/// - "OS_VERSION_LTSC2019" : LTSC2019 specifies to use LTSC2019 as the
/// Windows Servercore Base Image.
/// - "OS_VERSION_LTSC2022" : LTSC2022 specifies to use LTSC2022 as the
/// Windows Servercore Base Image.
core.String? osVersion;
WindowsNodeConfig({this.osVersion});
WindowsNodeConfig.fromJson(core.Map json_)
: this(osVersion: json_['osVersion'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final osVersion = this.osVersion;
return {'osVersion': ?osVersion};
}
}
/// Configuration for the use of Kubernetes Service Accounts in IAM policies.
class WorkloadIdentityConfig {
/// The workload pool to attach all Kubernetes service accounts to.
core.String? workloadPool;
WorkloadIdentityConfig({this.workloadPool});
WorkloadIdentityConfig.fromJson(core.Map json_)
: this(workloadPool: json_['workloadPool'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final workloadPool = this.workloadPool;
return {'workloadPool': ?workloadPool};
}
}
/// WorkloadMetadataConfig defines the metadata configuration to expose to
/// workloads on the node pool.
class WorkloadMetadataConfig {
/// Mode is the configuration for how to expose metadata to workloads running
/// on the node pool.
/// Possible string values are:
/// - "MODE_UNSPECIFIED" : Not set.
/// - "GCE_METADATA" : Expose all Compute Engine metadata to pods.
/// - "GKE_METADATA" : Run the GKE Metadata Server on this node. The GKE
/// Metadata Server exposes a metadata API to workloads that is compatible
/// with the V1 Compute Metadata APIs exposed by the Compute Engine and App
/// Engine Metadata Servers. This feature can only be enabled if Workload
/// Identity is enabled at the cluster level.
core.String? mode;
WorkloadMetadataConfig({this.mode});
WorkloadMetadataConfig.fromJson(core.Map json_)
: this(mode: json_['mode'] as core.String?);
core.Map<core.String, core.dynamic> toJson() {
final mode = this.mode;
return {'mode': ?mode};
}
}
/// WorkloadPolicyConfig is the configuration related to GCW workload policy
class WorkloadPolicyConfig {
/// If true, workloads can use NET_ADMIN capability.
core.bool? allowNetAdmin;
/// If true, enables the GCW Auditor that audits workloads on standard
/// clusters.
core.bool? autopilotCompatibilityAuditingEnabled;
WorkloadPolicyConfig({
this.allowNetAdmin,
this.autopilotCompatibilityAuditingEnabled,
});
WorkloadPolicyConfig.fromJson(core.Map json_)
: this(
allowNetAdmin: json_['allowNetAdmin'] as core.bool?,
autopilotCompatibilityAuditingEnabled:
json_['autopilotCompatibilityAuditingEnabled'] as core.bool?,
);
core.Map<core.String, core.dynamic> toJson() {
final allowNetAdmin = this.allowNetAdmin;
final autopilotCompatibilityAuditingEnabled =
this.autopilotCompatibilityAuditingEnabled;
return {
'allowNetAdmin': ?allowNetAdmin,
'autopilotCompatibilityAuditingEnabled':
?autopilotCompatibilityAuditingEnabled,
};
}
}
/// Defines writable cgroups configuration.
class WritableCgroups {
/// Whether writable cgroups is enabled.
///
/// Optional.
core.bool? enabled;
WritableCgroups({this.enabled});
WritableCgroups.fromJson(core.Map json_)
: this(enabled: json_['enabled'] as core.bool?);
core.Map<core.String, core.dynamic> toJson() {
final enabled = this.enabled;
return {'enabled': ?enabled};
}
}