Skip to content

Commit

Permalink
Merge pull request #177 from linkernetworks/johnlin/fix-k8s-services-…
Browse files Browse the repository at this point in the history
…error

 [Bug] VX-217 fix error handling for k8s
  • Loading branch information
John-Lin authored Jul 26, 2018
2 parents a616b71 + 7eb1f85 commit 9e1aa2f
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
13 changes: 11 additions & 2 deletions src/server/handler_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/linkernetworks/vortex/src/net/http/query"
"github.com/linkernetworks/vortex/src/service"
"github.com/linkernetworks/vortex/src/web"
"k8s.io/apimachinery/pkg/api/errors"

mgo "gopkg.in/mgo.v2"
"gopkg.in/mgo.v2/bson"
Expand Down Expand Up @@ -42,7 +43,11 @@ func createServiceHandler(ctx *web.Context) {
s.CreatedAt = timeutils.Now()

if err := service.CreateService(sp, &s); err != nil {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
if errors.IsAlreadyExists(err) {
response.Conflict(req.Request, resp.ResponseWriter, fmt.Errorf("Service Name: %s already existed", s.Name))
} else {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
}
return
}
if err := session.Insert(entity.ServiceCollectionName, &s); err != nil {
Expand Down Expand Up @@ -75,7 +80,11 @@ func deleteServiceHandler(ctx *web.Context) {
}

if err := service.DeleteService(sp, &s); err != nil {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
if errors.IsAlreadyExists(err) {
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
}
return
}

Expand Down
3 changes: 2 additions & 1 deletion src/server/handler_service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,15 @@ func (suite *ServiceTestSuite) TestCreateService() {
httpWriter = httptest.NewRecorder()
suite.wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(suite.T(), http.StatusBadRequest, httpWriter)

//Create again and it should fail since the name exist
bodyReader = strings.NewReader(string(bodyBytes))
httpRequest, err = http.NewRequest("POST", "http://localhost:7890/v1/services", bodyReader)
suite.NoError(err)
httpRequest.Header.Add("Content-Type", "application/json")
httpWriter = httptest.NewRecorder()
suite.wc.Dispatch(httpWriter, httpRequest)
assertResponseCode(suite.T(), http.StatusInternalServerError, httpWriter)
assertResponseCode(suite.T(), http.StatusConflict, httpWriter)

err = svc.DeleteService(suite.sp, &service)
suite.NoError(err)
Expand Down

0 comments on commit 9e1aa2f

Please sign in to comment.