runtime

package
v5.0.0-...-2679821 Latest Latest
Warning

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

Go to latest
Published: Jan 6, 2025 License: AGPL-3.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const (
	KeyName = "name"

	KeyBootstrapTpl      = "bootstrap_template"
	KeyBootstrapFile     = "bootstrap_file"
	KeyBootstrapRoot     = "bootstrap_root"
	KeyBootstrapYAML     = "bootstrap_yaml"
	KeyBootstrapSet      = "set"
	KeyBootstrapSetsFile = "sets"

	KeyCluster      = "cluster"
	KeyDiscovery    = "discovery"
	KeyRegistry     = "registry"
	KeyBroker       = "broker"
	KeyConfig       = "config"
	KeyVault        = "vault"
	KeyKeyring      = "keyring"
	KeyCertsStore   = "certs_store"
	KeyFork         = "fork"
	KeyForkLegacy   = "is_fork"
	KeyArgTags      = "tags"
	KeyArgExclude   = "exclude"
	KeyNodeCapacity = "cap"

	KeyAdvertiseAddress  = "advertise_address"
	KeyBindHost          = "bind_address"
	KeyGrpcDiscoveryPort = "grpc_discovery_port"
	KeyGrpcPort          = "grpc_port"
	KeyHttpPort          = "http_port"
	KeyGrpcExternal      = "grpc_external"

	KeySiteBind               = "site_bind"
	KeySiteExternal           = "site_external"
	KeySiteNoTLS              = "site_no_tls"
	KeySiteTlsCertFile        = "site_tls_cert_file"
	KeySiteTlsKeyFile         = "site_tls_key_file"
	KeySiteLetsEncryptEmail   = "site_le_email"
	KeySiteLetsEncryptAgree   = "site_le_agree"
	KeySiteLetsEncryptStaging = "site_le_staging"

	// Legacy versions without "site_" prefix
	KeySiteBindL               = "bind"
	KeySiteExternalL           = "external"
	KeySiteNoTLSL              = "no_tls"
	KeySiteTlsCertFileL        = "tls_cert_file"
	KeySiteTlsKeyFileL         = "tls_key_file"
	KeySiteLetsEncryptEmailL   = "le_email"
	KeySiteLetsEncryptAgreeL   = "le_agree"
	KeySiteLetsEncryptStagingL = "le_staging"

	KeyInstallCli       = "install_cli"
	KeyInstallYaml      = "install_yaml"
	KeyInstallJson      = "install_json"
	KeyInstallExitAfter = "exit_after_install"

	KeyInstallCliLegacy  = "cli"
	KeyInstallYamlLegacy = "yaml"
	KeyInstallJsonLegacy = "json"

	KeyLog       = "log"
	KeyLogJson   = "log_json"
	KeyLogToFile = "log_to_file"
	KeyLogSQL    = "log_sql"

	KeyHttpProxyURL  = "http_proxy"
	KeyHttpServer    = "http"
	HttpServerCaddy  = "caddy"
	HttpServerNative = "http"

	DefaultDiscoveryPort   = "8030"
	DefaultGrpcPort        = "0"
	DefaultBindingSitePort = "8080"
	DefaultHttpPort        = "0"

	DefaultConfigFileName  = "pydio.json"
	DefaultVaultFileName   = "pydio-vault.json"
	DefaultKeyringFileName = "cells-vault-key"
	DefaultCertStorePath   = "certs"

	DefaultConfigSuffix     = "/config"
	DefaultVaultSuffix      = "/vault"
	DefaultRegistrySuffix   = "/registry"
	DefaultBrokerSuffix     = "/broker"
	DefaultCacheSuffix      = "/cache"
	DefaultShortCacheSuffix = "/shortcache"
	DefaultQueueSuffix      = "/queue"

	// Deprecated keys - but env vars can still be read
	KeyEnableMetrics = "enable_metrics"
	KeyEnablePprof   = "enable_pprof"
)
View Source
const (
	NodeMetaPID          = "PID"
	NodeMetaParentPID    = "parentPID"
	NodeMetaMetrics      = "metrics"
	NodeMetaStartTag     = "start"
	NodeMetaForkStartTag = "forkStartTag"
	NodeMetaHostName     = "hostname"
	NodeMetaCapacities   = "capacities"
	NodeRootID           = "rootID"
	NodeMetaCluster      = "cluster"
)
View Source
const (
	NsMain      = "main"
	NsDiscovery = "discovery"
	NsInstall   = "install"
	NsConnReady = "conn-ready"
)

