本文整理汇总了Golang中github.com/globocom/tsuru/provision.Unit.Ip方法的典型用法代码示例。如果您正苦于以下问题:Golang Unit.Ip方法的具体用法?Golang Unit.Ip怎么用?Golang Unit.Ip使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/globocom/tsuru/provision.Unit
的用法示例。
在下文中一共展示了Unit.Ip方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: collectUnit
func collectUnit(container container, units chan<- provision.Unit, wg *sync.WaitGroup) {
defer wg.Done()
unit := provision.Unit{
Name: container.ID,
AppName: container.AppName,
Type: container.Type,
}
switch container.Status {
case "error":
unit.Status = provision.StatusError
units <- unit
return
case "created":
return
}
unit.Ip = container.HostAddr
if ip, hostPort, err := container.networkInfo(); err == nil &&
(hostPort != container.HostPort || ip != container.IP) {
err = fixContainer(&container, ip, hostPort)
if err != nil {
log.Printf("error on fix container hostport for [container %s]", container.ID)
return
}
}
addr := strings.Replace(container.getAddress(), "http://", "", 1)
conn, err := net.Dial("tcp", addr)
if err != nil {
unit.Status = provision.StatusInstalling
} else {
conn.Close()
unit.Status = provision.StatusStarted
}
log.Printf("collected data for [container %s] - [app %s]", container.ID, container.AppName)
units <- unit
}
示例2: collectUnit
func collectUnit(container container, units chan<- provision.Unit, wg *sync.WaitGroup) {
defer wg.Done()
unit := provision.Unit{
Name: container.ID,
AppName: container.AppName,
Type: container.Type,
}
if container.Status == "error" {
unit.Status = provision.StatusDown
units <- unit
return
}
if container.Status == "running" {
unit.Ip = container.HostAddr
ip, hostPort, err := container.networkInfo()
if err == nil &&
(hostPort != container.HostPort || ip != container.IP) {
err = fixContainer(&container, ip, hostPort)
if err != nil {
log.Errorf("error on fix container hostport for [container %s]", container.ID)
return
}
}
addr := strings.Replace(container.getAddress(), "http://", "", 1)
conn, err := net.Dial("tcp", addr)
if err != nil {
unit.Status = provision.StatusUnreachable
} else {
conn.Close()
unit.Status = provision.StatusStarted
}
log.Debugf("collected data for [container %s] - [app %s]", container.ID, container.AppName)
units <- unit
}
}
示例3: collectUnit
func collectUnit(container container, units chan<- provision.Unit, errs chan<- error, wg *sync.WaitGroup) {
defer wg.Done()
docker, _ := config.GetString("docker:binary")
unit := provision.Unit{
Name: container.Id,
AppName: container.AppName,
Type: container.Type,
}
switch container.Status {
case "error":
unit.Status = provision.StatusError
units <- unit
fallthrough
case "created":
return
}
out, err := runCmd(docker, "inspect", container.Id)
if err != nil {
errs <- err
return
}
var c map[string]interface{}
err = json.Unmarshal([]byte(out), &c)
if err != nil {
errs <- err
return
}
unit.Ip = c["NetworkSettings"].(map[string]interface{})["IpAddress"].(string)
if hostPort, err := container.hostPort(); err == nil && hostPort != container.HostPort {
err = fixContainer(&container, unit.Ip, hostPort)
if err != nil {
errs <- err
return
}
}
addr := fmt.Sprintf("%s:%s", unit.Ip, container.Port)
conn, err := net.Dial("tcp", addr)
if err != nil {
unit.Status = provision.StatusInstalling
} else {
conn.Close()
unit.Status = provision.StatusStarted
}
units <- unit
}
示例4: collectUnit
func collectUnit(container container, units chan<- provision.Unit, wg *sync.WaitGroup) {
defer wg.Done()
unit := provision.Unit{
Name: container.ID,
AppName: container.AppName,
Type: container.Type,
}
switch container.Status {
case "error":
unit.Status = provision.StatusError
units <- unit
return
case "created":
return
}
dockerContainer, err := dockerCluster().InspectContainer(container.ID)
if err != nil {
log.Printf("error on inspecting [container %s] for collect data", container.ID)
return
}
unit.Ip = dockerContainer.NetworkSettings.IPAddress
if hostPort, err := container.hostPort(); err == nil && hostPort != container.HostPort {
err = fixContainer(&container, unit.Ip, hostPort)
if err != nil {
log.Printf("error on fix container hostport for [container %s]", container.ID)
return
}
}
addr := fmt.Sprintf("%s:%s", unit.Ip, container.Port)
conn, err := net.Dial("tcp", addr)
if err != nil {
unit.Status = provision.StatusInstalling
} else {
conn.Close()
unit.Status = provision.StatusStarted
}
log.Printf("collected data for [container %s] - [app %s]", container.ID, container.AppName)
units <- unit
}
示例5: Provision
func (p *LocalProvisioner) Provision(app provision.App) error {
go func(p *LocalProvisioner, app provision.App) {
c := container{name: app.GetName()}
log.Printf("creating container %s", c.name)
u := provision.Unit{
Name: app.GetName(),
AppName: app.GetName(),
Type: app.GetFramework(),
Machine: 0,
InstanceId: app.GetName(),
Status: provision.StatusCreating,
Ip: "",
}
log.Printf("inserting container unit %s in the database", app.GetName())
err := p.collection().Insert(u)
if err != nil {
log.Print(err)
}
err = c.create()
if err != nil {
log.Printf("error on create container %s", app.GetName())
log.Print(err)
}
err = c.start()
if err != nil {
log.Printf("error on start container %s", app.GetName())
log.Print(err)
}
ip := c.ip()
u.Ip = ip
u.Status = provision.StatusInstalling
err = p.collection().Update(bson.M{"name": u.Name}, u)
if err != nil {
log.Print(err)
}
err = p.setup(ip, app.GetFramework())
if err != nil {
log.Printf("error on setup container %s", app.GetName())
log.Print(err)
}
err = p.install(ip)
if err != nil {
log.Printf("error on install container %s", app.GetName())
log.Print(err)
}
err = p.start(ip)
if err != nil {
log.Printf("error on start app for container %s", app.GetName())
log.Print(err)
}
err = AddRoute(app.GetName(), ip)
if err != nil {
log.Printf("error on add route for %s with ip %s", app.GetName(), ip)
log.Print(err)
}
err = RestartRouter()
if err != nil {
log.Printf("error on restart router")
log.Print(err)
}
u.Status = provision.StatusStarted
err = p.collection().Update(bson.M{"name": u.Name}, u)
if err != nil {
log.Print(err)
}
}(p, app)
return nil
}
示例6: Provision
func (p *LXCProvisioner) Provision(app provision.App) error {
go func(p *LXCProvisioner, app provision.App) {
c := container{name: app.GetName()}
log.Printf("creating container %s", c.name)
u := provision.Unit{
Name: app.GetName(),
AppName: app.GetName(),
Type: app.GetPlatform(),
Machine: 0,
InstanceId: app.GetName(),
Status: provision.StatusCreating,
Ip: "",
}
log.Printf("inserting container unit %s in the database", app.GetName())
err := p.collection().Insert(u)
if err != nil {
log.Print(err)
}
err = c.create()
if err != nil {
log.Printf("error on create container %s", app.GetName())
log.Print(err)
}
err = c.start()
if err != nil {
log.Printf("error on start container %s", app.GetName())
log.Print(err)
}
u.Ip = c.IP()
u.Status = provision.StatusInstalling
err = p.collection().Update(bson.M{"name": u.Name}, u)
if err != nil {
log.Print(err)
}
err = c.waitForNetwork()
if err != nil {
log.Print(err)
}
err = p.setup(c.IP(), app.GetPlatform())
if err != nil {
log.Printf("error on setup container %s", app.GetName())
log.Print(err)
}
err = p.install(c.IP())
if err != nil {
log.Printf("error on install container %s", app.GetName())
log.Print(err)
}
err = p.start(c.IP())
if err != nil {
log.Printf("error on start app for container %s", app.GetName())
log.Print(err)
}
err = p.start(c.IP())
r, err := p.router()
if err != nil {
log.Print(err)
return
}
err = r.AddBackend(app.GetName())
if err != nil {
log.Printf("error on add backend for %s", app.GetName())
log.Print(err)
return
}
err = r.AddRoute(app.GetName(), c.IP())
if err != nil {
log.Printf("error on add route for %s with ip %s", app.GetName(), c.IP())
log.Print(err)
}
u.Status = provision.StatusStarted
err = p.collection().Update(bson.M{"name": u.Name}, u)
if err != nil {
log.Print(err)
}
}(p, app)
return nil
}