コード例 #1
0
ファイル: worker.go プロジェクト: jrivets/gazer
func (w *worker) Deploy(app spi.Application) (err error) {
	w.wc.logger.Info("worker.Deploy(): appId=", app.Id(), " to w=", w)
	if err := w.setSA(WS_DEPLOYING, spi.NO_APP_ID); err != nil {
		return err
	}

	instance := w.instance()
	if err := app.Deploy(instance); err != nil {
		go func() {
			w.wc.logger.Warn("worker.Deploy(): failed. Rolling back to STARTED state.")
			if instance != nil {
				instance.Stop()
			}
			if err := w.startInstance(true); err != nil {
				w.wc.logger.Error("worker.Deploy(): Oops, cannot switch to STARTED state, got zombie now w=", w)
			}
		}()
		return err
	}

	if err := w.setSA(WS_DEPLOYED, app.Id()); err != nil {
		return err
	}
	w.wc.logger.Info("worker.Deploy(): Done. w=", w)
	return nil
}