github.com/cloudwan/edgelq-sdk@v1.15.4/limits/proto/v1alpha2/limit_pool.proto (about)

     1  syntax = "proto3";
     2  
     3  package ntt.limits.v1alpha2;
     4  
     5  import "edgelq-sdk/iam/proto/v1alpha2/organization.proto";
     6  import "edgelq-sdk/iam/proto/v1alpha2/project.proto";
     7  import "edgelq-sdk/meta/proto/v1alpha2/service.proto";
     8  import "google/api/resource.proto";
     9  import "goten-sdk/types/meta.proto";
    10  
    11  option go_package = "github.com/cloudwan/edgelq-sdk/limits/resources/v1alpha2/limit_pool;limit_pool";
    12  option java_multiple_files = true;
    13  option java_outer_classname = "LimitPoolProto";
    14  option java_package = "com.ntt.limits.pb.v1alpha2";
    15  
    16  // LimitPool represents a pool from which next LimitPool
    17  // or final Limit instances are allocated from. LimitPool
    18  // can either belong to a system (first pool, without parent) or
    19  // organization (which got pool from system or parent organization).
    20  // Size of child limit or limit pools must not exceed parent
    21  // limit pool.
    22  // LimitPool is in a way similar to Limit - it has scope and
    23  // associated resource but:
    24  // * LimitPool is non-final object. It cannot be used to
    25  // allocate resources directly. It need child Limit first. So
    26  // field with values in LimitPool are configured size, active
    27  // size and reserved. Fields in Limit are configured limit,
    28  // active limit and usage - they need different interpretation.
    29  // * LimitPool is not regional, because it may feed limits in
    30  // other regions. Limit has extra tracker in their final region
    31  // for state synchronization purpose.
    32  // Because LimitPool instances within one scope (system, organization)
    33  // are managed by primary region of that scope, changes in them
    34  // are done with only single transaction.
    35  // LimitPool instances cannot be created or deleted. They cannot be
    36  // also be modified (there are only some state fields controlled
    37  // by system). LimitPools are created/modified along with
    38  // PlanAssignment instances.
    39  message LimitPool {
    40    option (google.api.resource) = {
    41      type : "limits.edgelq.com/LimitPool"
    42      pattern : "limitPools/{limit_pool}"
    43      pattern : "organizations/{organization}/limitPools/{limit_pool}"
    44    };
    45  
    46    // Name of LimitPool
    47    string name = 1;
    48  
    49    // Referenced service
    50    string service = 2;
    51  
    52    // Referenced resource type
    53    string resource = 3;
    54  
    55    // Configured size of pool according to PlanAssignment instances
    56    // belonging to same scope (system or organization).
    57    int64 configured_size = 4;
    58  
    59    // Active pool size. It will be normally equal to configured size.
    60    // However, if configured size goes down below reserved value,
    61    // then active size will be equal to that "reserved".
    62    // It will also prevent parent LimitPool (if any) from getting
    63    // limit value back.
    64    int64 active_size = 5;
    65  
    66    // Configured OR Active Size of all child Limit and LimitPool instances -
    67    // whichever is bigger.
    68    int64 reserved = 6;
    69  
    70    // LimitPool source that gave birth to this LimitPool. Any change
    71    // in configured/active value in current LimitPool increases/decreases
    72    // reserved field in source LimitPool.
    73    string source = 7;
    74  
    75    // Metadata
    76    goten.types.Meta metadata = 8;
    77  }