Help us shape the future of Go! Take the 2026 Go Developer Survey

operations

package
v2.7.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 25, 2026 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ArcherAPI

type ArcherAPI struct {
	Middleware func(middleware.Builder) http.Handler

	// BasicAuthenticator generates a runtime.Authenticator from the supplied basic auth function.
	// It has a default implementation in the security package, however you can replace it for your particular usage.
	BasicAuthenticator func(security.UserPassAuthentication) runtime.Authenticator

	// APIKeyAuthenticator generates a runtime.Authenticator from the supplied token auth function.
	// It has a default implementation in the security package, however you can replace it for your particular usage.
	APIKeyAuthenticator func(string, string, security.TokenAuthentication) runtime.Authenticator

	// BearerAuthenticator generates a runtime.Authenticator from the supplied bearer token auth function.
	// It has a default implementation in the security package, however you can replace it for your particular usage.
	BearerAuthenticator func(string, security.ScopedTokenAuthentication) runtime.Authenticator

	// JSONConsumer registers a consumer for the following mime types:
	//   - application/json
	JSONConsumer runtime.Consumer

	// JSONProducer registers a producer for the following mime types:
	//   - application/json
	JSONProducer runtime.Producer

	// XAuthTokenAuth registers a function that takes a token and returns a principal
	// it performs authentication based on an api key X-Auth-Token provided in the header
	XAuthTokenAuth func(string) (any, error)

	// APIAuthorizer provides access control (ACL/RBAC/ABAC) by providing access to the request and authenticated principal
	APIAuthorizer runtime.Authorizer

	// EndpointDeleteEndpointEndpointIDHandler sets the operation handler for the delete endpoint endpoint ID operation
	EndpointDeleteEndpointEndpointIDHandler endpoint.DeleteEndpointEndpointIDHandler
	// QuotaDeleteQuotasProjectIDHandler sets the operation handler for the delete quotas project ID operation
	QuotaDeleteQuotasProjectIDHandler quota.DeleteQuotasProjectIDHandler
	// RbacDeleteRbacPoliciesRbacPolicyIDHandler sets the operation handler for the delete rbac policies rbac policy ID operation
	RbacDeleteRbacPoliciesRbacPolicyIDHandler rbac.DeleteRbacPoliciesRbacPolicyIDHandler
	// ServiceDeleteServiceServiceIDHandler sets the operation handler for the delete service service ID operation
	ServiceDeleteServiceServiceIDHandler service.DeleteServiceServiceIDHandler
	// VersionGetHandler sets the operation handler for the get operation
	VersionGetHandler version.GetHandler
	// AgentGetAgentsHandler sets the operation handler for the get agents operation
	AgentGetAgentsHandler agent.GetAgentsHandler
	// AgentGetAgentsAgentHostHandler sets the operation handler for the get agents agent host operation
	AgentGetAgentsAgentHostHandler agent.GetAgentsAgentHostHandler
	// EndpointGetEndpointHandler sets the operation handler for the get endpoint operation
	EndpointGetEndpointHandler endpoint.GetEndpointHandler
	// EndpointGetEndpointEndpointIDHandler sets the operation handler for the get endpoint endpoint ID operation
	EndpointGetEndpointEndpointIDHandler endpoint.GetEndpointEndpointIDHandler
	// QuotaGetQuotasHandler sets the operation handler for the get quotas operation
	QuotaGetQuotasHandler quota.GetQuotasHandler
	// QuotaGetQuotasDefaultsHandler sets the operation handler for the get quotas defaults operation
	QuotaGetQuotasDefaultsHandler quota.GetQuotasDefaultsHandler
	// QuotaGetQuotasProjectIDHandler sets the operation handler for the get quotas project ID operation
	QuotaGetQuotasProjectIDHandler quota.GetQuotasProjectIDHandler
	// RbacGetRbacPoliciesHandler sets the operation handler for the get rbac policies operation
	RbacGetRbacPoliciesHandler rbac.GetRbacPoliciesHandler
	// RbacGetRbacPoliciesRbacPolicyIDHandler sets the operation handler for the get rbac policies rbac policy ID operation
	RbacGetRbacPoliciesRbacPolicyIDHandler rbac.GetRbacPoliciesRbacPolicyIDHandler
	// ServiceGetServiceHandler sets the operation handler for the get service operation
	ServiceGetServiceHandler service.GetServiceHandler
	// ServiceGetServiceServiceIDHandler sets the operation handler for the get service service ID operation
	ServiceGetServiceServiceIDHandler service.GetServiceServiceIDHandler
	// ServiceGetServiceServiceIDEndpointsHandler sets the operation handler for the get service service ID endpoints operation
	ServiceGetServiceServiceIDEndpointsHandler service.GetServiceServiceIDEndpointsHandler
	// EndpointPostEndpointHandler sets the operation handler for the post endpoint operation
	EndpointPostEndpointHandler endpoint.PostEndpointHandler
	// RbacPostRbacPoliciesHandler sets the operation handler for the post rbac policies operation
	RbacPostRbacPoliciesHandler rbac.PostRbacPoliciesHandler
	// ServicePostServiceHandler sets the operation handler for the post service operation
	ServicePostServiceHandler service.PostServiceHandler
	// ServicePostServiceServiceIDMigrateHandler sets the operation handler for the post service service ID migrate operation
	ServicePostServiceServiceIDMigrateHandler service.PostServiceServiceIDMigrateHandler
	// EndpointPutEndpointEndpointIDHandler sets the operation handler for the put endpoint endpoint ID operation
	EndpointPutEndpointEndpointIDHandler endpoint.PutEndpointEndpointIDHandler
	// QuotaPutQuotasProjectIDHandler sets the operation handler for the put quotas project ID operation
	QuotaPutQuotasProjectIDHandler quota.PutQuotasProjectIDHandler
	// RbacPutRbacPoliciesRbacPolicyIDHandler sets the operation handler for the put rbac policies rbac policy ID operation
	RbacPutRbacPoliciesRbacPolicyIDHandler rbac.PutRbacPoliciesRbacPolicyIDHandler
	// ServicePutServiceServiceIDHandler sets the operation handler for the put service service ID operation
	ServicePutServiceServiceIDHandler service.PutServiceServiceIDHandler
	// ServicePutServiceServiceIDAcceptEndpointsHandler sets the operation handler for the put service service ID accept endpoints operation
	ServicePutServiceServiceIDAcceptEndpointsHandler service.PutServiceServiceIDAcceptEndpointsHandler
	// ServicePutServiceServiceIDRejectEndpointsHandler sets the operation handler for the put service service ID reject endpoints operation
	ServicePutServiceServiceIDRejectEndpointsHandler service.PutServiceServiceIDRejectEndpointsHandler

	// ServeError is called when an error is received, there is a default handler
	// but you can set your own with this
	ServeError func(http.ResponseWriter, *http.Request, error)

	// PreServerShutdown is called before the HTTP(S) server is shutdown
	// This allows for custom functions to get executed before the HTTP(S) server stops accepting traffic
	PreServerShutdown func()

	// ServerShutdown is called when the HTTP(S) server is shut down and done
	// handling all active connections and does not accept connections any more
	ServerShutdown func()

	// Custom command line argument groups with their descriptions
	CommandLineOptionsGroups []swag.CommandLineOptionsGroup

	// User defined logger function.
	Logger func(string, ...any)
	// contains filtered or unexported fields
}

