本文整理汇总了Golang中github.com/tsuru/tsuru/provision.AddTeamsToPool函数的典型用法代码示例。如果您正苦于以下问题:Golang AddTeamsToPool函数的具体用法?Golang AddTeamsToPool怎么用?Golang AddTeamsToPool使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了AddTeamsToPool函数的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestSchedulerNoNodesWithDefaultPool
func (s *S) TestSchedulerNoNodesWithDefaultPool(c *check.C) {
provision.RemovePool("test-default")
app := app.App{Name: "bill", Teams: []string{"jean"}}
err := s.storage.Apps().Insert(app)
c.Assert(err, check.IsNil)
defer s.storage.Apps().Remove(bson.M{"name": app.Name})
scheduler := segregatedScheduler{provisioner: s.p}
clusterInstance, err := cluster.New(&scheduler, &cluster.MapStorage{})
c.Assert(err, check.IsNil)
o := provision.AddPoolOptions{Name: "mypool"}
err = provision.AddPool(o)
c.Assert(err, check.IsNil)
o = provision.AddPoolOptions{Name: "mypool2"}
err = provision.AddPool(o)
c.Assert(err, check.IsNil)
defer provision.RemovePool("mypool")
defer provision.RemovePool("mypool2")
provision.AddTeamsToPool("mypool", []string{"jean"})
provision.AddTeamsToPool("mypool2", []string{"jean"})
opts := docker.CreateContainerOptions{}
schedOpts := []string{app.Name, "web"}
node, err := scheduler.Schedule(clusterInstance, opts, schedOpts)
c.Assert(node.Address, check.Equals, "")
c.Assert(err, check.NotNil)
c.Assert(err.Error(), check.Matches, "No nodes found with one of the following metadata: pool=mypool, pool=mypool2")
}
开发者ID:reoring,项目名称:tsuru,代码行数:26,代码来源:scheduler_test.go
示例2: TestSchedulerScheduleByTeamOwner
func (s *S) TestSchedulerScheduleByTeamOwner(c *check.C) {
a1 := app.App{Name: "impius", Teams: []string{}, TeamOwner: "tsuruteam"}
cont1 := container.Container{ID: "1", Name: "impius1", AppName: a1.Name}
err := s.storage.Apps().Insert(a1)
c.Assert(err, check.IsNil)
defer s.storage.Apps().RemoveAll(bson.M{"name": a1.Name})
p := provision.Pool{Name: "pool1", Teams: []string{"tsuruteam"}}
o := provision.AddPoolOptions{Name: p.Name}
err = provision.AddPool(o)
c.Assert(err, check.IsNil)
defer provision.RemovePool(p.Name)
err = provision.AddTeamsToPool(p.Name, p.Teams)
c.Assert(err, check.IsNil)
contColl := s.p.Collection()
defer contColl.Close()
err = contColl.Insert(cont1)
c.Assert(err, check.IsNil)
defer contColl.RemoveAll(bson.M{"name": cont1.Name})
scheduler := segregatedScheduler{provisioner: s.p}
clusterInstance, err := cluster.New(&scheduler, &cluster.MapStorage{})
s.p.cluster = clusterInstance
c.Assert(err, check.IsNil)
err = clusterInstance.Register(cluster.Node{
Address: s.server.URL(),
Metadata: map[string]string{"pool": "pool1"},
})
c.Assert(err, check.IsNil)
opts := docker.CreateContainerOptions{Name: cont1.Name}
node, err := scheduler.Schedule(clusterInstance, opts, []string{a1.Name, "web"})
c.Assert(err, check.IsNil)
c.Check(node.Address, check.Equals, s.server.URL())
}
开发者ID:reoring,项目名称:tsuru,代码行数:32,代码来源:scheduler_test.go
示例3: TestListPoolsToUserHandler
func (s *S) TestListPoolsToUserHandler(c *check.C) {
u := auth.User{Email: "[email protected]", Password: "123456"}
_, err := nativeScheme.Create(&u)
c.Assert(err, check.IsNil)
defer s.conn.Users().Remove(bson.M{"email": u.Email})
token, err := nativeScheme.Login(map[string]string{"email": u.Email, "password": "123456"})
c.Assert(err, check.IsNil)
defer s.conn.Tokens().Remove(bson.M{"token": token.GetValue()})
team := auth.Team{Name: "angra", Users: []string{s.user.Email, u.Email}}
err = s.conn.Teams().Insert(team)
c.Assert(err, check.IsNil)
defer s.conn.Teams().Remove(bson.M{"_id": team.Name})
pool := provision.Pool{Name: "pool1", Teams: []string{"angra"}}
err = provision.AddPool(pool.Name, false)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(pool.Name, pool.Teams)
c.Assert(err, check.IsNil)
defer provision.RemovePool(pool.Name)
err = provision.AddPool("nopool", false)
c.Assert(err, check.IsNil)
defer provision.RemovePool("nopool")
poolsExpected := map[string]interface{}{
"pools_by_team": []interface{}{map[string]interface{}{"Team": "angra", "Pools": []interface{}{"pool1"}}},
"public_pools": interface{}(nil),
}
req, err := http.NewRequest("GET", "/pool", nil)
c.Assert(err, check.IsNil)
rec := httptest.NewRecorder()
err = listPoolsToUser(rec, req, token)
c.Assert(err, check.IsNil)
var pools map[string]interface{}
err = json.NewDecoder(rec.Body).Decode(&pools)
c.Assert(err, check.IsNil)
c.Assert(pools, check.DeepEquals, poolsExpected)
}
开发者ID:keymon,项目名称:tsuru,代码行数:35,代码来源:pool_test.go
示例4: TestPoolListHandler
func (s *S) TestPoolListHandler(c *check.C) {
team := auth.Team{Name: "angra"}
err := s.conn.Teams().Insert(team)
c.Assert(err, check.IsNil)
token := userWithPermission(c, permission.Permission{
Scheme: permission.PermAppCreate,
Context: permission.Context(permission.CtxTeam, "angra"),
})
pool := provision.Pool{Name: "pool1", Teams: []string{"angra"}}
opts := provision.AddPoolOptions{Name: pool.Name}
err = provision.AddPool(opts)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(pool.Name, pool.Teams)
c.Assert(err, check.IsNil)
defer provision.RemovePool(pool.Name)
opts = provision.AddPoolOptions{Name: "nopool"}
err = provision.AddPool(opts)
c.Assert(err, check.IsNil)
defer provision.RemovePool("nopool")
defaultPools, err := provision.ListPools(bson.M{"default": true})
c.Assert(err, check.IsNil)
expected := []provision.Pool{
defaultPools[0],
{Name: "pool1", Teams: []string{"angra"}},
}
req, err := http.NewRequest("GET", "/pools", nil)
c.Assert(err, check.IsNil)
rec := httptest.NewRecorder()
err = poolList(rec, req, token)
c.Assert(err, check.IsNil)
var pools []provision.Pool
err = json.NewDecoder(rec.Body).Decode(&pools)
c.Assert(err, check.IsNil)
c.Assert(pools, check.DeepEquals, expected)
}
开发者ID:pedrosnk,项目名称:tsuru,代码行数:35,代码来源:pool_test.go
示例5: addTeamToPoolHandler
// title: add team too pool
// path: /pools/{name}/team
// method: POST
// consume: application/x-www-form-urlencoded
// responses:
// 200: Pool updated
// 401: Unauthorized
// 400: Invalid data
// 404: Pool not found
func addTeamToPoolHandler(w http.ResponseWriter, r *http.Request, t auth.Token) (err error) {
allowed := permission.Check(t, permission.PermPoolUpdateTeamAdd)
if !allowed {
return permission.ErrUnauthorized
}
msg := "You must provide the team."
err = r.ParseForm()
if err != nil {
return &terrors.HTTP{Code: http.StatusBadRequest, Message: msg}
}
poolName := r.URL.Query().Get(":name")
evt, err := event.New(&event.Opts{
Target: event.Target{Type: event.TargetTypePool, Value: poolName},
Kind: permission.PermPoolUpdateTeamAdd,
Owner: t,
CustomData: event.FormToCustomData(r.Form),
Allowed: event.Allowed(permission.PermPoolReadEvents, permission.Context(permission.CtxPool, poolName)),
})
if err != nil {
return err
}
defer func() { evt.Done(err) }()
if teams, ok := r.Form["team"]; ok {
err := provision.AddTeamsToPool(poolName, teams)
if err == provision.ErrPoolNotFound {
return &terrors.HTTP{Code: http.StatusNotFound, Message: err.Error()}
}
return err
}
return &terrors.HTTP{Code: http.StatusBadRequest, Message: msg}
}
开发者ID:tsuru,项目名称:tsuru,代码行数:40,代码来源:pool.go
示例6: TestRemoveTeamsToPoolHandler
func (s *S) TestRemoveTeamsToPoolHandler(c *check.C) {
pool := provision.Pool{Name: "pool1", Teams: []string{"test"}}
opts := provision.AddPoolOptions{Name: pool.Name}
err := provision.AddPool(opts)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(pool.Name, pool.Teams)
c.Assert(err, check.IsNil)
defer provision.RemovePool(pool.Name)
req, err := http.NewRequest("DELETE", "/pools/pool1/team?team=test", nil)
c.Assert(err, check.IsNil)
req.Header.Set("Authorization", "bearer "+s.token.GetValue())
rec := httptest.NewRecorder()
m := RunServer(true)
m.ServeHTTP(rec, req)
c.Assert(rec.Code, check.Equals, http.StatusOK)
var p provision.Pool
err = s.conn.Pools().FindId(pool.Name).One(&p)
c.Assert(err, check.IsNil)
c.Assert(p.Teams, check.DeepEquals, []string{})
c.Assert(eventtest.EventDesc{
Target: event.Target{Type: event.TargetTypePool, Value: "pool1"},
Owner: s.token.GetUserName(),
Kind: "pool.update.team.remove",
StartCustomData: []map[string]interface{}{
{"name": ":name", "value": "pool1"},
{"name": "team", "value": "test"},
},
}, eventtest.HasEvent)
}
开发者ID:tsuru,项目名称:tsuru,代码行数:29,代码来源:pool_test.go
示例7: TestListPoolsToUserHandler
func (s *S) TestListPoolsToUserHandler(c *check.C) {
team := auth.Team{Name: "angra"}
err := s.conn.Teams().Insert(team)
c.Assert(err, check.IsNil)
token := userWithPermission(c, permission.Permission{
Scheme: permission.PermAppCreate,
Context: permission.Context(permission.CtxTeam, "angra"),
})
pool := provision.Pool{Name: "pool1", Teams: []string{"angra"}}
opts := provision.AddPoolOptions{Name: pool.Name}
err = provision.AddPool(opts)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(pool.Name, pool.Teams)
c.Assert(err, check.IsNil)
defer provision.RemovePool(pool.Name)
opts = provision.AddPoolOptions{Name: "nopool"}
err = provision.AddPool(opts)
c.Assert(err, check.IsNil)
defer provision.RemovePool("nopool")
poolsExpected := map[string]interface{}{
"pools_by_team": []interface{}{map[string]interface{}{"Team": "angra", "Pools": []interface{}{"pool1"}}},
"public_pools": []interface{}{},
"default_pool": []interface{}{},
}
req, err := http.NewRequest("GET", "/pool", nil)
c.Assert(err, check.IsNil)
rec := httptest.NewRecorder()
err = listPoolsToUser(rec, req, token)
c.Assert(err, check.IsNil)
var pools map[string]interface{}
err = json.NewDecoder(rec.Body).Decode(&pools)
c.Assert(err, check.IsNil)
c.Assert(pools, check.DeepEquals, poolsExpected)
}
开发者ID:zhenruyan,项目名称:tsuru,代码行数:34,代码来源:pool_test.go
示例8: TestPoolListHandlerWithPermissionToDefault
func (s *S) TestPoolListHandlerWithPermissionToDefault(c *check.C) {
team := auth.Team{Name: "angra"}
err := s.conn.Teams().Insert(team)
c.Assert(err, check.IsNil)
perms := []permission.Permission{
{
Scheme: permission.PermAppCreate,
Context: permission.Context(permission.CtxGlobal, ""),
},
{
Scheme: permission.PermPoolUpdate,
Context: permission.Context(permission.CtxGlobal, ""),
},
}
token := userWithPermission(c, perms...)
pool := provision.Pool{Name: "pool1", Teams: []string{team.Name}}
opts := provision.AddPoolOptions{Name: pool.Name, Default: pool.Default}
err = provision.AddPool(opts)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(pool.Name, pool.Teams)
c.Assert(err, check.IsNil)
defer provision.RemovePool(pool.Name)
req, err := http.NewRequest("GET", "/pools", nil)
c.Assert(err, check.IsNil)
rec := httptest.NewRecorder()
err = poolList(rec, req, token)
c.Assert(err, check.IsNil)
var pools []provision.Pool
err = json.NewDecoder(rec.Body).Decode(&pools)
c.Assert(err, check.IsNil)
c.Assert(pools, check.HasLen, 2)
c.Assert(pools[0].Name, check.Equals, "test1")
c.Assert(pools[1].Name, check.Equals, "pool1")
}
开发者ID:pedrosnk,项目名称:tsuru,代码行数:34,代码来源:pool_test.go
示例9: TestRebalanceContainersByHost
func (s *S) TestRebalanceContainersByHost(c *check.C) {
otherServer, err := dtesting.NewServer("localhost:0", nil, nil)
c.Assert(err, check.IsNil)
defer otherServer.Stop()
otherUrl := strings.Replace(otherServer.URL(), "127.0.0.1", "localhost", 1)
p := &dockerProvisioner{}
err = p.Initialize()
c.Assert(err, check.IsNil)
p.storage = &cluster.MapStorage{}
p.scheduler = &segregatedScheduler{provisioner: p}
p.cluster, err = cluster.New(p.scheduler, p.storage,
cluster.Node{Address: s.server.URL(), Metadata: map[string]string{"pool": "pool1"}},
cluster.Node{Address: otherUrl, Metadata: map[string]string{"pool": "pool1"}},
)
c.Assert(err, check.IsNil)
opts := provision.AddPoolOptions{Name: "pool1"}
err = provision.AddPool(opts)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool("pool1", []string{"team1"})
c.Assert(err, check.IsNil)
err = s.newFakeImage(p, "tsuru/app-myapp", nil)
c.Assert(err, check.IsNil)
appInstance := provisiontest.NewFakeApp("myapp", "python", 0)
defer p.Destroy(appInstance)
p.Provision(appInstance)
imageId, err := appCurrentImageName(appInstance.GetName())
c.Assert(err, check.IsNil)
_, err = addContainersWithHost(&changeUnitsPipelineArgs{
toHost: "localhost",
toAdd: map[string]*containersToAdd{"web": {Quantity: 5}},
app: appInstance,
imageId: imageId,
provisioner: p,
})
c.Assert(err, check.IsNil)
appStruct := &app.App{
Name: appInstance.GetName(),
TeamOwner: "team1",
Pool: "pool1",
}
err = s.storage.Apps().Insert(appStruct)
c.Assert(err, check.IsNil)
c1, err := p.listContainersByHost("localhost")
c.Assert(err, check.IsNil)
c.Assert(c1, check.HasLen, 5)
c2, err := p.listContainersByHost("127.0.0.1")
c.Assert(err, check.IsNil)
c.Assert(c2, check.HasLen, 0)
err = p.Cluster().Unregister(otherUrl)
c.Assert(err, check.IsNil)
buf := safe.NewBuffer(nil)
err = p.rebalanceContainersByHost(net.URLToHost(otherUrl), buf)
c.Assert(err, check.IsNil)
c.Assert(p.scheduler.ignoredContainers, check.IsNil)
c2, err = p.listContainersByHost("127.0.0.1")
c.Assert(err, check.IsNil)
c.Assert(c2, check.HasLen, 5)
}
开发者ID:pedrosnk,项目名称:tsuru,代码行数:58,代码来源:containers_test.go
示例10: TestSchedulerSchedule
func (s *S) TestSchedulerSchedule(c *check.C) {
a1 := app.App{Name: "impius", Teams: []string{"tsuruteam", "nodockerforme"}, Pool: "pool1"}
a2 := app.App{Name: "mirror", Teams: []string{"tsuruteam"}, Pool: "pool1"}
a3 := app.App{Name: "dedication", Teams: []string{"nodockerforme"}, Pool: "pool1"}
cont1 := container.Container{ID: "1", Name: "impius1", AppName: a1.Name}
cont2 := container.Container{ID: "2", Name: "mirror1", AppName: a2.Name}
cont3 := container.Container{ID: "3", Name: "dedication1", AppName: a3.Name}
err := s.storage.Apps().Insert(a1, a2, a3)
c.Assert(err, check.IsNil)
defer s.storage.Apps().RemoveAll(bson.M{"name": bson.M{"$in": []string{a1.Name, a2.Name, a3.Name}}})
p := provision.Pool{Name: "pool1", Teams: []string{
"tsuruteam",
"nodockerforme",
}}
o := provision.AddPoolOptions{Name: p.Name}
err = provision.AddPool(o)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(p.Name, p.Teams)
c.Assert(err, check.IsNil)
defer provision.RemovePool(p.Name)
contColl := s.p.Collection()
defer contColl.Close()
err = contColl.Insert(
cont1, cont2, cont3,
)
c.Assert(err, check.IsNil)
defer contColl.RemoveAll(bson.M{"name": bson.M{"$in": []string{cont1.Name, cont2.Name, cont3.Name}}})
scheduler := segregatedScheduler{provisioner: s.p}
clusterInstance, err := cluster.New(&scheduler, &cluster.MapStorage{})
s.p.cluster = clusterInstance
c.Assert(err, check.IsNil)
server1, err := testing.NewServer("127.0.0.1:0", nil, nil)
c.Assert(err, check.IsNil)
defer server1.Stop()
server2, err := testing.NewServer("localhost:0", nil, nil)
c.Assert(err, check.IsNil)
defer server2.Stop()
err = clusterInstance.Register(cluster.Node{
Address: server1.URL(),
Metadata: map[string]string{"pool": "pool1"},
})
c.Assert(err, check.IsNil)
localURL := strings.Replace(server2.URL(), "127.0.0.1", "localhost", -1)
err = clusterInstance.Register(cluster.Node{
Address: localURL,
Metadata: map[string]string{"pool": "pool1"},
})
c.Assert(err, check.IsNil)
opts := docker.CreateContainerOptions{Name: cont1.Name}
node, err := scheduler.Schedule(clusterInstance, opts, &container.SchedulerOpts{AppName: a1.Name, ProcessName: "web"})
c.Assert(err, check.IsNil)
c.Check(node.Address, check.Equals, server1.URL())
opts = docker.CreateContainerOptions{Name: cont2.Name}
node, err = scheduler.Schedule(clusterInstance, opts, &container.SchedulerOpts{AppName: a2.Name, ProcessName: "web"})
c.Assert(err, check.IsNil)
c.Check(node.Address, check.Equals, localURL)
}
开发者ID:tsuru,项目名称:tsuru,代码行数:57,代码来源:scheduler_test.go
示例11: TestGetRemovableContainer
func (s *S) TestGetRemovableContainer(c *check.C) {
a1 := app.App{Name: "impius", Teams: []string{"tsuruteam", "nodockerforme"}, Pool: "pool1"}
cont1 := container{ID: "1", Name: "impius1", AppName: a1.Name, ProcessName: "web"}
cont2 := container{ID: "2", Name: "mirror1", AppName: a1.Name, ProcessName: "worker"}
a2 := app.App{Name: "notimpius", Teams: []string{"tsuruteam", "nodockerforme"}, Pool: "pool1"}
cont3 := container{ID: "3", Name: "dedication1", AppName: a2.Name, ProcessName: "web"}
cont4 := container{ID: "4", Name: "dedication2", AppName: a2.Name, ProcessName: "worker"}
err := s.storage.Apps().Insert(a1)
c.Assert(err, check.IsNil)
err = s.storage.Apps().Insert(a2)
c.Assert(err, check.IsNil)
defer s.storage.Apps().RemoveAll(bson.M{"name": a1.Name})
defer s.storage.Apps().RemoveAll(bson.M{"name": a2.Name})
p := provision.Pool{Name: "pool1", Teams: []string{
"tsuruteam",
"nodockerforme",
}}
o := provision.AddPoolOptions{Name: p.Name}
err = provision.AddPool(o)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(p.Name, p.Teams)
defer provision.RemovePool(p.Name)
contColl := s.p.collection()
defer contColl.Close()
err = contColl.Insert(
cont1, cont2, cont3, cont4,
)
c.Assert(err, check.IsNil)
defer contColl.RemoveAll(bson.M{"name": bson.M{"$in": []string{cont1.Name, cont2.Name, cont3.Name, cont4.Name}}})
scheduler := segregatedScheduler{provisioner: s.p}
clusterInstance, err := cluster.New(&scheduler, &cluster.MapStorage{})
s.p.cluster = clusterInstance
c.Assert(err, check.IsNil)
_, err = clusterInstance.Register("http://url0:1234", map[string]string{"pool": "pool1"})
c.Assert(err, check.IsNil)
_, err = clusterInstance.Register("http://url1:1234", map[string]string{"pool": "pool1"})
c.Assert(err, check.IsNil)
opts := docker.CreateContainerOptions{Name: cont1.Name}
_, err = scheduler.Schedule(clusterInstance, opts, []string{a1.Name, cont1.ProcessName})
c.Assert(err, check.IsNil)
opts = docker.CreateContainerOptions{Name: cont2.Name}
_, err = scheduler.Schedule(clusterInstance, opts, []string{a1.Name, cont2.ProcessName})
c.Assert(err, check.IsNil)
opts = docker.CreateContainerOptions{Name: cont3.Name}
_, err = scheduler.Schedule(clusterInstance, opts, []string{a2.Name, cont3.ProcessName})
c.Assert(err, check.IsNil)
opts = docker.CreateContainerOptions{Name: cont4.Name}
_, err = scheduler.Schedule(clusterInstance, opts, []string{a2.Name, cont4.ProcessName})
c.Assert(err, check.IsNil)
cont, err := scheduler.GetRemovableContainer(a1.Name, "web")
c.Assert(err, check.IsNil)
c.Assert(cont, check.Equals, cont1.ID)
err = cont1.remove(s.p)
c.Assert(err, check.IsNil)
_, err = scheduler.GetRemovableContainer(a1.Name, "web")
c.Assert(err, check.NotNil)
}
开发者ID:rzs840707,项目名称:tsuru,代码行数:57,代码来源:scheduler_test.go
示例12: addTeamToPoolHandler
func addTeamToPoolHandler(w http.ResponseWriter, r *http.Request, t auth.Token) error {
b, err := ioutil.ReadAll(r.Body)
if err != nil {
return err
}
var params teamsToPoolParams
err = json.Unmarshal(b, ¶ms)
if err != nil {
return err
}
return provision.AddTeamsToPool(params.Pool, params.Teams)
}
开发者ID:RichardKnop,项目名称:tsuru,代码行数:12,代码来源:pool.go
示例13: TestSchedulerSchedule
func (s *S) TestSchedulerSchedule(c *check.C) {
a1 := app.App{Name: "impius", Teams: []string{"tsuruteam", "nodockerforme"}, Pool: "pool1"}
a2 := app.App{Name: "mirror", Teams: []string{"tsuruteam"}, Pool: "pool1"}
a3 := app.App{Name: "dedication", Teams: []string{"nodockerforme"}, Pool: "pool1"}
cont1 := container{ID: "1", Name: "impius1", AppName: a1.Name}
cont2 := container{ID: "2", Name: "mirror1", AppName: a2.Name}
cont3 := container{ID: "3", Name: "dedication1", AppName: a3.Name}
err := s.storage.Apps().Insert(a1, a2, a3)
c.Assert(err, check.IsNil)
defer s.storage.Apps().RemoveAll(bson.M{"name": bson.M{"$in": []string{a1.Name, a2.Name, a3.Name}}})
p := provision.Pool{Name: "pool1", Teams: []string{
"tsuruteam",
"nodockerforme",
}}
err = provision.AddPool(p.Name, false)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(p.Name, p.Teams)
defer provision.RemovePool(p.Name)
contColl := s.p.collection()
defer contColl.Close()
err = contColl.Insert(
cont1, cont2, cont3,
)
c.Assert(err, check.IsNil)
defer contColl.RemoveAll(bson.M{"name": bson.M{"$in": []string{cont1.Name, cont2.Name, cont3.Name}}})
scheduler := segregatedScheduler{provisioner: s.p}
clusterInstance, err := cluster.New(&scheduler, &cluster.MapStorage{})
s.p.cluster = clusterInstance
c.Assert(err, check.IsNil)
_, err = clusterInstance.Register("http://url0:1234", map[string]string{"pool": "pool1"})
c.Assert(err, check.IsNil)
_, err = clusterInstance.Register("http://url1:1234", map[string]string{"pool": "pool1"})
c.Assert(err, check.IsNil)
_, err = clusterInstance.Register("http://url2:1234", map[string]string{"pool": "pool1"})
c.Assert(err, check.IsNil)
opts := docker.CreateContainerOptions{Name: cont1.Name}
node, err := scheduler.Schedule(clusterInstance, opts, []string{a1.Name, "web"})
c.Assert(err, check.IsNil)
c.Check(node.Address, check.Equals, "http://url0:1234")
opts = docker.CreateContainerOptions{Name: cont2.Name}
node, err = scheduler.Schedule(clusterInstance, opts, []string{a2.Name, "web"})
c.Assert(err, check.IsNil)
c.Check(node.Address, check.Equals, "http://url1:1234")
opts = docker.CreateContainerOptions{Name: cont3.Name}
node, err = scheduler.Schedule(clusterInstance, opts, []string{a3.Name, "web"})
c.Assert(err, check.IsNil)
c.Check(node.Address, check.Equals, "http://url2:1234")
}
开发者ID:keymon,项目名称:tsuru,代码行数:48,代码来源:scheduler_test.go
示例14: TestRemoveTeamsToPoolWithoutTeam
func (s *S) TestRemoveTeamsToPoolWithoutTeam(c *check.C) {
pool := provision.Pool{Name: "pool1", Teams: []string{"test"}}
opts := provision.AddPoolOptions{Name: pool.Name}
err := provision.AddPool(opts)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(pool.Name, pool.Teams)
c.Assert(err, check.IsNil)
defer provision.RemovePool(pool.Name)
req, err := http.NewRequest("DELETE", "/pools/pool1/team", nil)
c.Assert(err, check.IsNil)
req.Header.Set("Authorization", "bearer "+s.token.GetValue())
rec := httptest.NewRecorder()
m := RunServer(true)
m.ServeHTTP(rec, req)
c.Assert(rec.Code, check.Equals, http.StatusBadRequest)
}
开发者ID:pedrosnk,项目名称:tsuru,代码行数:16,代码来源:pool_test.go
示例15: TestListPoolsHandler
func (s *S) TestListPoolsHandler(c *check.C) {
pool := provision.Pool{Name: "pool1", Teams: []string{"tsuruteam", "ateam"}}
err := provision.AddPool(pool.Name, false)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(pool.Name, pool.Teams)
c.Assert(err, check.IsNil)
defer provision.RemovePool(pool.Name)
req, err := http.NewRequest("GET", "/pool", nil)
c.Assert(err, check.IsNil)
rec := httptest.NewRecorder()
err = listPoolHandler(rec, req, nil)
c.Assert(err, check.IsNil)
var pools []provision.Pool
err = json.NewDecoder(rec.Body).Decode(&pools)
c.Assert(err, check.IsNil)
}
开发者ID:keymon,项目名称:tsuru,代码行数:16,代码来源:pool_test.go
示例16: addTeamToPoolHandler
func addTeamToPoolHandler(w http.ResponseWriter, r *http.Request, t auth.Token) error {
allowed := permission.Check(t, permission.PermPoolUpdate)
if !allowed {
return permission.ErrUnauthorized
}
b, err := ioutil.ReadAll(r.Body)
if err != nil {
return err
}
var params teamsToPoolParams
err = json.Unmarshal(b, ¶ms)
if err != nil {
return err
}
pool := r.URL.Query().Get(":name")
return provision.AddTeamsToPool(pool, params.Teams)
}
开发者ID:reoring,项目名称:tsuru,代码行数:17,代码来源:pool.go
示例17: TestRemoveTeamsToPoolHandler
func (s *S) TestRemoveTeamsToPoolHandler(c *check.C) {
pool := provision.Pool{Name: "pool1", Teams: []string{"test"}}
err := provision.AddPool(pool.Name, false)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(pool.Name, pool.Teams)
c.Assert(err, check.IsNil)
defer provision.RemovePool(pool.Name)
b := bytes.NewBufferString(`{"pool": "pool1", "teams": ["test"]}`)
req, err := http.NewRequest("DELETE", "/pool/team", b)
c.Assert(err, check.IsNil)
rec := httptest.NewRecorder()
err = removeTeamToPoolHandler(rec, req, nil)
c.Assert(err, check.IsNil)
p, err := provision.ListPools(nil)
c.Assert(err, check.IsNil)
c.Assert(p[0].Teams, check.DeepEquals, []string{})
}
开发者ID:keymon,项目名称:tsuru,代码行数:17,代码来源:pool_test.go
示例18: TestRemoveTeamsToPoolHandler
func (s *S) TestRemoveTeamsToPoolHandler(c *check.C) {
pool := provision.Pool{Name: "pool1", Teams: []string{"test"}}
opts := provision.AddPoolOptions{Name: pool.Name}
err := provision.AddPool(opts)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool(pool.Name, pool.Teams)
c.Assert(err, check.IsNil)
defer provision.RemovePool(pool.Name)
req, err := http.NewRequest("DELETE", "/pools/pool1/team?team=test", nil)
c.Assert(err, check.IsNil)
req.Header.Set("Authorization", "bearer "+s.token.GetValue())
rec := httptest.NewRecorder()
m := RunServer(true)
m.ServeHTTP(rec, req)
c.Assert(rec.Code, check.Equals, http.StatusOK)
var p provision.Pool
err = s.conn.Pools().FindId(pool.Name).One(&p)
c.Assert(err, check.IsNil)
c.Assert(p.Teams, check.DeepEquals, []string{})
}
开发者ID:pedrosnk,项目名称:tsuru,代码行数:20,代码来源:pool_test.go
示例19: TestRebalanceContainersManyAppsSegStress
func (s *S) TestRebalanceContainersManyAppsSegStress(c *check.C) {
var nodes []cluster.Node
var nodeHosts []string
for i := 0; i < 6; i++ {
newIp := fmt.Sprintf("127.0.0.%d", i+1)
otherServer, err := dtesting.NewServer(newIp+":0", nil, nil)
c.Assert(err, check.IsNil)
nodes = append(nodes, cluster.Node{Address: otherServer.URL(), Metadata: map[string]string{"pool": "pool1"}})
nodeHosts = append(nodeHosts, urlToHost(otherServer.URL()))
}
var err error
p := &dockerProvisioner{}
err = p.Initialize()
c.Assert(err, check.IsNil)
p.storage, err = buildClusterStorage()
c.Assert(err, check.IsNil)
p.scheduler = &segregatedScheduler{provisioner: p}
p.cluster, err = cluster.New(p.scheduler, p.storage, nodes...)
c.Assert(err, check.IsNil)
opts := provision.AddPoolOptions{Name: "pool1"}
err = provision.AddPool(opts)
c.Assert(err, check.IsNil)
err = provision.AddTeamsToPool("pool1", []string{"team1"})
c.Assert(err, check.IsNil)
variation := []int{10, 20, 30, 40, 50, 100}
maxContainers := 40
for i := 0; i < maxContainers; i++ {
appName := fmt.Sprintf("myapp-%d", i)
err := s.newFakeImage(p, "tsuru/app-"+appName, nil)
c.Assert(err, check.IsNil)
appInstance := provisiontest.NewFakeApp(appName, "python", 0)
defer p.Destroy(appInstance)
p.Provision(appInstance)
imageId, err := appCurrentImageName(appInstance.GetName())
c.Assert(err, check.IsNil)
var chosenNode string
for j := range variation {
if i < (maxContainers*variation[j])/100 {
chosenNode = nodeHosts[j]
break
}
}
args := changeUnitsPipelineArgs{
app: appInstance,
toAdd: map[string]*containersToAdd{"web": {Quantity: 6}},
imageId: imageId,
provisioner: p,
toHost: chosenNode,
}
pipeline := action.NewPipeline(
&provisionAddUnitsToHost,
&bindAndHealthcheck,
&addNewRoutes,
&updateAppImage,
)
err = pipeline.Execute(args)
c.Assert(err, check.IsNil)
appStruct := &app.App{
Name: appInstance.GetName(),
TeamOwner: "team1",
Pool: "pool1",
}
conn, err := db.Conn()
c.Assert(err, check.IsNil)
defer conn.Close()
err = conn.Apps().Insert(appStruct)
c.Assert(err, check.IsNil)
defer conn.Apps().Remove(bson.M{"name": appStruct.Name})
}
buf := safe.NewBuffer(nil)
cloneProv, err := p.rebalanceContainersByFilter(buf, []string{}, map[string]string{"pool": "pool1"}, false)
c.Assert(err, check.IsNil)
c.Assert(cloneProv.cluster.Healer, check.Equals, p.cluster.Healer)
for i := range nodeHosts {
conts, err := p.listContainersByHost(nodeHosts[i])
c.Assert(err, check.IsNil)
c.Assert(len(conts), check.Equals, 240/len(nodeHosts))
}
}
开发者ID:RichardKnop,项目名称:tsuru,代码行数:79,代码来源:containers_linux_test.go
注:本文中的github.com/tsuru/tsuru/provision.AddTeamsToPool函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论