// Copyright 2020 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.metastore.v1alpha; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; option go_package = "google.golang.org/genproto/googleapis/cloud/metastore/v1alpha;metastore"; option java_multiple_files = true; option java_outer_classname = "MetastoreProto"; option java_package = "com.google.cloud.metastore.v1alpha"; option (google.api.resource_definition) = { type: "compute.googleapis.com/Network" pattern: "projects/{project}/global/networks/{network}" }; // Configures and manages metastore services. // Metastore services are fully managed, highly available, auto-scaled, // auto-healing, OSS-native deployments of technical metadata management // software. Each metastore service exposes a network endpoint through which // metadata queries are served. Metadata queries can originate from a variety // of sources, including Apache Hive, Apache Presto, and Apache Spark. // // The Dataproc Metastore API defines the following resource model: // // * The service works with a collection of Google Cloud projects, named: // `/projects/*` // * Each project has a collection of available locations, named: `/locations/*` // (a location must refer to a Google Cloud `region`) // * Each location has a collection of services, named: `/services/*` // * Dataproc Metastore services are resources with names of the form: // // `/projects/{project_id}/locations/{location_id}/services/{service_id}`. service DataprocMetastore { option (google.api.default_host) = "metastore.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; // Lists services in a project and location. rpc ListServices(ListServicesRequest) returns (ListServicesResponse) { option (google.api.http) = { get: "/v1alpha/{parent=projects/*/locations/*}/services" }; option (google.api.method_signature) = "parent"; } // Gets the details of a single service. rpc GetService(GetServiceRequest) returns (Service) { option (google.api.http) = { get: "/v1alpha/{name=projects/*/locations/*/services/*}" }; option (google.api.method_signature) = "name"; } // Creates a metastore service in a project and location. rpc CreateService(CreateServiceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1alpha/{parent=projects/*/locations/*}/services" body: "service" }; option (google.api.method_signature) = "parent,service,service_id"; option (google.longrunning.operation_info) = { response_type: "Service" metadata_type: "OperationMetadata" }; } // Updates the parameters of a single service. rpc UpdateService(UpdateServiceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1alpha/{service.name=projects/*/locations/*/services/*}" body: "service" }; option (google.api.method_signature) = "service,update_mask"; option (google.longrunning.operation_info) = { response_type: "Service" metadata_type: "OperationMetadata" }; } // Deletes a single service. rpc DeleteService(DeleteServiceRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1alpha/{name=projects/*/locations/*/services/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } // Lists imports in a service. rpc ListMetadataImports(ListMetadataImportsRequest) returns (ListMetadataImportsResponse) { option (google.api.http) = { get: "/v1alpha/{parent=projects/*/locations/*/services/*}/metadataImports" }; option (google.api.method_signature) = "parent"; } // Gets details of a single import. rpc GetMetadataImport(GetMetadataImportRequest) returns (MetadataImport) { option (google.api.http) = { get: "/v1alpha/{name=projects/*/locations/*/services/*/metadataImports/*}" }; option (google.api.method_signature) = "name"; } // Creates a new MetadataImport in a given project and location. rpc CreateMetadataImport(CreateMetadataImportRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1alpha/{parent=projects/*/locations/*/services/*}/metadataImports" body: "metadata_import" }; option (google.api.method_signature) = "parent,metadata_import,metadata_import_id"; option (google.longrunning.operation_info) = { response_type: "MetadataImport" metadata_type: "OperationMetadata" }; } // Updates a single import. // Only the description field of MetadataImport is supported to be updated. rpc UpdateMetadataImport(UpdateMetadataImportRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1alpha/{metadata_import.name=projects/*/locations/*/services/*/metadataImports/*}" body: "metadata_import" }; option (google.api.method_signature) = "metadata_import,update_mask"; option (google.longrunning.operation_info) = { response_type: "MetadataImport" metadata_type: "OperationMetadata" }; } } // A managed metastore service that serves metadata queries. message Service { option (google.api.resource) = { type: "metastore.googleapis.com/Service" pattern: "projects/{project}/locations/{location}/services/{service}" }; // The current state of the metastore service. enum State { // The state of the metastore service is unknown. STATE_UNSPECIFIED = 0; // The metastore service is in the process of being created. CREATING = 1; // The metastore service is running and ready to serve queries. ACTIVE = 2; // The metastore service is entering suspension. Its query-serving // availability may cease unexpectedly. SUSPENDING = 3; // The metastore service is suspended and unable to serve queries. SUSPENDED = 4; // The metastore service is being updated. It remains usable but cannot // accept additional update requests or be deleted at this time. UPDATING = 5; // The metastore service is undergoing deletion. It cannot be used. DELETING = 6; // The metastore service has encountered an error and cannot be used. The // metastore service should be deleted. ERROR = 7; } // Available service tiers. enum Tier { // The tier is not set. TIER_UNSPECIFIED = 0; // The enterprise tier combines a powerful metastore serving layer with a // highly scalable data storage layer. ENTERPRISE = 3; } // Immutable. The relative resource name of the metastore service, of the form: // // "projects/{project_id}/locations/{location_id}/services/{service_id}". string name = 1 [(google.api.field_behavior) = IMMUTABLE]; // Output only. The time when the metastore service was created. google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time when the metastore service was last updated. google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // User-defined labels for the metastore service. map labels = 4; // Configuration properties specific to the underlying metastore service // technology (the software that serves metastore queries). oneof metastore_config { // Configuration information specific to running Hive metastore // software as the metastore service. HiveMetastoreConfig hive_metastore_config = 5; } // Immutable. The relative resource name of the VPC network on which the instance can be // accessed. The network must belong to the same project as the metastore // instance. It is specified in the following form: // // "projects/{project_id}/global/networks/{network_id}". string network = 7 [ (google.api.field_behavior) = IMMUTABLE, (google.api.resource_reference) = { type: "compute.googleapis.com/Network" } ]; // Output only. The URI of the endpoint used to access the metastore service. string endpoint_uri = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; // The TCP port at which the metastore service is reached. Default: 9083. int32 port = 9; // Output only. The current state of the metastore service. State state = 10 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Additional information about the current state of the metastore service, if // available. string state_message = 11 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. A Cloud Storage URI (starting with `gs://`) that specifies where artifacts // related to the metastore service are stored. string artifact_gcs_uri = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; // The tier of the service. Tier tier = 13; } // Specifies configuration information specific to running Hive metastore // software as the metastore service. message HiveMetastoreConfig { // Immutable. The Hive metastore schema version. string version = 1 [(google.api.field_behavior) = IMMUTABLE]; // A mapping of Hive metastore configuration key-value pairs to apply to the // Hive metastore (configured in `hive-site.xml`). The mappings // override system defaults (some keys cannot be overridden). map config_overrides = 2; // Information used to configure the Hive metastore service as a service // principal in a Kerberos realm. KerberosConfig kerberos_config = 3; } // Configuration information for a Kerberos principal. message KerberosConfig { // A Kerberos keytab file that can be used to authenticate a service principal // with a Kerberos Key Distribution Center (KDC). Secret keytab = 1; // A Kerberos principal that exists in the both the keytab the KDC // to authenticate as. A typical principal is of the form // "primary/instance@REALM", but there is no exact format. string principal = 2; // A Cloud Storage URI that specifies the path to a // krb5.conf file. It is of the form gs://{bucket_name}/path/to/krb5.conf, // although the file does not need to be named krb5.conf explicitly. string krb5_config_gcs_uri = 3; } // A securely stored value. message Secret { oneof value { // The relative resource name of a Secret Manager secret version, in the // following form: // // "projects/{project_id}/secrets/{secret_id}/versions/{version_id}". string cloud_secret = 2; } } // A metastore resource that imports metadata. message MetadataImport { option (google.api.resource) = { type: "metastore.googleapis.com/MetadataImport" pattern: "projects/{project}/locations/{location}/services/{service}/metadataImports/{metadata_import}" }; // A specification of the location of and metadata about a database dump from // a relational database management system. message DatabaseDump { // The type of the database. enum DatabaseType { // The type of the source database is unknown. DATABASE_TYPE_UNSPECIFIED = 0; // The type of the source database is MySQL. MYSQL = 1; } // The type of the database. DatabaseType database_type = 1; // A Cloud Storage object URI that specifies the source from which to // import metadata. It must begin with `gs://`. string gcs_uri = 2; // The name of the source database. string source_database = 3; } // The current state of the metadata import. enum State { // The state of the metadata import is unknown. STATE_UNSPECIFIED = 0; // The metadata import is running. RUNNING = 1; // The metadata import completed successfully. SUCCEEDED = 2; // The metadata import is being updated. UPDATING = 3; // The metadata import failed, and attempted metadata changes were rolled // back. FAILED = 4; } // Immutable. The relative resource name of the metadata import, of the form: // // "projects/{project_id}/locations/{location_id}/services/{service_id}/metadataImports/{metadata_import_id}". string name = 1 [(google.api.field_behavior) = IMMUTABLE]; // The description of the metadata import. string description = 2; // Output only. The time when the metadata import was created. google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time when the metadata import was last updated. google.protobuf.Timestamp update_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The current state of the metadata import. State state = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // The metadata to be imported. oneof metadata { // Immutable. A database dump from a pre-existing metastore's database. DatabaseDump database_dump = 6 [(google.api.field_behavior) = IMMUTABLE]; } } // Request message for [DataprocMetastore.ListServices][google.cloud.metastore.v1alpha.DataprocMetastore.ListServices]. message ListServicesRequest { // Required. The relative resource name of the location of metastore services to // list, in the following form: // // "projects/{project_id}/locations/{location_id}". string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // Optional. The maximum number of services to return. The response may contain less // than the maximum number. If unspecified, no more than 500 services are // returned. The maximum value is 1000; values above 1000 are changed to 1000. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A page token, received from a previous [DataprocMetastore.ListServices][google.cloud.metastore.v1alpha.DataprocMetastore.ListServices] // call. Provide this token to retrieve the subsequent page. // // To retrieve the first page, supply an empty page token. // // When paginating, other parameters provided to // [DataprocMetastore.ListServices][google.cloud.metastore.v1alpha.DataprocMetastore.ListServices] must match the call that provided the // page token. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. The filter to apply to list results. string filter = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. Specify the ordering of results as described in // [Sorting Order](/apis/design/design_patterns#sorting_order). If not // specified, the results will be sorted in the default order. string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; } // Response message for [DataprocMetastore.ListServices][google.cloud.metastore.v1alpha.DataprocMetastore.ListServices]. message ListServicesResponse { // The services in the specified location. repeated Service services = 1; // A token that can be sent as `page_token` to retrieve the next page. If this // field is omitted, there are no subsequent pages. string next_page_token = 2; // Locations that could not be reached. repeated string unreachable = 3; } // Request message for [DataprocMetastore.GetService][google.cloud.metastore.v1alpha.DataprocMetastore.GetService]. message GetServiceRequest { // Required. The relative resource name of the metastore service to retrieve, in the // following form: // // "projects/{project_id}/locations/{location_id}/services/{service_id}". string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "metastore.googleapis.com/Service" } ]; } // Request message for [DataprocMetastore.CreateService][google.cloud.metastore.v1alpha.DataprocMetastore.CreateService]. message CreateServiceRequest { // Required. The relative resource name of the location in which to create a metastore // service, in the following form: // // "projects/{project_id}/locations/{location_id}". string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "locations.googleapis.com/Location" } ]; // Required. The ID of the metastore service, which is used as the final // component of the metastore service's name. // // This value must be between 1 and 64 characters long, begin with a // letter, end with a letter or number, and consist of alpha-numeric // ASCII characters or hyphens. string service_id = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The Metastore service to create. The `name` field is // ignored. The ID of the created metastore service must be provided in // the request's `service_id` field. Service service = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. A request ID. Specify a unique request ID to allow the server to ignore the // request if it has completed. The server will ignore subsequent requests // that provide a duplicate request ID for at least 60 minutes after the first // request. // // For example, if an initial request times out, followed by another request // with the same request ID, the server ignores the second request to prevent // the creation of duplicate commitments. // // The request ID must be a valid // [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) // A zero UUID (00000000-0000-0000-0000-000000000000) is not supported. string request_id = 4 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [DataprocMetastore.UpdateService][google.cloud.metastore.v1alpha.DataprocMetastore.UpdateService]. message UpdateServiceRequest { // Required. A field mask used to specify the fields to be overwritten in the // metastore service resource by the update. // Fields specified in the `update_mask` are relative to the resource (not // to the full request). A field is overwritten if it is in the mask. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The metastore service to update. The server only merges fields // in the service if they are specified in `update_mask`. // // The metastore service's `name` field is used to identify the metastore // service to be updated. Service service = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. A request ID. Specify a unique request ID to allow the server to ignore the // request if it has completed. The server will ignore subsequent requests // that provide a duplicate request ID for at least 60 minutes after the first // request. // // For example, if an initial request times out, followed by another request // with the same request ID, the server ignores the second request to prevent // the creation of duplicate commitments. // // The request ID must be a valid // [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) // A zero UUID (00000000-0000-0000-0000-000000000000) is not supported. string request_id = 3 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [DataprocMetastore.DeleteService][google.cloud.metastore.v1alpha.DataprocMetastore.DeleteService]. message DeleteServiceRequest { // Required. The relative resource name of the metastore service to delete, in the // following form: // // "projects/{project_id}/locations/{location_id}/services/{service_id}". string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "metastore.googleapis.com/Service" } ]; // Optional. A request ID. Specify a unique request ID to allow the server to ignore the // request if it has completed. The server will ignore subsequent requests // that provide a duplicate request ID for at least 60 minutes after the first // request. // // For example, if an initial request times out, followed by another request // with the same request ID, the server ignores the second request to prevent // the creation of duplicate commitments. // // The request ID must be a valid // [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) // A zero UUID (00000000-0000-0000-0000-000000000000) is not supported. string request_id = 2 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [DataprocMetastore.ListMetadataImports][google.cloud.metastore.v1alpha.DataprocMetastore.ListMetadataImports]. message ListMetadataImportsRequest { // Required. The relative resource name of the service whose metadata imports to // list, in the following form: // // "projects/{project_id}/locations/{location_id}/services/{service_id}/metadataImports". string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "metastore.googleapis.com/Service" } ]; // Optional. The maximum number of imports to return. The response may contain less // than the maximum number. If unspecified, no more than 500 imports are // returned. The maximum value is 1000; values above 1000 are changed to 1000. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL]; // Optional. A page token, received from a previous [DataprocMetastore.ListServices][google.cloud.metastore.v1alpha.DataprocMetastore.ListServices] // call. Provide this token to retrieve the subsequent page. // // To retrieve the first page, supply an empty page token. // // When paginating, other parameters provided to // [DataprocMetastore.ListServices][google.cloud.metastore.v1alpha.DataprocMetastore.ListServices] must match the call that provided the // page token. string page_token = 3 [(google.api.field_behavior) = OPTIONAL]; // Optional. The filter to apply to list results. string filter = 4 [(google.api.field_behavior) = OPTIONAL]; // Optional. Specify the ordering of results as described in // [Sorting Order](/apis/design/design_patterns#sorting_order). If not // specified, the results will be sorted in the default order. string order_by = 5 [(google.api.field_behavior) = OPTIONAL]; } // Response message for [DataprocMetastore.ListMetadataImports][google.cloud.metastore.v1alpha.DataprocMetastore.ListMetadataImports]. message ListMetadataImportsResponse { // The imports in the specified service. repeated MetadataImport metadata_imports = 1; // A token that can be sent as `page_token` to retrieve the next page. If this // field is omitted, there are no subsequent pages. string next_page_token = 2; // Locations that could not be reached. repeated string unreachable = 3; } // Request message for [DataprocMetastore.GetMetadataImport][google.cloud.metastore.v1alpha.DataprocMetastore.GetMetadataImport]. message GetMetadataImportRequest { // Required. The relative resource name of the metadata import to retrieve, in the // following form: // // "projects/{project_id}/locations/{location_id}/services/{service_id}/metadataImports/{import_id}". string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "metastore.googleapis.com/MetadataImport" } ]; } // Request message for [DataprocMetastore.CreateMetadataImport][google.cloud.metastore.v1alpha.DataprocMetastore.CreateMetadataImport]. message CreateMetadataImportRequest { // Required. The relative resource name of the service in which to create a metastore // import, in the following form: // // "projects/{project_id}/locations/{location_id}/services/{service_id}" string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "metastore.googleapis.com/Service" } ]; // Required. The ID of the metadata import, which is used as the final component of the // metadata import's name. // // This value must be between 1 and 64 characters long, begin with a letter, // end with a letter or number, and consist of alpha-numeric ASCII characters // or hyphens. string metadata_import_id = 2 [(google.api.field_behavior) = REQUIRED]; // Required. The metadata import to create. The `name` field is ignored. The ID of the // created metadata import must be provided in the request's // `metadata_import_id` field. MetadataImport metadata_import = 3 [(google.api.field_behavior) = REQUIRED]; // Optional. A request ID. Specify a unique request ID to allow the server to ignore the // request if it has completed. The server will ignore subsequent requests // that provide a duplicate request ID for at least 60 minutes after the first // request. // // For example, if an initial request times out, followed by another request // with the same request ID, the server ignores the second request to prevent // the creation of duplicate commitments. // // The request ID must be a valid // [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) // A zero UUID (00000000-0000-0000-0000-000000000000) is not supported. string request_id = 4 [(google.api.field_behavior) = OPTIONAL]; } // Request message for [DataprocMetastore.UpdateMetadataImport][google.cloud.metastore.v1alpha.DataprocMetastore.UpdateMetadataImport]. message UpdateMetadataImportRequest { // Required. A field mask used to specify the fields to be overwritten in the // metadata import resource by the update. // Fields specified in the `update_mask` are relative to the resource (not // to the full request). A field is overwritten if it is in the mask. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The metadata import to update. The server only merges fields // in the import if they are specified in `update_mask`. // // The metadata import's `name` field is used to identify the metastore // import to be updated. MetadataImport metadata_import = 2 [(google.api.field_behavior) = REQUIRED]; // Optional. A request ID. Specify a unique request ID to allow the server to ignore the // request if it has completed. The server will ignore subsequent requests // that provide a duplicate request ID for at least 60 minutes after the first // request. // // For example, if an initial request times out, followed by another request // with the same request ID, the server ignores the second request to prevent // the creation of duplicate commitments. // // The request ID must be a valid // [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) // A zero UUID (00000000-0000-0000-0000-000000000000) is not supported. string request_id = 3 [(google.api.field_behavior) = OPTIONAL]; } // Represents the metadata of a long-running operation. message OperationMetadata { // Output only. The time the operation was created. google.protobuf.Timestamp create_time = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. The time the operation finished running. google.protobuf.Timestamp end_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Server-defined resource path for the target of the operation. string target = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Name of the verb executed by the operation. string verb = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Human-readable status of the operation, if any. string status_message = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Identifies whether the caller has requested cancellation // of the operation. Operations that have successfully been cancelled // have [Operation.error][] value with a [google.rpc.Status.code][google.rpc.Status.code] of 1, // corresponding to `Code.CANCELLED`. bool requested_cancellation = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. API version used to start the operation. string api_version = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Metadata about the service in a location. message LocationMetadata { // A specification of a supported version of the Hive Metastore software. message HiveMetastoreVersion { // The semantic version of the Hive Metastore software. string version = 1; // Whether `version` will be chosen by the server if a metastore service is // created with a `HiveMetastoreConfig` that omits the `version`. bool is_default = 2; } // The versions of Hive Metastore that can be used when creating a new // metastore service in this location. The server guarantees that exactly one // `HiveMetastoreVersion` in the list will set `is_default`. repeated HiveMetastoreVersion supported_hive_metastore_versions = 1; }