ArcherAPI # Documentation Archer is an OpenStack-style API service that privately connects services across [OpenStack Networks](https://docs.openstack.org/neutron/latest/admin/intro-os-networking.html). Consumers pick a *service* from a catalog and **inject** it into their own network — the service becomes reachable through a private IP, without exposing either network to the other.

Archer integrates with *OpenStack Keystone* for authentication and *OpenStack Neutron* for network and port management.

### Concepts Archer exposes two resource types:

* **Services** — private or public services registered in Archer. They are reached by creating an endpoint. * **Endpoints** — IP endpoints in a local network that transparently forward to a service living in another private network.

### Features * Multi-tenant via OpenStack Identity * OpenStack `policy.json` access policies * Prometheus exporter * Rate limiting and CORS * CADF-compatible audit trail * Sentry error reporting * OpenStack-style CLI client (`archerctl`)

### Supported Backends * **F5 BigIP** — provisioned via the `archer-f5-agent` * **Network Injection** — the `archer-ni-agent`, using HAProxy inside Linux network namespaces; works alongside `openvswitch-agent` or `linuxbridge-agent`

### Requirements * PostgreSQL * OpenStack Keystone * OpenStack Neutron

## API properties Archer exposes a RESTful HTTP API.

#### Request / Response format Requests and responses use JSON. `POST` requests must set `Content-Type: application/json`; responses always come back with `Content-Type: application/json`.

