Example #1
0
func Git(provisioner provision.Provisioner, app provision.App, objID string, w io.Writer) error {
	log.Write(w, []byte("\n ---> tsuru receiving push\n"))
	log.Write(w, []byte("\n ---> Replicating the application repository across units\n"))
	out, err := clone(provisioner, app)
	if err != nil {
		out, err = fetch(provisioner, app)
	}
	if err != nil {
		msg := fmt.Sprintf("Got error while cloning/fetching repository: %s -- \n%s", err, string(out))
		log.Write(w, []byte(msg))
		return errors.New(msg)
	}
	out, err = checkout(provisioner, app, objID)
	if err != nil {
		msg := fmt.Sprintf("Failed to checkout Git repository: %s -- \n%s", err, string(out))
		log.Write(w, []byte(msg))
		return errors.New(msg)
	}
	log.Write(w, []byte("\n ---> Installing dependencies\n"))
	if err := provisioner.InstallDeps(app, w); err != nil {
		log.Write(w, []byte(err.Error()))
		return err
	}
	log.Write(w, []byte("\n ---> Restarting application\n"))
	if err := app.Restart(w); err != nil {
		log.Write(w, []byte(err.Error()))
		return err
	}
	return log.Write(w, []byte("\n ---> Deploy done!\n\n"))
}
Example #2
0
func (app *App) Stop(w io.Writer) error {
	log.Write(w, []byte("\n ---> Stopping your app\n"))
	err := Provisioner.Stop(app)
	if err != nil {
		log.Errorf("[stop] error on stop the app %s - %s", app.Name, err)
		return err
	}
	return nil
}
Example #3
0
func (app *App) Stop(w io.Writer, process string) error {
	msg := fmt.Sprintf("\n ---> Stopping the process %q\n", process)
	if process == "" {
		msg = fmt.Sprintf("\n ---> Stopping the app %q\n", app.Name)
	}
	log.Write(w, []byte(msg))
	err := Provisioner.Stop(app, process)
	if err != nil {
		log.Errorf("[stop] error on stop the app %s - %s", app.Name, err)
		return err
	}
	return nil
}
Example #4
0
// Restart runs the restart hook for the app, writing its output to w.
func (app *App) Restart(process string, w io.Writer) error {
	msg := fmt.Sprintf("---- Restarting process %q ----\n", process)
	if process == "" {
		msg = fmt.Sprintf("---- Restarting the app %q ----\n", app.Name)
	}
	err := log.Write(w, []byte(msg))
	if err != nil {
		log.Errorf("[restart] error on write app log for the app %s - %s", app.Name, err)
		return err
	}
	err = Provisioner.Restart(app, process, w)
	if err != nil {
		log.Errorf("[restart] error on restart the app %s - %s", app.Name, err)
		return err
	}
	return nil
}
Example #5
0
// Restart runs the restart hook for the app, writing its output to w.
func (app *App) Restart(w io.Writer) error {
	err := app.hookRunner().Restart(app, w, "before")
	if err != nil {
		return err
	}
	err = log.Write(w, []byte("\n ---> Restarting your app\n"))
	if err != nil {
		log.Errorf("[restart] error on write app log for the app %s - %s", app.Name, err)
		return err
	}
	err = Provisioner.Restart(app)
	if err != nil {
		log.Errorf("[restart] error on restart the app %s - %s", app.Name, err)
		return err
	}
	return app.hookRunner().Restart(app, w, "after")
}
Example #6
0
File: app.go Project: botvs/tsuru
// Start starts the app calling the provisioner.Start method and
// changing the units state to StatusStarted.
func (app *App) Start(w io.Writer, process string) error {
	msg := fmt.Sprintf("\n ---> Starting the process %q\n", process)
	if process == "" {
		msg = fmt.Sprintf("\n ---> Starting the app %q\n", app.Name)
	}
	log.Write(w, []byte(msg))
	err := Provisioner.Start(app, process)
	if err != nil {
		log.Errorf("[start] error on start the app %s - %s", app.Name, err)
		return err
	}
	_, err = app.RebuildRoutes()
	if err != nil {
		return err
	}
	return nil
}
Example #7
0
File: app.go Project: tsuru/tsuru
// Start starts the app calling the provisioner.Start method and
// changing the units state to StatusStarted.
func (app *App) Start(w io.Writer, process string) error {
	msg := fmt.Sprintf("\n ---> Starting the process %q\n", process)
	if process == "" {
		msg = fmt.Sprintf("\n ---> Starting the app %q\n", app.Name)
	}
	log.Write(w, []byte(msg))
	prov, err := app.getProvisioner()
	if err != nil {
		return err
	}
	err = prov.Start(app, process)
	if err != nil {
		log.Errorf("[start] error on start the app %s - %s", app.Name, err)
		return err
	}
	rebuild.RoutesRebuildOrEnqueue(app.Name)
	return err
}
Example #8
0
File: app.go Project: tsuru/tsuru
func (app *App) Sleep(w io.Writer, process string, proxyURL *url.URL) error {
	prov, err := app.getProvisioner()
	if err != nil {
		return err
	}
	sleepProv, ok := prov.(provision.SleepableProvisioner)
	if !ok {
		return provision.ProvisionerNotSupported{Prov: prov, Action: "sleeping"}
	}
	msg := fmt.Sprintf("\n ---> Putting the process %q to sleep\n", process)
	if process == "" {
		msg = fmt.Sprintf("\n ---> Putting the app %q to sleep\n", app.Name)
	}
	log.Write(w, []byte(msg))
	r, err := app.Router()
	if err != nil {
		log.Errorf("[sleep] error on sleep the app %s - %s", app.Name, err)
		return err
	}
	oldRoutes, err := r.Routes(app.GetName())
	if err != nil {
		log.Errorf("[sleep] error on sleep the app %s - %s", app.Name, err)
		return err
	}
	for _, route := range oldRoutes {
		r.RemoveRoute(app.GetName(), route)
	}
	err = r.AddRoute(app.GetName(), proxyURL)
	if err != nil {
		log.Errorf("[sleep] error on sleep the app %s - %s", app.Name, err)
		return err
	}
	err = sleepProv.Sleep(app, process)
	if err != nil {
		log.Errorf("[sleep] error on sleep the app %s - %s", app.Name, err)
		for _, route := range oldRoutes {
			r.AddRoute(app.GetName(), route)
		}
		r.RemoveRoute(app.GetName(), proxyURL)
		log.Errorf("[sleep] rolling back the sleep %s", app.Name)
		return err
	}
	return nil
}
Example #9
0
func (app *App) Stop(w io.Writer) error {
	log.Write(w, []byte("\n ---> Stopping your app\n"))
	err := Provisioner.Stop(app)
	if err != nil {
		log.Errorf("[stop] error on stop the app %s - %s", app.Name, err)
		return err
	}
	units := make([]Unit, len(app.Units))
	for i, u := range app.Units {
		u.State = provision.StatusStopped.String()
		units[i] = u
	}
	app.Units = units
	conn, err := db.Conn()
	if err != nil {
		return err
	}
	defer conn.Close()
	return conn.Apps().Update(bson.M{"name": app.Name}, app)
}
Example #10
0
File: app.go Project: botvs/tsuru
func (app *App) Sleep(w io.Writer, process string, proxyURL *url.URL) error {
	msg := fmt.Sprintf("\n ---> Putting the process %q to sleep\n", process)
	if process == "" {
		msg = fmt.Sprintf("\n ---> Putting the app %q to sleep\n", app.Name)
	}
	log.Write(w, []byte(msg))
	routerName, err := app.GetRouter()
	if err != nil {
		log.Errorf("[sleep] error on sleep the app %s - %s", app.Name, err)
		return err
	}
	r, err := router.Get(routerName)
	if err != nil {
		log.Errorf("[sleep] error on sleep the app %s - %s", app.Name, err)
		return err
	}
	oldRoutes, err := r.Routes(app.GetName())
	if err != nil {
		log.Errorf("[sleep] error on sleep the app %s - %s", app.Name, err)
		return err
	}
	for _, route := range oldRoutes {
		r.RemoveRoute(app.GetName(), route)
	}
	err = r.AddRoute(app.GetName(), proxyURL)
	if err != nil {
		log.Errorf("[sleep] error on sleep the app %s - %s", app.Name, err)
		return err
	}
	err = Provisioner.Sleep(app, process)
	if err != nil {
		log.Errorf("[sleep] error on sleep the app %s - %s", app.Name, err)
		for _, route := range oldRoutes {
			r.AddRoute(app.GetName(), route)
		}
		r.RemoveRoute(app.GetName(), proxyURL)
		log.Errorf("[sleep] rolling back the sleep %s", app.Name)
		return err
	}
	return nil
}