2023-03-28 20:12:41 +00:00
|
|
|
// Copyright (c) HashiCorp, Inc.
|
|
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
|
2023-03-15 18:21:24 +00:00
|
|
|
package api
|
|
|
|
|
2023-03-29 13:54:59 +00:00
|
|
|
type ReadWriteRatesConfig struct {
|
2023-10-19 16:28:53 +00:00
|
|
|
ReadRate float64 `alias:"read_rate"`
|
|
|
|
WriteRate float64 `alias:"write_rate"`
|
2023-03-15 18:21:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type RateLimitIPConfigEntry struct {
|
|
|
|
// Kind of the config entry. This will be set to structs.RateLimitIPConfig
|
|
|
|
Kind string
|
|
|
|
Name string
|
|
|
|
Mode string // {permissive, enforcing, disabled}
|
|
|
|
|
|
|
|
Meta map[string]string `json:",omitempty"`
|
|
|
|
// overall limits
|
2023-10-19 16:28:53 +00:00
|
|
|
ReadRate float64 `alias:"read_rate"`
|
|
|
|
WriteRate float64 `alias:"write_rate"`
|
2023-03-15 18:21:24 +00:00
|
|
|
|
|
|
|
//limits specific to a type of call
|
2023-06-07 18:50:22 +00:00
|
|
|
ACL *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryACL OperationCategory = "ACL"
|
|
|
|
Catalog *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryCatalog OperationCategory = "Catalog"
|
|
|
|
ConfigEntry *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryConfigEntry OperationCategory = "ConfigEntry"
|
|
|
|
ConnectCA *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryConnectCA OperationCategory = "ConnectCA"
|
|
|
|
Coordinate *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryCoordinate OperationCategory = "Coordinate"
|
|
|
|
DiscoveryChain *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryDiscoveryChain OperationCategory = "DiscoveryChain"
|
|
|
|
ServerDiscovery *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryServerDiscovery OperationCategory = "ServerDiscovery"
|
|
|
|
Health *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryHealth OperationCategory = "Health"
|
|
|
|
Intention *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryIntention OperationCategory = "Intention"
|
|
|
|
KV *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryKV OperationCategory = "KV"
|
|
|
|
Tenancy *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryPartition OperationCategory = "Tenancy"
|
|
|
|
PreparedQuery *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryPreparedQuery OperationCategory = "PreparedQuery"
|
|
|
|
Session *ReadWriteRatesConfig `json:",omitempty"` // OperationCategorySession OperationCategory = "Session"
|
|
|
|
Txn *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryTxn OperationCategory = "Txn"
|
|
|
|
AutoConfig *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryAutoConfig OperationCategory = "AutoConfig"
|
|
|
|
FederationState *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryFederationState OperationCategory = "FederationState"
|
|
|
|
Internal *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryInternal OperationCategory = "Internal"
|
|
|
|
PeerStream *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryPeerStream OperationCategory = "PeerStream"
|
|
|
|
Peering *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryPeering OperationCategory = "Peering"
|
|
|
|
DataPlane *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryDataPlane OperationCategory = "DataPlane"
|
|
|
|
DNS *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryDNS OperationCategory = "DNS"
|
|
|
|
Subscribe *ReadWriteRatesConfig `json:",omitempty"` // OperationCategorySubscribe OperationCategory = "Subscribe"
|
|
|
|
Resource *ReadWriteRatesConfig `json:",omitempty"` // OperationCategoryResource OperationCategory = "Resource"
|
2023-03-15 18:21:24 +00:00
|
|
|
|
|
|
|
// Partition is the partition the config entry is associated with.
|
|
|
|
// Partitioning is a Consul Enterprise feature.
|
|
|
|
Partition string `json:",omitempty"`
|
|
|
|
|
|
|
|
// Namespace is the namespace the config entry is associated with.
|
|
|
|
// Namespacing is a Consul Enterprise feature.
|
|
|
|
Namespace string `json:",omitempty"`
|
|
|
|
|
|
|
|
// CreateIndex is the Raft index this entry was created at. This is a
|
|
|
|
// read-only field.
|
|
|
|
CreateIndex uint64
|
|
|
|
|
|
|
|
// ModifyIndex is used for the Check-And-Set operations and can also be fed
|
|
|
|
// back into the WaitIndex of the QueryOptions in order to perform blocking
|
|
|
|
// queries.
|
|
|
|
ModifyIndex uint64
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *RateLimitIPConfigEntry) GetKind() string {
|
|
|
|
return RateLimitIPConfig
|
|
|
|
}
|
|
|
|
func (r *RateLimitIPConfigEntry) GetName() string {
|
|
|
|
if r == nil {
|
|
|
|
return ""
|
|
|
|
}
|
|
|
|
return r.Name
|
|
|
|
}
|
|
|
|
func (r *RateLimitIPConfigEntry) GetPartition() string {
|
|
|
|
return r.Partition
|
|
|
|
}
|
|
|
|
func (r *RateLimitIPConfigEntry) GetNamespace() string {
|
|
|
|
return r.Namespace
|
|
|
|
}
|
|
|
|
func (r *RateLimitIPConfigEntry) GetMeta() map[string]string {
|
|
|
|
if r == nil {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
return r.Meta
|
|
|
|
}
|
|
|
|
func (r *RateLimitIPConfigEntry) GetCreateIndex() uint64 {
|
|
|
|
return r.CreateIndex
|
|
|
|
}
|
|
|
|
func (r *RateLimitIPConfigEntry) GetModifyIndex() uint64 {
|
|
|
|
return r.ModifyIndex
|
|
|
|
}
|