controller

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 18, 2024 License: Apache-2.0 Imports: 61 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AgentAppId byte = 1

	AgentIdHeader      = 10
	AgentAddrHeader    = 11
	AgentIsVoterHeader = 12
)
View Source
const (
	DefaultProfileMemoryInterval             = 15 * time.Second
	DefaultHealthChecksBoltCheckInterval     = 30 * time.Second
	DefaultHealthChecksBoltCheckTimeout      = 20 * time.Second
	DefaultHealthChecksBoltCheckInitialDelay = 30 * time.Second

	DefaultRaftCommandHandlerMaxQueueSize = 1000

	// DefaultTlsHandshakeRateLimiterEnabled is whether the tls handshake rate limiter is enabled by default
	DefaultTlsHandshakeRateLimiterEnabled = false

	// TlsHandshakeRateLimiterMinSizeValue is the minimum size that can be configured for the tls handshake rate limiter
	// window range
	TlsHandshakeRateLimiterMinSizeValue = 5

	// TlsHandshakeRateLimiterMaxSizeValue is the maximum size that can be configured for the tls handshake rate limiter
	// window range
	TlsHandshakeRateLimiterMaxSizeValue = 10000

	// TlsHandshakeRateLimiterMetricOutstandingCount is the name of the metric tracking how many tasks are in process
	TlsHandshakeRateLimiterMetricOutstandingCount = "tls_handshake_limiter.in_process"

	// TlsHandshakeRateLimiterMetricCurrentWindowSize is the name of the metric tracking the current window size
	TlsHandshakeRateLimiterMetricCurrentWindowSize = "tls_handshake_limiter.window_size"

	// TlsHandshakeRateLimiterMetricWorkTimer is the name of the metric tracking how long successful tasks are taking to complete
	TlsHandshakeRateLimiterMetricWorkTimer = "tls_handshake_limiter.work_timer"

	// DefaultTlsHandshakeRateLimiterMaxWindow is the default max size for the tls handshake rate limiter
	DefaultTlsHandshakeRateLimiterMaxWindow = 1000
)
View Source
const (
	VersionV1 = "v1"

	RestApiV1 = "/" + VersionV1

	RestApiRootPath       = "/edge"
	ClientRestApiBase     = "/edge/client"
	ManagementRestApiBase = "/edge/management"

	LegacyClientRestApiBaseUrlV1 = RestApiRootPath + RestApiV1
	ClientRestApiBaseUrlV1       = ClientRestApiBase + RestApiV1
	ManagementRestApiBaseUrlV1   = ManagementRestApiBase + RestApiV1

	ClientRestApiBaseUrlLatest     = ClientRestApiBaseUrlV1
	ManagementRestApiBaseUrlLatest = ManagementRestApiBaseUrlV1

	ClientRestApiSpecUrl     = ClientRestApiBaseUrlLatest + "/swagger.json"
	ManagementRestApiSpecUrl = ManagementRestApiBaseUrlLatest + "/swagger.json"

	LegacyClientApiBinding = "edge"
	ClientApiBinding       = "edge-client"
	ManagementApiBinding   = "edge-management"
	OidcApiBinding         = "edge-oidc"
)

Variables

AllApiBindingVersions is a map of: API Binding -> Api Version -> API Path Adding values here will add them to the /versions REST API endpoint

Functions

This section is empty.

Types

type CertValidatingIdentity

type CertValidatingIdentity struct {
	identity.Identity
}

func (*CertValidatingIdentity) ClientTLSConfig

func (self *CertValidatingIdentity) ClientTLSConfig() *tls.Config

func (*CertValidatingIdentity) ServerTLSConfig

func (self *CertValidatingIdentity) ServerTLSConfig() *tls.Config

func (*CertValidatingIdentity) VerifyConnection

func (self *CertValidatingIdentity) VerifyConnection(state tls.ConnectionState) error

type Config

type Config struct {
	Id      *identity.TokenId
	Raft    *raft.Config
	Network *network.Options
	Db      boltz.Db
	Trace   struct {
		Handler *channel.TraceHandler
	}
	Profile struct {
		Memory struct {
			Path     string
			Interval time.Duration
		}
		CPU struct {
			Path string
		}
	}
	Ctrl struct {
		Listener transport.Address
		Options  *CtrlOptions
	}
	HealthChecks struct {
		BoltCheck struct {
			Interval     time.Duration
			Timeout      time.Duration
			InitialDelay time.Duration
		}
	}
	CommandRateLimiter      command.RateLimiterConfig
	TlsHandshakeRateLimiter command.AdaptiveRateLimiterConfig
	// contains filtered or unexported fields
}

func LoadConfig

func LoadConfig(path string) (*Config, error)

func (*Config) Configure

func (config *Config) Configure(sub config.Subconfig) error

type Controller

type Controller struct {
	// contains filtered or unexported fields
}

func NewController

func NewController(cfg *Config, versionProvider versions.VersionProvider) (*Controller, error)

func (*Controller) GetApiAddresses added in v0.34.2

func (c *Controller) GetApiAddresses() (map[string][]event.ApiAddress, []byte)

func (*Controller) GetCloseNotify

func (c *Controller) GetCloseNotify() <-chan struct{}

func (*Controller) GetCloseNotifyChannel

func (c *Controller) GetCloseNotifyChannel() <-chan struct{}