#### Authentication Archer uses OpenStack Keystone. Requests must include a Keystone token in the `X-Auth-Token` header. Because the project ID is derived from the token, `project_id` is not required on create requests.

#### Pagination List operations return a bounded number of items. Navigate the collection with URI parameters:

``` ?limit=100&marker=1234&page_reverse=False ```

* `marker` — the ID of the last item from the previous page * `limit` — page size (clamped to the deployment maximum) * `page_reverse` — reverse pagination direction

Responses include atom `next` and `previous` links. The final forward page has no `next`; the final reverse page has no `previous`. Deployments advertise pagination support through the `pagination` capability on the API detail endpoint.

#### Sorting Use `sort` with a comma-separated list of keys, in priority order. Prefix a key with `-` to sort descending:

``` ?sort=key1,-key2,key3 ```

Sort support is advertised through the `sort` capability on the API detail endpoint.

#### Filtering by tags Most resources (services, endpoints, …) accept tags. Archer supports four tag filters on list operations:

* `tags` — entities that have **all** the given tags * `tags-any` — entities that have **any** of the given tags * `not-tags` — entities that do **not** have all of the given tags * `not-tags-any` — entities that do **not** have any of the given tags

Each tag is limited to 64 characters. Filters can be combined:

``` ?tags=red,blue&tags-any=green,orange ```

#### Response Codes (Faults)

| Code | Description | | ----- | ----------------- | | 400 | Validation error | | 401 | Unauthorized | | 403 | Policy denies the action, or the project is over quota | | 404 | Resource not found | | 409 | Conflict | | 422 | Unprocessable Entity | | 429 | Rate limit exceeded | | 500 | Internal server error |

## Endpoint identification

Archer supports the Proxy Protocol v2 for endpoint identification.

The Proxy Protocol is a widely used protocol for passing client connection information through a load balancer to the backend server. It is used to identify the original client IP address and port number. The Proxy Protocol v2 is a binary protocol that is more efficient than the original text-based Proxy Protocol v1.

The proxy protocol header also includes the ID of the endpoint. This information is encoded using a custom Type-Length-Value (TLV) vector as follows.

| Field | Length (Octets) | Description | | ----- | --------------- | -------------------------------------------------------------- | | Type | 1 | PP2_TYPE_SAPCC (0xEC) | | Length| 2 | Length of the value (UUIDv4 is always 36 byte as ASCII string) | | Value | 36 | ASCII UUID of the endpoint |

func NewArcherAPI

func NewArcherAPI(spec *loads.Document) *ArcherAPI

NewArcherAPI creates a new Archer instance

func (*ArcherAPI) AddMiddlewareFor

func (o *ArcherAPI) AddMiddlewareFor(method, path string, builder middleware.Builder)