Variables

View Source
var (
	DefaultKeyDiscovery  = "mem://"
	DefaultKeyRegistry   = "mem://?cache=shared"
	DefaultKeyBroker     = "mem://"
	DefaultKeyConfig     = "file://" + filepath.ToSlash(filepath.Join(ApplicationWorkingDir(), DefaultConfigFileName))
	DefaultKeyKeyring    = "file://" + filepath.ToSlash(filepath.Join(ApplicationWorkingDir(), DefaultKeyringFileName)+"?keyring=true")
	DefaultKeyCertsStore = "file://" + filepath.ToSlash(filepath.Join(ApplicationWorkingDir(), DefaultCertStorePath))
	DefaultKeyVault      = "detect"
)
View Source
var (
	MultiContextKey = mCtxKey{}
)
View Source
var (
	ServiceNameKey = serviceNameKey{}
)

Functions

func AdvertiseHost

func AdvertiseHost() string

func ApplicationWorkingDir

func ApplicationWorkingDir(dirType ...ApplicationDirType) string

ApplicationWorkingDir creates a local file to store pydio system data

func AsCoreContext

func AsCoreContext(ctx context.Context) context.Context

func BindHost

func BindHost() string

func BrokerURL

func BrokerURL() string

BrokerURL returns the scheme://address url for Broker

func BuildForkParams

func BuildForkParams(cmd string) []string

BuildForkParams creates --key=value arguments from runtime parameters

func CertsStoreLocalLocation

func CertsStoreLocalLocation() string

func CertsStoreURL

func CertsStoreURL() string

func Cluster

func Cluster() string

func ConfigIsLocalFile

func ConfigIsLocalFile() bool

ConfigIsLocalFile checks if ConfigURL scheme is file

func ConfigURL

func ConfigURL() string

ConfigURL returns the scheme://address url for Config

func CoreBackground

func CoreBackground() context.Context

func DefaultAdvertiseAddress

func DefaultAdvertiseAddress() string

DefaultAdvertiseAddress reads or compute the address advertised to clients

func DiscoveryURL

func DiscoveryURL() string

DiscoveryURL returns the scheme://address url for Registry

func DocRegisteredEnvVariables

func DocRegisteredEnvVariables(excludes ...string) string

func GetBool

func GetBool(key string) bool

GetBool gets a key as boolean from global runtime

func GetClientConn

func GetClientConn(ctx context.Context) grpc.ClientConnInterface

GetClientConn returns the client connection from the context in argument

func GetHostname

func GetHostname() string

GetHostname wraps os.Hostname, could be overwritten by env or parameter.

func GetPID

func GetPID() string

GetPID wraps os.Getpid.

func GetPPID

func GetPPID() string

GetPPID wraps os.Getppid.

func GetServiceName

func GetServiceName(ctx context.Context) string

GetServiceName returns the service name associated to this context

func GetString

func GetString(key string) string

GetString gets a key from global runtime

func GetStringSlice

func GetStringSlice(key string) []string

GetStringSlice gets a slice from global runtime.

func GrpcBindAddress

func GrpcBindAddress() string

GrpcBindAddress returns the KeyBindHost:KeyGrpcPort URL

func GrpcDiscoveryBindAddress

func GrpcDiscoveryBindAddress() string

GrpcDiscoveryBindAddress returns the KeyBindHost:KeyGrpcDiscoveryPort URL

func GrpcExternalPort

func GrpcExternalPort() string

GrpcExternalPort returns optional GRPC port to be used for external binding

func HasCapacity

func HasCapacity(c string) bool

HasCapacity checks if a specific capacity is registered for the current process

func HttpBindAddress

func HttpBindAddress() string

HttpBindAddress returns the KeyBindHost:KeyHttpPort URL

func HttpServerType

func HttpServerType() string

HttpServerType returns one of HttpServerCaddy or HttpServerCore

func Init

func Init(ctx context.Context, typ string)

func IsCoreContext

func IsCoreContext(ctx context.Context) bool

func IsFork

func IsFork() bool

IsFork checks if the runtime is originally a fork of a different process

func IsGrpcScheme

func IsGrpcScheme(u string) bool

func IsRequired

func IsRequired(name string, tags ...string) bool

IsRequired checks arguments, --tags and --exclude against a service name

func IsSet

func IsSet(key string) bool

IsSet check existence of a key in runtime

func KeyringURL

func KeyringURL() string

func LastInitType

func LastInitType() string

func LogJSON

