Documentation ¶
Index ¶
- Constants
- Variables
- func OpenDbConnection(config DbConnectionConfigProvider) *gorm.DB
- func SeedProjects(db *gorm.DB, projects []string) error
- type BaseConfig
- type DbConfig
- type DbConnectionConfigProvider
- type ExecutionKey
- type NodeExecution
- type NodeExecutionKey
- type PostgresConfigProvider
- type TaskExecution
- type TaskExecutionKey
- type TaskKey
Constants ¶
View Source
const Postgres = "postgres"
Variables ¶
View Source
var Migrations = []*gormigrate.Migration{ { ID: "2019-05-22-projects", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Project{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("projects").Error }, }, { ID: "2018-05-23-tasks", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Task{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("tasks").Error }, }, { ID: "2018-05-23-workflows", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Workflow{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("workflows").Error }, }, { ID: "2019-05-23-lp", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.LaunchPlan{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("launch_plans").Error }, }, { ID: "2019-05-23-executions", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Execution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("executions").Error }, }, { ID: "2019-01-29-executions-events", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.ExecutionEvent{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("executions_events").Error }, }, { ID: "2019-04-17-node-executions", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&NodeExecution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("node_executions").Error }, }, { ID: "2019-01-29-node-executions-events", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.NodeExecutionEvent{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("node_executions_events").Error }, }, { ID: "2019-03-16-task-executions", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&TaskExecution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("task_executions").Error }, }, { ID: "2019-04-17-node-executions-backfill", Migrate: func(tx *gorm.DB) error { return tx.Exec("update node_executions set parent_task_execution_id = NULL where parent_task_execution_id = 0").Error }, }, { ID: "2019-09-27-executions", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Execution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Exec("ALTER TABLE executions DROP COLUMN IF EXISTS cluster").Error }, }, { ID: "2019-10-09-project-description", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Project{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Exec("ALTER TABLE projects DROP COLUMN IF EXISTS description").Error }, }, { ID: "2019-10-15-offload-inputs", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Execution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Exec("ALTER TABLE executions DROP COLUMN IF EXISTS InputsURI, DROP COLUMN IF EXISTS UserInputsURI").Error }, }, { ID: "2019-11-05-named-entity-metadata", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.NamedEntityMetadata{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("named_entity_metadata").Error }, }, { ID: "2020-01-10-resource", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Resource{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.DropTable("resources").Error }, }, { ID: "2020-03-17-task-type", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Task{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Exec("ALTER TABLE tasks DROP COLUMN IF EXISTS type").Error }, }, { ID: "2020-04-03-named-entity-state", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.NamedEntityMetadata{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Table("named_entity_metadata").DropColumn("state").Error }, }, { ID: "2020-04-03-named-entity-state-default", Migrate: func(tx *gorm.DB) error { return tx.Exec("UPDATE named_entity_metadata SET state = 0").Error }, Rollback: func(tx *gorm.DB) error { return tx.Exec("UPDATE named_entity_metadata set state = NULL").Error }, }, { ID: "2020-04-03-workflow-state", Migrate: func(tx *gorm.DB) error { return tx.Exec("ALTER TABLE workflows DROP COLUMN IF EXISTS state").Error }, Rollback: func(tx *gorm.DB) error { return tx.Exec("ALTER TABLE workflows ADD COLUMN IF NOT EXISTS state integer;").Error }, }, { ID: "2020-04-29-executions", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Execution{}, &models.NodeExecution{}).Error }, Rollback: func(tx *gorm.DB) error { if err := tx.Model(&models.Execution{}).DropColumn("error_code").DropColumn("error_kind").Error; err != nil { return err } return tx.Model(&models.NodeExecution{}).DropColumn("error_code").DropColumn("error_kind").Error }, }, { ID: "2020-04-14-task-type", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Execution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Exec("ALTER TABLE executions DROP COLUMN IF EXISTS task_id").Error }, }, { ID: "2020-07-27-cachestatus", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.NodeExecution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Model(&models.NodeExecution{}).DropColumn("cache_status").Error }, }, { ID: "2020-07-31-node-execution", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.NodeExecution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Model(&models.NodeExecution{}).DropColumn("parent_id").DropColumn("node_execution_metadata").Error }, }, { ID: "2020-08-13-node-execution", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.NodeExecution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Model(&models.NodeExecution{}).DropColumn("parent_id").DropColumn("node_execution_metadata").Error }, }, { ID: "2020-08-17-labels-addition", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Project{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Model(&models.Project{}).DropColumn("labels").Error }, }, { ID: "2020-09-01-task-exec-idx", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&TaskExecution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Model(&TaskExecution{}).RemoveIndex("idx_task_executions_exec").Error }, }, { ID: "2020-11-03-project-state-addition", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Project{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Model(&models.Project{}).DropColumn("state").Error }, }, { ID: "2020-11-03-project-state-default", Migrate: func(tx *gorm.DB) error { return tx.Exec("UPDATE projects set state = 0").Error }, Rollback: func(tx *gorm.DB) error { return tx.Exec("UPDATE projects set state = NULL").Error }, }, { ID: "2021-01-22-execution-user", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.Execution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Model(&models.Execution{}).DropColumn("user").Error }, }, { ID: "2021-04-19-node-execution_dynamic-workflow", Migrate: func(tx *gorm.DB) error { return tx.AutoMigrate(&models.NodeExecution{}).Error }, Rollback: func(tx *gorm.DB) error { return tx.Model(&models.NodeExecution{}).DropColumn("dynamic_workflow_remote_closure_reference").Error }, }, }
Functions ¶
func OpenDbConnection ¶
func OpenDbConnection(config DbConnectionConfigProvider) *gorm.DB
Opens a connection to the database specified in the config. You must call CloseDbConnection at the end of your session!
Types ¶
type BaseConfig ¶
type BaseConfig struct {
IsDebug bool
}
type DbConfig ¶
type DbConfig struct { BaseConfig Host string `json:"host"` Port int `json:"port"` DbName string `json:"dbname"` User string `json:"user"` Password string `json:"password"` ExtraOptions string `json:"options"` }
Database config. Contains values necessary to open a database connection.
type DbConnectionConfigProvider ¶
type DbConnectionConfigProvider interface { // Returns the database type. For instance PostgreSQL or MySQL. GetType() string // Returns arguments specific for the database type necessary to open a database connection. GetArgs() string // Enables verbose logging. WithDebugModeEnabled() // Disables verbose logging. WithDebugModeDisabled() // Returns whether verbose logging is enabled or not. IsDebug() bool }
Generic interface for providing a config necessary to open a database connection.
func NewPostgresConfigProvider ¶
func NewPostgresConfigProvider(config DbConfig, scope promutils.Scope) DbConnectionConfigProvider
TODO : Make the Config provider itself env based
type ExecutionKey ¶
type NodeExecution ¶
type NodeExecution struct { models.BaseModel NodeExecutionKey // Also stored in the closure, but defined as a separate column because it's useful for filtering and sorting. Phase string InputURI string Closure []byte StartedAt *time.Time // Corresponds to the CreatedAt field in the NodeExecution closure // Prefixed with NodeExecution to avoid clashes with gorm.Model CreatedAt NodeExecutionCreatedAt *time.Time // Corresponds to the UpdatedAt field in the NodeExecution closure // Prefixed with NodeExecution to avoid clashes with gorm.Model UpdatedAt NodeExecutionUpdatedAt *time.Time Duration time.Duration NodeExecutionEvents []models.NodeExecutionEvent // The task execution (if any) which launched this node execution. ParentTaskExecutionID uint `sql:"default:null" gorm:"index"` // The workflow execution (if any) which this node execution launched LaunchedExecution models.Execution `gorm:"foreignkey:ParentNodeExecutionID"` // In the case of dynamic workflow nodes, the remote closure is uploaded to the path specified here. DynamicWorkflowRemoteClosureReference string }
type NodeExecutionKey ¶
type NodeExecutionKey struct { ExecutionKey NodeID string `gorm:"primary_key;index"` }
type PostgresConfigProvider ¶
type PostgresConfigProvider struct {
// contains filtered or unexported fields
}
PostgreSQL implementation for DbConnectionConfigProvider.
func (*PostgresConfigProvider) GetArgs ¶
func (p *PostgresConfigProvider) GetArgs() string
func (*PostgresConfigProvider) GetType ¶
func (p *PostgresConfigProvider) GetType() string
func (*PostgresConfigProvider) IsDebug ¶
func (p *PostgresConfigProvider) IsDebug() bool
func (*PostgresConfigProvider) WithDebugModeDisabled ¶
func (p *PostgresConfigProvider) WithDebugModeDisabled()
func (*PostgresConfigProvider) WithDebugModeEnabled ¶
func (p *PostgresConfigProvider) WithDebugModeEnabled()
type TaskExecution ¶
type TaskExecution struct { models.BaseModel TaskExecutionKey Phase string PhaseVersion uint32 InputURI string Closure []byte StartedAt *time.Time // Corresponds to the CreatedAt field in the TaskExecution closure // This field is prefixed with TaskExecution because it signifies when // the execution was createdAt, not to be confused with gorm.Model.CreatedAt TaskExecutionCreatedAt *time.Time // Corresponds to the UpdatedAt field in the TaskExecution closure // This field is prefixed with TaskExecution because it signifies when // the execution was UpdatedAt, not to be confused with gorm.Model.UpdatedAt TaskExecutionUpdatedAt *time.Time Duration time.Duration // The child node executions (if any) launched by this task execution. ChildNodeExecution []NodeExecution `gorm:"foreignkey:ParentTaskExecutionID"` }
type TaskExecutionKey ¶
type TaskExecutionKey struct { TaskKey Project string `gorm:"primary_key;column:execution_project;index:idx_task_executions_exec"` Domain string `gorm:"primary_key;column:execution_domain;index:idx_task_executions_exec"` Name string `gorm:"primary_key;column:execution_name;index:idx_task_executions_exec"` NodeID string `gorm:"primary_key;index:idx_task_executions_exec;index"` // *IMPORTANT* This is a pointer to an int in order to allow setting an empty ("0") value according to gorm convention. // Because RetryAttempt is part of the TaskExecution primary key is should *never* be null. RetryAttempt *uint32 `gorm:"primary_key;AUTO_INCREMENT:FALSE"` }
Click to show internal directories.
Click to hide internal directories.