本文整理汇总了Golang中github.com/tsuru/tsuru/service.ServiceInstance类的典型用法代码示例。如果您正苦于以下问题:Golang ServiceInstance类的具体用法?Golang ServiceInstance怎么用?Golang ServiceInstance使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ServiceInstance类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: TestServicesInstancesHandlerReturnsOnlyServicesThatTheUserHasAccess
func (s *ConsumptionSuite) TestServicesInstancesHandlerReturnsOnlyServicesThatTheUserHasAccess(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()})
srv := service.Service{Name: "redis", IsRestricted: true}
err = s.conn.Services().Insert(srv)
c.Assert(err, check.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": "redis"})
instance := service.ServiceInstance{
Name: "redis-globo",
ServiceName: "redis",
Apps: []string{"globo"},
}
err = instance.Create()
c.Assert(err, check.IsNil)
request, err := http.NewRequest("GET", "/services/instances", nil)
c.Assert(err, check.IsNil)
recorder := httptest.NewRecorder()
err = serviceInstances(recorder, request, token)
c.Assert(err, check.IsNil)
body, err := ioutil.ReadAll(recorder.Body)
c.Assert(err, check.IsNil)
var instances []service.ServiceModel
err = json.Unmarshal(body, &instances)
c.Assert(err, check.IsNil)
c.Assert(instances, check.DeepEquals, []service.ServiceModel{})
}
开发者ID:reoring,项目名称:tsuru,代码行数:31,代码来源:service_consumption_test.go
示例2: TestServiceInstanceStatusHandler
func (s *ConsumptionSuite) TestServiceInstanceStatusHandler(c *check.C) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusNoContent)
w.Write([]byte(`Service instance "my_nosql" is up`))
}))
defer ts.Close()
srv := service.Service{Name: "mongodb", OwnerTeams: []string{s.team.Name}, Endpoint: map[string]string{"production": ts.URL}}
err := srv.Create()
c.Assert(err, check.IsNil)
defer srv.Delete()
si := service.ServiceInstance{Name: "my_nosql", ServiceName: srv.Name, Teams: []string{s.team.Name}}
err = si.Create()
c.Assert(err, check.IsNil)
defer service.DeleteInstance(&si)
recorder, request := makeRequestToStatusHandler("mongodb", "my_nosql", c)
err = serviceInstanceStatus(recorder, request, s.token)
c.Assert(err, check.IsNil)
b, err := ioutil.ReadAll(recorder.Body)
c.Assert(string(b), check.Equals, "Service instance \"my_nosql\" is up")
action := rectest.Action{
Action: "service-instance-status",
User: s.user.Email,
Extra: []interface{}{srv.Name, "my_nosql"},
}
c.Assert(action, rectest.IsRecorded)
}
开发者ID:reoring,项目名称:tsuru,代码行数:26,代码来源:service_consumption_test.go
示例3: TestRemoveServiceInstanceHandler
func (s *ConsumptionSuite) TestRemoveServiceInstanceHandler(c *check.C) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
}))
defer ts.Close()
se := service.Service{Name: "foo", Endpoint: map[string]string{"production": ts.URL}}
err := se.Create()
defer s.conn.Services().Remove(bson.M{"_id": se.Name})
c.Assert(err, check.IsNil)
si := service.ServiceInstance{Name: "foo-instance", ServiceName: "foo", Teams: []string{s.team.Name}}
err = si.Create()
c.Assert(err, check.IsNil)
recorder, request := makeRequestToRemoveInstanceHandler("foo", "foo-instance", c)
err = removeServiceInstance(recorder, request, s.token)
c.Assert(err, check.IsNil)
b, err := ioutil.ReadAll(recorder.Body)
c.Assert(err, check.IsNil)
var msg io.SimpleJsonMessage
json.Unmarshal(b, &msg)
c.Assert(msg.Message, check.Equals, `service instance successfuly removed`)
n, err := s.conn.ServiceInstances().Find(bson.M{"name": "foo-instance", "service_name": "foo"}).Count()
c.Assert(err, check.IsNil)
c.Assert(n, check.Equals, 0)
action := rectest.Action{
Action: "remove-service-instance",
User: s.user.Email,
Extra: []interface{}{"foo", "foo-instance"},
}
c.Assert(action, rectest.IsRecorded)
}
开发者ID:reoring,项目名称:tsuru,代码行数:30,代码来源:service_consumption_test.go
示例4: TestHandleBindServiceMessage
func (s *S) TestHandleBindServiceMessage(c *gocheck.C) {
called := false
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
called = true
w.Write([]byte(`{"DATABASE_USER":"root","DATABASE_PASSWORD":"s3cr3t"}`))
}))
defer ts.Close()
srvc := service.Service{Name: "mysql", Endpoint: map[string]string{"production": ts.URL}}
err := srvc.Create()
c.Assert(err, gocheck.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": "mysql"})
instance := service.ServiceInstance{Name: "my-mysql", ServiceName: "mysql", Teams: []string{s.team.Name}}
instance.Create()
defer s.conn.ServiceInstances().Remove(bson.M{"_id": "my-mysql"})
a := App{
Name: "nemesis",
Units: []Unit{
{
Name: "i-00800",
State: "started",
Machine: 19,
},
},
}
err = s.conn.Apps().Insert(a)
c.Assert(err, gocheck.IsNil)
defer s.conn.Apps().Remove(bson.M{"name": a.Name})
err = instance.AddApp(a.Name)
c.Assert(err, gocheck.IsNil)
err = s.conn.ServiceInstances().Update(bson.M{"name": instance.Name}, instance)
c.Assert(err, gocheck.IsNil)
message := queue.Message{Action: BindService, Args: []string{a.Name, a.Units[0].Name}}
handle(&message)
c.Assert(called, gocheck.Equals, true)
}
开发者ID:rochacon,项目名称:tsuru,代码行数:35,代码来源:queue_test.go
示例5: TestUnbindRemovesAppFromServiceInstance
func (s *S) TestUnbindRemovesAppFromServiceInstance(c *gocheck.C) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusNoContent)
}))
defer ts.Close()
srvc := service.Service{Name: "mysql", Endpoint: map[string]string{"production": ts.URL}}
err := srvc.Create()
c.Assert(err, gocheck.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": "mysql"})
instance := service.ServiceInstance{
Name: "my-mysql",
ServiceName: "mysql",
Teams: []string{s.team.Name},
Apps: []string{"painkiller"},
}
instance.Create()
defer s.conn.ServiceInstances().Remove(bson.M{"name": "my-mysql"})
a, err := createTestApp(s.conn, "painkiller", "", []string{s.team.Name})
c.Assert(err, gocheck.IsNil)
defer s.conn.Apps().Remove(bson.M{"name": a.Name})
err = instance.UnbindApp(&a)
c.Assert(err, gocheck.IsNil)
s.conn.ServiceInstances().Find(bson.M{"name": instance.Name}).One(&instance)
c.Assert(instance.Apps, gocheck.DeepEquals, []string{})
}
开发者ID:ningjh,项目名称:tsuru,代码行数:25,代码来源:bind_test.go
示例6: TestBindUnit
func (s *S) TestBindUnit(c *gocheck.C) {
called := false
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
called = true
w.Write([]byte(`{"DATABASE_USER":"root","DATABASE_PASSWORD":"s3cr3t"}`))
}))
defer ts.Close()
srvc := service.Service{Name: "mysql", Endpoint: map[string]string{"production": ts.URL}}
err := srvc.Create()
c.Assert(err, gocheck.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": "mysql"})
instance := service.ServiceInstance{Name: "my-mysql", ServiceName: "mysql", Teams: []string{s.team.Name}}
instance.Create()
defer s.conn.ServiceInstances().Remove(bson.M{"name": "my-mysql"})
a, err := createTestApp(s.conn, "painkiller", "", []string{s.team.Name})
c.Assert(err, gocheck.IsNil)
defer s.conn.Apps().Remove(bson.M{"name": a.Name})
app.Provisioner.Provision(&a)
defer app.Provisioner.Destroy(&a)
envs, err := instance.BindUnit(&a, a.GetUnits()[0])
c.Assert(err, gocheck.IsNil)
c.Assert(called, gocheck.Equals, true)
expectedEnvs := map[string]string{
"DATABASE_USER": "root",
"DATABASE_PASSWORD": "s3cr3t",
}
c.Assert(envs, gocheck.DeepEquals, expectedEnvs)
}
开发者ID:ningjh,项目名称:tsuru,代码行数:28,代码来源:bind_test.go
示例7: TestServicesInstancesHandler
func (s *ConsumptionSuite) TestServicesInstancesHandler(c *gocheck.C) {
srv := service.Service{Name: "redis", Teams: []string{s.team.Name}}
err := srv.Create()
c.Assert(err, gocheck.IsNil)
instance := service.ServiceInstance{
Name: "redis-globo",
ServiceName: "redis",
Apps: []string{"globo"},
Teams: []string{s.team.Name},
}
err = instance.Create()
c.Assert(err, gocheck.IsNil)
request, err := http.NewRequest("GET", "/services/instances", nil)
c.Assert(err, gocheck.IsNil)
recorder := httptest.NewRecorder()
err = serviceInstances(recorder, request, s.token)
c.Assert(err, gocheck.IsNil)
body, err := ioutil.ReadAll(recorder.Body)
c.Assert(err, gocheck.IsNil)
var instances []service.ServiceModel
err = json.Unmarshal(body, &instances)
c.Assert(err, gocheck.IsNil)
expected := []service.ServiceModel{
{Service: "redis", Instances: []string{"redis-globo"}},
}
c.Assert(instances, gocheck.DeepEquals, expected)
action := testing.Action{Action: "list-service-instances", User: s.user.Email}
c.Assert(action, testing.IsRecorded)
}
开发者ID:renanoliveira,项目名称:tsuru,代码行数:29,代码来源:service_consumption_test.go
示例8: TestUnbindUnit
func (s *S) TestUnbindUnit(c *gocheck.C) {
called := false
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
called = true
w.WriteHeader(http.StatusNoContent)
}))
defer ts.Close()
srvc := service.Service{Name: "mysql", Endpoint: map[string]string{"production": ts.URL}}
err := srvc.Create()
c.Assert(err, gocheck.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": "mysql"})
instance := service.ServiceInstance{
Name: "my-mysql",
ServiceName: "mysql",
Teams: []string{s.team.Name},
Apps: []string{"painkiller"},
}
instance.Create()
defer s.conn.ServiceInstances().Remove(bson.M{"name": "my-mysql"})
a, err := createTestApp(s.conn, "painkiller", "", []string{s.team.Name})
c.Assert(err, gocheck.IsNil)
defer s.conn.Apps().Remove(bson.M{"name": a.Name})
app.Provisioner.Provision(&a)
defer app.Provisioner.Destroy(&a)
err = instance.UnbindUnit(a.GetUnits()[0])
c.Assert(err, gocheck.IsNil)
c.Assert(called, gocheck.Equals, true)
}
开发者ID:ningjh,项目名称:tsuru,代码行数:28,代码来源:bind_test.go
示例9: TestServiceInstanceProxy
func (s *ConsumptionSuite) TestServiceInstanceProxy(c *check.C) {
var proxyedRequest *http.Request
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
proxyedRequest = r
w.Header().Set("X-Response-Custom", "custom response header")
w.WriteHeader(http.StatusCreated)
w.Write([]byte("a message"))
}))
defer ts.Close()
se := service.Service{Name: "foo", Endpoint: map[string]string{"production": ts.URL}}
err := se.Create()
c.Assert(err, check.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": se.Name})
si := service.ServiceInstance{Name: "foo-instance", ServiceName: "foo", Teams: []string{s.team.Name}}
err = si.Create()
c.Assert(err, check.IsNil)
defer service.DeleteInstance(&si)
url := fmt.Sprintf("/services/%s/proxy/%s?callback=/mypath", si.ServiceName, si.Name)
request, err := http.NewRequest("GET", url, nil)
reqAuth := "bearer " + s.token.GetValue()
request.Header.Set("Authorization", reqAuth)
request.Header.Set("X-Custom", "my request header")
m := RunServer(true)
recorder := httptest.NewRecorder()
m.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusCreated)
c.Assert(recorder.Header().Get("X-Response-Custom"), check.Equals, "custom response header")
c.Assert(recorder.Body.String(), check.Equals, "a message")
c.Assert(proxyedRequest, check.NotNil)
c.Assert(proxyedRequest.Header.Get("X-Custom"), check.Equals, "my request header")
c.Assert(proxyedRequest.Header.Get("Authorization"), check.Not(check.Equals), reqAuth)
c.Assert(proxyedRequest.URL.String(), check.Equals, "/mypath")
}
开发者ID:reoring,项目名称:tsuru,代码行数:33,代码来源:service_consumption_test.go
示例10: TestGrantRevokeServiceToTeam
func (s *ConsumptionSuite) TestGrantRevokeServiceToTeam(c *check.C) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("{'AA': 2}"))
}))
defer ts.Close()
se := service.Service{Name: "go", Endpoint: map[string]string{"production": ts.URL}}
err := se.Create()
c.Assert(err, check.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": se.Name})
si := service.ServiceInstance{Name: "si-test", ServiceName: "go", Teams: []string{s.team.Name}}
err = si.Create()
c.Assert(err, check.IsNil)
defer service.DeleteInstance(&si)
team := auth.Team{Name: "test"}
s.conn.Teams().Insert(team)
defer s.conn.Teams().Remove(bson.M{"name": team.Name})
url := fmt.Sprintf("/services/%s/instances/permission/%s/%s?:instance=%s&:team=%s&:service=%s", si.ServiceName, si.Name,
team.Name, si.Name, team.Name, si.ServiceName)
request, err := http.NewRequest("PUT", url, nil)
c.Assert(err, check.IsNil)
recorder := httptest.NewRecorder()
err = serviceInstanceGrantTeam(recorder, request, s.token)
c.Assert(err, check.IsNil)
sinst, err := service.GetServiceInstance(si.ServiceName, si.Name)
c.Assert(err, check.IsNil)
c.Assert(sinst.Teams, check.DeepEquals, []string{s.team.Name, team.Name})
request, err = http.NewRequest("DELETE", url, nil)
c.Assert(err, check.IsNil)
err = serviceInstanceRevokeTeam(recorder, request, s.token)
c.Assert(err, check.IsNil)
sinst, err = service.GetServiceInstance(si.ServiceName, si.Name)
c.Assert(err, check.IsNil)
c.Assert(sinst.Teams, check.DeepEquals, []string{s.team.Name})
}
开发者ID:reoring,项目名称:tsuru,代码行数:34,代码来源:service_consumption_test.go
示例11: TestServiceInstanceProxyError
func (s *ConsumptionSuite) TestServiceInstanceProxyError(c *check.C) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusBadGateway)
w.Write([]byte("some error"))
}))
defer ts.Close()
se := service.Service{Name: "foo", Endpoint: map[string]string{"production": ts.URL}}
err := se.Create()
c.Assert(err, check.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": se.Name})
si := service.ServiceInstance{Name: "foo-instance", ServiceName: "foo", Teams: []string{s.team.Name}}
err = si.Create()
c.Assert(err, check.IsNil)
defer service.DeleteInstance(&si)
url := fmt.Sprintf("/services/%s/proxy/%s?callback=/mypath", si.ServiceName, si.Name)
request, err := http.NewRequest("GET", url, nil)
c.Assert(err, check.IsNil)
reqAuth := "bearer " + s.token.GetValue()
request.Header.Set("Authorization", reqAuth)
m := RunServer(true)
recorder := httptest.NewRecorder()
m.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusBadGateway)
c.Assert(recorder.Body.Bytes(), check.DeepEquals, []byte("some error"))
}
开发者ID:reoring,项目名称:tsuru,代码行数:25,代码来源:service_consumption_test.go
示例12: TestDestroyShouldUnbindAppFromInstance
func (s *S) TestDestroyShouldUnbindAppFromInstance(c *gocheck.C) {
h := testHandler{}
tsg := testing.StartGandalfTestServer(&h)
defer tsg.Close()
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusNoContent)
}))
defer ts.Close()
srvc := service.Service{Name: "my", Endpoint: map[string]string{"production": ts.URL}}
err := srvc.Create()
c.Assert(err, gocheck.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": srvc.Name})
instance := service.ServiceInstance{Name: "MyInstance", Apps: []string{"whichapp"}, ServiceName: srvc.Name}
err = instance.Create()
c.Assert(err, gocheck.IsNil)
defer s.conn.ServiceInstances().Remove(bson.M{"_id": instance.Name})
a := App{
Name: "whichapp",
Platform: "python",
Teams: []string{},
}
err = CreateApp(&a, s.user)
c.Assert(err, gocheck.IsNil)
app, err := GetByName(a.Name)
c.Assert(err, gocheck.IsNil)
err = Delete(app)
c.Assert(err, gocheck.IsNil)
n, err := s.conn.ServiceInstances().Find(bson.M{"apps": bson.M{"$in": []string{a.Name}}}).Count()
c.Assert(err, gocheck.IsNil)
c.Assert(n, gocheck.Equals, 0)
}
开发者ID:rualatngua,项目名称:tsuru,代码行数:31,代码来源:bind_test.go
示例13: BindUnit
func (app *App) BindUnit(unit *provision.Unit) error {
instances, err := app.serviceInstances()
if err != nil {
return err
}
var i int
var instance service.ServiceInstance
for i, instance = range instances {
err = instance.BindUnit(app, unit)
if err != nil {
log.Errorf("Error binding the unit %s with the service instance %s: %s", unit.ID, instance.Name, err)
break
}
}
if err != nil {
for j := i - 1; j >= 0; j-- {
instance = instances[j]
rollbackErr := instance.UnbindUnit(app, unit)
if rollbackErr != nil {
log.Errorf("Error unbinding unit %s with the service instance %s during rollback: %s", unit.ID, instance.Name, rollbackErr)
}
}
}
return err
}
开发者ID:tsuru,项目名称:tsuru,代码行数:25,代码来源:app.go
示例14: TestBindUnit
func (s *BindSuite) TestBindUnit(c *check.C) {
var called bool
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
called = true
}))
defer ts.Close()
srvc := service.Service{Name: "mysql", Endpoint: map[string]string{"production": ts.URL}}
err := srvc.Create()
c.Assert(err, check.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": "mysql"})
instance := service.ServiceInstance{Name: "my-mysql", ServiceName: "mysql", Teams: []string{s.team.Name}}
instance.Create()
defer s.conn.ServiceInstances().Remove(bson.M{"name": "my-mysql"})
a, err := createTestApp(s.conn, "painkiller", "", []string{s.team.Name})
c.Assert(err, check.IsNil)
defer s.conn.Apps().Remove(bson.M{"name": a.Name})
app.Provisioner.Provision(&a)
defer app.Provisioner.Destroy(&a)
app.Provisioner.AddUnits(&a, 1, "web", nil)
units, err := a.GetUnits()
c.Assert(err, check.IsNil)
err = instance.BindUnit(&a, units[0])
c.Assert(err, check.IsNil)
c.Assert(called, check.Equals, true)
}
开发者ID:nicolas2bonfils,项目名称:tsuru,代码行数:25,代码来源:bind_test.go
示例15: TestServiceProxyPost
func (s *ProvisionSuite) TestServiceProxyPost(c *check.C) {
var (
proxyedRequest *http.Request
proxyedBody []byte
)
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var err error
proxyedBody, err = ioutil.ReadAll(r.Body)
c.Assert(err, check.IsNil)
proxyedRequest = r
w.Header().Set("X-Response-Custom", "custom response header")
w.WriteHeader(http.StatusCreated)
w.Write([]byte("a message"))
}))
defer ts.Close()
se := service.Service{
Name: "foo",
Endpoint: map[string]string{"production": ts.URL},
OwnerTeams: []string{s.team.Name},
}
err := se.Create()
c.Assert(err, check.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": se.Name})
si := service.ServiceInstance{Name: "foo-instance", ServiceName: "foo", Teams: []string{s.team.Name}}
err = si.Create()
c.Assert(err, check.IsNil)
defer service.DeleteInstance(&si, "")
url := fmt.Sprintf("/services/proxy/service/%s?callback=/mypath", se.Name)
body := strings.NewReader("my=awesome&body=1")
request, err := http.NewRequest("POST", url, body)
c.Assert(err, check.IsNil)
reqAuth := "bearer " + s.token.GetValue()
request.Header.Set("Authorization", reqAuth)
request.Header.Set("X-Custom", "my request header")
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
recorder := &closeNotifierResponseRecorder{httptest.NewRecorder()}
s.m.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusCreated)
c.Assert(recorder.Header().Get("X-Response-Custom"), check.Equals, "custom response header")
c.Assert(recorder.Body.String(), check.Equals, "a message")
c.Assert(proxyedRequest, check.NotNil)
c.Assert(proxyedRequest.Method, check.Equals, "POST")
c.Assert(proxyedRequest.Header.Get("X-Custom"), check.Equals, "my request header")
c.Assert(proxyedRequest.Header.Get("Authorization"), check.Not(check.Equals), reqAuth)
c.Assert(proxyedRequest.URL.String(), check.Equals, "/mypath")
c.Assert(string(proxyedBody), check.Equals, "my=awesome&body=1")
c.Assert(eventtest.EventDesc{
Target: serviceTarget("foo"),
Owner: s.token.GetUserName(),
Kind: "service.update.proxy",
StartCustomData: []map[string]interface{}{
{"name": ":service", "value": "foo"},
{"name": "callback", "value": "/mypath"},
{"name": "method", "value": "POST"},
{"name": "my", "value": "awesome"},
{"name": "body", "value": "1"},
},
}, eventtest.HasEvent)
}
开发者ID:tsuru,项目名称:tsuru,代码行数:59,代码来源:service_provision_test.go
示例16: TestGetServiceInstanceOrError
func (s *ConsumptionSuite) TestGetServiceInstanceOrError(c *check.C) {
si := service.ServiceInstance{Name: "foo", ServiceName: "foo-service", Teams: []string{s.team.Name}}
err := si.Create()
c.Assert(err, check.IsNil)
rSi, err := getServiceInstanceOrError("foo-service", "foo")
c.Assert(err, check.IsNil)
c.Assert(rSi.Name, check.Equals, si.Name)
}
开发者ID:reoring,项目名称:tsuru,代码行数:8,代码来源:service_consumption_test.go
示例17: TestBindCallTheServiceAPIAndSetsEnvironmentVariableReturnedFromTheCall
func (s *BindSuite) TestBindCallTheServiceAPIAndSetsEnvironmentVariableReturnedFromTheCall(c *check.C) {
fakeProvisioner := app.Provisioner.(*provisiontest.FakeProvisioner)
fakeProvisioner.PrepareOutput([]byte("exported"))
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(`{"DATABASE_USER":"root","DATABASE_PASSWORD":"s3cr3t"}`))
}))
defer ts.Close()
srvc := service.Service{Name: "mysql", Endpoint: map[string]string{"production": ts.URL}}
err := srvc.Create()
c.Assert(err, check.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": "mysql"})
instance := service.ServiceInstance{
Name: "my-mysql",
ServiceName: "mysql",
Teams: []string{s.team.Name},
}
err = instance.Create()
c.Assert(err, check.IsNil)
defer s.conn.ServiceInstances().Remove(bson.M{"name": "my-mysql"})
a, err := createTestApp(s.conn, "painkiller", "", []string{s.team.Name})
c.Assert(err, check.IsNil)
defer s.conn.Apps().Remove(bson.M{"name": a.Name})
app.Provisioner.Provision(&a)
defer app.Provisioner.Destroy(&a)
app.Provisioner.AddUnits(&a, 1, "web", nil)
err = instance.BindApp(&a, nil)
c.Assert(err, check.IsNil)
newApp, err := app.GetByName(a.Name)
c.Assert(err, check.IsNil)
expectedEnv := map[string]bind.EnvVar{
"DATABASE_USER": {
Name: "DATABASE_USER",
Value: "root",
Public: false,
InstanceName: instance.Name,
},
"DATABASE_PASSWORD": {
Name: "DATABASE_PASSWORD",
Value: "s3cr3t",
Public: false,
InstanceName: instance.Name,
},
}
expectedTsuruServices := map[string][]bind.ServiceInstance{
"mysql": {
bind.ServiceInstance{
Name: instance.Name,
Envs: map[string]string{"DATABASE_USER": "root", "DATABASE_PASSWORD": "s3cr3t"},
},
},
}
servicesEnv := newApp.Env[app.TsuruServicesEnvVar]
var tsuruServices map[string][]bind.ServiceInstance
json.Unmarshal([]byte(servicesEnv.Value), &tsuruServices)
c.Assert(tsuruServices, check.DeepEquals, expectedTsuruServices)
delete(newApp.Env, app.TsuruServicesEnvVar)
c.Assert(newApp.Env, check.DeepEquals, expectedEnv)
}
开发者ID:nicolas2bonfils,项目名称:tsuru,代码行数:58,代码来源:bind_test.go
示例18: createServiceInstance
// title: service instance create
// path: /services/{service}/instances
// method: POST
// consume: application/x-www-form-urlencoded
// responses:
// 201: Service created
// 400: Invalid data
// 401: Unauthorized
// 409: Service already exists
func createServiceInstance(w http.ResponseWriter, r *http.Request, t auth.Token) error {
serviceName := r.URL.Query().Get(":service")
user, err := t.User()
if err != nil {
return err
}
srv, err := getService(serviceName)
if err != nil {
return err
}
instance := service.ServiceInstance{
Name: r.FormValue("name"),
PlanName: r.FormValue("plan"),
TeamOwner: r.FormValue("owner"),
Description: r.FormValue("description"),
}
var teamOwner string
if instance.TeamOwner == "" {
teamOwner, err = permission.TeamForPermission(t, permission.PermServiceInstanceCreate)
if err != nil {
return err
}
instance.TeamOwner = teamOwner
}
allowed := permission.Check(t, permission.PermServiceInstanceCreate,
permission.Context(permission.CtxTeam, instance.TeamOwner),
)
if !allowed {
return permission.ErrUnauthorized
}
if srv.IsRestricted {
allowed := permission.Check(t, permission.PermServiceRead,
append(permission.Contexts(permission.CtxTeam, srv.Teams),
permission.Context(permission.CtxService, srv.Name))...,
)
if !allowed {
return permission.ErrUnauthorized
}
}
rec.Log(user.Email, "create-service-instance", fmt.Sprintf("%#v", instance))
err = service.CreateServiceInstance(instance, &srv, user)
if err == service.ErrInstanceNameAlreadyExists {
return &errors.HTTP{
Code: http.StatusConflict,
Message: err.Error(),
}
}
if err == service.ErrInvalidInstanceName {
return &errors.HTTP{
Code: http.StatusBadRequest,
Message: err.Error(),
}
}
if err == nil {
w.WriteHeader(http.StatusCreated)
}
return err
}
开发者ID:pedrosnk,项目名称:tsuru,代码行数:67,代码来源:service_consumption.go
示例19: TestRemoveServiceHandlerWIthAssociatedAppsWithNoUnbindAllListAllApp
func (s *ConsumptionSuite) TestRemoveServiceHandlerWIthAssociatedAppsWithNoUnbindAllListAllApp(c *check.C) {
var called int32
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.Method == "DELETE" && r.URL.Path == "/resources/my-mysql/bind" {
atomic.StoreInt32(&called, 1)
}
}))
defer ts.Close()
srvc := service.Service{Name: "mysql", Endpoint: map[string]string{"production": ts.URL}}
err := srvc.Create()
c.Assert(err, check.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": "mysql"})
p := app.Platform{Name: "zend"}
s.conn.Platforms().Insert(p)
s.pool = "test1"
opts := provision.AddPoolOptions{Name: "test1", Default: true}
err = provision.AddPool(opts)
c.Assert(err, check.IsNil)
a := app.App{
Name: "app",
Platform: "zend",
TeamOwner: s.team.Name,
}
ab := app.App{
Name: "app2",
Platform: "zend",
TeamOwner: s.team.Name,
}
err = app.CreateApp(&a, s.user)
c.Assert(err, check.IsNil)
err = app.CreateApp(&ab, s.user)
c.Assert(err, check.IsNil)
units, _ := s.provisioner.AddUnits(&a, 1, "web", nil)
units, _ = s.provisioner.AddUnits(&ab, 1, "web", nil)
instance := service.ServiceInstance{
Name: "my-mysql",
ServiceName: "mysql",
Teams: []string{s.team.Name},
Apps: []string{"app", "app2"},
Units: []string{units[0].ID},
}
err = instance.Create()
c.Assert(err, check.IsNil)
defer s.conn.ServiceInstances().Remove(bson.M{"name": "my-mysql"})
recorder, request := makeRequestToRemoveInstanceHandlerWithNoUnbind("mysql", "my-mysql", c)
err = removeServiceInstance(recorder, request, s.token)
c.Assert(err, check.IsNil)
b, err := ioutil.ReadAll(recorder.Body)
c.Assert(err, check.IsNil)
var msg io.SimpleJsonMessage
json.Unmarshal(b, &msg)
c.Assert(msg.Error, check.Equals, service.ErrServiceInstanceBound.Error())
expectedMsg := "app,app2"
c.Assert(msg.Message, check.Equals, expectedMsg)
}
开发者ID:reoring,项目名称:tsuru,代码行数:55,代码来源:service_consumption_test.go
示例20: TestUnbindRemovesEnvironmentVariableFromApp
func (s *S) TestUnbindRemovesEnvironmentVariableFromApp(c *gocheck.C) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusNoContent)
}))
defer ts.Close()
srvc := service.Service{Name: "mysql", Endpoint: map[string]string{"production": ts.URL}}
err := srvc.Create()
c.Assert(err, gocheck.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": "mysql"})
instance := service.ServiceInstance{
Name: "my-mysql",
ServiceName: "mysql",
Teams: []string{s.team.Name},
Apps: []string{"painkiller"},
}
err = instance.Create()
c.Assert(err, gocheck.IsNil)
defer s.conn.ServiceInstances().Remove(bson.M{"name": "my-mysql"})
a := app.App{
Name: "painkiller",
Teams: []string{s.team.Name},
Env: map[string]bind.EnvVar{
"DATABASE_HOST": {
Name: "DATABASE_HOST",
Value: "arrea",
Public: false,
InstanceName: instance.Name,
},
"MY_VAR": {
Name: "MY_VAR",
Value: "123",
},
},
Units: []app.Unit{
{
Ip: "10.10.10.10",
},
},
}
err = s.conn.Apps().Insert(&a)
c.Assert(err, gocheck.IsNil)
defer s.conn.Apps().Remove(bson.M{"name": a.Name})
err = instance.UnbindApp(&a)
c.Assert(err, gocheck.IsNil)
newApp, err := app.GetByName(a.Name)
c.Assert(err, gocheck.IsNil)
expected := map[string]bind.EnvVar{
"MY_VAR": {
Name: "MY_VAR",
Value: "123",
},
}
c.Assert(newApp.Env, gocheck.DeepEquals, expected)
}
开发者ID:rochacon,项目名称:tsuru,代码行数:54,代码来源:bind_test.go
注:本文中的github.com/tsuru/tsuru/service.ServiceInstance类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论