本文整理汇总了Golang中github.com/tsuru/tsuru/provision/docker/container.Container类的典型用法代码示例。如果您正苦于以下问题:Golang Container类的具体用法?Golang Container怎么用?Golang Container使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Container类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestAddNewRouteForwardNoWeb
func (s *S) TestAddNewRouteForwardNoWeb(c *check.C) {
app := provisiontest.NewFakeApp("myapp", "python", 1)
routertest.FakeRouter.AddBackend(app.GetName())
defer routertest.FakeRouter.RemoveBackend(app.GetName())
imageName := "tsuru/app-" + app.GetName()
customData := map[string]interface{}{
"processes": map[string]interface{}{
"api": "python myapi.py",
},
}
err := saveImageCustomData(imageName, customData)
c.Assert(err, check.IsNil)
cont1 := container.Container{ID: "ble-1", AppName: app.GetName(), ProcessName: "api", HostAddr: "127.0.0.1", HostPort: "1234"}
cont2 := container.Container{ID: "ble-2", AppName: app.GetName(), ProcessName: "api", HostAddr: "127.0.0.2", HostPort: "4321"}
defer cont1.Remove(s.p)
defer cont2.Remove(s.p)
args := changeUnitsPipelineArgs{
app: app,
provisioner: s.p,
imageId: imageName,
}
context := action.FWContext{Previous: []container.Container{cont1, cont2}, Params: []interface{}{args}}
r, err := addNewRoutes.Forward(context)
c.Assert(err, check.IsNil)
containers := r.([]container.Container)
hasRoute := routertest.FakeRouter.HasRoute(app.GetName(), cont1.Address().String())
c.Assert(hasRoute, check.Equals, true)
hasRoute = routertest.FakeRouter.HasRoute(app.GetName(), cont2.Address().String())
c.Assert(hasRoute, check.Equals, true)
c.Assert(containers, check.HasLen, 2)
c.Assert(containers[0].Routable, check.Equals, true)
c.Assert(containers[0].ID, check.Equals, "ble-1")
c.Assert(containers[1].Routable, check.Equals, true)
c.Assert(containers[1].ID, check.Equals, "ble-2")
}
开发者ID:nicolas2bonfils,项目名称:tsuru,代码行数:35,代码来源:actions_test.go
示例2: TestCreateContainerForward
func (s *S) TestCreateContainerForward(c *check.C) {
err := s.newFakeImage(s.p, "tsuru/python", nil)
c.Assert(err, check.IsNil)
client, err := docker.NewClient(s.server.URL())
c.Assert(err, check.IsNil)
images, err := client.ListImages(docker.ListImagesOptions{All: true})
c.Assert(err, check.IsNil)
cmds := []string{"ps", "-ef"}
app := provisiontest.NewFakeApp("myapp", "python", 1)
cont := container.Container{Name: "myName", AppName: app.GetName(), Type: app.GetPlatform(), Status: "created"}
args := runContainerActionsArgs{
app: app,
imageID: images[0].ID,
commands: cmds,
provisioner: s.p,
}
context := action.FWContext{Previous: cont, Params: []interface{}{args}}
r, err := createContainer.Forward(context)
c.Assert(err, check.IsNil)
cont = r.(container.Container)
defer cont.Remove(s.p)
c.Assert(cont, check.FitsTypeOf, container.Container{})
c.Assert(cont.ID, check.Not(check.Equals), "")
c.Assert(cont.HostAddr, check.Equals, "127.0.0.1")
dcli, err := docker.NewClient(s.server.URL())
c.Assert(err, check.IsNil)
cc, err := dcli.InspectContainer(cont.ID)
c.Assert(err, check.IsNil)
c.Assert(cc.State.Running, check.Equals, false)
}
开发者ID:nicolas2bonfils,项目名称:tsuru,代码行数:30,代码来源:actions_test.go
示例3: fixContainer
func (p *dockerProvisioner) fixContainer(container *container.Container, info container.NetworkInfo) error {
if info.HTTPHostPort == "" {
return nil
}
appInstance, err := app.GetByName(container.AppName)
if err != nil {
return err
}
r, err := getRouterForApp(appInstance)
if err != nil {
return err
}
err = r.RemoveRoute(container.AppName, container.Address())
if err != nil && err != router.ErrRouteNotFound {
return err
}
container.IP = info.IP
container.HostPort = info.HTTPHostPort
err = r.AddRoute(container.AppName, container.Address())
if err != nil && err != router.ErrRouteExists {
return err
}
coll := p.Collection()
defer coll.Close()
return coll.Update(bson.M{"id": container.ID}, container)
}
开发者ID:nicolas2bonfils,项目名称:tsuru,代码行数:26,代码来源:fix.go
示例4: TestFollowLogsAndCommitForward
func (s *S) TestFollowLogsAndCommitForward(c *check.C) {
err := s.newFakeImage(s.p, "tsuru/python", nil)
c.Assert(err, check.IsNil)
app := provisiontest.NewFakeApp("mightyapp", "python", 1)
nextImgName, err := appNewImageName(app.GetName())
c.Assert(err, check.IsNil)
cont := container.Container{AppName: "mightyapp", ID: "myid123", BuildingImage: nextImgName}
err = cont.Create(&container.CreateArgs{
App: app,
ImageID: "tsuru/python",
Commands: []string{"foo"},
Provisioner: s.p,
})
c.Assert(err, check.IsNil)
buf := safe.NewBuffer(nil)
args := runContainerActionsArgs{writer: buf, provisioner: s.p}
context := action.FWContext{Params: []interface{}{args}, Previous: cont}
imageId, err := followLogsAndCommit.Forward(context)
c.Assert(err, check.IsNil)
c.Assert(imageId, check.Equals, "tsuru/app-mightyapp:v1")
c.Assert(buf.String(), check.Not(check.Equals), "")
var dbCont container.Container
coll := s.p.Collection()
defer coll.Close()
err = coll.Find(bson.M{"id": cont.ID}).One(&dbCont)
c.Assert(err, check.NotNil)
c.Assert(err.Error(), check.Equals, "not found")
_, err = s.p.Cluster().InspectContainer(cont.ID)
c.Assert(err, check.NotNil)
c.Assert(err.Error(), check.Matches, "No such container.*")
err = s.p.Cluster().RemoveImage("tsuru/app-mightyapp:v1")
c.Assert(err, check.IsNil)
}
开发者ID:nicolas2bonfils,项目名称:tsuru,代码行数:33,代码来源:actions_test.go
示例5: healContainerIfNeeded
func (h *ContainerHealer) healContainerIfNeeded(cont container.Container) error {
if cont.LastSuccessStatusUpdate.IsZero() {
if !cont.MongoID.Time().Before(time.Now().Add(-h.maxUnresponsiveTime)) {
return nil
}
}
isAsExpected, err := h.isAsExpected(cont)
if err != nil {
log.Errorf("Containers healing: couldn't verify running processes in container %q: %s", cont.ID, err)
}
if isAsExpected {
cont.SetStatus(h.provisioner, cont.ExpectedStatus(), true)
return nil
}
locked := h.locker.Lock(cont.AppName)
if !locked {
return errors.Errorf("Containers healing: unable to heal %q couldn't lock app %s", cont.ID, cont.AppName)
}
defer h.locker.Unlock(cont.AppName)
// Sanity check, now we have a lock, let's find out if the container still exists
_, err = h.provisioner.GetContainer(cont.ID)
if err != nil {
if _, isNotFound := err.(*provision.UnitNotFoundError); isNotFound {
return nil
}
return errors.Wrapf(err, "Containers healing: unable to heal %q couldn't verify it still exists", cont.ID)
}
a, err := app.GetByName(cont.AppName)
if err != nil {
return errors.Wrapf(err, "Containers healing: unable to heal %q couldn't get app %q", cont.ID, cont.AppName)
}
log.Errorf("Initiating healing process for container %q, unresponsive since %s.", cont.ID, cont.LastSuccessStatusUpdate)
evt, err := event.NewInternal(&event.Opts{
Target: event.Target{Type: event.TargetTypeContainer, Value: cont.ID},
InternalKind: "healer",
CustomData: cont,
Allowed: event.Allowed(permission.PermAppReadEvents, append(permission.Contexts(permission.CtxTeam, a.Teams),
permission.Context(permission.CtxApp, a.Name),
permission.Context(permission.CtxPool, a.Pool),
)...),
})
if err != nil {
return errors.Wrap(err, "Error trying to insert container healing event, healing aborted")
}
newCont, healErr := h.healContainer(cont)
if healErr != nil {
healErr = errors.Errorf("Error healing container %q: %s", cont.ID, healErr.Error())
}
err = evt.DoneCustomData(healErr, newCont)
if err != nil {
log.Errorf("Error trying to update containers healing event: %s", err)
}
return healErr
}
开发者ID:tsuru,项目名称:tsuru,代码行数:54,代码来源:healer_container.go
示例6: TestCreateContainerForward
func (s *S) TestCreateContainerForward(c *check.C) {
config.Set("docker:user", "ubuntu")
defer config.Unset("docker:user")
err := s.newFakeImage(s.p, "tsuru/python", nil)
c.Assert(err, check.IsNil)
client, err := docker.NewClient(s.server.URL())
c.Assert(err, check.IsNil)
images, err := client.ListImages(docker.ListImagesOptions{All: true})
c.Assert(err, check.IsNil)
cmds := []string{"ps", "-ef"}
app := provisiontest.NewFakeApp("myapp", "python", 1)
cont := container.Container{Name: "myName", AppName: app.GetName(), Type: app.GetPlatform(), Status: "created"}
args := runContainerActionsArgs{
app: app,
imageID: images[0].ID,
commands: cmds,
provisioner: s.p,
buildingImage: images[0].ID,
isDeploy: true,
}
context := action.FWContext{Previous: cont, Params: []interface{}{args}}
r, err := createContainer.Forward(context)
c.Assert(err, check.IsNil)
cont = r.(container.Container)
defer cont.Remove(s.p)
c.Assert(cont, check.FitsTypeOf, container.Container{})
c.Assert(cont.ID, check.Not(check.Equals), "")
c.Assert(cont.HostAddr, check.Equals, "127.0.0.1")
dcli, err := docker.NewClient(s.server.URL())
c.Assert(err, check.IsNil)
cc, err := dcli.InspectContainer(cont.ID)
c.Assert(err, check.IsNil)
c.Assert(cc.State.Running, check.Equals, false)
c.Assert(cc.Config.User, check.Equals, "ubuntu")
args = runContainerActionsArgs{
app: app,
imageID: images[0].ID,
commands: cmds,
provisioner: s.p,
}
optsPull := docker.PullImageOptions{Repository: images[0].ID, OutputStream: nil}
err = s.p.Cluster().PullImage(optsPull, docker.AuthConfiguration{})
c.Assert(err, check.IsNil)
cont = container.Container{Name: "myName2", AppName: app.GetName(), Type: app.GetPlatform(), Status: "created"}
context = action.FWContext{Previous: cont, Params: []interface{}{args}}
r, err = createContainer.Forward(context)
c.Assert(err, check.IsNil)
cont = r.(container.Container)
defer cont.Remove(s.p)
cc, err = dcli.InspectContainer(cont.ID)
c.Assert(err, check.IsNil)
c.Assert(cc.Config.User, check.Equals, "")
}
开发者ID:tsuru,项目名称:tsuru,代码行数:53,代码来源:actions_test.go
示例7: runRestartAfterHooks
func (p *dockerProvisioner) runRestartAfterHooks(cont *container.Container, w io.Writer) error {
yamlData, err := getImageTsuruYamlData(cont.Image)
if err != nil {
return err
}
cmds := yamlData.Hooks.Restart.After
for _, cmd := range cmds {
err := cont.Exec(p, w, w, cmd)
if err != nil {
return fmt.Errorf("couldn't execute restart:after hook %q(%s): %s", cmd, cont.ShortID(), err.Error())
}
}
return nil
}
开发者ID:zhenruyan,项目名称:tsuru,代码行数:14,代码来源:provisioner.go
示例8: isAsExpected
func (h *ContainerHealer) isAsExpected(cont container.Container) (bool, error) {
container, err := h.provisioner.Cluster().InspectContainer(cont.ID)
if err != nil {
return false, err
}
if container.State.Dead || container.State.RemovalInProgress {
return false, nil
}
isRunning := container.State.Running || container.State.Restarting
if cont.ExpectedStatus() == provision.StatusStopped {
return !isRunning, nil
}
return isRunning, nil
}
开发者ID:tsuru,项目名称:tsuru,代码行数:14,代码来源:healer_container.go
示例9: fixContainer
func (p *dockerProvisioner) fixContainer(container *container.Container, info container.NetworkInfo) error {
if info.HTTPHostPort == "" {
return nil
}
container.IP = info.IP
container.HostPort = info.HTTPHostPort
coll := p.Collection()
defer coll.Close()
err := coll.Update(bson.M{"id": container.ID}, bson.M{
"$set": bson.M{"hostport": container.HostPort, "ip": container.IP},
})
lockedRoutesRebuildOrEnqueue(container.AppName)
return err
}
开发者ID:zhenruyan,项目名称:tsuru,代码行数:14,代码来源:fix.go
示例10: healContainerIfNeeded
func (h *ContainerHealer) healContainerIfNeeded(cont container.Container) error {
if cont.LastSuccessStatusUpdate.IsZero() {
if !cont.MongoID.Time().Before(time.Now().Add(-h.maxUnresponsiveTime)) {
return nil
}
}
isRunning, err := h.isRunning(cont)
if err != nil {
log.Errorf("Containers healing: couldn't verify running processes in container %s: %s", cont.ID, err.Error())
}
if isRunning {
cont.SetStatus(h.provisioner, provision.StatusStarted, true)
return nil
}
healingCounter, err := healingCountFor("container", cont.ID, consecutiveHealingsTimeframe)
if err != nil {
return fmt.Errorf("Containers healing: couldn't verify number of previous healings for %s: %s", cont.ID, err.Error())
}
if healingCounter > consecutiveHealingsLimitInTimeframe {
return fmt.Errorf("Containers healing: number of healings for container %s in the last %d minutes exceeds limit of %d: %d",
cont.ID, consecutiveHealingsTimeframe/time.Minute, consecutiveHealingsLimitInTimeframe, healingCounter)
}
locked := h.locker.Lock(cont.AppName)
if !locked {
return fmt.Errorf("Containers healing: unable to heal %s couldn't lock app %s", cont.ID, cont.AppName)
}
defer h.locker.Unlock(cont.AppName)
// Sanity check, now we have a lock, let's find out if the container still exists
_, err = h.provisioner.GetContainer(cont.ID)
if err != nil {
if err == mgo.ErrNotFound {
return nil
}
return fmt.Errorf("Containers healing: unable to heal %s couldn't verify it still exists.", cont.ID)
}
log.Errorf("Initiating healing process for container %s, unresponsive since %s.", cont.ID, cont.LastSuccessStatusUpdate)
evt, err := NewHealingEvent(cont)
if err != nil {
return fmt.Errorf("Error trying to insert container healing event, healing aborted: %s", err.Error())
}
newCont, healErr := h.healContainer(cont)
if healErr != nil {
healErr = fmt.Errorf("Error healing container %s: %s", cont.ID, healErr.Error())
}
err = evt.Update(newCont, healErr)
if err != nil {
log.Errorf("Error trying to update containers healing event: %s", err.Error())
}
return healErr
}
开发者ID:ggarnier,项目名称:tsuru,代码行数:50,代码来源:healer_container.go
示例11: Shell
func (p *dockerProvisioner) Shell(opts provision.ShellOptions) error {
var (
c *container.Container
err error
)
if opts.Unit != "" {
c, err = p.GetContainer(opts.Unit)
} else {
c, err = p.getOneContainerByAppName(opts.App.GetName())
}
if err != nil {
return err
}
return c.Shell(p, opts.Conn, opts.Conn, opts.Conn, container.Pty{Width: opts.Width, Height: opts.Height, Term: opts.Term})
}
开发者ID:zhenruyan,项目名称:tsuru,代码行数:15,代码来源:provisioner.go
示例12: checkContainer
func (p *dockerProvisioner) checkContainer(container *container.Container) error {
if container.Available() {
info, err := container.NetworkInfo(p)
if err != nil {
return err
}
if info.HTTPHostPort != container.HostPort || info.IP != container.IP {
err = p.fixContainer(container, info)
if err != nil {
log.Errorf("error on fix container hostport for [container %s]", container.ID)
return err
}
}
}
return nil
}
开发者ID:zhenruyan,项目名称:tsuru,代码行数:16,代码来源:fix.go
示例13: TestUpdateContainerInDBForward
func (s *S) TestUpdateContainerInDBForward(c *check.C) {
cont := container.Container{Name: "myName"}
coll := s.p.Collection()
defer coll.Close()
err := coll.Insert(cont)
c.Assert(err, check.IsNil)
cont.ID = "myID"
context := action.FWContext{Previous: cont, Params: []interface{}{runContainerActionsArgs{
provisioner: s.p,
}}}
r, err := updateContainerInDB.Forward(context)
c.Assert(r, check.FitsTypeOf, container.Container{})
retrieved, err := s.p.GetContainer(cont.ID)
c.Assert(err, check.IsNil)
c.Assert(retrieved.ID, check.Equals, cont.ID)
}
开发者ID:nicolas2bonfils,项目名称:tsuru,代码行数:16,代码来源:actions_test.go
示例14: TestMoveOneContainerNoActionNeeded
func (s *S) TestMoveOneContainerNoActionNeeded(c *check.C) {
p, err := NewFakeDockerProvisioner()
c.Assert(err, check.IsNil)
defer p.Destroy()
cont := container.Container{ID: "something"}
p.SetContainers("localhost", []container.Container{cont})
errors := make(chan error, 1)
result := p.MoveOneContainer(cont, "localhost", errors, nil, nil, nil)
cont.HostAddr = "localhost"
c.Assert(result, check.DeepEquals, cont)
select {
case err := <-errors:
c.Error(err)
default:
}
}
开发者ID:pedrosnk,项目名称:tsuru,代码行数:16,代码来源:provisioner_test.go
示例15: TestAllContainers
func (s *S) TestAllContainers(c *check.C) {
p, err := NewFakeDockerProvisioner()
c.Assert(err, check.IsNil)
defer p.Destroy()
cont1 := container.Container{ID: "cont1"}
cont2 := container.Container{ID: "cont2"}
p.SetContainers("localhost", []container.Container{cont1})
p.SetContainers("remotehost", []container.Container{cont2})
cont1.HostAddr = "localhost"
cont2.HostAddr = "remotehost"
containers := p.AllContainers()
expected := []container.Container{cont1, cont2}
if expected[0].HostAddr != containers[0].HostAddr {
expected = []container.Container{cont2, cont1}
}
c.Assert(containers, check.DeepEquals, expected)
}
开发者ID:pedrosnk,项目名称:tsuru,代码行数:17,代码来源:provisioner_test.go
示例16: TestFollowLogsAndCommitForwardWaitFailure
func (s *S) TestFollowLogsAndCommitForwardWaitFailure(c *check.C) {
s.server.PrepareFailure("failed to wait for the container", "/containers/.*/wait")
defer s.server.ResetFailure("failed to wait for the container")
err := s.newFakeImage(s.p, "tsuru/python", nil)
c.Assert(err, check.IsNil)
app := provisiontest.NewFakeApp("myapp", "python", 1)
cont := container.Container{AppName: "mightyapp"}
err = cont.Create(&container.CreateArgs{
App: app,
ImageID: "tsuru/python",
Commands: []string{"foo"},
Provisioner: s.p,
})
c.Assert(err, check.IsNil)
err = cont.Start(&container.StartArgs{
Provisioner: s.p,
App: app,
})
c.Assert(err, check.IsNil)
err = cont.Stop(s.p)
c.Assert(err, check.IsNil)
buf := safe.NewBuffer(nil)
args := runContainerActionsArgs{writer: buf, provisioner: s.p}
context := action.FWContext{Params: []interface{}{args}, Previous: cont}
imageId, err := followLogsAndCommit.Forward(context)
c.Assert(err, check.ErrorMatches, `.*failed to wait for the container\n$`)
c.Assert(imageId, check.IsNil)
}
开发者ID:tsuru,项目名称:tsuru,代码行数:28,代码来源:actions_test.go
示例17: TestAddNewRouteForwardDoesNotAddWhenHostPortIsEmpty
func (s *S) TestAddNewRouteForwardDoesNotAddWhenHostPortIsEmpty(c *check.C) {
app := provisiontest.NewFakeApp("myapp", "python", 1)
routertest.FakeRouter.AddBackend(app.GetName())
defer routertest.FakeRouter.RemoveBackend(app.GetName())
cont := container.Container{ID: "ble-1", AppName: app.GetName(), ProcessName: "", HostAddr: "addr1", HostPort: ""}
cont2 := container.Container{ID: "ble-2", AppName: app.GetName(), ProcessName: "", HostAddr: "addr2", HostPort: "4321"}
defer cont.Remove(s.p)
defer cont2.Remove(s.p)
args := changeUnitsPipelineArgs{
app: app,
provisioner: s.p,
}
prevContainers := []container.Container{cont, cont2}
context := action.FWContext{Previous: prevContainers, Params: []interface{}{args}}
_, err := addNewRoutes.Forward(context)
c.Assert(err, check.Equals, nil)
hasRoute := routertest.FakeRouter.HasRoute(app.GetName(), cont.Address().String())
c.Assert(hasRoute, check.Equals, false)
hasRoute = routertest.FakeRouter.HasRoute(app.GetName(), cont2.Address().String())
c.Assert(hasRoute, check.Equals, true)
}
开发者ID:zhenruyan,项目名称:tsuru,代码行数:21,代码来源:actions_test.go
示例18: TestFollowLogsAndCommitForwardNonZeroStatus
func (s *S) TestFollowLogsAndCommitForwardNonZeroStatus(c *check.C) {
err := s.newFakeImage(s.p, "tsuru/python", nil)
c.Assert(err, check.IsNil)
app := provisiontest.NewFakeApp("myapp", "python", 1)
cont := container.Container{AppName: "mightyapp"}
err = cont.Create(&container.CreateArgs{
App: app,
ImageID: "tsuru/python",
Commands: []string{"foo"},
Provisioner: s.p,
})
c.Assert(err, check.IsNil)
err = s.server.MutateContainer(cont.ID, docker.State{ExitCode: 1})
c.Assert(err, check.IsNil)
buf := safe.NewBuffer(nil)
args := runContainerActionsArgs{writer: buf, provisioner: s.p}
context := action.FWContext{Params: []interface{}{args}, Previous: cont}
imageId, err := followLogsAndCommit.Forward(context)
c.Assert(err, check.NotNil)
c.Assert(err.Error(), check.Equals, "Exit status 1")
c.Assert(imageId, check.IsNil)
}
开发者ID:nicolas2bonfils,项目名称:tsuru,代码行数:22,代码来源:actions_test.go
示例19: TestRemoveOldRoutesForwardNoImageData
func (s *S) TestRemoveOldRoutesForwardNoImageData(c *check.C) {
app := provisiontest.NewFakeApp("myapp", "python", 1)
err := appendAppImageName(app.GetName(), "img1")
c.Assert(err, check.IsNil)
err = pullAppImageNames(app.GetName(), []string{"img1"})
c.Assert(err, check.IsNil)
routertest.FakeRouter.AddBackend(app.GetName())
defer routertest.FakeRouter.RemoveBackend(app.GetName())
cont1 := container.Container{ID: "ble-1", AppName: app.GetName(), ProcessName: "", HostAddr: "127.0.0.1", HostPort: ""}
args := changeUnitsPipelineArgs{
app: app,
toRemove: []container.Container{cont1},
provisioner: s.p,
}
context := action.FWContext{Previous: []container.Container{}, Params: []interface{}{args}}
r, err := removeOldRoutes.Forward(context)
c.Assert(err, check.IsNil)
hasRoute := routertest.FakeRouter.HasRoute(app.GetName(), cont1.Address().String())
c.Assert(hasRoute, check.Equals, false)
containers := r.([]container.Container)
c.Assert(containers, check.DeepEquals, []container.Container{})
c.Assert(args.toRemove[0].Routable, check.Equals, false)
}
开发者ID:pedrosnk,项目名称:tsuru,代码行数:23,代码来源:actions_test.go
示例20: TestFixContainer
func (s *S) TestFixContainer(c *check.C) {
cleanup, server, p := startDocker("9999")
defer cleanup()
coll := p.Collection()
defer coll.Close()
cont := container.Container{
ID: "9930c24f1c4x",
AppName: "makea",
Type: "python",
Status: provision.StatusStarted.String(),
IP: "127.0.0.4",
HostPort: "9025",
HostAddr: "127.0.0.1",
}
err := coll.Insert(cont)
c.Assert(err, check.IsNil)
defer coll.RemoveAll(bson.M{"appname": cont.AppName})
err = s.storage.Apps().Insert(&app.App{Name: cont.AppName})
c.Assert(err, check.IsNil)
appInstance := provisiontest.NewFakeApp(cont.AppName, cont.Type, 0)
defer p.Destroy(appInstance)
p.Provision(appInstance)
var storage cluster.MapStorage
storage.StoreContainer(cont.ID, server.URL)
p.cluster, err = cluster.New(nil, &storage,
cluster.Node{Address: server.URL},
)
c.Assert(err, check.IsNil)
info, err := cont.NetworkInfo(p)
c.Assert(err, check.IsNil)
err = p.fixContainer(&cont, info)
c.Assert(err, check.IsNil)
conta, err := p.GetContainer("9930c24f1c4x")
c.Assert(err, check.IsNil)
c.Assert(conta.IP, check.Equals, "127.0.0.9")
c.Assert(conta.HostPort, check.Equals, "9999")
}
开发者ID:zhenruyan,项目名称:tsuru,代码行数:37,代码来源:fix_test.go
注:本文中的github.com/tsuru/tsuru/provision/docker/container.Container类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论