func LogJSON() bool

LogJSON returns the --log_json value

func LogLevel

func LogLevel() string

LogLevel returns the --log value

func LogToFile

func LogToFile() bool

LogToFile returns the --log_to_file value

func MatchDependencies

func MatchDependencies(ctx context.Context, rr map[string]string) error

MatchDependencies checks a list of known keys for specific runtime parameters. It is typically used to detect current-process aspects

func MultiMatches

func MultiMatches(ctx1, ctx2 context.Context) bool

MultiMatches compares two contexts

func MustServiceDataDir

func MustServiceDataDir(serviceName string) string

MustServiceDataDir returns the applicationdir/services/serviceName and ignore error it if it does not exists

func Name

func Name() string

Name returns the name for the node

func NeedsGrpcDiscoveryConn

func NeedsGrpcDiscoveryConn() (bool, string)

func ProcessRootID

func ProcessRootID() string

ProcessRootID retrieves a unique identifier for the current process

func ProcessStartTags

func ProcessStartTags() []string

ProcessStartTags returns a list of tags to be used for identifying processes

func ProxyServerURL

func ProxyServerURL() string

ProxyServerURL defines which proxy to use for serving Sites

func Register

func Register(typ string, y ...func(ctx context.Context))

func RegisterDependencyMatcher

func RegisterDependencyMatcher(key string, f func(context.Context, string) error)

RegisterDependencyMatcher adds a key-based dependency matcher to internal registry.

func RegisterEnvVariable

func RegisterEnvVariable(key, def, description string, isBool ...bool)

RegisterEnvVariable can be called by any contributor to declare environment variables for documentation purpose

func RegisterMultiContextManager

func RegisterMultiContextManager(m MultiContextProvider)

func RegisterPreRun

func RegisterPreRun(preRun func(runtime Runtime))

func RegistryURL

func RegistryURL() string

RegistryURL returns the scheme://address url for Registry

func ServiceDataDir

func ServiceDataDir(serviceName string) (string, error)

ServiceDataDir returns the applicationdir/services/serviceName and creates it if it does not exists

func SetArgs

func SetArgs(aa []string)

SetArgs copies command arguments to internal value

func SetDefault

func SetDefault(key string, value interface{})

SetDefault updates global runtime

func SetProcessRootID

func SetProcessRootID(id string)

SetProcessRootID passes a UUID for the current process

func SetRuntime

func SetRuntime(runtime Runtime)

SetRuntime sets internal global Runtime

func SetVaultMasterKey

func SetVaultMasterKey(masterKey string)

func TODOKnownEmpty

func TODOKnownEmpty(ctx context.Context) context.Context

func VaultURL

func VaultURL() string

func WithClientConn

func WithClientConn(ctx context.Context, reg grpc.ClientConnInterface) context.Context

WithClientConn links a client connection to the context

func WithServiceName

func WithServiceName(ctx context.Context, serviceName string) context.Context

WithServiceName returns a context which knows its service name

Types

type ApplicationDirType

type ApplicationDirType int
const (
	ApplicationDirData ApplicationDirType = iota
	ApplicationDirLogs
	ApplicationDirServices
)

type ContextProvider

type ContextProvider interface {
	ID() string
	Context(ctx context.Context) context.Context
}

type InfoGroup

type InfoGroup struct {
	Name  string
	Pairs []InfoPair
}

func Describe

func Describe() (out []InfoGroup)

Describe echoes the current runtime status

type InfoPair

type InfoPair struct {
	Key   string
	Value string
}

type MultiContextProvider

type MultiContextProvider interface {
	Current(ctx context.Context) string
	RootContext(ctx context.Context) context.Context
	Iterate(ctx context.Context, add func(context.Context, string) error) error
	Watch(ctx context.Context, add func(context.Context, string) error, remove func(context.Context, string) error, iterate bool) error
}

func MultiContextManager

func MultiContextManager() MultiContextProvider

type Option

type Option func(*Options)

func WithResolver

func WithResolver(r any) Option

type Options

type Options struct {
	Resolver any
}

type Resolver

type Resolver[T any] func(ctx context.Context) (T, error)

type Runtime

type Runtime interface {
	AllSettings() map[string]interface{}
	GetBool(key string) bool
	GetString(key string) string
	GetStringSlice(key string) []string
	IsSet(key string) bool
	Set(key string, value interface{})
	SetDefault(key string, value interface{})
}

func GetRuntime

func GetRuntime() Runtime

GetRuntime returns the main Runtime

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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