Documentation
¶
Index ¶
- Constants
- Variables
- func Close()
- func Connect() error
- func GetParsedTime(t time.Time) time.Time
- func MigrateAll() error
- func SetupDBLink()
- type APIToken
- type AccessKey
- type Environment
- type Event
- type Inventory
- type Project
- type Repository
- type Session
- type Task
- type TaskOutput
- type Template
- type User
- type Version
- func (version *Version) CheckExists() (bool, error)
- func (version *Version) GetErrPath() string
- func (version *Version) GetPath() string
- func (version *Version) GetSQL(path string) []string
- func (version *Version) HumanoidVersion() string
- func (version *Version) Run() error
- func (version *Version) TryRollback()
- func (version *Version) VersionString() string
Constants ¶
const DatabaseTimeFormat = "2006-01-02T15:04:05:99Z"
DatabaseTimeFormat represents the format that dredd uses to validate the datetime. This is not the same as the raw value we pass to a new object so we need to use this to coerce raw values to meet the API standard /^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-[0-9]{2}T\d{2}:\d{2}:\d{2}Z$/
Variables ¶
var Mysql *gorp.DbMap
Mysql is the gorp database map db.Connect must be called to set this up correctly
var Versions []*Version
Versions holds all sql schema version references
Functions ¶
func Close ¶
func Close()
Close closes the mysql connection and reports any errors called from main with a defer
func Connect ¶
func Connect() error
Connect ensures that the db is connected and mapped properly with gorp
func GetParsedTime ¶
GetParsedTime returns the timestamp as it will retrieved from the database This allows us to create timestamp consistency on return values from create requests
func SetupDBLink ¶
func SetupDBLink()
SetupDBLink is called by main after initialization of the Mysql object to create or return an existing table map
Types ¶
type APIToken ¶
type APIToken struct {
ID string `db:"id" json:"id"`
Created time.Time `db:"created" json:"created"`
Expired bool `db:"expired" json:"expired"`
UserID int `db:"user_id" json:"user_id"`
}
APIToken is given to a user to allow API access
type AccessKey ¶
type AccessKey struct {
ID int `db:"id" json:"id"`
Name string `db:"name" json:"name" binding:"required"`
// 'aws/do/gcloud/ssh'
Type string `db:"type" json:"type" binding:"required"`
ProjectID *int `db:"project_id" json:"project_id"`
Key *string `db:"key" json:"key"`
Secret *string `db:"secret" json:"secret"`
Removed bool `db:"removed" json:"removed"`
}
AccessKey represents a key used to access a machine with ansible from semaphore
type Environment ¶
type Environment struct {
ID int `db:"id" json:"id"`
Name string `db:"name" json:"name" binding:"required"`
ProjectID int `db:"project_id" json:"project_id"`
Password *string `db:"password" json:"password"`
JSON string `db:"json" json:"json" binding:"required"`
Removed bool `db:"removed" json:"removed"`
}
Environment is used to pass additional arguments, in json form to ansible
type Event ¶
type Event struct {
ProjectID *int `db:"project_id" json:"project_id"`
ObjectID *int `db:"object_id" json:"object_id"`
ObjectType *string `db:"object_type" json:"object_type"`
Description *string `db:"description" json:"description"`
Created time.Time `db:"created" json:"created"`
ObjectName string `db:"-" json:"object_name"`
ProjectName *string `db:"project_name" json:"project_name"`
}
Event represents information generated by ansible or api action captured to the database during execution
type Inventory ¶
type Inventory struct {
ID int `db:"id" json:"id"`
Name string `db:"name" json:"name" binding:"required"`
ProjectID int `db:"project_id" json:"project_id"`
Inventory string `db:"inventory" json:"inventory"`
// accesses dynamic inventory
KeyID *int `db:"key_id" json:"key_id"`
Key AccessKey `db:"-" json:"-"`
// accesses hosts in inventory
SSHKeyID *int `db:"ssh_key_id" json:"ssh_key_id"`
SSHKey AccessKey `db:"-" json:"-"`
// static/aws/do/gcloud
Type string `db:"type" json:"type"`
Removed bool `db:"removed" json:"removed"`
}
Inventory is the model of an ansible inventory file
type Project ¶
type Project struct {
ID int `db:"id" json:"id"`
Name string `db:"name" json:"name" binding:"required"`
Created time.Time `db:"created" json:"created"`
Alert bool `db:"alert" json:"alert"`
AlertChat string `db:"alert_chat" json:"alert_chat"`
}
Project is the top level structure in Semaphore
func (*Project) CreateProject ¶
CreateProject writes a project to the database
type Repository ¶
type Repository struct {
ID int `db:"id" json:"id"`
Name string `db:"name" json:"name" binding:"required"`
ProjectID int `db:"project_id" json:"project_id"`
GitURL string `db:"git_url" json:"git_url" binding:"required"`
SSHKeyID int `db:"ssh_key_id" json:"ssh_key_id" binding:"required"`
Removed bool `db:"removed" json:"removed"`
SSHKey AccessKey `db:"-" json:"-"`
}
Repository is the model for code stored in a git repository
type Session ¶
type Session struct {
ID int `db:"id" json:"id"`
UserID int `db:"user_id" json:"user_id"`
Created time.Time `db:"created" json:"created"`
LastActive time.Time `db:"last_active" json:"last_active"`
IP string `db:"ip" json:"ip"`
UserAgent string `db:"user_agent" json:"user_agent"`
Expired bool `db:"expired" json:"expired"`
}
Session is a connection to the API
type Task ¶
type Task struct {
ID int `db:"id" json:"id"`
TemplateID int `db:"template_id" json:"template_id" binding:"required"`
Status string `db:"status" json:"status"`
Debug bool `db:"debug" json:"debug"`
DryRun bool `db:"dry_run" json:"dry_run"`
// override variables
Playbook string `db:"playbook" json:"playbook"`
Environment string `db:"environment" json:"environment"`
UserID *int `db:"user_id" json:"user_id"`
Created time.Time `db:"created" json:"created"`
Start *time.Time `db:"start" json:"start"`
End *time.Time `db:"end" json:"end"`
}
Task is a model of a task which will be executed by the runner
type TaskOutput ¶
type TaskOutput struct {
TaskID int `db:"task_id" json:"task_id"`
Task string `db:"task" json:"task"`
Time time.Time `db:"time" json:"time"`
Output string `db:"output" json:"output"`
}
TaskOutput is the ansible log output from the task
type Template ¶
type Template struct {
ID int `db:"id" json:"id"`
SSHKeyID int `db:"ssh_key_id" json:"ssh_key_id"`
ProjectID int `db:"project_id" json:"project_id"`
InventoryID int `db:"inventory_id" json:"inventory_id"`
RepositoryID int `db:"repository_id" json:"repository_id"`
EnvironmentID *int `db:"environment_id" json:"environment_id"`
// Alias as described in https://github.com/ansible-semaphore/semaphore/issues/188
Alias string `db:"alias" json:"alias"`
// playbook name in the form of "some_play.yml"
Playbook string `db:"playbook" json:"playbook"`
// to fit into []string
Arguments *string `db:"arguments" json:"arguments"`
// if true, semaphore will not prepend any arguments to `arguments` like inventory, etc
OverrideArguments bool `db:"override_args" json:"override_args"`
}
Template is a user defined model that is used to run a task
type User ¶
type User struct {
ID int `db:"id" json:"id"`
Created time.Time `db:"created" json:"created"`
Username string `db:"username" json:"username" binding:"required"`
Name string `db:"name" json:"name" binding:"required"`
Email string `db:"email" json:"email" binding:"required"`
Password string `db:"password" json:"-"`
Admin bool `db:"admin" json:"admin"`
External bool `db:"external" json:"external"`
Alert bool `db:"alert" json:"alert"`
}
User is the model for an entity which has access to the API
type Version ¶
type Version struct {
Major int
Minor int
Patch int
Build string
UpgradedDate *time.Time
Notes *string
}
Version represents an sql schema version
func (*Version) CheckExists ¶
CheckExists queries the database to see if a migration table with this version id exists already
func (*Version) GetErrPath ¶
GetErrPath is the humanoid version with '.err' and file format appended
func (*Version) GetSQL ¶
GetSQL takes a path to an SQL file and returns it from packr as a slice of strings separated by newlines
func (*Version) HumanoidVersion ¶
HumanoidVersion adds a v to the VersionString
func (*Version) TryRollback ¶
func (version *Version) TryRollback()
TryRollback attempts to rollback the database to an earlier version if a rollback exists
func (*Version) VersionString ¶
VersionString returns a well formatted string of the current Version