Documentation ¶
Index ¶
- Constants
- Variables
- func CreateApp(app *App, units uint, teams []auth.Team) error
- func Enqueue(msgs ...queue.Message)
- func ForceDestroy(app *App) error
- type App
- func (app *App) AddUnit(u *Unit)
- func (app *App) AddUnits(n uint) error
- func (app *App) Available() bool
- func (app *App) Command(stdout, stderr io.Writer, cmdArgs ...string) error
- func (app *App) Get() error
- func (app *App) GetFramework() string
- func (app *App) GetIp() string
- func (app *App) GetName() string
- func (app *App) GetTeams() []auth.Team
- func (app *App) GetUnits() []bind.Unit
- func (app *App) Grant(team *auth.Team) error
- func (app *App) InstallDeps(w io.Writer) error
- func (app *App) InstanceEnv(name string) map[string]bind.EnvVar
- func (a *App) LastLogs(lines int, source string) ([]Applog, error)
- func (app *App) Log(message, source string) error
- func (app *App) MarshalJSON() ([]byte, error)
- func (app *App) ProvisionUnits() []provision.AppUnit
- func (app *App) RemoveUnit(id string) error
- func (app *App) RemoveUnits(n uint) error
- func (app *App) Restart(w io.Writer) error
- func (app *App) Revoke(team *auth.Team) error
- func (app *App) Run(cmd string, w io.Writer) error
- func (app *App) SetCName(cname string) error
- func (app *App) SetEnvs(envs []bind.EnvVar, publicOnly bool) error
- func (app *App) SetTeams(teams []auth.Team)
- func (app *App) UnsetEnvs(variableNames []string, publicOnly bool) error
- type Applog
- type LogListener
- type NoTeamsError
- type Unit
- type UnitSlice
Constants ¶
const (
RegenerateApprcAndStart = "regenerate-apprc-start-app"
)
Variables ¶
var Provisioner provision.Provisioner
Functions ¶
func CreateApp ¶
CreateApp creates a new app.
Creating a new app is a process composed of four steps:
- Save the app in the database
- Create IAM credentials for the app
- Create S3 bucket for the app (if the bucket support is enabled)
- Create the git repository using gandalf
- Provision units within the provisioner
func Enqueue ¶
Enqueue puts the given message in the queue. The app queue is able to handle only messages defined in this package.
Here is a functional example for this function:
msg := queue.Message{Action: app.RegenerateApprcAndStart, Args: []string{"myapp"}} app.Enqueue(msg)
func ForceDestroy ¶
ForceDestroy destroys an app with force.
Destroying an app is a process composed of four steps:
- Destroy the bucket and S3 credentials (if bucket-support is enabled).
- Destroy the app unit using juju
- Unbind all service instances from the app
- Remove the app from the database
Types ¶
type App ¶
type App struct { Env map[string]bind.EnvVar Framework string Logs []Applog Name string Ip string CName string Units []Unit Teams []string // contains filtered or unexported fields }
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 acces to any app, this function returns an empty list and a nil error.
func (*App) AddUnit ¶
AddUnit adds a new unit to the app (or update an existing unit). It just updates the internal list of units, it does not talk to the provisioner. For provisioning a new unit for the app, one should use AddUnits method, which receives the number of units that you want to provision.
func (*App) AddUnits ¶
AddUnits creates n new units within the provisioner, saves new units in the database and enqueues the apprc serialization.
func (*App) Get ¶
Get queries the database and fills the App object with data retrieved from the database. It uses the name of the app as filter in the query, so you can provide this field:
app := App{Name: "myapp"} err := app.Get() // do something with the app
func (*App) GetFramework ¶
GetFramework returns the framework of the app.
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) InstallDeps ¶
InstallDeps runs the dependencies hook for the app, writing its output to w.
func (*App) InstanceEnv ¶
InstanceEnv returns a map of environment variables that belongs to the given service instance (identified by the name only).
TODO(fss): this method should not be exported.
func (*App) LastLogs ¶
LastLogs returns a list of the last `lines` log of the app, matching the given source.
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. It returns a JSON object with the following keys: Name, Framework, Teams, Units, Repository and Ip.
func (*App) ProvisionUnits ¶
ProvisionUnits returns the internal list of units converted to provision.AppUnit.
func (*App) RemoveUnit ¶
RemoveUnit removes a unit by its InstanceId or Name.
Will search first by InstanceId, if no instance is found, then tries to search using the unit name, then calls the removal function from provisioner
Returns an error in case of failure.
func (*App) RemoveUnits ¶
RemoveUnits removes n units from the app. It's a process composed of x steps:
- Remove units from the provisioner
- Unbind units from service instances bound to the app
- Remove units from the app list
- Update the app in the database
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) SetCName ¶
SetCName defines the CName of the app. It updates the attribute and saves the app in the database, returning an error when it cannot save the change in the database.
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) SetTeams ¶
SetTeams sets the values of the internal te
TODO(fss): this method should not be exported.
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 LogListener ¶
type LogListener struct { C <-chan Applog // contains filtered or unexported fields }
func NewLogListener ¶
func NewLogListener(a *App) *LogListener
func (*LogListener) Close ¶
func (l *LogListener) Close() error
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 Unit ¶
type Unit struct { Name string Type string Machine int InstanceId string Ip string State string // contains filtered or unexported fields }
Unit is the smaller bit in tsuru. Each app is composed of one or more units.
The unit is equivalent to a machine. How the machine is actually represented (baremetal, virtual machine, jails, containers, etc.) is up to the provisioner.