Documentation
¶
Index ¶
- Constants
- Variables
- func AcquireApplicationLock(appName string, owner string, reason string) (bool, error)
- func AcquireApplicationLockWait(appName string, owner string, reason string, timeout time.Duration) (bool, error)
- func ChangeQuota(app *App, limit int) error
- func CreateApp(app *App, user *auth.User) error
- func Delete(app *App, w io.Writer) error
- func Deploy(opts DeployOptions) error
- func GetDiffInDeploys(d *DeployData) (string, error)
- func LogReceiver() (chan<- *Applog, <-chan error)
- func LogRemove(a *App) error
- func PlanRemove(planName string) error
- func PlatformAdd(opts provision.PlatformOptions) error
- func PlatformRemove(name string) error
- func PlatformUpdate(opts provision.PlatformOptions) error
- func ReleaseApplicationLock(appName string)
- func Rollback(opts DeployOptions) error
- func Swap(app1, app2 *App) error
- type App
- func (app *App) AddCName(cnames ...string) error
- func (app *App) AddInstance(instanceApp bind.InstanceApp, writer io.Writer) error
- func (app *App) AddUnits(n uint, process string, writer io.Writer) error
- func (app *App) Available() bool
- func (app *App) BindUnit(unit *provision.Unit) error
- func (app *App) ChangePlan(planName string, w io.Writer) error
- func (app *App) ChangePool(newPoolName string) error
- func (app *App) Envs() map[string]bind.EnvVar
- func (app *App) GetCpuShare() int
- func (app *App) GetDefaultPool() (string, error)
- func (app *App) GetDeploys() uint
- func (app *App) GetIp() string
- func (app *App) GetMemory() int64
- func (app *App) GetName() string
- func (app *App) GetPlatform() string
- func (app *App) GetPool() string
- func (app *App) GetPoolForApp(poolName string) (string, error)
- func (app *App) GetQuota() quota.Quota
- func (app *App) GetRouter() (string, error)
- func (app *App) GetSwap() int64
- func (app *App) GetTeamOwner() string
- func (app *App) GetTeams() []auth.Team
- func (app *App) GetTeamsName() []string
- func (app *App) GetUnits() ([]bind.Unit, error)
- func (app *App) GetUpdatePlatform() bool
- func (app *App) Grant(team *auth.Team) error
- func (app *App) InstanceEnv(name string) map[string]bind.EnvVar
- func (app *App) LastLogs(lines int, filterLog Applog) ([]Applog, error)
- func (app *App) ListDeploys(u *auth.User) ([]DeployData, error)
- func (app *App) Log(message, source, unit string) error
- func (app *App) MarshalJSON() ([]byte, error)
- func (app *App) MetricEnvs() map[string]string
- func (app *App) RebuildRoutes() (*RebuildRoutesResult, error)
- func (app *App) RegisterUnit(unitId string, customData map[string]interface{}) error
- func (app *App) RemoveCName(cnames ...string) error
- func (app *App) RemoveInstance(instanceApp bind.InstanceApp, writer io.Writer) error
- func (app *App) RemoveUnits(n uint, process string, writer io.Writer) error
- func (app *App) Restart(process string, w io.Writer) error
- func (app *App) Revoke(team *auth.Team) error
- func (app *App) Run(cmd string, w io.Writer, once bool) error
- func (app *App) SetEnvs(setEnvs bind.SetEnvApp, w io.Writer) error
- func (app *App) SetPool() error
- func (app *App) SetQuotaInUse(inUse int) error
- func (app *App) SetTeamOwner(team *auth.Team, u *auth.User) error
- func (app *App) SetUnitStatus(unitName string, status provision.Status) error
- func (app *App) SetUpdatePlatform(check bool) error
- func (app *App) Shell(opts provision.ShellOptions) error
- func (app *App) Start(w io.Writer, process string) error
- func (app *App) Stop(w io.Writer, process string) error
- func (app *App) UnbindUnit(unit *provision.Unit) error
- func (app *App) Units() ([]provision.Unit, error)
- func (app *App) UnsetEnvs(unsetEnvs bind.UnsetEnvApp, w io.Writer) error
- func (app *App) ValidateTeamOwner(user *auth.User) error
- type AppCreationError
- type AppLock
- type Applog
- type DeployData
- type DeployOptions
- type DiffDeployData
- type DuplicatePlatformError
- type Filter
- type InvalidPlatformError
- type LogListener
- type LogWriter
- type Logger
- type ManyTeamsError
- type NoTeamsError
- type Plan
- type PlanValidationError
- type Platform
- type ProcfileError
- type RebuildRoutesResult
- type UpdateUnitsData
- type UpdateUnitsResult
Constants ¶
const ( // InternalAppName is a reserved name used for token generation. For // backward compatibilty and historical purpose, the value remained // "tsr" when the name of the daemon changed to "tsurud". InternalAppName = "tsr" TsuruServicesEnvVar = "TSURU_SERVICES" )
Variables ¶
var ( ErrAppAlreadyExists = errors.New("there is already an app with this name") ErrAppNotFound = errors.New("App not found.") )
var ( ErrAlreadyHaveAccess = stderr.New("team already have access to this app") ErrNoAccess = stderr.New("team does not have access to this app") ErrCannotOrphanApp = stderr.New("cannot revoke access from this team, as it's the unique team with access to the app") ErrDisabledPlatform = stderr.New("Disabled Platform, only admin users can create applications with the platform") )
var ( ErrPlanNotFound = errors.New("plan not found") ErrPlanAlreadyExists = errors.New("plan already exists") ErrPlanDefaultAmbiguous = errors.New("more than one default plan found") )
var AuthScheme auth.Scheme
var LogPubSubQueuePrefix = "pubsub:"
var Provisioner provision.Provisioner
Functions ¶
func AcquireApplicationLock ¶
AcquireApplicationLock acquires an application lock by setting the lock field in the database. This method is already called by a connection middleware on requests with :app or :appname params that have side-effects.
func AcquireApplicationLockWait ¶
func AcquireApplicationLockWait(appName string, owner string, reason string, timeout time.Duration) (bool, error)
Same as AcquireApplicationLock but it keeps trying to acquire the lock until timeout is reached.
func ChangeQuota ¶
ChangeQuota redefines the limit of the app. The new limit must be bigger than or equal to the current number of units in the app. The new limit may be smaller than 0, which means that the app should have an unlimited number of units.
func CreateApp ¶
CreateApp creates a new app.
Creating a new app is a process composed of the following steps:
- Save the app in the database
- Create the git repository using the repository manager
- Provision the app using the provisioner
func Deploy ¶
func Deploy(opts DeployOptions) error
Deploy runs a deployment of an application. It will first try to run an archive based deploy (if opts.ArchiveURL is not empty), and then fallback to the Git based deployment.
func GetDiffInDeploys ¶
func GetDiffInDeploys(d *DeployData) (string, error)
func LogReceiver ¶
func PlanRemove ¶
func PlatformAdd ¶
func PlatformAdd(opts provision.PlatformOptions) error
PlatformAdd add a new platform to tsuru
func PlatformRemove ¶
func PlatformUpdate ¶
func PlatformUpdate(opts provision.PlatformOptions) error
func ReleaseApplicationLock ¶
func ReleaseApplicationLock(appName string)
ReleaseApplicationLock releases a lock hold on an app, currently it's called by a middleware, however, ideally, it should be called individually by each handler since they might be doing operations in background.
func Rollback ¶
func Rollback(opts DeployOptions) error
Types ¶
type App ¶
type App struct { Env map[string]bind.EnvVar Platform string `bson:"framework"` Name string Ip string CName []string Teams []string TeamOwner string Owner string Deploys uint UpdatePlatform bool Lock AppLock Plan Plan Pool string quota.Quota }
App is the main type in tsuru. An app represents a real world application. This struct holds information about the app: its name, address, list of teams that have access to it, used platform, etc.
func List ¶
List returns the list of apps that the given user has access to.
If the user does not have access to any app, this function returns an empty list and a nil error.
The list can be filtered through the filter parameter.
func (*App) AddCName ¶
AddCName adds a CName to app. It updates the attribute, calls the SetCName function on the provisioner and saves the app in the database, returning an error when it cannot save the change in the database or add the CName on the provisioner.
func (*App) AddInstance ¶
func (app *App) AddInstance(serviceName string, instance bind.ServiceInstance, shouldRestart bool, writer io.Writer) error {
func (*App) AddUnits ¶
AddUnits creates n new units within the provisioner, saves new units in the database and enqueues the apprc serialization.
func (*App) Available ¶
Available returns true if at least one of N units is started or unreachable.
func (*App) ChangePlan ¶
ChangePlan changes the plan of the application.
It may change the state of the application if the new plan includes a new router or a change in the amount of available memory.
func (*App) ChangePool ¶
func (*App) GetCpuShare ¶
GetCpuShare returns the cpu share for the app.
func (*App) GetDefaultPool ¶
func (*App) GetDeploys ¶
GetDeploys returns the amount of deploys of an app.
func (*App) GetPlatform ¶
GetPlatform returns the platform of the app.
func (*App) GetTeamOwner ¶
GetTeamOwner returns the team owner of the app.
func (*App) GetTeamsName ¶
GetTeamsNames returns the names of teams app.
func (*App) GetUpdatePlatform ¶
func (*App) Grant ¶
Grant allows a team to have access to an app. It returns an error if the team already have access to the app.
func (*App) InstanceEnv ¶
InstanceEnv returns a map of environment variables that belongs to the given service instance (identified by the name only).
func (*App) LastLogs ¶
LastLogs returns a list of the last `lines` log of the app, matching the fields in the log instance received as an example.
func (*App) ListDeploys ¶
func (app *App) ListDeploys(u *auth.User) ([]DeployData, error)
func (*App) Log ¶
Log adds a log message to the app. Specifying a good source is good so the user can filter where the message come from.
func (*App) MarshalJSON ¶
MarshalJSON marshals the app in json format.
func (*App) MetricEnvs ¶
func (*App) RebuildRoutes ¶
func (app *App) RebuildRoutes() (*RebuildRoutesResult, error)
func (*App) RegisterUnit ¶
func (*App) RemoveCName ¶
func (*App) RemoveInstance ¶
func (app *App) RemoveInstance(serviceName string, instance bind.ServiceInstance, shouldRestart bool, writer io.Writer) error {
func (*App) RemoveUnits ¶
RemoveUnits removes n units from the app. It's a process composed of multiple steps:
- Remove units from the provisioner
- Update quota
func (*App) Revoke ¶
Revoke removes the access from a team. It returns an error if the team do not have access to the app.
func (*App) SetEnvs ¶
SetEnvs saves a list of environment variables in the app. The publicOnly parameter indicates whether only public variables can be overridden (if set to false, SetEnvs may override a private variable).
func (*App) SetQuotaInUse ¶
func (*App) SetTeamOwner ¶
SetTeamOwner sets the TeamOwner value.
func (*App) SetUnitStatus ¶
SetUnitStatus changes the status of the given unit.
func (*App) SetUpdatePlatform ¶
func (*App) Start ¶
Start starts the app calling the provisioner.Start method and changing the units state to StatusStarted.
func (*App) UnsetEnvs ¶
UnsetEnvs removes environment variables from an app, serializing the remaining list of environment variables to all units of the app.
Besides the slice with the name of the variables, this method also takes the parameter publicOnly, which indicates whether only public variables can be overridden (if set to false, setEnvsToApp may override a private variable).
type AppCreationError ¶
type AppCreationError struct { Err error // contains filtered or unexported fields }
func (*AppCreationError) Error ¶
func (e *AppCreationError) Error() string
type DeployData ¶
type DeployData struct { ID bson.ObjectId `bson:"_id,omitempty"` App string Timestamp time.Time Duration time.Duration Commit string Error string Image string Log string User string Origin string CanRollback bool RemoveDate time.Time `bson:",omitempty"` }
func ListDeploys ¶
ListDeploys returns the list of deploy that the given user has access to.
If the user does not have acces to any deploy, this function returns an empty list and a nil error.
The deploy list can be filtered by app or service.
type DeployOptions ¶
type DiffDeployData ¶
type DiffDeployData struct { DeployData Diff string }
func (*DiffDeployData) MarshalJSON ¶
func (d *DiffDeployData) MarshalJSON() ([]byte, error)
type DuplicatePlatformError ¶
type DuplicatePlatformError struct{}
func (DuplicatePlatformError) Error ¶
func (DuplicatePlatformError) Error() string
type Filter ¶
type InvalidPlatformError ¶
type InvalidPlatformError struct{}
func (InvalidPlatformError) Error ¶
func (InvalidPlatformError) Error() string
type LogListener ¶
type LogListener struct { C <-chan Applog // contains filtered or unexported fields }
func NewLogListener ¶
func NewLogListener(a *App, filterLog Applog) (*LogListener, error)
func (*LogListener) Close ¶
func (l *LogListener) Close() (err error)
type ManyTeamsError ¶
type ManyTeamsError struct{}
ManyTeamsError is the error returned when the user has more than one team and tries to create an app without specify a app team owner.
func (ManyTeamsError) Error ¶
func (err ManyTeamsError) Error() string
type NoTeamsError ¶
type NoTeamsError struct{}
NoTeamsError is the error returned when one tries to create an app without any team.
func (NoTeamsError) Error ¶
func (err NoTeamsError) Error() string
type Plan ¶
type Plan struct { Name string `bson:"_id" json:"name"` Memory int64 `json:"memory"` Swap int64 `json:"swap"` Default bool `json:"default,omitempty"` Router string `json:"router,omitempty"` }
func DefaultPlan ¶
type PlanValidationError ¶
type PlanValidationError struct {
// contains filtered or unexported fields
}
func (PlanValidationError) Error ¶
func (p PlanValidationError) Error() string
type ProcfileError ¶
type ProcfileError struct {
// contains filtered or unexported fields
}
func (*ProcfileError) Error ¶
func (e *ProcfileError) Error() string
type RebuildRoutesResult ¶
type UpdateUnitsData ¶
type UpdateUnitsResult ¶
func UpdateUnitsStatus ¶
func UpdateUnitsStatus(units []UpdateUnitsData) ([]UpdateUnitsResult, error)
UpdateUnitsStatus updates the status of the given units, returning a map which units were found during the update.