123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- // Copyright 2022 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.appengine.v1;
- import "google/appengine/v1/network_settings.proto";
- option csharp_namespace = "Google.Cloud.AppEngine.V1";
- option go_package = "google.golang.org/genproto/googleapis/appengine/v1;appengine";
- option java_multiple_files = true;
- option java_outer_classname = "ServiceProto";
- option java_package = "com.google.appengine.v1";
- option php_namespace = "Google\\Cloud\\AppEngine\\V1";
- option ruby_package = "Google::Cloud::AppEngine::V1";
- // A Service resource is a logical component of an application that can share
- // state and communicate in a secure fashion with other services.
- // For example, an application that handles customer requests might
- // include separate services to handle tasks such as backend data
- // analysis or API requests from mobile devices. Each service has a
- // collection of versions that define a specific set of code used to
- // implement the functionality of that service.
- message Service {
- // Full path to the Service resource in the API.
- // Example: `apps/myapp/services/default`.
- //
- // @OutputOnly
- string name = 1;
- // Relative name of the service within the application.
- // Example: `default`.
- //
- // @OutputOnly
- string id = 2;
- // Mapping that defines fractional HTTP traffic diversion to
- // different versions within the service.
- TrafficSplit split = 3;
- // A set of labels to apply to this service. Labels are key/value pairs that
- // describe the service and all resources that belong to it (e.g.,
- // versions). The labels can be used to search and group resources, and are
- // propagated to the usage and billing reports, enabling fine-grain analysis
- // of costs. An example of using labels is to tag resources belonging to
- // different environments (e.g., "env=prod", "env=qa").
- //
- // <p>Label keys and values can be no longer than 63 characters and can only
- // contain lowercase letters, numeric characters, underscores, dashes, and
- // international characters. Label keys must start with a lowercase letter
- // or an international character. Each service can have at most 32 labels.
- map<string, string> labels = 4;
- // Ingress settings for this service. Will apply to all versions.
- NetworkSettings network_settings = 6;
- }
- // Traffic routing configuration for versions within a single service. Traffic
- // splits define how traffic directed to the service is assigned to versions.
- message TrafficSplit {
- // Available sharding mechanisms.
- enum ShardBy {
- // Diversion method unspecified.
- UNSPECIFIED = 0;
- // Diversion based on a specially named cookie, "GOOGAPPUID." The cookie
- // must be set by the application itself or no diversion will occur.
- COOKIE = 1;
- // Diversion based on applying the modulus operation to a fingerprint
- // of the IP address.
- IP = 2;
- // Diversion based on weighted random assignment. An incoming request is
- // randomly routed to a version in the traffic split, with probability
- // proportional to the version's traffic share.
- RANDOM = 3;
- }
- // Mechanism used to determine which version a request is sent to.
- // The traffic selection algorithm will
- // be stable for either type until allocations are changed.
- ShardBy shard_by = 1;
- // Mapping from version IDs within the service to fractional
- // (0.000, 1] allocations of traffic for that version. Each version can
- // be specified only once, but some versions in the service may not
- // have any traffic allocation. Services that have traffic allocated
- // cannot be deleted until either the service is deleted or
- // their traffic allocation is removed. Allocations must sum to 1.
- // Up to two decimal place precision is supported for IP-based splits and
- // up to three decimal places is supported for cookie-based splits.
- map<string, double> allocations = 2;
- }
|