本文整理汇总了Golang中github.com/globocom/tsuru/provision.App.ProvisionUnits方法的典型用法代码示例。如果您正苦于以下问题:Golang App.ProvisionUnits方法的具体用法?Golang App.ProvisionUnits怎么用?Golang App.ProvisionUnits使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/globocom/tsuru/provision.App
的用法示例。
在下文中一共展示了App.ProvisionUnits方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: ExecuteCommand
func (p *JujuProvisioner) ExecuteCommand(stdout, stderr io.Writer, app provision.App, cmd string, args ...string) error {
arguments := []string{"ssh", "-o", "StrictHostKeyChecking no", "-q"}
units := app.ProvisionUnits()
length := len(units)
for i, unit := range units {
if length > 1 {
if i > 0 {
fmt.Fprintln(stdout)
}
fmt.Fprintf(stdout, "Output from unit %q:\n\n", unit.GetName())
if status := unit.GetStatus(); status != provision.StatusStarted {
fmt.Fprintf(stdout, "Unit state is %q, it must be %q for running commands.\n",
status, provision.StatusStarted)
continue
}
}
var cmdargs []string
cmdargs = append(cmdargs, arguments...)
cmdargs = append(cmdargs, strconv.Itoa(unit.GetMachine()), cmd)
cmdargs = append(cmdargs, args...)
err := runCmd(true, stdout, stderr, cmdargs...)
fmt.Fprintln(stdout)
if err != nil {
return err
}
}
return nil
}
示例2: ExecuteCommand
func (*LXCProvisioner) ExecuteCommand(stdout, stderr io.Writer, app provision.App, cmd string, args ...string) error {
arguments := []string{"-l", "ubuntu", "-q", "-o", "StrictHostKeyChecking no"}
arguments = append(arguments, app.ProvisionUnits()[0].GetIp())
arguments = append(arguments, cmd)
arguments = append(arguments, args...)
return executor().Execute("ssh", arguments, nil, stdout, stderr)
}
示例3: RemoveUnits
func (p *JujuProvisioner) RemoveUnits(app provision.App, n uint) error {
units := app.ProvisionUnits()
length := uint(len(units))
if length == n {
return errors.New("You can't remove all units from an app.")
} else if length < n {
return fmt.Errorf("You can't remove %d units from this app because it has only %d units.", n, length)
}
return p.removeUnits(app, units[:n]...)
}
示例4: RemoveUnit
func (p *JujuProvisioner) RemoveUnit(app provision.App, name string) error {
var unit provision.AppUnit
for _, unit = range app.ProvisionUnits() {
if unit.GetName() == name {
break
}
}
if unit.GetName() != name {
return fmt.Errorf("App %q does not have a unit named %q.", app.GetName(), name)
}
return p.removeUnits(app, unit)
}
示例5: ExecuteCommand
func (*LocalProvisioner) ExecuteCommand(stdout, stderr io.Writer, app provision.App, cmd string, args ...string) error {
arguments := []string{"-l", "ubuntu", "-q", "-o", "StrictHostKeyChecking no"}
arguments = append(arguments, app.ProvisionUnits()[0].GetIp())
arguments = append(arguments, cmd)
arguments = append(arguments, args...)
c := exec.Command("ssh", arguments...)
c.Stdout = stdout
c.Stderr = stderr
err := c.Run()
if err != nil {
return err
}
return nil
}
示例6: terminateMachines
func (p *JujuProvisioner) terminateMachines(app provision.App) error {
var buf bytes.Buffer
for _, u := range app.ProvisionUnits() {
buf.Reset()
err := runCmd(false, &buf, &buf, "terminate-machine", strconv.Itoa(u.GetMachine()))
out := buf.String()
if err != nil {
msg := fmt.Sprintf("Failed to destroy unit %s: %s", u.GetName(), out)
app.Log(msg, "tsuru")
return &provision.Error{Reason: out, Err: err}
}
}
return nil
}
示例7: RemoveUnits
func (p *JujuProvisioner) RemoveUnits(app provision.App, n uint) ([]int, error) {
units := app.ProvisionUnits()
length := uint(len(units))
if length == n {
return nil, errors.New("You can't remove all units from an app.")
} else if length < n {
return nil, fmt.Errorf("You can't remove %d units from this app because it has only %d units.", n, length)
}
result := make([]int, n)
if err := p.removeUnits(app, units[:n]...); err != nil {
return nil, err
}
for i := 0; i < len(result); i++ {
result[i] = i
}
return result, nil
}
示例8: deleteUnits
func (p *JujuProvisioner) deleteUnits(app provision.App) {
units := app.ProvisionUnits()
names := make([]string, len(units))
for i, u := range units {
names[i] = u.GetName()
}
p.unitsCollection().RemoveAll(bson.M{"_id": bson.M{"$in": names}})
}
示例9: Addr
func (p *JujuProvisioner) Addr(app provision.App) (string, error) {
if p.elbSupport() {
return p.LoadBalancer().Addr(app)
}
units := app.ProvisionUnits()
if len(units) < 1 {
return "", fmt.Errorf("App %q has no units.", app.GetName())
}
return units[0].GetIp(), nil
}
示例10: Destroy
func (p *DockerProvisioner) Destroy(app provision.App) error {
units := app.ProvisionUnits()
for _, u := range units {
go func(u provision.AppUnit) {
c := container{
name: app.GetName(),
// TODO: get actual c.id
id: u.GetInstanceId(),
}
log.Printf("stoping container %s", u.GetInstanceId())
if err := c.stop(); err != nil {
log.Print("Could not stop container. Trying to remove it anyway.")
log.Print(err.Error())
}
log.Printf("removing container %s", u.GetInstanceId())
if err := c.remove(); err != nil {
log.Print("Could not remove container. Aborting...")
log.Print(err.Error())
return
}
log.Printf("removing container %s from the database", u.GetName())
if err := collection().Remove(bson.M{"name": u.GetName()}); err != nil {
log.Printf("Could not remove container from database. Error %s", err.Error())
}
log.Print("Units successfuly removed.")
}(u)
}
img := &image{Name: app.GetName()}
log.Printf("removing image %s from the database", app.GetName())
if err := img.remove(); err != nil {
return err
}
return nil
}
示例11: terminateMachines
func (p *JujuProvisioner) terminateMachines(app provision.App, units ...provision.AppUnit) error {
var buf bytes.Buffer
if len(units) < 1 {
units = app.ProvisionUnits()
}
for _, u := range units {
buf.Reset()
err := runCmd(false, &buf, &buf, "terminate-machine", strconv.Itoa(u.GetMachine()))
out := buf.String()
if err != nil {
msg := fmt.Sprintf("Failed to destroy unit %s: %s", u.GetName(), out)
app.Log(msg, "tsuru")
log.Printf("Failed to destroy unit %q from the app %q: %s", u.GetName(), app.GetName(), out)
return cmdError(out, err, []string{"terminate-machine", strconv.Itoa(u.GetMachine())})
}
}
return nil
}
示例12: Addr
func (*LocalProvisioner) Addr(app provision.App) (string, error) {
units := app.ProvisionUnits()
return units[0].GetIp(), nil
}