app

package
v0.0.0-...-3b91d86 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2019 License: MIT Imports: 49 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultConfig = Config{
	Addr: ":8000",

	AssignmentPath: "assignments",

	CleanInactiveEvery: time.Hour,
	CheckExpiredEvery:  time.Minute,
	WebsocketTimeout:   time.Hour,
	InstanceExpire:     4 * time.Hour,

	AutoPullEvery:  time.Hour,
	AutoPullExpiry: 30 * time.Minute,

	PruneEvery: time.Hour,
}

DefaultConfig is the App's default configuration.

Functions

This section is empty.

Types

type App

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

App is the main application for uAssign.

func NewApp

func NewApp(config *Config, options ...Option) (*App, error)

NewApp creates a new app, with an optional list of options. This function does not open any connections, only setting up the app before Run is called.

func (*App) Run

func (a *App) Run() error

Run runs the app, opening docker/db/etc connections. This function blocks until an error occurs, or the app closes.

func (*App) Shutdown

func (a *App) Shutdown()

Shutdown gracefully shuts down the bot.

type Config

type Config struct {
	// Addr is the address where the app will run its HTTP/S server.
	Addr string

	// LetsEncryptDomain is the domain to obtain LetsEncrypt certs for.
	LetsEncryptDomain string
	// CertFile is a path to a certificate file for HTTPS.
	CertFile string
	// KeyFile is a path to a key file for HTTPS.
	KeyFile string

	// Database is the PostgreSQL database connection string.
	Database string
	// MigrateUp enables upward database migration at startup.
	MigrateUp bool
	// MigrateReset enables upward database migration via database reset at startup.
	MigrateReset bool

	// AssignmentPath is the path assignments are stored in. If relative,
	// then this will be relative to the current working directory.
	AssignmentPath string
	// StaticPath is the path to the static elements served at /static
	// by the app.
	StaticPath string

	// AESKey is a base64-encoded string containing the AES key.
	AESKey string

	// CleanInactiveEvery is the period at which the app will clean up
	// inactive images and containers.
	CleanInactiveEvery time.Duration
	// CheckExpiredEvery is the period at which the app will check for
	// active instances past their expiry time and stop them.
	CheckExpiredEvery time.Duration
	// WebsocketTimeout is the maximum duration a websocket can be
	// inactive before expiring.
	WebsocketTimeout time.Duration
	// InstanceExpire is the maximum duration an instance will be kept
	// on the server until it expires and a new instance must be created.
	InstanceExpire time.Duration
	// ForceInactive enables forced instance inactive marking at startup/shutdown.
	ForceInactive bool

	// DisableLimits disables Docker container limits.
	DisableLimits bool

	// DisableAutoPull disables automatic image pulling (for updates).
	DisableAutoPull bool
	// AutoPullEvery is the interval at which the server will attempt
	// to pull images that have been recently used (to keep them updated).
	AutoPullEvery time.Duration
	// AutoPullExpiry defines what the autopuller defines as "recent".
	AutoPullExpiry time.Duration

	// PruneEvery is the interval at which the server will prune docker.
	PruneEvery time.Duration

	// Debug enables debug routes.
	Debug bool

	// PProfToken is the token/password used for HTTP pprof connections.
	PProfToken string
}

Config is a set of human-readable configuration for the app.

func (Config) Verify

func (c Config) Verify() error

Verify verifies that the configuration is valid and usable.

type Option

type Option func(*App)

Option is a function that runs on an App to configure it.

func WithDockerClient

func WithDockerClient(cli client.CommonAPIClient) Option

WithDockerClient sets the docker client used in the app.

func WithLogger

func WithLogger(logger *zap.Logger) Option

WithLogger sets the logger used within the app. If not provided, DefaultLogger is used.

func WithSpewConfig

func WithSpewConfig(c *spew.ConfigState) Option

WithSpewConfig sets the spew config state used for various debugging endpoints in the app. If not provided, DefaultSpew is used.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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