Documentation
¶
Index ¶
- func BindAllEnv(v *viper.Viper)
- type AlertingConfigFile
- type AnalyticsConfigFile
- type AuthConfig
- type ConfigFileAdditionalLoggers
- type ConfigFileAuth
- type ConfigFileAuthCookie
- type ConfigFileAuthGithub
- type ConfigFileAuthGoogle
- type ConfigFileEmail
- type ConfigFileRuntime
- type ConfigFileSlack
- type ConfigFileTenantAlerting
- type EncryptionConfigFile
- type EncryptionConfigFileCloudKMS
- type EncryptionConfigFileJWT
- type FePosthogConfig
- type LimitConfigFile
- type MessageQueueConfigFile
- type PosthogConfigFile
- type PostmarkConfigFile
- type PylonConfig
- type RabbitMQConfigFile
- type SecurityCheckConfigFile
- type SentryConfigFile
- type ServerConfig
- type ServerConfigFile
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BindAllEnv ¶
Types ¶
type AlertingConfigFile ¶
type AlertingConfigFile struct {
Sentry SentryConfigFile `mapstructure:"sentry" json:"sentry,omitempty"`
}
Alerting options
type AnalyticsConfigFile ¶
type AnalyticsConfigFile struct {
Posthog PosthogConfigFile `mapstructure:"posthog" json:"posthog,omitempty"`
}
type AuthConfig ¶
type AuthConfig struct {
RestrictedEmailDomains []string
ConfigFile ConfigFileAuth
GoogleOAuthConfig *oauth2.Config
GithubOAuthConfig *oauth2.Config
JWTManager token.JWTManager
}
type ConfigFileAdditionalLoggers ¶
type ConfigFileAdditionalLoggers struct {
// Queue is a custom logger config for the queue service
Queue shared.LoggerConfigFile `mapstructure:"queue" json:"queue,omitempty"`
// PgxStats is a custom logger config for the pgx stats service
PgxStats shared.LoggerConfigFile `mapstructure:"pgxStats" json:"pgxStats,omitempty"`
}
type ConfigFileAuth ¶
type ConfigFileAuth struct {
// RestrictedEmailDomains sets the restricted email domains for the instance.
// NOTE: do not use this on the server from the config file.
RestrictedEmailDomains string `mapstructure:"restrictedEmailDomains" json:"restrictedEmailDomains,omitempty"`
// BasedAuthEnabled controls whether email and password-based login is enabled for this
// Hatchet instance
BasicAuthEnabled bool `mapstructure:"basicAuthEnabled" json:"basicAuthEnabled,omitempty" default:"true"`
// SetEmailVerified controls whether the user's email is automatically set to verified
SetEmailVerified bool `mapstructure:"setEmailVerified" json:"setEmailVerified,omitempty" default:"false"`
// Configuration options for the cookie
Cookie ConfigFileAuthCookie `mapstructure:"cookie" json:"cookie,omitempty"`
Google ConfigFileAuthGoogle `mapstructure:"google" json:"google,omitempty"`
Github ConfigFileAuthGithub `mapstructure:"github" json:"github,omitempty"`
}
type ConfigFileAuthCookie ¶
type ConfigFileAuthCookie struct {
Name string `mapstructure:"name" json:"name,omitempty" default:"hatchet"`
Domain string `mapstructure:"domain" json:"domain,omitempty"`
Secrets string `mapstructure:"secrets" json:"secrets,omitempty"`
Insecure bool `mapstructure:"insecure" json:"insecure,omitempty" default:"false"`
}
type ConfigFileAuthGithub ¶
type ConfigFileAuthGithub struct {
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty" default:"false"`
ClientID string `mapstructure:"clientID" json:"clientID,omitempty"`
ClientSecret string `mapstructure:"clientSecret" json:"clientSecret,omitempty"`
Scopes []string `mapstructure:"scopes" json:"scopes,omitempty" default:"[\"read:user\", \"user:email\"]"`
}
type ConfigFileAuthGoogle ¶
type ConfigFileAuthGoogle struct {
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty" default:"false"`
ClientID string `mapstructure:"clientID" json:"clientID,omitempty"`
ClientSecret string `mapstructure:"clientSecret" json:"clientSecret,omitempty"`
Scopes []string `mapstructure:"scopes" json:"scopes,omitempty" default:"[\"openid\", \"profile\", \"email\"]"`
}
type ConfigFileEmail ¶
type ConfigFileEmail struct {
Postmark PostmarkConfigFile `mapstructure:"postmark" json:"postmark,omitempty"`
}
type ConfigFileRuntime ¶
type ConfigFileRuntime struct {
// Port is the port that the core server listens on
Port int `mapstructure:"port" json:"port,omitempty" default:"8080"`
// ServerURL is the full server URL of the instance, including protocol.
ServerURL string `mapstructure:"url" json:"url,omitempty" default:"http://localhost:8080"`
// Healthcheck controls whether the server has a healthcheck endpoint
Healthcheck bool `mapstructure:"healthcheck" json:"healthcheck,omitempty" default:"true"`
// GRPCPort is the port that the grpc service listens on
GRPCPort int `mapstructure:"grpcPort" json:"grpcPort,omitempty" default:"7070"`
// GRPCBindAddress is the address that the grpc server binds to. Should set to 0.0.0.0 if binding in docker container.
GRPCBindAddress string `mapstructure:"grpcBindAddress" json:"grpcBindAddress,omitempty" default:"127.0.0.1"`
// GRPCBroadcastAddress is the address that the grpc server broadcasts to, which is what clients should use when connecting.
GRPCBroadcastAddress string `mapstructure:"grpcBroadcastAddress" json:"grpcBroadcastAddress,omitempty" default:"127.0.0.1:7070"`
// GRPCInsecure controls whether the grpc server is insecure or uses certs
GRPCInsecure bool `mapstructure:"grpcInsecure" json:"grpcInsecure,omitempty" default:"false"`
// GRPCMaxMsgSize is the maximum message size that the grpc server will accept
GRPCMaxMsgSize int `mapstructure:"grpcMaxMsgSize" json:"grpcMaxMsgSize,omitempty" default:"4194304"`
// GRPCRateLimit is the rate limit for the grpc server. We count limits separately for the Workflow, Dispatcher and Events services. Workflow and Events service are set to this rate, Dispatcher is 10X this rate. The rate limit is per second, per engine, per api token.
GRPCRateLimit float64 `mapstructure:"grpcRateLimit" json:"grpcRateLimit,omitempty" default:"1000"`
// ShutdownWait is the time between the readiness probe being offline when a shutdown is triggered and the actual start of cleaning up resources.
ShutdownWait time.Duration `mapstructure:"shutdownWait" json:"shutdownWait,omitempty" default:"20s"`
// Enforce limits controls whether the server enforces tenant limits
EnforceLimits bool `mapstructure:"enforceLimits" json:"enforceLimits,omitempty" default:"false"`
// Default limit values
Limits LimitConfigFile `mapstructure:"limits" json:"limits,omitempty"`
// RequeueLimit is the number of times a message will be requeued in each attempt
RequeueLimit int `mapstructure:"requeueLimit" json:"requeueLimit,omitempty" default:"100"`
// QueueLimit is the limit of items to return from a single queue at a time
SingleQueueLimit int `mapstructure:"singleQueueLimit" json:"singleQueueLimit,omitempty" default:"100"`
// How many buckets to hash into for parallelizing updates
UpdateHashFactor int `mapstructure:"updateHashFactor" json:"updateHashFactor,omitempty" default:"100"`
// How many concurrent updates to allow
UpdateConcurrentFactor int `mapstructure:"updateConcurrentFactor" json:"updateConcurrentFactor,omitempty" default:"10"`
// Allow new tenants to be created
AllowSignup bool `mapstructure:"allowSignup" json:"allowSignup,omitempty" default:"true"`
// Allow new invites to be created
AllowInvites bool `mapstructure:"allowInvites" json:"allowInvites,omitempty" default:"true"`
// Allow new tenants to be created
AllowCreateTenant bool `mapstructure:"allowCreateTenant" json:"allowCreateTenant,omitempty" default:"true"`
// Allow passwords to be changed
AllowChangePassword bool `mapstructure:"allowChangePassword" json:"allowChangePassword,omitempty" default:"true"`
// Buffer create workflow runs
BufferCreateWorkflowRuns bool `mapstructure:"bufferCreateWorkflowRuns" json:"bufferCreateWorkflowRuns,omitempty" default:"true"`
// DisableTenantPubs controls whether tenant pubsub is disabled
DisableTenantPubs bool `mapstructure:"disableTenantPubs" json:"disableTenantPubs,omitempty"`
// MaxInternalRetryCount is the maximum number of internal retries before a step run is considered failed (default: 3)
MaxInternalRetryCount int32 `mapstructure:"maxInternalRetryCount" json:"maxInternalRetryCount,omitempty" default:"3"`
// WaitForFlush is the time to wait for the buffer to flush used for exerting some back pressure on writers
WaitForFlush time.Duration `mapstructure:"waitForFlush" json:"waitForFlush,omitempty" default:"1ms"`
// MaxConcurrent is the maximum number of concurrent flushes
MaxConcurrent int `mapstructure:"maxConcurrent" json:"maxConcurrent,omitempty" default:"50"`
// FlushPeriodMilliseconds is the default number of milliseconds before flush
FlushPeriodMilliseconds int `mapstructure:"flushPeriodMilliseconds" json:"flushPeriodMilliseconds,omitempty" default:"10"`
// FlushItemsThreshold is the default number of items to hold in memory until flushing to the database
FlushItemsThreshold int `mapstructure:"flushItemsThreshold" json:"flushItemsThreshold,omitempty" default:"100"`
// FlushStrategy is the strategy to use for flushing the buffer
FlushStrategy buffer.BuffStrategy `mapstructure:"flushStrategy" json:"flushStrategy" default:"DYNAMIC"`
// WorkflowRunBuffer represents the buffer settings for workflow runs
WorkflowRunBuffer buffer.ConfigFileBuffer `mapstructure:"workflowRunBuffer" json:"workflowRunBuffer,omitempty"`
// EventBuffer represents the buffer settings for step run events
EventBuffer buffer.ConfigFileBuffer `mapstructure:"eventBuffer" json:"eventBuffer,omitempty"`
// ReleaseSemaphoreBuffer represents the buffer settings for releasing semaphore slots
ReleaseSemaphoreBuffer buffer.ConfigFileBuffer `mapstructure:"releaseSemaphoreBuffer" json:"releaseSemaphoreBuffer,omitempty"`
// QueueStepRunBuffer represents the buffer settings for inserting step runs into the queue
QueueStepRunBuffer buffer.ConfigFileBuffer `mapstructure:"queueStepRunBuffer" json:"queueStepRunBuffer,omitempty"`
}
General server runtime options
type ConfigFileSlack ¶
type ConfigFileSlack struct {
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
SlackAppClientID string `mapstructure:"clientID" json:"clientID,omitempty"`
SlackAppClientSecret string `mapstructure:"clientSecret" json:"clientSecret,omitempty"`
SlackAppScopes []string `mapstructure:"scopes" json:"scopes,omitempty" default:"[\"incoming-webhook\"]"`
}
type ConfigFileTenantAlerting ¶
type ConfigFileTenantAlerting struct {
Slack ConfigFileSlack `mapstructure:"slack" json:"slack,omitempty"`
}
type EncryptionConfigFile ¶
type EncryptionConfigFile struct {
// MasterKeyset is the raw master keyset for the instance. This should be a base64-encoded JSON string. You must set
// either MasterKeyset, MasterKeysetFile or cloudKms.enabled with CloudKMS credentials
MasterKeyset string `mapstructure:"masterKeyset" json:"masterKeyset,omitempty"`
// MasterKeysetFile is the path to the master keyset file for the instance.
MasterKeysetFile string `mapstructure:"masterKeysetFile" json:"masterKeysetFile,omitempty"`
JWT EncryptionConfigFileJWT `mapstructure:"jwt" json:"jwt,omitempty"`
// CloudKMS is the configuration for Google Cloud KMS. You must set either MasterKeyset or cloudKms.enabled.
CloudKMS EncryptionConfigFileCloudKMS `mapstructure:"cloudKms" json:"cloudKms,omitempty"`
}
Encryption options
type EncryptionConfigFileCloudKMS ¶
type EncryptionConfigFileCloudKMS struct {
// Enabled controls whether the Cloud KMS service is enabled for this Hatchet instance.
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty" default:"false"`
// KeyURI is the URI of the key in Google Cloud KMS. This should be in the format of
// gcp-kms://...
KeyURI string `mapstructure:"keyURI" json:"keyURI,omitempty"`
// CredentialsJSON is the JSON credentials for the Google Cloud KMS service account.
CredentialsJSON string `mapstructure:"credentialsJSON" json:"credentialsJSON,omitempty"`
}
type EncryptionConfigFileJWT ¶
type EncryptionConfigFileJWT struct {
// PublicJWTKeyset is a base64-encoded JSON string containing the public keyset which has been encrypted
// by the master key.
PublicJWTKeyset string `mapstructure:"publicJWTKeyset" json:"publicJWTKeyset,omitempty"`
// PublicJWTKeysetFile is the path to the public keyset file for the instance.
PublicJWTKeysetFile string `mapstructure:"publicJWTKeysetFile" json:"publicJWTKeysetFile,omitempty"`
// PrivateJWTKeyset is a base64-encoded JSON string containing the private keyset which has been encrypted
// by the master key.
PrivateJWTKeyset string `mapstructure:"privateJWTKeyset" json:"privateJWTKeyset,omitempty"`
// PrivateJWTKeysetFile is the path to the private keyset file for the instance.
PrivateJWTKeysetFile string `mapstructure:"privateJWTKeysetFile" json:"privateJWTKeysetFile,omitempty"`
}
type FePosthogConfig ¶
type LimitConfigFile ¶
type LimitConfigFile struct {
DefaultTenantRetentionPeriod string `mapstructure:"defaultTenantRetentionPeriod" json:"defaultTenantRetentionPeriod,omitempty" default:"720h"`
DefaultWorkflowRunLimit int `mapstructure:"defaultWorkflowRunLimit" json:"defaultWorkflowRunLimit,omitempty" default:"1000"`
DefaultWorkflowRunAlarmLimit int `mapstructure:"defaultWorkflowRunAlarmLimit" json:"defaultWorkflowRunAlarmLimit,omitempty" default:"750"`
DefaultWorkflowRunWindow time.Duration `mapstructure:"defaultWorkflowRunWindow" json:"defaultWorkflowRunWindow,omitempty" default:"24h"`
DefaultWorkerLimit int `mapstructure:"defaultWorkerLimit" json:"defaultWorkerLimit,omitempty" default:"4"`
DefaultWorkerAlarmLimit int `mapstructure:"defaultWorkerAlarmLimit" json:"defaultWorkerAlarmLimit,omitempty" default:"2"`
DefaultEventLimit int `mapstructure:"defaultEventLimit" json:"defaultEventLimit,omitempty" default:"1000"`
DefaultEventAlarmLimit int `mapstructure:"defaultEventAlarmLimit" json:"defaultEventAlarmLimit,omitempty" default:"750"`
DefaultEventWindow time.Duration `mapstructure:"defaultEventWindow" json:"defaultEventWindow,omitempty" default:"24h"`
DefaultCronLimit int `mapstructure:"defaultCronLimit" json:"defaultCronLimit,omitempty" default:"5"`
DefaultCronAlarmLimit int `mapstructure:"defaultCronAlarmLimit" json:"defaultCronAlarmLimit,omitempty" default:"2"`
DefaultScheduleLimit int `mapstructure:"defaultScheduleLimit" json:"defaultScheduleLimit,omitempty" default:"1000"`
DefaultScheduleAlarmLimit int `mapstructure:"defaultScheduleAlarmLimit" json:"defaultScheduleAlarmLimit,omitempty" default:"750"`
}
type MessageQueueConfigFile ¶
type MessageQueueConfigFile struct {
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty" default:"true"`
Kind string `mapstructure:"kind" json:"kind,omitempty" validate:"required"`
RabbitMQ RabbitMQConfigFile `mapstructure:"rabbitmq" json:"rabbitmq,omitempty" validate:"required"`
}
type PosthogConfigFile ¶
type PosthogConfigFile struct {
// Enabled controls whether the Posthog service is enabled for this Hatchet instance.
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
// APIKey is the API key for the Posthog instance
ApiKey string `mapstructure:"apiKey" json:"apiKey,omitempty"`
// Endpoint is the endpoint for the Posthog instance
Endpoint string `mapstructure:"endpoint" json:"endpoint,omitempty"`
// FeApiKey is the frontend API key for the Posthog instance
FeApiKey string `mapstructure:"feApiKey" json:"feApiKey,omitempty"`
// FeApiHost is the frontend API host for the Posthog instance
FeApiHost string `mapstructure:"feApiHost" json:"feApiHost,omitempty"`
}
type PostmarkConfigFile ¶
type PostmarkConfigFile struct {
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
ServerKey string `mapstructure:"serverKey" json:"serverKey,omitempty"`
FromEmail string `mapstructure:"fromEmail" json:"fromEmail,omitempty"`
FromName string `mapstructure:"fromName" json:"fromName,omitempty" default:"Hatchet Support"`
SupportEmail string `mapstructure:"supportEmail" json:"supportEmail,omitempty"`
}
type PylonConfig ¶
type RabbitMQConfigFile ¶
type SecurityCheckConfigFile ¶
type SentryConfigFile ¶
type SentryConfigFile struct {
// Enabled controls whether the Sentry service is enabled for this Hatchet instance.
Enabled bool `mapstructure:"enabled" json:"enabled,omitempty"`
// DSN is the Data Source Name for the Sentry instance
DSN string `mapstructure:"dsn" json:"dsn,omitempty"`
// Environment is the environment that the instance is running in
Environment string `mapstructure:"environment" json:"environment,omitempty" default:"development"`
}
type ServerConfig ¶
type ServerConfig struct {
*database.Config
Auth AuthConfig
Alerter errors.Alerter
Analytics analytics.Analytics
Pylon *PylonConfig
FePosthog *FePosthogConfig
Encryption encryption.EncryptionService
Runtime ConfigFileRuntime
Services []string
EnableDataRetention bool
EnableWorkerRetention bool
Namespaces []string
MessageQueue msgqueue.MessageQueue
Logger *zerolog.Logger
AdditionalLoggers ConfigFileAdditionalLoggers
TLSConfig *tls.Config
SessionStore *cookie.UserSessionStore
Validator validator.Validator
Ingestor ingestor.Ingestor
OpenTelemetry shared.OpenTelemetryConfigFile
Email email.EmailService
TenantAlerter *alerting.TenantAlertManager
AdditionalOAuthConfigs map[string]*oauth2.Config
SchedulingPool *v2.SchedulingPool
}
func (*ServerConfig) HasService ¶
func (c *ServerConfig) HasService(name string) bool
type ServerConfigFile ¶
type ServerConfigFile struct {
Auth ConfigFileAuth `mapstructure:"auth" json:"auth,omitempty"`
Alerting AlertingConfigFile `mapstructure:"alerting" json:"alerting,omitempty"`
Analytics AnalyticsConfigFile `mapstructure:"analytics" json:"analytics,omitempty"`
Pylon PylonConfig `mapstructure:"pylon" json:"pylon,omitempty"`
Encryption EncryptionConfigFile `mapstructure:"encryption" json:"encryption,omitempty"`
Runtime ConfigFileRuntime `mapstructure:"runtime" json:"runtime,omitempty"`
MessageQueue MessageQueueConfigFile `mapstructure:"msgQueue" json:"msgQueue,omitempty"`
Services []string `mapstructure:"services" json:"services,omitempty" default:"[\"all\"]"`
// Used to bind the environment variable, since the array is not well supported
ServicesString string `mapstructure:"servicesString" json:"servicesString,omitempty"`
EnableDataRetention bool `mapstructure:"enableDataRetention" json:"enableDataRetention,omitempty" default:"true"`
EnableWorkerRetention bool `mapstructure:"enableWorkerRetention" json:"enableWorkerRetention,omitempty" default:"false"`
TLS shared.TLSConfigFile `mapstructure:"tls" json:"tls,omitempty"`
Logger shared.LoggerConfigFile `mapstructure:"logger" json:"logger,omitempty"`
AdditionalLoggers ConfigFileAdditionalLoggers `mapstructure:"additionalLoggers" json:"additionalLoggers,omitempty"`
OpenTelemetry shared.OpenTelemetryConfigFile `mapstructure:"otel" json:"otel,omitempty"`
SecurityCheck SecurityCheckConfigFile `mapstructure:"securityCheck" json:"securityCheck,omitempty"`
TenantAlerting ConfigFileTenantAlerting `mapstructure:"tenantAlerting" json:"tenantAlerting,omitempty"`
Email ConfigFileEmail `mapstructure:"email" json:"email,omitempty"`
}
Click to show internal directories.
Click to hide internal directories.