本文整理汇总了Golang中github.com/tsuru/tsuru/app.GetByName函数的典型用法代码示例。如果您正苦于以下问题:Golang GetByName函数的具体用法?Golang GetByName怎么用?Golang GetByName使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GetByName函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestAppLocker
func (s *S) TestAppLocker(c *gocheck.C) {
appName := "myapp"
conn, err := db.Conn()
c.Assert(err, gocheck.IsNil)
defer conn.Close()
appDB := &app.App{Name: appName}
defer conn.Apps().Remove(bson.M{"name": appName})
err = conn.Apps().Insert(appDB)
c.Assert(err, gocheck.IsNil)
locker := &appLocker{}
hasLock := locker.lock(appName)
c.Assert(hasLock, gocheck.Equals, true)
c.Assert(locker.refCount[appName], gocheck.Equals, 1)
appDB, err = app.GetByName(appName)
c.Assert(err, gocheck.IsNil)
c.Assert(appDB.Lock.Locked, gocheck.Equals, true)
c.Assert(appDB.Lock.Owner, gocheck.Equals, app.InternalAppName)
c.Assert(appDB.Lock.Reason, gocheck.Equals, "container-move")
hasLock = locker.lock(appName)
c.Assert(hasLock, gocheck.Equals, true)
c.Assert(locker.refCount[appName], gocheck.Equals, 2)
locker.unlock(appName)
c.Assert(locker.refCount[appName], gocheck.Equals, 1)
appDB, err = app.GetByName(appName)
c.Assert(err, gocheck.IsNil)
c.Assert(appDB.Lock.Locked, gocheck.Equals, true)
locker.unlock(appName)
c.Assert(locker.refCount[appName], gocheck.Equals, 0)
appDB, err = app.GetByName(appName)
c.Assert(err, gocheck.IsNil)
c.Assert(appDB.Lock.Locked, gocheck.Equals, false)
}
开发者ID:ningjh,项目名称:tsuru,代码行数:32,代码来源:containers_test.go
示例2: TestAppLocker
func (s *S) TestAppLocker(c *check.C) {
appName := "myapp"
appDB := &app.App{Name: appName}
err := s.storage.Apps().Insert(appDB)
c.Assert(err, check.IsNil)
locker := &appLocker{}
hasLock := locker.Lock(appName)
c.Assert(hasLock, check.Equals, true)
c.Assert(locker.refCount[appName], check.Equals, 1)
appDB, err = app.GetByName(appName)
c.Assert(err, check.IsNil)
c.Assert(appDB.Lock.Locked, check.Equals, true)
c.Assert(appDB.Lock.Owner, check.Equals, app.InternalAppName)
c.Assert(appDB.Lock.Reason, check.Equals, "container-move")
hasLock = locker.Lock(appName)
c.Assert(hasLock, check.Equals, true)
c.Assert(locker.refCount[appName], check.Equals, 2)
locker.Unlock(appName)
c.Assert(locker.refCount[appName], check.Equals, 1)
appDB, err = app.GetByName(appName)
c.Assert(err, check.IsNil)
c.Assert(appDB.Lock.Locked, check.Equals, true)
locker.Unlock(appName)
c.Assert(locker.refCount[appName], check.Equals, 0)
appDB, err = app.GetByName(appName)
c.Assert(err, check.IsNil)
c.Assert(appDB.Lock.Locked, check.Equals, false)
}
开发者ID:pedrosnk,项目名称:tsuru,代码行数:28,代码来源:containers_test.go
示例3: TestLocksAppDuringAppRequests
func (s *HandlerSuite) TestLocksAppDuringAppRequests(c *check.C) {
myApp := app.App{
Name: "my-app",
}
err := s.conn.Apps().Insert(myApp)
c.Assert(err, check.IsNil)
defer s.conn.Apps().Remove(bson.M{"name": myApp.Name})
recorder := httptest.NewRecorder()
request, err := http.NewRequest("POST", "/apps/my-app/", nil)
c.Assert(err, check.IsNil)
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
handler := func(w http.ResponseWriter, r *http.Request, t auth.Token) error {
a, appErr := app.GetByName(r.URL.Query().Get(":app"))
c.Assert(appErr, check.IsNil)
c.Assert(a.Lock.Reason, check.Equals, "POST /apps/my-app/")
c.Assert(a.Lock.Owner, check.Equals, s.token.GetUserName())
c.Assert(a.Lock.Locked, check.Equals, true)
c.Assert(a.Lock.AcquireDate, check.NotNil)
return nil
}
RegisterHandler("/apps/{app}/", "POST", authorizationRequiredHandler(handler))
defer resetHandlers()
m := RunServer(true)
m.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
a, err := app.GetByName(request.URL.Query().Get(":app"))
c.Assert(err, check.IsNil)
c.Assert(a.Lock.Locked, check.Equals, false)
}
开发者ID:Zapelini,项目名称:tsuru,代码行数:29,代码来源:handler_test.go
示例4: TestRebuildRoutesTCPRoutes
func (s *S) TestRebuildRoutesTCPRoutes(c *check.C) {
a := app.App{Name: "my-test-app", TeamOwner: s.team.Name}
err := app.CreateApp(&a, s.user)
c.Assert(err, check.IsNil)
err = provisiontest.ProvisionerInstance.AddUnits(&a, 3, "web", nil)
c.Assert(err, check.IsNil)
units, err := a.Units()
c.Assert(err, check.IsNil)
for _, u := range units {
routertest.FakeRouter.RemoveRoute(a.Name, u.Address)
routertest.FakeRouter.AddRoute(a.Name, &url.URL{Scheme: "tcp", Host: u.Address.Host})
}
changes, err := rebuild.RebuildRoutes(&a)
c.Assert(err, check.IsNil)
c.Assert(changes.Added, check.IsNil)
c.Assert(changes.Removed, check.IsNil)
routes, err := routertest.FakeRouter.Routes(a.Name)
c.Assert(err, check.IsNil)
c.Assert(routes, check.HasLen, 3)
c.Assert(routertest.FakeRouter.HasRoute(a.Name, units[0].Address.Host), check.Equals, true)
c.Assert(routertest.FakeRouter.HasRoute(a.Name, units[1].Address.Host), check.Equals, true)
c.Assert(routertest.FakeRouter.HasRoute(a.Name, units[2].Address.Host), check.Equals, true)
app, err := app.GetByName(a.Name)
c.Assert(err, check.IsNil)
addr, err := routertest.FakeRouter.Addr(app.Name)
c.Assert(err, check.IsNil)
c.Assert(app.Ip, check.Equals, addr)
}
开发者ID:tsuru,项目名称:tsuru,代码行数:28,代码来源:rebuild_test.go
示例5: listContainersHandler
func listContainersHandler(w http.ResponseWriter, r *http.Request, t auth.Token) error {
address := r.URL.Query().Get(":address")
if address != "" {
node, err := mainDockerProvisioner.Cluster().GetNode(address)
if err != nil {
return err
}
hasAccess := permission.Check(t, permission.PermNodeRead,
permission.Context(permission.CtxPool, node.Metadata["pool"]))
if !hasAccess {
return permission.ErrUnauthorized
}
containerList, err := mainDockerProvisioner.listContainersByHost(address)
if err != nil {
return err
}
return json.NewEncoder(w).Encode(containerList)
}
appName := r.URL.Query().Get(":appname")
a, err := app.GetByName(appName)
if err != nil {
return err
}
hasAccess := permission.Check(t, permission.PermNodeRead,
permission.Context(permission.CtxPool, a.Pool))
if !hasAccess {
return permission.ErrUnauthorized
}
containerList, err := mainDockerProvisioner.listContainersByApp(appName)
if err != nil {
return err
}
return json.NewEncoder(w).Encode(containerList)
}
开发者ID:reoring,项目名称:tsuru,代码行数:34,代码来源:handlers.go
示例6: getApp
func getApp(name string) (*app.App, error) {
a, err := app.GetByName(name)
if err != nil {
return nil, &errors.HTTP{Code: http.StatusNotFound, Message: fmt.Sprintf("App %s not found.", name)}
}
return a, nil
}
开发者ID:tsuru,项目名称:tsuru,代码行数:7,代码来源:app.go
示例7: addLog
func addLog(w http.ResponseWriter, r *http.Request, t auth.Token) error {
queryValues := r.URL.Query()
app, err := app.GetByName(queryValues.Get(":app"))
if err != nil {
return err
}
defer r.Body.Close()
body, err := ioutil.ReadAll(r.Body)
if err != nil {
return err
}
var logs []string
err = json.Unmarshal(body, &logs)
source := queryValues.Get("source")
if len(source) == 0 {
source = "app"
}
unit := queryValues.Get("unit")
for _, log := range logs {
err := app.Log(log, source, unit)
if err != nil {
return err
}
}
w.WriteHeader(http.StatusOK)
return nil
}
开发者ID:edulemasson,项目名称:tsuru,代码行数:27,代码来源:app.go
示例8: registerUnit
func registerUnit(w http.ResponseWriter, r *http.Request, t auth.Token) error {
appName := r.URL.Query().Get(":app")
data, err := ioutil.ReadAll(r.Body)
if err != nil {
return err
}
val, err := url.ParseQuery(string(data))
if err != nil {
return err
}
hostname := val.Get("hostname")
var customData map[string]interface{}
rawCustomData := val.Get("customdata")
if rawCustomData != "" {
err = json.Unmarshal([]byte(rawCustomData), &customData)
if err != nil {
return err
}
}
a, err := app.GetByName(appName)
if err != nil {
return err
}
err = a.RegisterUnit(hostname, customData)
if err != nil {
if _, ok := err.(*provision.UnitNotFoundError); ok {
return &errors.HTTP{Code: http.StatusNotFound, Message: err.Error()}
}
return err
}
return writeEnvVars(w, a)
}
开发者ID:edulemasson,项目名称:tsuru,代码行数:32,代码来源:app.go
示例9: Schedule
func (s *segregatedScheduler) Schedule(c *cluster.Cluster, opts docker.CreateContainerOptions, schedulerOpts cluster.SchedulerOptions) (cluster.Node, error) {
schedOpts, _ := schedulerOpts.([]string)
if len(schedOpts) != 2 {
return cluster.Node{}, fmt.Errorf("invalid scheduler opts: %#v", schedulerOpts)
}
appName := schedOpts[0]
processName := schedOpts[1]
a, _ := app.GetByName(appName)
nodes, err := s.provisioner.Nodes(a)
if err != nil {
return cluster.Node{}, err
}
nodes, err = s.filterByMemoryUsage(a, nodes, s.maxMemoryRatio, s.TotalMemoryMetadata)
if err != nil {
return cluster.Node{}, err
}
node, err := s.chooseNode(nodes, opts.Name, appName, processName)
if err != nil {
return cluster.Node{}, err
}
var pool string
if len(nodes) > 0 {
pool = nodes[0].Metadata["pool"]
}
err = bs.CreateContainer(node, pool, mainDockerProvisioner, false)
if err != nil && err != docker.ErrContainerAlreadyExists {
return cluster.Node{Address: node}, err
}
return cluster.Node{Address: node}, nil
}
开发者ID:4eek,项目名称:tsuru,代码行数:30,代码来源:scheduler.go
示例10: deploy
func deploy(w http.ResponseWriter, r *http.Request, t auth.Token) error {
version := r.PostFormValue("version")
archiveURL := r.PostFormValue("archive-url")
if version == "" && archiveURL == "" {
return &errors.HTTP{
Code: http.StatusBadRequest,
Message: "you must specify either the version or the archive-url",
}
}
if version != "" && archiveURL != "" {
return &errors.HTTP{
Code: http.StatusBadRequest,
Message: "you must specify either the version or the archive-url, but not both",
}
}
commit := r.PostFormValue("commit")
w.Header().Set("Content-Type", "text")
appName := r.URL.Query().Get(":appname")
instance, err := app.GetByName(appName)
if err != nil {
return &errors.HTTP{Code: http.StatusNotFound, Message: fmt.Sprintf("App %s not found.", appName)}
}
return app.Deploy(app.DeployOptions{
App: instance,
Version: version,
Commit: commit,
ArchiveURL: archiveURL,
OutputStream: w,
})
}
开发者ID:philiptzou,项目名称:tsuru,代码行数:31,代码来源:app.go
示例11: TestChangeAppQuota
func (s *QuotaSuite) TestChangeAppQuota(c *check.C) {
conn, err := db.Conn()
c.Assert(err, check.IsNil)
defer conn.Close()
a := &app.App{
Name: "shangrila",
Quota: quota.Quota{Limit: 4, InUse: 2},
Teams: []string{s.team.Name},
}
err = conn.Apps().Insert(a)
c.Assert(err, check.IsNil)
defer conn.Apps().Remove(bson.M{"name": a.Name})
body := bytes.NewBufferString("limit=40")
request, _ := http.NewRequest("PUT", "/apps/shangrila/quota", body)
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
recorder := httptest.NewRecorder()
handler := RunServer(true)
handler.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
a, err = app.GetByName(a.Name)
c.Assert(err, check.IsNil)
c.Assert(a.Quota.InUse, check.Equals, 2)
c.Assert(a.Quota.Limit, check.Equals, 40)
c.Assert(eventtest.EventDesc{
Target: event.Target{Type: event.TargetTypeApp, Value: a.Name},
Owner: s.token.GetUserName(),
Kind: "app.admin.quota",
StartCustomData: []map[string]interface{}{
{"name": ":appname", "value": a.Name},
{"name": "limit", "value": "40"},
},
}, eventtest.HasEvent)
}
开发者ID:tsuru,项目名称:tsuru,代码行数:34,代码来源:quota_test.go
示例12: TestSaveUnitsForwardShouldMaintainData
func (s *S) TestSaveUnitsForwardShouldMaintainData(c *gocheck.C) {
a := app.App{
Name: "otherapp",
Platform: "zend",
Deploys: 10,
}
conn, err := db.Conn()
c.Assert(err, gocheck.IsNil)
defer conn.Close()
err = conn.Apps().Insert(a)
c.Assert(err, gocheck.IsNil)
a.Deploys = 0
defer conn.Apps().Remove(bson.M{"name": a.Name})
container := container{
ID: "id",
Type: "python",
HostAddr: "",
AppName: a.Name,
}
coll := collection()
c.Assert(err, gocheck.IsNil)
coll.Insert(&container)
context := action.FWContext{Params: []interface{}{&a}}
_, err = saveUnits.Forward(context)
c.Assert(err, gocheck.IsNil)
app, err := app.GetByName(a.Name)
c.Assert(err, gocheck.IsNil)
c.Assert(app.Units[0].Name, gocheck.Equals, "id")
c.Assert(int(app.Deploys), gocheck.Equals, 10)
}
开发者ID:rochacon,项目名称:tsuru,代码行数:30,代码来源:actions_test.go
示例13: SetUpTest
func (s *S) SetUpTest(c *check.C) {
queue.ResetQueue()
err := rebuild.RegisterTask(func(appName string) (rebuild.RebuildApp, error) {
a, err := app.GetByName(appName)
if err == app.ErrAppNotFound {
return nil, nil
}
return a, err
})
c.Assert(err, check.IsNil)
routertest.FakeRouter.Reset()
provisiontest.ProvisionerInstance.Reset()
err = dbtest.ClearAllCollections(s.conn.Apps().Database)
c.Assert(err, check.IsNil)
s.user = &auth.User{Email: "[email protected]", Password: "123456", Quota: quota.Unlimited}
nativeScheme := auth.ManagedScheme(native.NativeScheme{})
app.AuthScheme = nativeScheme
_, err = nativeScheme.Create(s.user)
c.Assert(err, check.IsNil)
s.team = &auth.Team{Name: "admin"}
c.Assert(err, check.IsNil)
err = s.conn.Teams().Insert(s.team)
c.Assert(err, check.IsNil)
err = provision.AddPool(provision.AddPoolOptions{
Name: "p1",
Default: true,
Provisioner: "fake",
})
c.Assert(err, check.IsNil)
}
开发者ID:tsuru,项目名称:tsuru,代码行数:30,代码来源:suite_test.go
示例14: 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
示例15: Schedule
func (s *segregatedScheduler) Schedule(c *cluster.Cluster, opts docker.CreateContainerOptions, schedulerOpts cluster.SchedulerOptions) (cluster.Node, error) {
schedOpts, ok := schedulerOpts.(*container.SchedulerOpts)
if !ok {
return cluster.Node{}, &container.SchedulerError{
Base: errors.Errorf("invalid scheduler opts: %#v", schedulerOpts),
}
}
a, _ := app.GetByName(schedOpts.AppName)
nodes, err := s.provisioner.Nodes(a)
if err != nil {
return cluster.Node{}, &container.SchedulerError{Base: err}
}
nodes, err = s.filterByMemoryUsage(a, nodes, s.maxMemoryRatio, s.TotalMemoryMetadata)
if err != nil {
return cluster.Node{}, &container.SchedulerError{Base: err}
}
node, err := s.chooseNodeToAdd(nodes, opts.Name, schedOpts.AppName, schedOpts.ProcessName)
if err != nil {
return cluster.Node{}, &container.SchedulerError{Base: err}
}
if schedOpts.ActionLimiter != nil {
schedOpts.LimiterDone = schedOpts.ActionLimiter.Start(net.URLToHost(node))
}
return cluster.Node{Address: node}, nil
}
开发者ID:tsuru,项目名称:tsuru,代码行数:25,代码来源:scheduler.go
示例16: TestChangeAppQuota
func (s *QuotaSuite) TestChangeAppQuota(c *check.C) {
conn, err := db.Conn()
c.Assert(err, check.IsNil)
defer conn.Close()
a := &app.App{
Name: "shangrila",
Quota: quota.Quota{Limit: 4, InUse: 2},
Teams: []string{s.team.Name},
}
err = conn.Apps().Insert(a)
c.Assert(err, check.IsNil)
defer conn.Apps().Remove(bson.M{"name": a.Name})
body := bytes.NewBufferString("limit=40")
request, _ := http.NewRequest("PUT", "/apps/shangrila/quota", body)
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
request.Header.Set("Authorization", "bearer "+s.token.GetValue())
recorder := httptest.NewRecorder()
handler := RunServer(true)
handler.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
a, err = app.GetByName(a.Name)
c.Assert(err, check.IsNil)
c.Assert(a.Quota.InUse, check.Equals, 2)
c.Assert(a.Quota.Limit, check.Equals, 40)
}
开发者ID:pedrosnk,项目名称:tsuru,代码行数:25,代码来源:quota_test.go
示例17: moveOneContainer
func moveOneContainer(c container, toHost string, errors chan error, wg *sync.WaitGroup, encoder *json.Encoder) {
a, err := app.GetByName(c.AppName)
defer wg.Done()
if err != nil {
errors <- err
return
}
logProgress(encoder, "Moving unit %s for %q: %s -> %s...", c.ID, c.AppName, c.HostAddr, toHost)
pipeline := action.NewPipeline(
&provisionAddUnitToHost,
&provisionRemoveOldUnit,
)
err = pipeline.Execute(a, toHost, c)
if err != nil {
errors <- err
return
}
logProgress(encoder, "Finished moving unit %s for %q.", c.ID, c.AppName)
addedUnit := pipeline.Result().(provision.Unit)
err = moveOneContainerInDB(a, c, addedUnit)
if err != nil {
errors <- err
return
}
logProgress(encoder, "Moved unit %s -> %s for %s in DB.", c.ID, addedUnit.Name, c.AppName)
}
开发者ID:kennylixi,项目名称:tsuru,代码行数:26,代码来源:docker.go
示例18: nodesForAppName
func nodesForAppName(c *cluster.Cluster, appName string) ([]cluster.Node, error) {
a, err := app.GetByName(appName)
if err != nil {
return nil, err
}
return nodesForApp(c, a)
}
开发者ID:rualatngua,项目名称:tsuru,代码行数:7,代码来源:scheduler.go
示例19: generateAppToken
func generateAppToken(w http.ResponseWriter, r *http.Request, t *auth.Token) error {
var body jToken
defer r.Body.Close()
err := json.NewDecoder(r.Body).Decode(&body)
if err != nil {
return err
}
if body.Client == "" {
return &errors.HTTP{
Code: http.StatusBadRequest,
Message: "Missing client name in JSON body",
}
}
token, err := auth.CreateApplicationToken(body.Client)
if err != nil {
return err
}
if body.Export {
if a, err := app.GetByName(body.Client); err == nil {
envs := []bind.EnvVar{
{
Name: "TSURU_APP_TOKEN",
Value: token.Token,
Public: false,
},
}
a.SetEnvs(envs, false)
}
}
return json.NewEncoder(w).Encode(token)
}
开发者ID:renanoliveira,项目名称:tsuru,代码行数:31,代码来源:auth.go
示例20: nodesMemoryData
func (a *memoryScaler) nodesMemoryData(prov *dockerProvisioner, nodes []*cluster.Node) (map[string]*nodeMemoryData, error) {
nodesMemoryData := make(map[string]*nodeMemoryData)
containersMap, err := prov.runningContainersByNode(nodes)
if err != nil {
return nil, err
}
for _, node := range nodes {
totalMemory, _ := strconv.ParseFloat(node.Metadata[a.totalMemoryMetadata], 64)
if totalMemory == 0.0 {
return nil, fmt.Errorf("no value found for memory metadata (%s) in node %s", a.totalMemoryMetadata, node.Address)
}
maxMemory := int64(float64(a.maxMemoryRatio) * totalMemory)
data := &nodeMemoryData{
containersMemory: make(map[string]int64),
node: node,
maxMemory: maxMemory,
}
nodesMemoryData[node.Address] = data
for _, cont := range containersMap[node.Address] {
a, err := app.GetByName(cont.AppName)
if err != nil {
return nil, fmt.Errorf("couldn't find container app (%s): %s", cont.AppName, err)
}
data.containersMemory[cont.ID] = a.Plan.Memory
data.reserved += a.Plan.Memory
}
data.available = data.maxMemory - data.reserved
}
return nodesMemoryData, nil
}
开发者ID:keymon,项目名称:tsuru,代码行数:30,代码来源:auto_scale.go
注:本文中的github.com/tsuru/tsuru/app.GetByName函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论