blob: 9c6afc9fd2dcb4ca9e6ec0aba02686c467520039 [file] [log] [blame]
// This is a generated file (see the discoveryapis_generator project).
// ignore_for_file: camel_case_types
// ignore_for_file: comment_references
// ignore_for_file: file_names
// ignore_for_file: library_names
// ignore_for_file: lines_longer_than_80_chars
// ignore_for_file: non_constant_identifier_names
// ignore_for_file: prefer_expression_function_bodies
// ignore_for_file: prefer_final_locals
// ignore_for_file: prefer_interpolation_to_compose_strings
// ignore_for_file: unnecessary_brace_in_string_interps
// ignore_for_file: unnecessary_cast
// ignore_for_file: unnecessary_lambdas
// ignore_for_file: unnecessary_parenthesis
// ignore_for_file: unnecessary_string_interpolations
/// Cloud Life Sciences API - v2beta
///
/// Cloud Life Sciences is a suite of services and tools for managing,
/// processing, and transforming life sciences data.
///
/// For more information, see <https://cloud.google.com/life-sciences>
///
/// Create an instance of [CloudLifeSciencesApi] to access these resources:
///
/// - [ProjectsResource]
/// - [ProjectsLocationsResource]
/// - [ProjectsLocationsOperationsResource]
/// - [ProjectsLocationsPipelinesResource]
library lifesciences.v2beta;
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 '../src/user_agent.dart';
export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
show ApiRequestError, DetailedApiRequestError;
/// Cloud Life Sciences is a suite of services and tools for managing,
/// processing, and transforming life sciences data.
class CloudLifeSciencesApi {
/// View and manage your data across Google Cloud Platform services
static const cloudPlatformScope =
'https://www.googleapis.com/auth/cloud-platform';
final commons.ApiRequester _requester;
ProjectsResource get projects => ProjectsResource(_requester);
CloudLifeSciencesApi(http.Client client,
{core.String rootUrl = 'https://lifesciences.googleapis.com/',
core.String servicePath = ''})
: _requester =
commons.ApiRequester(client, rootUrl, servicePath, userAgent);
}
class ProjectsResource {
final commons.ApiRequester _requester;
ProjectsLocationsResource get locations =>
ProjectsLocationsResource(_requester);
ProjectsResource(commons.ApiRequester client) : _requester = client;
}
class ProjectsLocationsResource {
final commons.ApiRequester _requester;
ProjectsLocationsOperationsResource get operations =>
ProjectsLocationsOperationsResource(_requester);
ProjectsLocationsPipelinesResource get pipelines =>
ProjectsLocationsPipelinesResource(_requester);
ProjectsLocationsResource(commons.ApiRequester client) : _requester = client;
/// Gets information about a location.
///
/// Request parameters:
///
/// [name] - Resource name for the location.
/// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [Location].
///
/// 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<Location> get(
core.String name, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (name == null) {
throw core.ArgumentError('Parameter name is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v2beta/' + commons.Escaper.ecapeVariableReserved('$name');
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then(
(data) => Location.fromJson(data as core.Map<core.String, core.dynamic>),
);
}
/// Lists information about the supported locations for this service.
///
/// Request parameters:
///
/// [name] - The resource that owns the locations collection, if applicable.
/// Value must have pattern "^projects/[^/]+$".
///
/// [filter] - The standard list filter.
///
/// [pageSize] - The standard list page size.
///
/// [pageToken] - The standard list page token.
///
/// [$fields] - Selector specifying which fields to include in a partial
/// response.
///
/// Completes with a [ListLocationsResponse].
///
/// 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<ListLocationsResponse> list(
core.String name, {
core.String filter,
core.int pageSize,
core.String pageToken,
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (name == null) {
throw core.ArgumentError('Parameter name is required.');
}
if (filter != null) {
_queryParams['filter'] = [filter];
}
if (pageSize != null) {
_queryParams['pageSize'] = ['${pageSize}'];
}
if (pageToken != null) {
_queryParams['pageToken'] = [pageToken];
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v2beta/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/locations';
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then(
(data) => ListLocationsResponse.fromJson(
data as core.Map<core.String, core.dynamic>),
);
}
}
class ProjectsLocationsOperationsResource {
final commons.ApiRequester _requester;
ProjectsLocationsOperationsResource(commons.ApiRequester client)
: _requester = client;
/// Starts asynchronous cancellation on a long-running operation. The server
/// makes a best effort to cancel the operation, but success is not
/// guaranteed. Clients may use Operations.GetOperation or
/// Operations.ListOperations to check whether the cancellation succeeded or
/// the operation completed despite cancellation. Authorization requires the
/// following [Google IAM](https://cloud.google.com/iam) permission: *
/// `lifesciences.operations.cancel`
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [name] - The name of the operation resource to be cancelled.
/// 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,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (name == null) {
throw core.ArgumentError('Parameter name is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url =
'v2beta/' + commons.Escaper.ecapeVariableReserved('$name') + ':cancel';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then(
(data) => Empty.fromJson(data as core.Map<core.String, core.dynamic>),
);
}
/// Gets the latest state of a long-running operation. Clients can use this
/// method to poll the operation result at intervals as recommended by the API
/// service. Authorization requires the following [Google
/// IAM](https://cloud.google.com/iam) permission: *
/// `lifesciences.operations.get`
///
/// Request parameters:
///
/// [name] - The name of the operation resource.
/// Value must have pattern
/// "^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 name, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (name == null) {
throw core.ArgumentError('Parameter name is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v2beta/' + commons.Escaper.ecapeVariableReserved('$name');
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then(
(data) => Operation.fromJson(data as core.Map<core.String, core.dynamic>),
);
}
/// Lists operations that match the specified filter in the request.
/// Authorization requires the following [Google
/// IAM](https://cloud.google.com/iam) permission: *
/// `lifesciences.operations.list`
///
/// Request parameters:
///
/// [name] - The name of the operation's parent resource.
/// Value must have pattern "^projects/[^/]+/locations/[^/]+$".
///
/// [filter] - A string for filtering Operations. The following filter fields
/// are supported: * createTime: The time this job was created * events: The
/// set of event (names) that have occurred while running the pipeline. The :
/// operator can be used to determine if a particular event has occurred. *
/// error: If the pipeline is running, this value is NULL. Once the pipeline
/// finishes, the value is the standard Google error code. * labels.key or
/// labels."key with space" where key is a label key. * done: If the pipeline
/// is running, this value is false. Once the pipeline finishes, the value is
/// true.
///
/// [pageSize] - The maximum number of results to return. The maximum value is
/// 256.
///
/// [pageToken] - The standard list page token.
///
/// [$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 name, {
core.String filter,
core.int pageSize,
core.String pageToken,
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (name == null) {
throw core.ArgumentError('Parameter name is required.');
}
if (filter != null) {
_queryParams['filter'] = [filter];
}
if (pageSize != null) {
_queryParams['pageSize'] = ['${pageSize}'];
}
if (pageToken != null) {
_queryParams['pageToken'] = [pageToken];
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v2beta/' +
commons.Escaper.ecapeVariableReserved('$name') +
'/operations';
final _response = _requester.request(
_url,
'GET',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then(
(data) => ListOperationsResponse.fromJson(
data as core.Map<core.String, core.dynamic>),
);
}
}
class ProjectsLocationsPipelinesResource {
final commons.ApiRequester _requester;
ProjectsLocationsPipelinesResource(commons.ApiRequester client)
: _requester = client;
/// Runs a pipeline. The returned Operation's metadata field will contain a
/// google.cloud.lifesciences.v2beta.Metadata object describing the status of
/// the pipeline execution. The response field will contain a
/// google.cloud.lifesciences.v2beta.RunPipelineResponse object if the
/// pipeline completes successfully. **Note:** Before you can use this method,
/// the *Life Sciences Service Agent* must have access to your project. This
/// is done automatically when the Cloud Life Sciences API is first enabled,
/// but if you delete this permission you must disable and re-enable the API
/// to grant the Life Sciences Service Agent the required permissions.
/// Authorization requires the following [Google
/// IAM](https://cloud.google.com/iam/) permission: *
/// `lifesciences.workflows.run`
///
/// [request] - The metadata request object.
///
/// Request parameters:
///
/// [parent] - The project and location that this request should be executed
/// against.
/// 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> run(
RunPipelineRequest request,
core.String parent, {
core.String $fields,
}) {
core.String _url;
final _queryParams = <core.String, core.List<core.String>>{};
commons.Media _uploadMedia;
commons.UploadOptions _uploadOptions;
var _downloadOptions = commons.DownloadOptions.Metadata;
core.String _body;
if (request != null) {
_body = convert.json.encode(request.toJson());
}
if (parent == null) {
throw core.ArgumentError('Parameter parent is required.');
}
if ($fields != null) {
_queryParams['fields'] = [$fields];
}
_url = 'v2beta/' +
commons.Escaper.ecapeVariableReserved('$parent') +
'/pipelines:run';
final _response = _requester.request(
_url,
'POST',
body: _body,
queryParams: _queryParams,
uploadOptions: _uploadOptions,
uploadMedia: _uploadMedia,
downloadOptions: _downloadOptions,
);
return _response.then(
(data) => Operation.fromJson(data as core.Map<core.String, core.dynamic>),
);
}
}
/// Carries information about an accelerator that can be attached to a VM.
class Accelerator {
/// How many accelerators of this type to attach.
core.String count;
/// The accelerator type string (for example, "nvidia-tesla-k80"). Only NVIDIA
/// GPU accelerators are currently supported. If an NVIDIA GPU is attached,
/// the required runtime libraries will be made available to all containers
/// under `/usr/local/nvidia`. The driver version to install must be specified
/// using the NVIDIA driver version parameter on the virtual machine
/// specification. Note that attaching a GPU increases the worker VM startup
/// time by a few minutes.
core.String type;
Accelerator();
Accelerator.fromJson(core.Map _json) {
if (_json.containsKey('count')) {
count = _json['count'] as core.String;
}
if (_json.containsKey('type')) {
type = _json['type'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (count != null) {
_json['count'] = count;
}
if (type != null) {
_json['type'] = type;
}
return _json;
}
}
/// Specifies a single action that runs a Docker container.
class Action {
/// By default, after an action fails, no further actions are run. This flag
/// indicates that this action must be run even if the pipeline has already
/// failed. This is useful for actions that copy output files off of the VM or
/// for debugging. Note that no actions will be run if image prefetching
/// fails.
core.bool alwaysRun;
/// If specified, overrides the `CMD` specified in the container. If the
/// container also has an `ENTRYPOINT` the values are used as entrypoint
/// arguments. Otherwise, they are used as a command and arguments to run
/// inside the container.
core.List<core.String> commands;
/// An optional name for the container. The container hostname will be set to
/// this name, making it useful for inter-container communication. The name
/// must contain only upper and lowercase alphanumeric characters and hyphens
/// and cannot start with a hyphen.
core.String containerName;
/// If the specified image is hosted on a private registry other than Google
/// Container Registry, the credentials required to pull the image must be
/// specified here as an encrypted secret. The secret must decrypt to a
/// JSON-encoded dictionary containing both `username` and `password` keys.
Secret credentials;
/// All container images are typically downloaded before any actions are
/// executed. This helps prevent typos in URIs or issues like lack of disk
/// space from wasting large amounts of compute resources. If set, this flag
/// prevents the worker from downloading the image until just before the
/// action is executed.
core.bool disableImagePrefetch;
/// A small portion of the container's standard error stream is typically
/// captured and returned inside the `ContainerStoppedEvent`. Setting this
/// flag disables this functionality.
core.bool disableStandardErrorCapture;
/// Enable access to the FUSE device for this action. Filesystems can then be
/// mounted into disks shared with other actions. The other actions do not
/// need the `enable_fuse` flag to access the mounted filesystem. This has the
/// effect of causing the container to be executed with `CAP_SYS_ADMIN` and
/// exposes `/dev/fuse` to the container, so use it only for containers you
/// trust.
core.bool enableFuse;
/// If specified, overrides the `ENTRYPOINT` specified in the container.
core.String entrypoint;
/// The environment to pass into the container. This environment is merged
/// with values specified in the google.cloud.lifesciences.v2beta.Pipeline
/// message, overwriting any duplicate values. In addition to the values
/// passed here, a few other values are automatically injected into the
/// environment. These cannot be hidden or overwritten.
/// `GOOGLE_PIPELINE_FAILED` will be set to "1" if the pipeline failed because
/// an action has exited with a non-zero status (and did not have the
/// `IGNORE_EXIT_STATUS` flag set). This can be used to determine if
/// additional debug or logging actions should execute.
/// `GOOGLE_LAST_EXIT_STATUS` will be set to the exit status of the last
/// non-background action that executed. This can be used by workflow engine
/// authors to determine whether an individual action has succeeded or failed.
core.Map<core.String, core.String> environment;
/// Normally, a non-zero exit status causes the pipeline to fail. This flag
/// allows execution of other actions to continue instead.
core.bool ignoreExitStatus;
/// Required. The URI to pull the container image from. Note that all images
/// referenced by actions in the pipeline are pulled before the first action
/// runs. If multiple actions reference the same image, it is only pulled
/// once, ensuring that the same image is used for all actions in a single
/// pipeline. The image URI can be either a complete host and image
/// specification (e.g., quay.io/biocontainers/samtools), a library and image
/// name (e.g., google/cloud-sdk) or a bare image name ('bash') to pull from
/// the default library. No schema is required in any of these cases. If the
/// specified image is not public, the service account specified for the
/// Virtual Machine must have access to pull the images from GCR, or
/// appropriate credentials must be specified in the
/// google.cloud.lifesciences.v2beta.Action.credentials field.
core.String imageUri;
/// Labels to associate with the action. This field is provided to assist
/// workflow engine authors in identifying actions (for example, to indicate
/// what sort of action they perform, such as localization or debugging). They
/// are returned in the operation metadata, but are otherwise ignored.
core.Map<core.String, core.String> labels;
/// A list of mounts to make available to the action. In addition to the
/// values specified here, every action has a special virtual disk mounted
/// under `/google` that contains log files and other operational components.
/// - /google/logs All logs written during the pipeline execution. -
/// /google/logs/output The combined standard output and standard error of all
/// actions run as part of the pipeline execution. - /google/logs/action / *
/// /stdout The complete contents of each individual action's standard output.
/// - /google/logs/action / * /stderr The complete contents of each individual
/// action's standard error output.
core.List<Mount> mounts;
/// An optional identifier for a PID namespace to run the action inside.
/// Multiple actions should use the same string to share a namespace. If
/// unspecified, a separate isolated namespace is used.
core.String pidNamespace;
/// A map of containers to host port mappings for this container. If the
/// container already specifies exposed ports, use the `PUBLISH_EXPOSED_PORTS`
/// flag instead. The host port number must be less than 65536. If it is zero,
/// an unused random port is assigned. To determine the resulting port number,
/// consult the `ContainerStartedEvent` in the operation metadata.
core.Map<core.String, core.int> portMappings;
/// Exposes all ports specified by `EXPOSE` statements in the container. To
/// discover the host side port numbers, consult the `ACTION_STARTED` event in
/// the operation metadata.
core.bool publishExposedPorts;
/// This flag allows an action to continue running in the background while
/// executing subsequent actions. This is useful to provide services to other
/// actions (or to provide debugging support tools like SSH servers).
core.bool runInBackground;
/// The maximum amount of time to give the action to complete. If the action
/// fails to complete before the timeout, it will be terminated and the exit
/// status will be non-zero. The pipeline will continue or terminate based on
/// the rules defined by the `ALWAYS_RUN` and `IGNORE_EXIT_STATUS` flags.
core.String timeout;
Action();
Action.fromJson(core.Map _json) {
if (_json.containsKey('alwaysRun')) {
alwaysRun = _json['alwaysRun'] as core.bool;
}
if (_json.containsKey('commands')) {
commands = (_json['commands'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
if (_json.containsKey('containerName')) {
containerName = _json['containerName'] as core.String;
}
if (_json.containsKey('credentials')) {
credentials = Secret.fromJson(
_json['credentials'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('disableImagePrefetch')) {
disableImagePrefetch = _json['disableImagePrefetch'] as core.bool;
}
if (_json.containsKey('disableStandardErrorCapture')) {
disableStandardErrorCapture =
_json['disableStandardErrorCapture'] as core.bool;
}
if (_json.containsKey('enableFuse')) {
enableFuse = _json['enableFuse'] as core.bool;
}
if (_json.containsKey('entrypoint')) {
entrypoint = _json['entrypoint'] as core.String;
}
if (_json.containsKey('environment')) {
environment = (_json['environment'] as core.Map)
.cast<core.String, core.String>()
.map(
(key, item) => core.MapEntry(
key,
item as core.String,
),
);
}
if (_json.containsKey('ignoreExitStatus')) {
ignoreExitStatus = _json['ignoreExitStatus'] as core.bool;
}
if (_json.containsKey('imageUri')) {
imageUri = _json['imageUri'] as core.String;
}
if (_json.containsKey('labels')) {
labels =
(_json['labels'] as core.Map).cast<core.String, core.String>().map(
(key, item) => core.MapEntry(
key,
item as core.String,
),
);
}
if (_json.containsKey('mounts')) {
mounts = (_json['mounts'] as core.List)
.map<Mount>((value) =>
Mount.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('pidNamespace')) {
pidNamespace = _json['pidNamespace'] as core.String;
}
if (_json.containsKey('portMappings')) {
portMappings =
(_json['portMappings'] as core.Map).cast<core.String, core.int>().map(
(key, item) => core.MapEntry(
key,
item as core.int,
),
);
}
if (_json.containsKey('publishExposedPorts')) {
publishExposedPorts = _json['publishExposedPorts'] as core.bool;
}
if (_json.containsKey('runInBackground')) {
runInBackground = _json['runInBackground'] as core.bool;
}
if (_json.containsKey('timeout')) {
timeout = _json['timeout'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (alwaysRun != null) {
_json['alwaysRun'] = alwaysRun;
}
if (commands != null) {
_json['commands'] = commands;
}
if (containerName != null) {
_json['containerName'] = containerName;
}
if (credentials != null) {
_json['credentials'] = credentials.toJson();
}
if (disableImagePrefetch != null) {
_json['disableImagePrefetch'] = disableImagePrefetch;
}
if (disableStandardErrorCapture != null) {
_json['disableStandardErrorCapture'] = disableStandardErrorCapture;
}
if (enableFuse != null) {
_json['enableFuse'] = enableFuse;
}
if (entrypoint != null) {
_json['entrypoint'] = entrypoint;
}
if (environment != null) {
_json['environment'] = environment;
}
if (ignoreExitStatus != null) {
_json['ignoreExitStatus'] = ignoreExitStatus;
}
if (imageUri != null) {
_json['imageUri'] = imageUri;
}
if (labels != null) {
_json['labels'] = labels;
}
if (mounts != null) {
_json['mounts'] = mounts.map((value) => value.toJson()).toList();
}
if (pidNamespace != null) {
_json['pidNamespace'] = pidNamespace;
}
if (portMappings != null) {
_json['portMappings'] = portMappings;
}
if (publishExposedPorts != null) {
_json['publishExposedPorts'] = publishExposedPorts;
}
if (runInBackground != null) {
_json['runInBackground'] = runInBackground;
}
if (timeout != null) {
_json['timeout'] = timeout;
}
return _json;
}
}
/// The request message for Operations.CancelOperation.
class CancelOperationRequest {
CancelOperationRequest();
CancelOperationRequest.fromJson(
// ignore: avoid_unused_constructor_parameters
core.Map _json);
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
return _json;
}
}
/// An event generated when a container is forcibly terminated by the worker.
/// Currently, this only occurs when the container outlives the timeout
/// specified by the user.
class ContainerKilledEvent {
/// The numeric ID of the action that started the container.
core.int actionId;
ContainerKilledEvent();
ContainerKilledEvent.fromJson(core.Map _json) {
if (_json.containsKey('actionId')) {
actionId = _json['actionId'] as core.int;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (actionId != null) {
_json['actionId'] = actionId;
}
return _json;
}
}
/// An event generated when a container starts.
class ContainerStartedEvent {
/// The numeric ID of the action that started this container.
core.int actionId;
/// The public IP address that can be used to connect to the container. This
/// field is only populated when at least one port mapping is present. If the
/// instance was created with a private address, this field will be empty even
/// if port mappings exist.
core.String ipAddress;
/// The container-to-host port mappings installed for this container. This set
/// will contain any ports exposed using the `PUBLISH_EXPOSED_PORTS` flag as
/// well as any specified in the `Action` definition.
core.Map<core.String, core.int> portMappings;
ContainerStartedEvent();
ContainerStartedEvent.fromJson(core.Map _json) {
if (_json.containsKey('actionId')) {
actionId = _json['actionId'] as core.int;
}
if (_json.containsKey('ipAddress')) {
ipAddress = _json['ipAddress'] as core.String;
}
if (_json.containsKey('portMappings')) {
portMappings =
(_json['portMappings'] as core.Map).cast<core.String, core.int>().map(
(key, item) => core.MapEntry(
key,
item as core.int,
),
);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (actionId != null) {
_json['actionId'] = actionId;
}
if (ipAddress != null) {
_json['ipAddress'] = ipAddress;
}
if (portMappings != null) {
_json['portMappings'] = portMappings;
}
return _json;
}
}
/// An event generated when a container exits.
class ContainerStoppedEvent {
/// The numeric ID of the action that started this container.
core.int actionId;
/// The exit status of the container.
core.int exitStatus;
/// The tail end of any content written to standard error by the container. If
/// the content emits large amounts of debugging noise or contains sensitive
/// information, you can prevent the content from being printed by setting the
/// `DISABLE_STANDARD_ERROR_CAPTURE` flag. Note that only a small amount of
/// the end of the stream is captured here. The entire stream is stored in the
/// `/google/logs` directory mounted into each action, and can be copied off
/// the machine as described elsewhere.
core.String stderr;
ContainerStoppedEvent();
ContainerStoppedEvent.fromJson(core.Map _json) {
if (_json.containsKey('actionId')) {
actionId = _json['actionId'] as core.int;
}
if (_json.containsKey('exitStatus')) {
exitStatus = _json['exitStatus'] as core.int;
}
if (_json.containsKey('stderr')) {
stderr = _json['stderr'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (actionId != null) {
_json['actionId'] = actionId;
}
if (exitStatus != null) {
_json['exitStatus'] = exitStatus;
}
if (stderr != null) {
_json['stderr'] = stderr;
}
return _json;
}
}
/// An event generated whenever a resource limitation or transient error delays
/// execution of a pipeline that was otherwise ready to run.
class DelayedEvent {
/// A textual description of the cause of the delay. The string can change
/// without notice because it is often generated by another service (such as
/// Compute Engine).
core.String cause;
/// If the delay was caused by a resource shortage, this field lists the
/// Compute Engine metrics that are preventing this operation from running
/// (for example, `CPUS` or `INSTANCES`). If the particular metric is not
/// known, a single `UNKNOWN` metric will be present.
core.List<core.String> metrics;
DelayedEvent();
DelayedEvent.fromJson(core.Map _json) {
if (_json.containsKey('cause')) {
cause = _json['cause'] as core.String;
}
if (_json.containsKey('metrics')) {
metrics = (_json['metrics'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (cause != null) {
_json['cause'] = cause;
}
if (metrics != null) {
_json['metrics'] = metrics;
}
return _json;
}
}
/// Carries information about a disk that can be attached to a VM. See
/// https://cloud.google.com/compute/docs/disks/performance for more information
/// about disk type, size, and performance considerations.
class Disk {
/// A user-supplied name for the disk. Used when mounting the disk into
/// actions. The name must contain only upper and lowercase alphanumeric
/// characters and hyphens and cannot start with a hyphen.
core.String name;
/// The size, in GB, of the disk to attach. If the size is not specified, a
/// default is chosen to ensure reasonable I/O performance. If the disk type
/// is specified as `local-ssd`, multiple local drives are automatically
/// combined to provide the requested size. Note, however, that each physical
/// SSD is 375GB in size, and no more than 8 drives can be attached to a
/// single instance.
core.int sizeGb;
/// An optional image to put on the disk before attaching it to the VM.
core.String sourceImage;
/// The Compute Engine disk type. If unspecified, `pd-standard` is used.
core.String type;
Disk();
Disk.fromJson(core.Map _json) {
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
if (_json.containsKey('sizeGb')) {
sizeGb = _json['sizeGb'] as core.int;
}
if (_json.containsKey('sourceImage')) {
sourceImage = _json['sourceImage'] as core.String;
}
if (_json.containsKey('type')) {
type = _json['type'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (name != null) {
_json['name'] = name;
}
if (sizeGb != null) {
_json['sizeGb'] = sizeGb;
}
if (sourceImage != null) {
_json['sourceImage'] = sourceImage;
}
if (type != null) {
_json['type'] = type;
}
return _json;
}
}
/// 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); } The JSON
/// representation for `Empty` is empty JSON object `{}`.
class Empty {
Empty();
Empty.fromJson(
// ignore: avoid_unused_constructor_parameters
core.Map _json);
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
return _json;
}
}
/// Carries information about events that occur during pipeline execution.
class Event {
/// See google.cloud.lifesciences.v2beta.ContainerKilledEvent.
ContainerKilledEvent containerKilled;
/// See google.cloud.lifesciences.v2beta.ContainerStartedEvent.
ContainerStartedEvent containerStarted;
/// See google.cloud.lifesciences.v2beta.ContainerStoppedEvent.
ContainerStoppedEvent containerStopped;
/// See google.cloud.lifesciences.v2beta.DelayedEvent.
DelayedEvent delayed;
/// A human-readable description of the event. Note that these strings can
/// change at any time without notice. Any application logic must use the
/// information in the `details` field.
core.String description;
/// See google.cloud.lifesciences.v2beta.FailedEvent.
FailedEvent failed;
/// See google.cloud.lifesciences.v2beta.PullStartedEvent.
PullStartedEvent pullStarted;
/// See google.cloud.lifesciences.v2beta.PullStoppedEvent.
PullStoppedEvent pullStopped;
/// The time at which the event occurred.
core.String timestamp;
/// See google.cloud.lifesciences.v2beta.UnexpectedExitStatusEvent.
UnexpectedExitStatusEvent unexpectedExitStatus;
/// See google.cloud.lifesciences.v2beta.WorkerAssignedEvent.
WorkerAssignedEvent workerAssigned;
/// See google.cloud.lifesciences.v2beta.WorkerReleasedEvent.
WorkerReleasedEvent workerReleased;
Event();
Event.fromJson(core.Map _json) {
if (_json.containsKey('containerKilled')) {
containerKilled = ContainerKilledEvent.fromJson(
_json['containerKilled'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('containerStarted')) {
containerStarted = ContainerStartedEvent.fromJson(
_json['containerStarted'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('containerStopped')) {
containerStopped = ContainerStoppedEvent.fromJson(
_json['containerStopped'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('delayed')) {
delayed = DelayedEvent.fromJson(
_json['delayed'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('description')) {
description = _json['description'] as core.String;
}
if (_json.containsKey('failed')) {
failed = FailedEvent.fromJson(
_json['failed'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('pullStarted')) {
pullStarted = PullStartedEvent.fromJson(
_json['pullStarted'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('pullStopped')) {
pullStopped = PullStoppedEvent.fromJson(
_json['pullStopped'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('timestamp')) {
timestamp = _json['timestamp'] as core.String;
}
if (_json.containsKey('unexpectedExitStatus')) {
unexpectedExitStatus = UnexpectedExitStatusEvent.fromJson(
_json['unexpectedExitStatus'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('workerAssigned')) {
workerAssigned = WorkerAssignedEvent.fromJson(
_json['workerAssigned'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('workerReleased')) {
workerReleased = WorkerReleasedEvent.fromJson(
_json['workerReleased'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (containerKilled != null) {
_json['containerKilled'] = containerKilled.toJson();
}
if (containerStarted != null) {
_json['containerStarted'] = containerStarted.toJson();
}
if (containerStopped != null) {
_json['containerStopped'] = containerStopped.toJson();
}
if (delayed != null) {
_json['delayed'] = delayed.toJson();
}
if (description != null) {
_json['description'] = description;
}
if (failed != null) {
_json['failed'] = failed.toJson();
}
if (pullStarted != null) {
_json['pullStarted'] = pullStarted.toJson();
}
if (pullStopped != null) {
_json['pullStopped'] = pullStopped.toJson();
}
if (timestamp != null) {
_json['timestamp'] = timestamp;
}
if (unexpectedExitStatus != null) {
_json['unexpectedExitStatus'] = unexpectedExitStatus.toJson();
}
if (workerAssigned != null) {
_json['workerAssigned'] = workerAssigned.toJson();
}
if (workerReleased != null) {
_json['workerReleased'] = workerReleased.toJson();
}
return _json;
}
}
/// An event generated when the execution of a pipeline has failed. Note that
/// other events can continue to occur after this event.
class FailedEvent {
/// The human-readable description of the cause of the failure.
core.String cause;
/// The Google standard error code that best describes this failure.
/// 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 (e.g., 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. E.g.,
/// 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 code;
FailedEvent();
FailedEvent.fromJson(core.Map _json) {
if (_json.containsKey('cause')) {
cause = _json['cause'] as core.String;
}
if (_json.containsKey('code')) {
code = _json['code'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (cause != null) {
_json['cause'] = cause;
}
if (code != null) {
_json['code'] = code;
}
return _json;
}
}
/// The response message for Locations.ListLocations.
class ListLocationsResponse {
/// A list of locations that matches the specified filter in the request.
core.List<Location> locations;
/// The standard List next-page token.
core.String nextPageToken;
ListLocationsResponse();
ListLocationsResponse.fromJson(core.Map _json) {
if (_json.containsKey('locations')) {
locations = (_json['locations'] as core.List)
.map<Location>((value) =>
Location.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (locations != null) {
_json['locations'] = locations.map((value) => value.toJson()).toList();
}
if (nextPageToken != null) {
_json['nextPageToken'] = nextPageToken;
}
return _json;
}
}
/// The response message for Operations.ListOperations.
class ListOperationsResponse {
/// The standard List next-page token.
core.String nextPageToken;
/// A list of operations that matches the specified filter in the request.
core.List<Operation> operations;
ListOperationsResponse();
ListOperationsResponse.fromJson(core.Map _json) {
if (_json.containsKey('nextPageToken')) {
nextPageToken = _json['nextPageToken'] as core.String;
}
if (_json.containsKey('operations')) {
operations = (_json['operations'] as core.List)
.map<Operation>((value) =>
Operation.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (nextPageToken != null) {
_json['nextPageToken'] = nextPageToken;
}
if (operations != null) {
_json['operations'] = operations.map((value) => value.toJson()).toList();
}
return _json;
}
}
/// A resource that represents Google Cloud Platform location.
class Location {
/// The friendly name for this location, typically a nearby city name. For
/// example, "Tokyo".
core.String displayName;
/// Cross-service attributes for the location. For example
/// {"cloud.googleapis.com/region": "us-east1"}
core.Map<core.String, core.String> labels;
/// The canonical id for this location. For example: `"us-east1"`.
core.String locationId;
/// Service-specific metadata. For example the available capacity at the given
/// location.
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.Map<core.String, core.Object> metadata;
/// Resource name for the location, which may vary between implementations.
/// For example: `"projects/example-project/locations/us-east1"`
core.String name;
Location();
Location.fromJson(core.Map _json) {
if (_json.containsKey('displayName')) {
displayName = _json['displayName'] as core.String;
}
if (_json.containsKey('labels')) {
labels =
(_json['labels'] as core.Map).cast<core.String, core.String>().map(
(key, item) => core.MapEntry(
key,
item as core.String,
),
);
}
if (_json.containsKey('locationId')) {
locationId = _json['locationId'] as core.String;
}
if (_json.containsKey('metadata')) {
metadata =
(_json['metadata'] as core.Map).cast<core.String, core.Object>().map(
(key, item) => core.MapEntry(
key,
item as core.Object,
),
);
}
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (displayName != null) {
_json['displayName'] = displayName;
}
if (labels != null) {
_json['labels'] = labels;
}
if (locationId != null) {
_json['locationId'] = locationId;
}
if (metadata != null) {
_json['metadata'] = metadata;
}
if (name != null) {
_json['name'] = name;
}
return _json;
}
}
/// Carries information about the pipeline execution that is returned in the
/// long running operation's metadata field.
class Metadata {
/// The time at which the operation was created by the API.
core.String createTime;
/// The time at which execution was completed and resources were cleaned up.
core.String endTime;
/// The list of events that have happened so far during the execution of this
/// operation.
core.List<Event> events;
/// The user-defined labels associated with this operation.
core.Map<core.String, core.String> labels;
/// The pipeline this operation represents.
Pipeline pipeline;
/// The first time at which resources were allocated to execute the pipeline.
core.String startTime;
Metadata();
Metadata.fromJson(core.Map _json) {
if (_json.containsKey('createTime')) {
createTime = _json['createTime'] as core.String;
}
if (_json.containsKey('endTime')) {
endTime = _json['endTime'] as core.String;
}
if (_json.containsKey('events')) {
events = (_json['events'] as core.List)
.map<Event>((value) =>
Event.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('labels')) {
labels =
(_json['labels'] as core.Map).cast<core.String, core.String>().map(
(key, item) => core.MapEntry(
key,
item as core.String,
),
);
}
if (_json.containsKey('pipeline')) {
pipeline = Pipeline.fromJson(
_json['pipeline'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('startTime')) {
startTime = _json['startTime'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (createTime != null) {
_json['createTime'] = createTime;
}
if (endTime != null) {
_json['endTime'] = endTime;
}
if (events != null) {
_json['events'] = events.map((value) => value.toJson()).toList();
}
if (labels != null) {
_json['labels'] = labels;
}
if (pipeline != null) {
_json['pipeline'] = pipeline.toJson();
}
if (startTime != null) {
_json['startTime'] = startTime;
}
return _json;
}
}
/// Carries information about a particular disk mount inside a container.
class Mount {
/// The name of the disk to mount, as specified in the resources section.
core.String disk;
/// The path to mount the disk inside the container.
core.String path;
/// If true, the disk is mounted read-only inside the container.
core.bool readOnly;
Mount();
Mount.fromJson(core.Map _json) {
if (_json.containsKey('disk')) {
disk = _json['disk'] as core.String;
}
if (_json.containsKey('path')) {
path = _json['path'] as core.String;
}
if (_json.containsKey('readOnly')) {
readOnly = _json['readOnly'] as core.bool;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (disk != null) {
_json['disk'] = disk;
}
if (path != null) {
_json['path'] = path;
}
if (readOnly != null) {
_json['readOnly'] = readOnly;
}
return _json;
}
}
/// VM networking options.
class Network {
/// The network name to attach the VM's network interface to. The value will
/// be prefixed with `global/networks/` unless it contains a `/`, in which
/// case it is assumed to be a fully specified network resource URL. If
/// unspecified, the global default network is used.
core.String network;
/// If the specified network is configured for custom subnet creation, the
/// name of the subnetwork to attach the instance to must be specified here.
/// The value is prefixed with `regions / * /subnetworks/` unless it contains
/// a `/`, in which case it is assumed to be a fully specified subnetwork
/// resource URL. If the `*` character appears in the value, it is replaced
/// with the region that the virtual machine has been allocated in.
core.String subnetwork;
/// If set to true, do not attach a public IP address to the VM. Note that
/// without a public IP address, additional configuration is required to allow
/// the VM to access Google services. See
/// https://cloud.google.com/vpc/docs/configure-private-google-access for more
/// information.
core.bool usePrivateAddress;
Network();
Network.fromJson(core.Map _json) {
if (_json.containsKey('network')) {
network = _json['network'] as core.String;
}
if (_json.containsKey('subnetwork')) {
subnetwork = _json['subnetwork'] as core.String;
}
if (_json.containsKey('usePrivateAddress')) {
usePrivateAddress = _json['usePrivateAddress'] as core.bool;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (network != null) {
_json['network'] = network;
}
if (subnetwork != null) {
_json['subnetwork'] = subnetwork;
}
if (usePrivateAddress != null) {
_json['usePrivateAddress'] = usePrivateAddress;
}
return _json;
}
}
/// This resource represents a long-running operation that is the result of a
/// network API call.
class Operation {
/// If the value is `false`, it means the operation is still in progress. If
/// `true`, the operation is completed, and either `error` or `response` is
/// available.
core.bool done;
/// The error result of the operation in case of failure or cancellation.
Status error;
/// An Metadata object. This will always be returned with the Operation.
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.Map<core.String, core.Object> metadata;
/// The server-assigned name for the operation. This may be passed to the
/// other operation methods to retrieve information about the operation's
/// status.
core.String name;
/// An Empty object.
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.Map<core.String, core.Object> response;
Operation();
Operation.fromJson(core.Map _json) {
if (_json.containsKey('done')) {
done = _json['done'] as core.bool;
}
if (_json.containsKey('error')) {
error = Status.fromJson(
_json['error'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('metadata')) {
metadata =
(_json['metadata'] as core.Map).cast<core.String, core.Object>().map(
(key, item) => core.MapEntry(
key,
item as core.Object,
),
);
}
if (_json.containsKey('name')) {
name = _json['name'] as core.String;
}
if (_json.containsKey('response')) {
response =
(_json['response'] as core.Map).cast<core.String, core.Object>().map(
(key, item) => core.MapEntry(
key,
item as core.Object,
),
);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (done != null) {
_json['done'] = done;
}
if (error != null) {
_json['error'] = error.toJson();
}
if (metadata != null) {
_json['metadata'] = metadata;
}
if (name != null) {
_json['name'] = name;
}
if (response != null) {
_json['response'] = response;
}
return _json;
}
}
/// Specifies a series of actions to execute, expressed as Docker containers.
class Pipeline {
/// The list of actions to execute, in the order they are specified.
core.List<Action> actions;
/// The environment to pass into every action. Each action can also specify
/// additional environment variables but cannot delete an entry from this map
/// (though they can overwrite it with a different value).
core.Map<core.String, core.String> environment;
/// The resources required for execution.
Resources resources;
/// The maximum amount of time to give the pipeline to complete. This includes
/// the time spent waiting for a worker to be allocated. If the pipeline fails
/// to complete before the timeout, it will be cancelled and the error code
/// will be set to DEADLINE_EXCEEDED. If unspecified, it will default to 7
/// days.
core.String timeout;
Pipeline();
Pipeline.fromJson(core.Map _json) {
if (_json.containsKey('actions')) {
actions = (_json['actions'] as core.List)
.map<Action>((value) =>
Action.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('environment')) {
environment = (_json['environment'] as core.Map)
.cast<core.String, core.String>()
.map(
(key, item) => core.MapEntry(
key,
item as core.String,
),
);
}
if (_json.containsKey('resources')) {
resources = Resources.fromJson(
_json['resources'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('timeout')) {
timeout = _json['timeout'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (actions != null) {
_json['actions'] = actions.map((value) => value.toJson()).toList();
}
if (environment != null) {
_json['environment'] = environment;
}
if (resources != null) {
_json['resources'] = resources.toJson();
}
if (timeout != null) {
_json['timeout'] = timeout;
}
return _json;
}
}
/// An event generated when the worker starts pulling an image.
class PullStartedEvent {
/// The URI of the image that was pulled.
core.String imageUri;
PullStartedEvent();
PullStartedEvent.fromJson(core.Map _json) {
if (_json.containsKey('imageUri')) {
imageUri = _json['imageUri'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (imageUri != null) {
_json['imageUri'] = imageUri;
}
return _json;
}
}
/// An event generated when the worker stops pulling an image.
class PullStoppedEvent {
/// The URI of the image that was pulled.
core.String imageUri;
PullStoppedEvent();
PullStoppedEvent.fromJson(core.Map _json) {
if (_json.containsKey('imageUri')) {
imageUri = _json['imageUri'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (imageUri != null) {
_json['imageUri'] = imageUri;
}
return _json;
}
}
/// The system resources for the pipeline run. At least one zone or region must
/// be specified or the pipeline run will fail.
class Resources {
/// The list of regions allowed for VM allocation. If set, the `zones` field
/// must not be set.
core.List<core.String> regions;
/// The virtual machine specification.
VirtualMachine virtualMachine;
/// The list of zones allowed for VM allocation. If set, the `regions` field
/// must not be set.
core.List<core.String> zones;
Resources();
Resources.fromJson(core.Map _json) {
if (_json.containsKey('regions')) {
regions = (_json['regions'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
if (_json.containsKey('virtualMachine')) {
virtualMachine = VirtualMachine.fromJson(
_json['virtualMachine'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('zones')) {
zones = (_json['zones'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (regions != null) {
_json['regions'] = regions;
}
if (virtualMachine != null) {
_json['virtualMachine'] = virtualMachine.toJson();
}
if (zones != null) {
_json['zones'] = zones;
}
return _json;
}
}
/// The arguments to the `RunPipeline` method. The requesting user must have the
/// `iam.serviceAccounts.actAs` permission for the Cloud Life Sciences service
/// account or the request will fail.
class RunPipelineRequest {
/// User-defined labels to associate with the returned operation. These labels
/// are not propagated to any Google Cloud Platform resources used by the
/// operation, and can be modified at any time. To associate labels with
/// resources created while executing the operation, see the appropriate
/// resource message (for example, `VirtualMachine`).
core.Map<core.String, core.String> labels;
/// Required. The description of the pipeline to run.
Pipeline pipeline;
RunPipelineRequest();
RunPipelineRequest.fromJson(core.Map _json) {
if (_json.containsKey('labels')) {
labels =
(_json['labels'] as core.Map).cast<core.String, core.String>().map(
(key, item) => core.MapEntry(
key,
item as core.String,
),
);
}
if (_json.containsKey('pipeline')) {
pipeline = Pipeline.fromJson(
_json['pipeline'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (labels != null) {
_json['labels'] = labels;
}
if (pipeline != null) {
_json['pipeline'] = pipeline.toJson();
}
return _json;
}
}
/// The response to the RunPipeline method, returned in the operation's result
/// field on success.
class RunPipelineResponse {
RunPipelineResponse();
RunPipelineResponse.fromJson(
// ignore: avoid_unused_constructor_parameters
core.Map _json);
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
return _json;
}
}
/// Holds encrypted information that is only decrypted and stored in RAM by the
/// worker VM when running the pipeline.
class Secret {
/// The value of the cipherText response from the `encrypt` method. This field
/// is intentionally unaudited.
core.String cipherText;
/// The name of the Cloud KMS key that will be used to decrypt the secret
/// value. The VM service account must have the required permissions and
/// authentication scopes to invoke the `decrypt` method on the specified key.
core.String keyName;
Secret();
Secret.fromJson(core.Map _json) {
if (_json.containsKey('cipherText')) {
cipherText = _json['cipherText'] as core.String;
}
if (_json.containsKey('keyName')) {
keyName = _json['keyName'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (cipherText != null) {
_json['cipherText'] = cipherText;
}
if (keyName != null) {
_json['keyName'] = keyName;
}
return _json;
}
}
/// Carries information about a Google Cloud service account.
class ServiceAccount {
/// Email address of the service account. If not specified, the default
/// Compute Engine service account for the project will be used.
core.String email;
/// List of scopes to be enabled for this service account on the VM, in
/// addition to the cloud-platform API scope that will be added by default.
core.List<core.String> scopes;
ServiceAccount();
ServiceAccount.fromJson(core.Map _json) {
if (_json.containsKey('email')) {
email = _json['email'] as core.String;
}
if (_json.containsKey('scopes')) {
scopes = (_json['scopes'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (email != null) {
_json['email'] = email;
}
if (scopes != null) {
_json['scopes'] = scopes;
}
return _json;
}
}
/// 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).
class Status {
/// The status code, which should be an enum value of google.rpc.Code.
core.int code;
/// A list of messages that carry the error details. There is a common set of
/// message types for APIs to use.
///
/// The values for Object must be JSON objects. It can consist of `num`,
/// `String`, `bool` and `null` as well as `Map` and `List` values.
core.List<core.Map<core.String, core.Object>> details;
/// A developer-facing error message, which should be in English. Any
/// user-facing error message should be localized and sent in the
/// google.rpc.Status.details field, or localized by the client.
core.String message;
Status();
Status.fromJson(core.Map _json) {
if (_json.containsKey('code')) {
code = _json['code'] as core.int;
}
if (_json.containsKey('details')) {
details = (_json['details'] as core.List)
.map<core.Map<core.String, core.Object>>((value) =>
(value as core.Map).cast<core.String, core.Object>().map(
(key, item) => core.MapEntry(
key,
item as core.Object,
),
))
.toList();
}
if (_json.containsKey('message')) {
message = _json['message'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (code != null) {
_json['code'] = code;
}
if (details != null) {
_json['details'] = details;
}
if (message != null) {
_json['message'] = message;
}
return _json;
}
}
/// An event generated when the execution of a container results in a non-zero
/// exit status that was not otherwise ignored. Execution will continue, but
/// only actions that are flagged as `ALWAYS_RUN` will be executed. Other
/// actions will be skipped.
class UnexpectedExitStatusEvent {
/// The numeric ID of the action that started the container.
core.int actionId;
/// The exit status of the container.
core.int exitStatus;
UnexpectedExitStatusEvent();
UnexpectedExitStatusEvent.fromJson(core.Map _json) {
if (_json.containsKey('actionId')) {
actionId = _json['actionId'] as core.int;
}
if (_json.containsKey('exitStatus')) {
exitStatus = _json['exitStatus'] as core.int;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (actionId != null) {
_json['actionId'] = actionId;
}
if (exitStatus != null) {
_json['exitStatus'] = exitStatus;
}
return _json;
}
}
/// Carries information about a Compute Engine VM resource.
class VirtualMachine {
/// The list of accelerators to attach to the VM.
core.List<Accelerator> accelerators;
/// The size of the boot disk, in GB. The boot disk must be large enough to
/// accommodate all of the Docker images from each action in the pipeline at
/// the same time. If not specified, a small but reasonable default value is
/// used.
core.int bootDiskSizeGb;
/// The host operating system image to use. Currently, only
/// Container-Optimized OS images can be used. The default value is
/// `projects/cos-cloud/global/images/family/cos-stable`, which selects the
/// latest stable release of Container-Optimized OS. This option is provided
/// to allow testing against the beta release of the operating system to
/// ensure that the new version does not interact negatively with production
/// pipelines. To test a pipeline against the beta release of
/// Container-Optimized OS, use the value
/// `projects/cos-cloud/global/images/family/cos-beta`.
core.String bootImage;
/// The CPU platform to request. An instance based on a newer platform can be
/// allocated, but never one with fewer capabilities. The value of this
/// parameter must be a valid Compute Engine CPU platform name (such as "Intel
/// Skylake"). This parameter is only useful for carefully optimized work
/// loads where the CPU platform has a significant impact. For more
/// information about the effect of this parameter, see
/// https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform.
core.String cpuPlatform;
/// The list of disks to create and attach to the VM.
core.List<Disk> disks;
/// The Compute Engine Disk Images to use as a Docker cache. The disks will be
/// mounted into the Docker folder in a way that the images present in the
/// cache will not need to be pulled. The digests of the cached images must
/// match those of the tags used or the latest version will still be pulled.
/// The root directory of the ext4 image must contain `image` and `overlay2`
/// directories copied from the Docker directory of a VM where the desired
/// Docker images have already been pulled. Only a single image is supported.
core.List<core.String> dockerCacheImages;
/// Whether Stackdriver monitoring should be enabled on the VM.
core.bool enableStackdriverMonitoring;
/// Optional set of labels to apply to the VM and any attached disk resources.
/// These labels must adhere to the [name and value
/// restrictions](https://cloud.google.com/compute/docs/labeling-resources) on
/// VM labels imposed by Compute Engine. Labels keys with the prefix 'google-'
/// are reserved for use by Google. Labels applied at creation time to the VM.
/// Applied on a best-effort basis to attached disk resources shortly after VM
/// creation.
core.Map<core.String, core.String> labels;
/// Required. The machine type of the virtual machine to create. Must be the
/// short name of a standard machine type (such as "n1-standard-1") or a
/// custom machine type (such as "custom-1-4096", where "1" indicates the
/// number of vCPUs and "4096" indicates the memory in MB). See [Creating an
/// instance with a custom machine
/// type](https://cloud.google.com/compute/docs/instances/creating-instance-with-custom-machine-type#create)
/// for more specifications on creating a custom machine type.
core.String machineType;
/// The VM network configuration.
Network network;
/// The NVIDIA driver version to use when attaching an NVIDIA GPU accelerator.
/// The version specified here must be compatible with the GPU libraries
/// contained in the container being executed, and must be one of the drivers
/// hosted in the `nvidia-drivers-us-public` bucket on Google Cloud Storage.
core.String nvidiaDriverVersion;
/// If true, allocate a preemptible VM.
core.bool preemptible;
/// The service account to install on the VM. This account does not need any
/// permissions other than those required by the pipeline.
ServiceAccount serviceAccount;
VirtualMachine();
VirtualMachine.fromJson(core.Map _json) {
if (_json.containsKey('accelerators')) {
accelerators = (_json['accelerators'] as core.List)
.map<Accelerator>((value) => Accelerator.fromJson(
value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('bootDiskSizeGb')) {
bootDiskSizeGb = _json['bootDiskSizeGb'] as core.int;
}
if (_json.containsKey('bootImage')) {
bootImage = _json['bootImage'] as core.String;
}
if (_json.containsKey('cpuPlatform')) {
cpuPlatform = _json['cpuPlatform'] as core.String;
}
if (_json.containsKey('disks')) {
disks = (_json['disks'] as core.List)
.map<Disk>((value) =>
Disk.fromJson(value as core.Map<core.String, core.dynamic>))
.toList();
}
if (_json.containsKey('dockerCacheImages')) {
dockerCacheImages = (_json['dockerCacheImages'] as core.List)
.map<core.String>((value) => value as core.String)
.toList();
}
if (_json.containsKey('enableStackdriverMonitoring')) {
enableStackdriverMonitoring =
_json['enableStackdriverMonitoring'] as core.bool;
}
if (_json.containsKey('labels')) {
labels =
(_json['labels'] as core.Map).cast<core.String, core.String>().map(
(key, item) => core.MapEntry(
key,
item as core.String,
),
);
}
if (_json.containsKey('machineType')) {
machineType = _json['machineType'] as core.String;
}
if (_json.containsKey('network')) {
network = Network.fromJson(
_json['network'] as core.Map<core.String, core.dynamic>);
}
if (_json.containsKey('nvidiaDriverVersion')) {
nvidiaDriverVersion = _json['nvidiaDriverVersion'] as core.String;
}
if (_json.containsKey('preemptible')) {
preemptible = _json['preemptible'] as core.bool;
}
if (_json.containsKey('serviceAccount')) {
serviceAccount = ServiceAccount.fromJson(
_json['serviceAccount'] as core.Map<core.String, core.dynamic>);
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (accelerators != null) {
_json['accelerators'] =
accelerators.map((value) => value.toJson()).toList();
}
if (bootDiskSizeGb != null) {
_json['bootDiskSizeGb'] = bootDiskSizeGb;
}
if (bootImage != null) {
_json['bootImage'] = bootImage;
}
if (cpuPlatform != null) {
_json['cpuPlatform'] = cpuPlatform;
}
if (disks != null) {
_json['disks'] = disks.map((value) => value.toJson()).toList();
}
if (dockerCacheImages != null) {
_json['dockerCacheImages'] = dockerCacheImages;
}
if (enableStackdriverMonitoring != null) {
_json['enableStackdriverMonitoring'] = enableStackdriverMonitoring;
}
if (labels != null) {
_json['labels'] = labels;
}
if (machineType != null) {
_json['machineType'] = machineType;
}
if (network != null) {
_json['network'] = network.toJson();
}
if (nvidiaDriverVersion != null) {
_json['nvidiaDriverVersion'] = nvidiaDriverVersion;
}
if (preemptible != null) {
_json['preemptible'] = preemptible;
}
if (serviceAccount != null) {
_json['serviceAccount'] = serviceAccount.toJson();
}
return _json;
}
}
/// An event generated after a worker VM has been assigned to run the pipeline.
class WorkerAssignedEvent {
/// The worker's instance name.
core.String instance;
/// The machine type that was assigned for the worker.
core.String machineType;
/// The zone the worker is running in.
core.String zone;
WorkerAssignedEvent();
WorkerAssignedEvent.fromJson(core.Map _json) {
if (_json.containsKey('instance')) {
instance = _json['instance'] as core.String;
}
if (_json.containsKey('machineType')) {
machineType = _json['machineType'] as core.String;
}
if (_json.containsKey('zone')) {
zone = _json['zone'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (instance != null) {
_json['instance'] = instance;
}
if (machineType != null) {
_json['machineType'] = machineType;
}
if (zone != null) {
_json['zone'] = zone;
}
return _json;
}
}
/// An event generated when the worker VM that was assigned to the pipeline has
/// been released (deleted).
class WorkerReleasedEvent {
/// The worker's instance name.
core.String instance;
/// The zone the worker was running in.
core.String zone;
WorkerReleasedEvent();
WorkerReleasedEvent.fromJson(core.Map _json) {
if (_json.containsKey('instance')) {
instance = _json['instance'] as core.String;
}
if (_json.containsKey('zone')) {
zone = _json['zone'] as core.String;
}
}
core.Map<core.String, core.Object> toJson() {
final _json = <core.String, core.Object>{};
if (instance != null) {
_json['instance'] = instance;
}
if (zone != null) {
_json['zone'] = zone;
}
return _json;
}
}