controller

package
v0.396.0 Latest Latest
Warning

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

Go to latest
Published: Nov 7, 2024 License: Apache-2.0 Imports: 69 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Start

func Start(
	ctx context.Context,
	config Config,
	runnerScaling scaling.RunnerScaling,
	cm *cf.Manager[configuration.Configuration],
	sm *cf.Manager[configuration.Secrets],
	conn *sql.DB,
	devel bool,
) error

Start the Controller. Blocks until the context is cancelled.

Types

type CommonConfig added in v0.162.0

type CommonConfig struct {
	AllowOrigins   []*url.URL    `help:"Allow CORS requests to ingress endpoints from these origins." env:"FTL_CONTROLLER_ALLOW_ORIGIN"`
	AllowHeaders   []string      `help:"Allow these headers in CORS requests. (Requires AllowOrigins)" env:"FTL_CONTROLLER_ALLOW_HEADERS"`
	NoConsole      bool          `help:"Disable the console."`
	IdleRunners    int           `help:"Number of idle runners to keep around (not supported in production)." default:"3"`
	WaitFor        []string      `help:"Wait for these modules to be deployed before becoming ready." placeholder:"MODULE"`
	CronJobTimeout time.Duration `help:"Timeout for cron jobs." default:"5m"`
}

CommonConfig between the production controller and development server.

func (*CommonConfig) Validate added in v0.281.9

func (c *CommonConfig) Validate() error

type Config

type Config struct {
	Bind                         *url.URL            `help:"Socket to bind to." default:"http://127.0.0.1:8892" env:"FTL_CONTROLLER_BIND"`
	IngressBind                  *url.URL            `help:"Socket to bind to for ingress." default:"http://127.0.0.1:8891" env:"FTL_CONTROLLER_INGRESS_BIND"`
	Key                          model.ControllerKey `help:"Controller key (auto)." placeholder:"KEY"`
	DSN                          string              `help:"DAL DSN." default:"${dsn}" env:"FTL_CONTROLLER_DSN"`
	Advertise                    *url.URL            `` /* 146-byte string literal not displayed */
	ConsoleURL                   *url.URL            `help:"The public URL of the console (for CORS)." env:"FTL_CONTROLLER_CONSOLE_URL"`
	ContentTime                  time.Time           `help:"Time to use for console resource timestamps." default:"${timestamp=1970-01-01T00:00:00Z}"`
	RunnerTimeout                time.Duration       `help:"Runner heartbeat timeout." default:"10s"`
	ControllerTimeout            time.Duration       `help:"Controller heartbeat timeout." default:"10s"`
	DeploymentReservationTimeout time.Duration       `help:"Deployment reservation timeout." default:"120s"`
	ModuleUpdateFrequency        time.Duration       `help:"Frequency to send module updates." default:"30s"`
	EventLogRetention            *time.Duration      `help:"Delete call logs after this time period. 0 to disable" env:"FTL_EVENT_LOG_RETENTION" default:"24h"`
	ArtefactChunkSize            int                 `help:"Size of each chunk streamed to the client." default:"1048576"`
	KMSURI                       *string             `help:"URI for KMS key e.g. with fake-kms:// or aws-kms://arn:aws:kms:ap-southeast-2:12345:key/0000-1111" env:"FTL_KMS_URI"`
	MaxOpenDBConnections         int                 `help:"Maximum number of database connections." default:"20" env:"FTL_MAX_OPEN_DB_CONNECTIONS"`
	MaxIdleDBConnections         int                 `help:"Maximum number of idle database connections." default:"20" env:"FTL_MAX_IDLE_DB_CONNECTIONS"`
	CommonConfig
}

func (*Config) OpenDBAndInstrument added in v0.369.0

func (c *Config) OpenDBAndInstrument() (*sql.DB, error)

func (*Config) SetDefaults added in v0.19.0

func (c *Config) SetDefaults()

type ControllerListListener added in v0.170.0

type ControllerListListener interface {
	UpdatedControllerList(ctx context.Context, controllers []dalmodel.Controller)
}

ControllerListListener is regularly notified of the current list of controllers This is often used to update a hash ring to distribute work.

type Route added in v0.365.0

type Route struct {
	Module     string
	Deployment model.DeploymentKey
	Endpoint   string
}

func (Route) String added in v0.365.0

func (r Route) String() string

type Service

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

func New

func New(
	ctx context.Context,
	conn *sql.DB,
	cm *cf.Manager[configuration.Configuration],
	sm *cf.Manager[configuration.Secrets],
	config Config,
	devel bool,
	runnerScaling scaling.RunnerScaling,
) (*Service, error)

func (*Service) AcquireLease added in v0.199.0

AcquireLease acquires a lease on behalf of a module.

This is a bidirectional stream where each request from the client must be responded to with an empty response.

func (*Service) AsyncCallWasAdded added in v0.244.0

func (s *Service) AsyncCallWasAdded(ctx context.Context)

AsyncCallWasAdded is an optional notification that an async call was added by this controller

It allows us to speed up execution of scheduled async calls rather than waiting for the next poll time.

func (*Service) Call

func (*Service) GetModuleContext added in v0.182.0

GetModuleContext retrieves config, secrets and DSNs for a module.

func (*Service) Ping

func (*Service) ProcessList added in v0.14.0

func (*Service) PublishEvent added in v0.239.0

func (*Service) ResetSubscription added in v0.312.0

func (*Service) ServeHTTP

func (s *Service) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*Service) UpdateDeploy

Directories

Path Synopsis
dal
Package dal provides a data abstraction layer for the Controller
Package dal provides a data abstraction layer for the Controller
api
Package scheduledtask implements a task scheduler.
Package scheduledtask implements a task scheduler.
sql
migrate
Package migrate supports a dbmate-compatible superset of migration files.
Package migrate supports a dbmate-compatible superset of migration files.

Jump to

Keyboard shortcuts

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