AddMiddlewareFor adds a http middleware to existing handler

func (*ArcherAPI) AuthenticatorsFor

func (o *ArcherAPI) AuthenticatorsFor(schemes map[string]spec.SecurityScheme) map[string]runtime.Authenticator

AuthenticatorsFor gets the authenticators for the specified security schemes

func (*ArcherAPI) Authorizer

func (o *ArcherAPI) Authorizer() runtime.Authorizer

Authorizer returns the registered authorizer

func (*ArcherAPI) ConsumersFor

func (o *ArcherAPI) ConsumersFor(mediaTypes []string) map[string]runtime.Consumer

ConsumersFor gets the consumers for the specified media types.

MIME type parameters are ignored here.

func (*ArcherAPI) Context

func (o *ArcherAPI) Context() *middleware.Context

Context returns the middleware context for the archer API

func (*ArcherAPI) DefaultConsumes

func (o *ArcherAPI) DefaultConsumes() string

DefaultConsumes returns the default consumes media type

func (*ArcherAPI) DefaultProduces

func (o *ArcherAPI) DefaultProduces() string

DefaultProduces returns the default produces media type

func (*ArcherAPI) Formats

func (o *ArcherAPI) Formats() strfmt.Registry

Formats returns the registered string formats

func (*ArcherAPI) HandlerFor

func (o *ArcherAPI) HandlerFor(method, path string) (http.Handler, bool)

HandlerFor gets a http.Handler for the provided operation method and path

func (*ArcherAPI) Init

func (o *ArcherAPI) Init()

Init allows you to just initialize the handler cache, you can then recompose the middleware as you see fit

func (*ArcherAPI) ProducersFor

func (o *ArcherAPI) ProducersFor(mediaTypes []string) map[string]runtime.Producer

ProducersFor gets the producers for the specified media types.

MIME type parameters are ignored here.

func (*ArcherAPI) RegisterConsumer

func (o *ArcherAPI) RegisterConsumer(mediaType string, consumer runtime.Consumer)

RegisterConsumer allows you to add (or override) a consumer for a media type.

func (*ArcherAPI) RegisterFormat

func (o *ArcherAPI) RegisterFormat(name string, format strfmt.Format, validator strfmt.Validator)

RegisterFormat registers a custom format validator

func (*ArcherAPI) RegisterProducer

func (o *ArcherAPI) RegisterProducer(mediaType string, producer runtime.Producer)

RegisterProducer allows you to add (or override) a producer for a media type.

func (*ArcherAPI) Serve

func (o *ArcherAPI) Serve(builder middleware.Builder) http.Handler

Serve creates a http handler to serve the API over HTTP can be used directly in http.ListenAndServe(":8000", api.Serve(nil))

func (*ArcherAPI) ServeErrorFor

func (o *ArcherAPI) ServeErrorFor(operationID string) func(http.ResponseWriter, *http.Request, error)

ServeErrorFor gets a error handler for a given operation id

func (*ArcherAPI) SetDefaultConsumes

func (o *ArcherAPI) SetDefaultConsumes(mediaType string)

SetDefaultConsumes returns the default consumes media type

func (*ArcherAPI) SetDefaultProduces

func (o *ArcherAPI) SetDefaultProduces(mediaType string)

SetDefaultProduces sets the default produces media type

func (*ArcherAPI) SetSpec

func (o *ArcherAPI) SetSpec(spec *loads.Document)

SetSpec sets a spec that will be served for the clients.

func (*ArcherAPI) UseRedoc

func (o *ArcherAPI) UseRedoc()

UseRedoc for documentation at /docs

func (*ArcherAPI) UseSwaggerUI

func (o *ArcherAPI) UseSwaggerUI()

UseSwaggerUI for documentation at /docs

func (*ArcherAPI) Validate

func (o *ArcherAPI) Validate() error

Validate validates the registrations in the ArcherAPI

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL