本文整理汇总了Golang中github.com/tsuru/tsuru/service.Service.Create方法的典型用法代码示例。如果您正苦于以下问题:Golang Service.Create方法的具体用法?Golang Service.Create怎么用?Golang Service.Create使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/tsuru/tsuru/service.Service
的用法示例。
在下文中一共展示了Service.Create方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestGrantServiceAccessToTeam
func (s *ProvisionSuite) TestGrantServiceAccessToTeam(c *check.C) {
t := &auth.Team{Name: "blaaaa"}
s.conn.Teams().Insert(t)
defer s.conn.Teams().Remove(bson.M{"name": t.Name})
se := service.Service{Name: "my_service", OwnerTeams: []string{s.team.Name}}
err := se.Create()
c.Assert(err, check.IsNil)
defer s.conn.Services().Remove(bson.M{"_id": se.Name})
url := fmt.Sprintf("/services/%s/team/%s", se.Name, t.Name)
request, err := http.NewRequest("PUT", url, nil)
c.Assert(err, check.IsNil)
reqAuth := "bearer " + s.token.GetValue()
request.Header.Set("Authorization", reqAuth)
recorder := httptest.NewRecorder()
m := RunServer(true)
m.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
err = se.Get()
c.Assert(err, check.IsNil)
c.Assert(*t, HasAccessTo, se)
action := rectest.Action{
Action: "grant-service-access",
User: s.user.Email,
Extra: []interface{}{"service=" + se.Name, "team=" + t.Name},
}
c.Assert(action, rectest.IsRecorded)
}
示例2: 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)
}
示例3: 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)
}
示例4: TestCreateInstanceHandlerSavesServiceInstanceInDb
func (s *ConsumptionSuite) TestCreateInstanceHandlerSavesServiceInstanceInDb(c *gocheck.C) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(`{"DATABASE_HOST":"localhost"}`))
}))
defer ts.Close()
se := service.Service{
Name: "mysql",
Teams: []string{s.team.Name},
Endpoint: map[string]string{"production": ts.URL},
}
se.Create()
defer s.conn.Services().Remove(bson.M{"_id": se.Name})
recorder, request := makeRequestToCreateInstanceHandler(c)
err := createServiceInstance(recorder, request, s.token)
c.Assert(err, gocheck.IsNil)
var si service.ServiceInstance
err = s.conn.ServiceInstances().Find(bson.M{"name": "brainSQL", "service_name": "mysql"}).One(&si)
c.Assert(err, gocheck.IsNil)
s.conn.ServiceInstances().Update(bson.M{"name": si.Name}, si)
c.Assert(si.Name, gocheck.Equals, "brainSQL")
c.Assert(si.ServiceName, gocheck.Equals, "mysql")
action := testing.Action{
Action: "create-service-instance",
User: s.user.Email,
Extra: []interface{}{`{"name":"brainSQL","service_name":"mysql"}`},
}
c.Assert(action, testing.IsRecorded)
}
示例5: TestCreateInstanceHandlerSavesAllTeamsThatTheGivenUserIsMemberAndHasAccessToTheServiceInTheInstance
func (s *ConsumptionSuite) TestCreateInstanceHandlerSavesAllTeamsThatTheGivenUserIsMemberAndHasAccessToTheServiceInTheInstance(c *gocheck.C) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(`{"DATABASE_HOST":"localhost"}`))
}))
defer ts.Close()
t := auth.Team{Name: "judaspriest", Users: []string{s.user.Email}}
err := s.conn.Teams().Insert(t)
defer s.conn.Teams().Remove(bson.M{"name": t.Name})
srv := service.Service{Name: "mysql", Teams: []string{s.team.Name}, IsRestricted: true, Endpoint: map[string]string{"production": ts.URL}}
err = srv.Create()
c.Assert(err, gocheck.IsNil)
params := map[string]string{
"name": "brainSQL",
"service_name": "mysql",
"owner": s.team.Name,
}
recorder, request := makeRequestToCreateInstanceHandler(params, c)
err = createServiceInstance(recorder, request, s.token)
c.Assert(err, gocheck.IsNil)
var si service.ServiceInstance
err = s.conn.ServiceInstances().Find(bson.M{"name": "brainSQL"}).One(&si)
c.Assert(err, gocheck.IsNil)
s.conn.ServiceInstances().Update(bson.M{"name": si.Name}, si)
c.Assert(si.Teams, gocheck.DeepEquals, []string{s.team.Name})
}
示例6: 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)
}
示例7: 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)
}
示例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)
}
示例9: 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"))
}
示例10: 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")
}
示例11: 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)
}
示例12: TestServicePlansHandler
func (s *ConsumptionSuite) TestServicePlansHandler(c *check.C) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
content := `[{"name": "ignite", "description": "some value"}, {"name": "small", "description": "not space left for you"}]`
w.Write([]byte(content))
}))
defer ts.Close()
srvc := service.Service{Name: "mysql", Endpoint: map[string]string{"production": ts.URL}}
err := srvc.Create()
c.Assert(err, check.IsNil)
defer srvc.Delete()
request, err := http.NewRequest("GET", "/services/mysql/plans?:name=mysql", nil)
c.Assert(err, check.IsNil)
recorder := httptest.NewRecorder()
err = servicePlans(recorder, request, s.token)
c.Assert(err, check.IsNil)
body, err := ioutil.ReadAll(recorder.Body)
c.Assert(err, check.IsNil)
var plans []service.Plan
err = json.Unmarshal(body, &plans)
c.Assert(err, check.IsNil)
expected := []service.Plan{
{Name: "ignite", Description: "some value"},
{Name: "small", Description: "not space left for you"},
}
c.Assert(plans, check.DeepEquals, expected)
action := rectest.Action{
Action: "service-plans",
User: s.user.Email,
Extra: []interface{}{"mysql"},
}
c.Assert(action, rectest.IsRecorded)
}
示例13: TestAddDoc
func (s *ProvisionSuite) TestAddDoc(c *check.C) {
se := service.Service{Name: "some_service", OwnerTeams: []string{s.team.Name}}
se.Create()
defer s.conn.Services().Remove(bson.M{"_id": se.Name})
v := url.Values{}
v.Set("doc", "doc")
recorder, request := s.makeRequest("PUT", "/services/some_service/doc", v.Encode(), c)
request.Header.Set("Content-Type", "application/x-www-form-urlencoded")
s.m.ServeHTTP(recorder, request)
c.Assert(recorder.Code, check.Equals, http.StatusOK)
query := bson.M{"_id": "some_service"}
var serv service.Service
err := s.conn.Services().Find(query).One(&serv)
c.Assert(err, check.IsNil)
c.Assert(serv.Doc, check.Equals, "doc")
c.Assert(eventtest.EventDesc{
Target: serviceTarget("some_service"),
Owner: s.token.GetUserName(),
Kind: "service.update.doc",
StartCustomData: []map[string]interface{}{
{"name": ":name", "value": "some_service"},
{"name": "doc", "value": "doc"},
},
}, eventtest.HasEvent)
}
示例14: 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)
}
示例15: 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)
}