mirror of
https://github.com/status-im/consul.git
synced 2025-01-10 05:45:46 +00:00
13da1a5285
* Stub Config Entries for Consul Native API Gateway (#15644) * Add empty InlineCertificate struct and protobuf * apigateway stubs * Stub HTTPRoute in api pkg * Stub HTTPRoute in structs pkg * Simplify api.APIGatewayConfigEntry to be consistent w/ other entries * Update makeConfigEntry switch, add docstring for HTTPRouteConfigEntry * Add TCPRoute to MakeConfigEntry, return unique Kind * Stub BoundAPIGatewayConfigEntry in agent * Add RaftIndex to APIGatewayConfigEntry stub * Add new config entry kinds to validation allow-list * Add RaftIndex to other added config entry stubs * Update usage metrics assertions to include new cfg entries * Add Meta and acl.EnterpriseMeta to all new ConfigEntry types * Remove unnecessary Services field from added config entry types * Implement GetMeta(), GetEnterpriseMeta() for added config entry types * Add meta field to proto, name consistently w/ existing config entries * Format config_entry.proto * Add initial implementation of CanRead + CanWrite for new config entry types * Add unit tests for decoding of new config entry types * Add unit tests for parsing of new config entry types * Add unit tests for API Gateway config entry ACLs * Return typed PermissionDeniedError on BoundAPIGateway CanWrite * Add unit tests for added config entry ACLs * Add BoundAPIGateway type to AllConfigEntryKinds * Return proper kind from BoundAPIGateway * Add docstrings for new config entry types * Add missing config entry kinds to proto def * Update usagemetrics_oss_test.go * Use utility func for returning PermissionDeniedError * EventPublisher subscriptions for Consul Native API Gateway (#15757) * Create new event topics in subscribe proto * Add tests for PBSubscribe func * Make configs singular, add all configs to PBToStreamSubscribeRequest * Add snapshot methods * Add config_entry_events tests * Add config entry kind to topic for new configs * Add unit tests for snapshot methods * Start adding integration test * Test using the new controller code * Update agent/consul/state/config_entry_events.go * Check value of error * Add controller stubs for API Gateway (#15837) * update initial stub implementation * move files, clean up mutex references * Remove embed, use idiomatic names for constructors * Remove stray file introduced in merge * Add APIGateway validation (#15847) * Add APIGateway validation * Add additional validations * Add cert ref validation * Add protobuf definitions * Fix up field types * Add API structs * Move struct fields around a bit * APIGateway InlineCertificate validation (#15856) * Add APIGateway validation * Add additional validations * Add protobuf definitions * Tabs to spaces * Add API structs * Move struct fields around a bit * Add validation for InlineCertificate * Fix ACL test * APIGateway BoundAPIGateway validation (#15858) * Add APIGateway validation * Add additional validations * Add cert ref validation * Add protobuf definitions * Fix up field types * Add API structs * Move struct fields around a bit * Add validation for BoundAPIGateway * APIGateway TCPRoute validation (#15855) * Add APIGateway validation * Add additional validations * Add cert ref validation * Add protobuf definitions * Fix up field types * Add API structs * Add TCPRoute normalization and validation * Add forgotten Status * Add some more field docs in api package * Fix test * Format imports * Rename snapshot test variable names * Add plumbing for Native API GW Subscriptions (#16003) Co-authored-by: Sarah Alsmiller <sarah.alsmiller@hashicorp.com> Co-authored-by: Nathan Coleman <nathan.coleman@hashicorp.com> Co-authored-by: sarahalsmiller <100602640+sarahalsmiller@users.noreply.github.com> Co-authored-by: Andrew Stucki <andrew.stucki@hashicorp.com>
133 lines
4.0 KiB
Go
133 lines
4.0 KiB
Go
package api
|
|
|
|
// TCPRouteConfigEntry -- TODO stub
|
|
type TCPRouteConfigEntry struct {
|
|
// Kind of the config entry. This should be set to api.TCPRoute.
|
|
Kind string
|
|
|
|
// Name is used to match the config entry with its associated tcp-route
|
|
// service. This should match the name provided in the service definition.
|
|
Name string
|
|
|
|
// Parents is a list of gateways that this route should be bound to.
|
|
Parents []ResourceReference
|
|
// Services is a list of TCP-based services that this should route to.
|
|
// Currently, this must specify at maximum one service.
|
|
Services []TCPService
|
|
|
|
Meta map[string]string `json:",omitempty"`
|
|
|
|
// Status is the asynchronous status which a TCPRoute propagates to the user.
|
|
Status ConfigEntryStatus
|
|
|
|
// 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
|
|
|
|
// 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"`
|
|
}
|
|
|
|
func (a *TCPRouteConfigEntry) GetKind() string {
|
|
return TCPRoute
|
|
}
|
|
|
|
func (a *TCPRouteConfigEntry) GetName() string {
|
|
if a != nil {
|
|
return ""
|
|
}
|
|
return a.Name
|
|
}
|
|
|
|
func (a *TCPRouteConfigEntry) GetPartition() string {
|
|
if a != nil {
|
|
return ""
|
|
}
|
|
return a.Partition
|
|
}
|
|
|
|
func (a *TCPRouteConfigEntry) GetNamespace() string {
|
|
if a != nil {
|
|
return ""
|
|
}
|
|
return a.GetNamespace()
|
|
}
|
|
|
|
func (a *TCPRouteConfigEntry) GetMeta() map[string]string {
|
|
if a != nil {
|
|
return nil
|
|
}
|
|
return a.GetMeta()
|
|
}
|
|
|
|
func (a *TCPRouteConfigEntry) GetCreateIndex() uint64 {
|
|
return a.CreateIndex
|
|
}
|
|
|
|
func (a *TCPRouteConfigEntry) GetModifyIndex() uint64 {
|
|
return a.ModifyIndex
|
|
}
|
|
|
|
// TCPService is a service reference for a TCPRoute
|
|
type TCPService struct {
|
|
Name string
|
|
// Weight specifies the proportion of requests forwarded to the referenced service.
|
|
// This is computed as weight/(sum of all weights in the list of services).
|
|
Weight int
|
|
|
|
// 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"`
|
|
}
|
|
|
|
// HTTPRouteConfigEntry manages the configuration for a HTTP route
|
|
// with the given name.
|
|
type HTTPRouteConfigEntry struct {
|
|
// Kind of the config entry. This should be set to api.HTTPRoute.
|
|
Kind string
|
|
|
|
// Name is used to match the config entry with its associated http-route.
|
|
Name string
|
|
|
|
Meta map[string]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
|
|
|
|
// 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"`
|
|
}
|
|
|
|
func (r *HTTPRouteConfigEntry) GetKind() string { return HTTPRoute }
|
|
func (r *HTTPRouteConfigEntry) GetName() string { return r.Name }
|
|
func (r *HTTPRouteConfigEntry) GetPartition() string { return r.Partition }
|
|
func (r *HTTPRouteConfigEntry) GetNamespace() string { return r.Namespace }
|
|
func (r *HTTPRouteConfigEntry) GetMeta() map[string]string { return r.Meta }
|
|
func (r *HTTPRouteConfigEntry) GetCreateIndex() uint64 { return r.CreateIndex }
|
|
func (r *HTTPRouteConfigEntry) GetModifyIndex() uint64 { return r.ModifyIndex }
|