// Copyright 2021 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.networkmanagement.v1; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/cloud/networkmanagement/v1/connectivity_test.proto"; import "google/longrunning/operations.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; option csharp_namespace = "Google.Cloud.NetworkManagement.V1"; option go_package = "google.golang.org/genproto/googleapis/cloud/networkmanagement/v1;networkmanagement"; option java_multiple_files = true; option java_outer_classname = "ReachabilityServiceProto"; option java_package = "com.google.cloud.networkmanagement.v1"; option php_namespace = "Google\\Cloud\\NetworkManagement\\V1"; option ruby_package = "Google::Cloud::NetworkManagement::V1"; // The Reachability service in Google Cloud Network Management API // The Reachability service in the Google Cloud Network Management API provides // services that analyze the reachability within a single Google Virtual Private // Cloud (VPC) network, between peered VPC networks, between VPC and on-premises // networks, or between VPC networks and internet hosts. A reachability analysis // is based on Google Cloud network configurations. // // You can use the analysis results to verify these configurations and // to troubleshoot connectivity issues. service ReachabilityService { option (google.api.default_host) = "networkmanagement.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform"; // Lists all Connectivity Tests owned by a project. rpc ListConnectivityTests(ListConnectivityTestsRequest) returns (ListConnectivityTestsResponse) { option (google.api.http) = { get: "/v1/{parent=projects/*/locations/global}/connectivityTests" }; option (google.api.method_signature) = "parent"; } // Gets the details of a specific Connectivity Test. rpc GetConnectivityTest(GetConnectivityTestRequest) returns (ConnectivityTest) { option (google.api.http) = { get: "/v1/{name=projects/*/locations/global/connectivityTests/*}" }; option (google.api.method_signature) = "name"; } // Creates a new Connectivity Test. // After you create a test, the reachability analysis is performed as part // of the long running operation, which completes when the analysis completes. // // If the endpoint specifications in `ConnectivityTest` are invalid // (for example, containing non-existent resources in the network, or you // don't have read permissions to the network configurations of listed // projects), then the reachability result returns a value of `UNKNOWN`. // // If the endpoint specifications in `ConnectivityTest` are // incomplete, the reachability result returns a value of // AMBIGUOUS. For more information, // see the Connectivity Test documentation. rpc CreateConnectivityTest(CreateConnectivityTestRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{parent=projects/*/locations/global}/connectivityTests" body: "resource" }; option (google.api.method_signature) = "parent,test_id,resource"; option (google.longrunning.operation_info) = { response_type: "google.cloud.networkmanagement.v1.ConnectivityTest" metadata_type: "OperationMetadata" }; } // Updates the configuration of an existing `ConnectivityTest`. // After you update a test, the reachability analysis is performed as part // of the long running operation, which completes when the analysis completes. // The Reachability state in the test resource is updated with the new result. // // If the endpoint specifications in `ConnectivityTest` are invalid // (for example, they contain non-existent resources in the network, or the // user does not have read permissions to the network configurations of // listed projects), then the reachability result returns a value of // UNKNOWN. // // If the endpoint specifications in `ConnectivityTest` are incomplete, the // reachability result returns a value of `AMBIGUOUS`. See the documentation // in `ConnectivityTest` for for more details. rpc UpdateConnectivityTest(UpdateConnectivityTestRequest) returns (google.longrunning.Operation) { option (google.api.http) = { patch: "/v1/{resource.name=projects/*/locations/global/connectivityTests/*}" body: "resource" }; option (google.api.method_signature) = "update_mask,resource"; option (google.longrunning.operation_info) = { response_type: "google.cloud.networkmanagement.v1.ConnectivityTest" metadata_type: "OperationMetadata" }; } // Rerun an existing `ConnectivityTest`. // After the user triggers the rerun, the reachability analysis is performed // as part of the long running operation, which completes when the analysis // completes. // // Even though the test configuration remains the same, the reachability // result may change due to underlying network configuration changes. // // If the endpoint specifications in `ConnectivityTest` become invalid (for // example, specified resources are deleted in the network, or you lost // read permissions to the network configurations of listed projects), then // the reachability result returns a value of `UNKNOWN`. rpc RerunConnectivityTest(RerunConnectivityTestRequest) returns (google.longrunning.Operation) { option (google.api.http) = { post: "/v1/{name=projects/*/locations/global/connectivityTests/*}:rerun" body: "*" }; option (google.longrunning.operation_info) = { response_type: "google.cloud.networkmanagement.v1.ConnectivityTest" metadata_type: "OperationMetadata" }; } // Deletes a specific `ConnectivityTest`. rpc DeleteConnectivityTest(DeleteConnectivityTestRequest) returns (google.longrunning.Operation) { option (google.api.http) = { delete: "/v1/{name=projects/*/locations/global/connectivityTests/*}" }; option (google.api.method_signature) = "name"; option (google.longrunning.operation_info) = { response_type: "google.protobuf.Empty" metadata_type: "OperationMetadata" }; } } // Request for the `ListConnectivityTests` method. message ListConnectivityTestsRequest { // Required. The parent resource of the Connectivity Tests: // `projects/{project_id}/locations/global` string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Number of `ConnectivityTests` to return. int32 page_size = 2; // Page token from an earlier query, as returned in `next_page_token`. string page_token = 3; // Lists the `ConnectivityTests` that match the filter expression. A filter // expression filters the resources listed in the response. The expression // must be of the form ` ` where operators: `<`, `>`, // `<=`, // `>=`, // `!=`, `=`, `:` are supported (colon `:` represents a HAS operator which is // roughly synonymous with equality). can refer to a proto or JSON // field, or a synthetic field. Field names can be camelCase or snake_case. // // Examples: // - Filter by name: // name = "projects/proj-1/locations/global/connectivityTests/test-1 // // - Filter by labels: // - Resources that have a key called `foo` // labels.foo:* // - Resources that have a key called `foo` whose value is `bar` // labels.foo = bar string filter = 4; // Field to use to sort the list. string order_by = 5; } // Response for the `ListConnectivityTests` method. message ListConnectivityTestsResponse { // List of Connectivity Tests. repeated ConnectivityTest resources = 1; // Page token to fetch the next set of Connectivity Tests. string next_page_token = 2; // Locations that could not be reached (when querying all locations with `-`). repeated string unreachable = 3; } // Request for the `GetConnectivityTest` method. message GetConnectivityTestRequest { // Required. `ConnectivityTest` resource name using the form: // `projects/{project_id}/locations/global/connectivityTests/{test_id}` string name = 1 [(google.api.field_behavior) = REQUIRED]; } // Request for the `CreateConnectivityTest` method. message CreateConnectivityTestRequest { // Required. The parent resource of the Connectivity Test to create: // `projects/{project_id}/locations/global` string parent = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The logical name of the Connectivity Test in your project // with the following restrictions: // // * Must contain only lowercase letters, numbers, and hyphens. // * Must start with a letter. // * Must be between 1-40 characters. // * Must end with a number or a letter. // * Must be unique within the customer project string test_id = 2 [(google.api.field_behavior) = REQUIRED]; // Required. A `ConnectivityTest` resource ConnectivityTest resource = 3 [(google.api.field_behavior) = REQUIRED]; } // Request for the `UpdateConnectivityTest` method. message UpdateConnectivityTestRequest { // Required. Mask of fields to update. At least one path must be supplied in // this field. google.protobuf.FieldMask update_mask = 1 [(google.api.field_behavior) = REQUIRED]; // Required. Only fields specified in update_mask are updated. ConnectivityTest resource = 2 [(google.api.field_behavior) = REQUIRED]; } // Request for the `DeleteConnectivityTest` method. message DeleteConnectivityTestRequest { // Required. Connectivity Test resource name using the form: // `projects/{project_id}/locations/global/connectivityTests/{test_id}` string name = 1 [(google.api.field_behavior) = REQUIRED]; } // Request for the `RerunConnectivityTest` method. message RerunConnectivityTestRequest { // Required. Connectivity Test resource name using the form: // `projects/{project_id}/locations/global/connectivityTests/{test_id}` string name = 1 [(google.api.field_behavior) = REQUIRED]; } // Metadata describing an [Operation][google.longrunning.Operation] message OperationMetadata { // The time the operation was created. google.protobuf.Timestamp create_time = 1; // The time the operation finished running. google.protobuf.Timestamp end_time = 2; // Target of the operation - for example // projects/project-1/locations/global/connectivityTests/test-1 string target = 3; // Name of the verb executed by the operation. string verb = 4; // Human-readable status of the operation, if any. string status_detail = 5; // Specifies if cancellation was requested for the operation. bool cancel_requested = 6; // API version. string api_version = 7; }