func (*Controller) GetCommandDispatcher

func (c *Controller) GetCommandDispatcher() command.Dispatcher

func (*Controller) GetCommandRateLimiterConfig added in v0.31.0

func (c *Controller) GetCommandRateLimiterConfig() command.RateLimiterConfig

func (*Controller) GetDb

func (c *Controller) GetDb() boltz.Db

func (*Controller) GetEventDispatcher

func (c *Controller) GetEventDispatcher() event.Dispatcher

func (*Controller) GetHelloHeaderProviders added in v0.34.2

func (c *Controller) GetHelloHeaderProviders() []mesh.HeaderProvider

func (*Controller) GetId

func (c *Controller) GetId() *identity.TokenId

func (*Controller) GetMetricsRegistry

func (c *Controller) GetMetricsRegistry() metrics.Registry

func (*Controller) GetNetwork

func (c *Controller) GetNetwork() *network.Network

func (*Controller) GetOptions

func (c *Controller) GetOptions() *network.Options

func (*Controller) GetPeerAddresses added in v0.34.0

func (c *Controller) GetPeerAddresses() []string

func (*Controller) GetPeerSigners

func (c *Controller) GetPeerSigners() []*x509.Certificate

func (*Controller) GetRaftConfig

func (c *Controller) GetRaftConfig() *raft.Config

func (*Controller) GetRaftIndex added in v0.34.0

func (c *Controller) GetRaftIndex() uint64

func (*Controller) GetRaftInfo added in v0.34.2

func (c *Controller) GetRaftInfo() (string, string, string)

func (*Controller) GetVersionProvider

func (c *Controller) GetVersionProvider() versions.VersionProvider

func (*Controller) GetXWebInstance

func (c *Controller) GetXWebInstance() xweb.Instance

func (*Controller) HandleCustomAgentAsyncOp

func (self *Controller) HandleCustomAgentAsyncOp(conn net.Conn) error

func (*Controller) Identity

func (c *Controller) Identity() identity.Identity

func (*Controller) InitializeRaftFromBoltDb

func (c *Controller) InitializeRaftFromBoltDb(sourceDbPath string) error

func (*Controller) IsRaftEnabled

func (c *Controller) IsRaftEnabled() bool

func (*Controller) IsRaftLeader added in v0.34.0

func (c *Controller) IsRaftLeader() bool

func (*Controller) RegisterAgentBindHandler

func (self *Controller) RegisterAgentBindHandler(bindHandler channel.BindHandler)

func (*Controller) RegisterXctrl

func (c *Controller) RegisterXctrl(x xctrl.Xctrl) error

func (*Controller) RegisterXmgmt

func (c *Controller) RegisterXmgmt(x xmgmt.Xmgmt) error

func (*Controller) RenderJsonConfig

func (c *Controller) RenderJsonConfig() (string, error)

func (*Controller) Run

func (c *Controller) Run() error

func (*Controller) Shutdown

func (c *Controller) Shutdown()

func (*Controller) TryInitializeRaftFromBoltDb

func (c *Controller) TryInitializeRaftFromBoltDb() error

type CtrlOptions

type CtrlOptions struct {
	*channel.Options
	NewListener            *transport.Address
	AdvertiseAddress       *transport.Address
	RouterHeartbeatOptions *channel.HeartbeatOptions
	PeerHeartbeatOptions   *channel.HeartbeatOptions
}

CtrlOptions extends channel.Options to include support for additional, non-channel specific options (e.g. NewListener)

type OnConnectCtrlAddressesUpdateHandler

type OnConnectCtrlAddressesUpdateHandler struct {
	// contains filtered or unexported fields
}

func NewOnConnectCtrlAddressesUpdateHandler

func NewOnConnectCtrlAddressesUpdateHandler(ctrlAddress string, raft *raft.Controller) *OnConnectCtrlAddressesUpdateHandler

func (OnConnectCtrlAddressesUpdateHandler) RouterConnected

func (o OnConnectCtrlAddressesUpdateHandler) RouterConnected(r *network.Router)

func (*OnConnectCtrlAddressesUpdateHandler) RouterDisconnected

func (o *OnConnectCtrlAddressesUpdateHandler) RouterDisconnected(r *network.Router)

type OnConnectSettingsHandler

type OnConnectSettingsHandler struct {
	// contains filtered or unexported fields
}

OnConnectSettingsHandler sends a ctrl_pb.ContentType_SettingsType message when routers connect if necessary Settings are a map of int32 -> []byte data. The type should be used to determine how the setting's []byte array is consumed.

func (OnConnectSettingsHandler) RouterConnected

func (o OnConnectSettingsHandler) RouterConnected(r *network.Router)

func (*OnConnectSettingsHandler) RouterDisconnected

func (o *OnConnectSettingsHandler) RouterDisconnected(r *network.Router)

Directories

Path Synopsis
internal
Package ioc provides a simple generics based registry which allows registering instance providers for a name and then instantiating instances, returning instances of the requested type.
Package ioc provides a simple generics based registry which allows registering instance providers for a name and then instantiating instances, returning instances of the requested type.
Package rest_server Ziti Fabric
Package rest_server Ziti Fabric
Package rest_util provides helper functions to generate a client for the Ziti Fabric REST APIs.
Package rest_util provides helper functions to generate a client for the Ziti Fabric REST APIs.

Jump to

Keyboard shortcuts

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