// Copyright 2023 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. syntax = "proto3"; package google.cloud.dataplex.v1; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/cloud/dataplex/v1/resources.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; option go_package = "cloud.google.com/go/dataplex/apiv1/dataplexpb;dataplexpb"; option java_multiple_files = true; option java_outer_classname = "AnalyzeProto"; option java_package = "com.google.cloud.dataplex.v1"; // Environment represents a user-visible compute infrastructure for analytics // within a lake. message Environment { option (google.api.resource) = { type: "dataplex.googleapis.com/Environment" pattern: "projects/{project}/locations/{location}/lakes/{lake}/environments/{environment}" }; // Configuration for the underlying infrastructure used to run workloads. message InfrastructureSpec { // Compute resources associated with the analyze interactive workloads. message ComputeResources { // Optional. Size in GB of the disk. Default is 100 GB. int32 disk_size_gb = 1 [(google.api.field_behavior) = OPTIONAL]; // Optional. Total number of nodes in the sessions created for this // environment. int32 node_count = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. Max configurable nodes. // If max_node_count > node_count, then auto-scaling is enabled. int32 max_node_count = 3 [(google.api.field_behavior) = OPTIONAL]; } // Software Runtime Configuration to run Analyze. message OsImageRuntime { // Required. Dataplex Image version. string image_version = 1 [(google.api.field_behavior) = REQUIRED]; // Optional. List of Java jars to be included in the runtime environment. // Valid input includes Cloud Storage URIs to Jar binaries. // For example, gs://bucket-name/my/path/to/file.jar repeated string java_libraries = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A list of python packages to be installed. // Valid formats include Cloud Storage URI to a PIP installable library. // For example, gs://bucket-name/my/path/to/lib.tar.gz repeated string python_packages = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. Spark properties to provide configuration for use in sessions // created for this environment. The properties to set on daemon config // files. Property keys are specified in `prefix:property` format. The // prefix must be "spark". map properties = 4 [(google.api.field_behavior) = OPTIONAL]; } // Hardware config oneof resources { // Optional. Compute resources needed for analyze interactive workloads. ComputeResources compute = 50 [(google.api.field_behavior) = OPTIONAL]; } // Software config oneof runtime { // Required. Software Runtime Configuration for analyze interactive // workloads. OsImageRuntime os_image = 100 [(google.api.field_behavior) = REQUIRED]; } } // Configuration for sessions created for this environment. message SessionSpec { // Optional. The idle time configuration of the session. The session will be // auto-terminated at the end of this period. google.protobuf.Duration max_idle_duration = 1 [(google.api.field_behavior) = OPTIONAL]; // Optional. If True, this causes sessions to be pre-created and available // for faster startup to enable interactive exploration use-cases. This // defaults to False to avoid additional billed charges. These can only be // set to True for the environment with name set to "default", and with // default configuration. bool enable_fast_startup = 2 [(google.api.field_behavior) = OPTIONAL]; } // Status of sessions created for this environment. message SessionStatus { // Output only. Queries over sessions to mark whether the environment is // currently active or not bool active = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; } // URI Endpoints to access sessions associated with the Environment. message Endpoints { // Output only. URI to serve notebook APIs string notebooks = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. URI to serve SQL APIs string sql = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Output only. The relative resource name of the environment, of the form: // projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id} string name = 1 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "dataplex.googleapis.com/Environment" } ]; // Optional. User friendly display name. string display_name = 2 [(google.api.field_behavior) = OPTIONAL]; // Output only. System generated globally unique ID for the environment. This // ID will be different if the environment is deleted and re-created with the // same name. string uid = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Environment creation time. google.protobuf.Timestamp create_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time when the environment was last updated. google.protobuf.Timestamp update_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. User defined labels for the environment. map labels = 6 [(google.api.field_behavior) = OPTIONAL]; // Optional. Description of the environment. string description = 7 [(google.api.field_behavior) = OPTIONAL]; // Output only. Current state of the environment. State state = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; // Required. Infrastructure specification for the Environment. InfrastructureSpec infrastructure_spec = 100 [(google.api.field_behavior) = REQUIRED]; // Optional. Configuration for sessions created for this environment. SessionSpec session_spec = 101 [(google.api.field_behavior) = OPTIONAL]; // Output only. Status of sessions created for this environment. SessionStatus session_status = 102 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. URI Endpoints to access sessions associated with the // Environment. Endpoints endpoints = 200 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Content represents a user-visible notebook or a sql script message Content { option (google.api.resource) = { type: "dataplex.googleapis.com/Content" pattern: "projects/{project}/locations/{location}/lakes/{lake}/content/{content}" }; // Configuration for the Sql Script content. message SqlScript { // Query Engine Type of the SQL Script. enum QueryEngine { // Value was unspecified. QUERY_ENGINE_UNSPECIFIED = 0; // Spark SQL Query. SPARK = 2; } // Required. Query Engine to be used for the Sql Query. QueryEngine engine = 1 [(google.api.field_behavior) = REQUIRED]; } // Configuration for Notebook content. message Notebook { // Kernel Type of the Jupyter notebook. enum KernelType { // Kernel Type unspecified. KERNEL_TYPE_UNSPECIFIED = 0; // Python 3 Kernel. PYTHON3 = 1; } // Required. Kernel Type of the notebook. KernelType kernel_type = 1 [(google.api.field_behavior) = REQUIRED]; } // Output only. The relative resource name of the content, of the form: // projects/{project_id}/locations/{location_id}/lakes/{lake_id}/content/{content_id} string name = 1 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "dataplex.googleapis.com/Content" } ]; // Output only. System generated globally unique ID for the content. This ID // will be different if the content is deleted and re-created with the same // name. string uid = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Required. The path for the Content file, represented as directory // structure. Unique within a lake. Limited to alphanumerics, hyphens, // underscores, dots and slashes. string path = 3 [(google.api.field_behavior) = REQUIRED]; // Output only. Content creation time. google.protobuf.Timestamp create_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time when the content was last updated. google.protobuf.Timestamp update_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Optional. User defined labels for the content. map labels = 6 [(google.api.field_behavior) = OPTIONAL]; // Optional. Description of the content. string description = 7 [(google.api.field_behavior) = OPTIONAL]; // Only returned in `GetContent` requests and not in `ListContent` request. oneof data { // Required. Content data in string format. string data_text = 9 [(google.api.field_behavior) = REQUIRED]; } // Types of content oneof content { // Sql Script related configurations. SqlScript sql_script = 100; // Notebook related configurations. Notebook notebook = 101; } } // Represents an active analyze session running for a user. message Session { option (google.api.resource) = { type: "dataplex.googleapis.com/Session" pattern: "projects/{project}/locations/{location}/lakes/{lake}/environments/{environment}/sessions/{session}" }; // Output only. The relative resource name of the content, of the form: // projects/{project_id}/locations/{location_id}/lakes/{lake_id}/environment/{environment_id}/sessions/{session_id} string name = 1 [ (google.api.field_behavior) = OUTPUT_ONLY, (google.api.resource_reference) = { type: "dataplex.googleapis.com/Session" } ]; // Output only. Email of user running the session. string user_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Session start time. google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. State of Session State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; }