本文整理汇总了Golang中github.com/globocom/tsuru/provision.App.GetName方法的典型用法代码示例。如果您正苦于以下问题:Golang App.GetName方法的具体用法?Golang App.GetName怎么用?Golang App.GetName使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/globocom/tsuru/provision.App
的用法示例。
在下文中一共展示了App.GetName方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: deploy
func deploy(app provision.App, version string, w io.Writer) (string, error) {
commands, err := deployCmds(app, version)
if err != nil {
return "", err
}
imageId := getImage(app)
actions := []*action.Action{&createContainer, &startContainer, &insertContainer}
pipeline := action.NewPipeline(actions...)
err = pipeline.Execute(app, imageId, commands)
if err != nil {
log.Errorf("error on execute deploy pipeline for app %s - %s", app.GetName(), err)
return "", err
}
c := pipeline.Result().(container)
err = c.logs(w)
if err != nil {
log.Errorf("error on get logs for container %s - %s", c.ID, err)
return "", err
}
_, err = dockerCluster().WaitContainer(c.ID)
if err != nil {
log.Errorf("Process failed for container %q: %s", c.ID, err)
return "", err
}
imageId, err = c.commit()
if err != nil {
log.Errorf("error on commit container %s - %s", c.ID, err)
return "", err
}
c.remove()
return imageId, nil
}
示例2: RemoveUnit
func (p *FakeProvisioner) RemoveUnit(app provision.App, name string) error {
if err := p.getError("RemoveUnit"); err != nil {
return err
}
index := -1
p.mut.Lock()
defer p.mut.Unlock()
pApp, ok := p.apps[app.GetName()]
if !ok {
return errNotProvisioned
}
for i, unit := range pApp.units {
if unit.Name == name {
index = i
break
}
}
if index == -1 {
return errors.New("Unit not found.")
}
copy(pApp.units[index:], pApp.units[index+1:])
pApp.units = pApp.units[:len(pApp.units)-1]
pApp.unitLen--
p.apps[app.GetName()] = pApp
return nil
}
示例3: RemoveUnit
func (p *FakeProvisioner) RemoveUnit(app provision.App, name string) error {
if err := p.getError("RemoveUnit"); err != nil {
return err
}
index := -1
appName := app.GetName()
if index := p.FindApp(app); index < 0 {
return errors.New("App is not provisioned.")
}
p.unitMut.Lock()
defer p.unitMut.Unlock()
for i, unit := range p.units[appName] {
if unit.Name == name {
index = i
break
}
}
if index == -1 {
return errors.New("Unit not found.")
}
copy(p.units[appName][index:], p.units[appName][index+1:])
p.units[appName] = p.units[appName][:len(p.units[appName])-1]
p.unitLen--
return nil
}
示例4: AddUnits
func (*dockerProvisioner) AddUnits(a provision.App, units uint) ([]provision.Unit, error) {
if units == 0 {
return nil, errors.New("Cannot add 0 units")
}
containers, err := listAppContainers(a.GetName())
if err != nil {
return nil, err
}
if len(containers) < 1 {
return nil, errors.New("New units can only be added after the first deployment")
}
writer := app.LogWriter{App: a, Writer: ioutil.Discard}
result := make([]provision.Unit, int(units))
imageId := getImage(a)
for i := uint(0); i < units; i++ {
container, err := start(a, imageId, &writer)
if err != nil {
return nil, err
}
result[i] = provision.Unit{
Name: container.ID,
AppName: a.GetName(),
Type: a.GetPlatform(),
Ip: container.IP,
Status: provision.StatusInstalling,
}
}
return result, nil
}
示例5: AddUnits
func (p *FakeProvisioner) AddUnits(app provision.App, n uint) ([]provision.Unit, error) {
if err := p.getError("AddUnits"); err != nil {
return nil, err
}
if n == 0 {
return nil, errors.New("Cannot add 0 units.")
}
index := p.FindApp(app)
if index < 0 {
return nil, errors.New("App is not provisioned.")
}
name := app.GetName()
framework := app.GetFramework()
p.unitMut.Lock()
defer p.unitMut.Unlock()
length := uint(len(p.units[name]))
for i := uint(0); i < n; i++ {
unit := provision.Unit{
Name: fmt.Sprintf("%s/%d", name, length+i),
AppName: name,
Type: framework,
Status: provision.StatusStarted,
Ip: fmt.Sprintf("10.10.10.%d", length+i),
Machine: int(length + i),
}
p.units[name] = append(p.units[name], unit)
}
return p.units[name][length:], nil
}
示例6: runContainerCmd
func runContainerCmd(app provision.App) ([]string, error) {
docker, err := config.GetString("docker:binary")
if err != nil {
return []string{}, err
}
repoNamespace, err := config.GetString("docker:repository-namespace")
if err != nil {
return []string{}, err
}
runBin, err := config.GetString("docker:run-cmd:bin")
if err != nil {
return []string{}, err
}
runArgs, err := config.GetString("docker:run-cmd:args")
if err != nil {
return []string{}, err
}
port, err := config.GetString("docker:run-cmd:port")
if err != nil {
return []string{}, err
}
cmd := fmt.Sprintf("%s %s", runBin, runArgs)
imageName := fmt.Sprintf("%s/%s", repoNamespace, app.GetName()) // TODO (flaviamissi): should be external function
wholeCmd := []string{docker, "run", "-d", "-p", port, imageName, cmd}
return wholeCmd, nil
}
示例7: newContainer
// newContainer creates a new container in Docker and stores it in the database.
func newContainer(app provision.App, imageId string, cmds []string) (container, error) {
cont := container{
AppName: app.GetName(),
Type: app.GetPlatform(),
}
port, err := getPort()
if err != nil {
log.Printf("error on getting port for container %s - %s", cont.AppName, port)
return container{}, err
}
config := docker.Config{
Image: imageId,
Cmd: cmds,
PortSpecs: []string{port},
AttachStdin: false,
AttachStdout: false,
AttachStderr: false,
}
hostID, c, err := dockerCluster().CreateContainer(&config)
if err != nil {
log.Printf("error on creating container in docker %s - %s", cont.AppName, err.Error())
return container{}, err
}
cont.ID = c.ID
cont.Port = port
cont.HostAddr = getHostAddr(hostID)
return cont, nil
}
示例8: AddUnits
func (p *FakeProvisioner) AddUnits(app provision.App, n uint) ([]provision.Unit, error) {
if err := p.getError("AddUnits"); err != nil {
return nil, err
}
if n == 0 {
return nil, errors.New("Cannot add 0 units.")
}
index := p.FindApp(app)
if index < 0 {
return nil, errors.New("App is not provisioned.")
}
name := app.GetName()
platform := app.GetPlatform()
p.unitMut.Lock()
defer p.unitMut.Unlock()
length := uint(len(p.units[name]))
for i := uint(0); i < n; i++ {
unit := provision.Unit{
Name: fmt.Sprintf("%s/%d", name, p.unitLen),
AppName: name,
Type: platform,
Status: provision.StatusStarted,
InstanceId: fmt.Sprintf("i-08%d", length+i),
Ip: fmt.Sprintf("10.10.10.%d", length+i),
Machine: int(length + i),
}
p.units[name] = append(p.units[name], unit)
p.unitLen++
}
result := make([]provision.Unit, int(n))
copy(result, p.units[name][length:])
return result, nil
}
示例9: Provision
func (p *JujuProvisioner) Provision(app provision.App) error {
var buf bytes.Buffer
charms, err := config.GetString("juju:charms-path")
if err != nil {
return errors.New(`Setting "juju:charms-path" is not defined.`)
}
args := []string{
"deploy", "--repository", charms,
"local:" + app.GetPlatform(), app.GetName(),
}
err = runCmd(false, &buf, &buf, args...)
out := buf.String()
if err != nil {
app.Log("Failed to create machine: "+out, "tsuru")
return cmdError(out, err, args)
}
setOption := []string{
"set", app.GetName(), "app-repo=" + repository.ReadOnlyURL(app.GetName()),
}
runCmd(true, &buf, &buf, setOption...)
if p.elbSupport() {
router, err := Router()
if err != nil {
return err
}
if err = router.AddBackend(app.GetName()); err != nil {
return err
}
p.enqueueUnits(app.GetName())
}
return nil
}
示例10: Swap
func (JujuProvisioner) Swap(app1, app2 provision.App) error {
r, err := Router()
if err != nil {
return err
}
return r.Swap(app1.GetName(), app2.GetName())
}
示例11: Provision
func (p *FakeProvisioner) Provision(app provision.App) error {
if err := p.getError("Provision"); err != nil {
return err
}
index := p.FindApp(app)
if index > -1 {
return &provision.Error{Reason: "App already provisioned."}
}
p.apps = append(p.apps, app)
p.unitMut.Lock()
p.units[app.GetName()] = []provision.Unit{
{
Name: app.GetName() + "/0",
AppName: app.GetName(),
Type: app.GetPlatform(),
Status: provision.StatusStarted,
InstanceId: "i-080",
Ip: "10.10.10.1",
Machine: 1,
},
}
p.unitLen++
p.unitMut.Unlock()
return nil
}
示例12: Destroy
func (p *dockerProvisioner) Destroy(app provision.App) error {
containers, _ := listAppContainers(app.GetName())
go func(c []container) {
var containersGroup sync.WaitGroup
containersGroup.Add(len(containers))
for _, c := range containers {
go func(c container) {
defer containersGroup.Done()
err := removeContainer(&c)
if err != nil {
log.Error(err.Error())
}
}(c)
}
containersGroup.Wait()
err := removeImage(assembleImageName(app.GetName()))
if err != nil {
log.Error(err.Error())
}
}(containers)
r, err := getRouter()
if err != nil {
log.Errorf("Failed to get router: %s", err)
return err
}
return r.RemoveBackend(app.GetName())
}
示例13: Addr
func (p *LXCProvisioner) Addr(app provision.App) (string, error) {
r, err := p.router()
if err != nil {
return "", err
}
return r.Addr(app.GetName())
}
示例14: Deploy
func (p *dockerProvisioner) Deploy(a provision.App, w io.Writer) error {
var deploy = func() error {
c, err := newContainer(a)
if err != nil {
return err
}
err = c.deploy(w)
if err != nil {
c.remove()
}
return err
}
if containers, err := listAppContainers(a.GetName()); err == nil && len(containers) > 0 {
for _, c := range containers {
err = deploy()
if err != nil {
return err
}
a.RemoveUnit(c.Id)
}
} else if err := deploy(); err != nil {
return err
}
a.Restart(w)
app.Enqueue(queue.Message{
Action: app.RegenerateApprcAndStart,
Args: []string{a.GetName()},
})
return nil
}
示例15: Provision
func (p *FakeProvisioner) Provision(app provision.App) error {
if err := p.getError("Provision"); err != nil {
return err
}
if p.Provisioned(app) {
return &provision.Error{Reason: "App already provisioned."}
}
p.mut.Lock()
defer p.mut.Unlock()
p.apps[app.GetName()] = provisionedApp{
app: app,
unitLen: 1,
units: []provision.Unit{
{
Name: app.GetName() + "/0",
AppName: app.GetName(),
Type: app.GetPlatform(),
Status: provision.StatusStarted,
InstanceId: "i-080",
Ip: "10.10.10.1",
Machine: 1,
},
},
}
return nil
}