Skip to content

Commit

Permalink
Merge pull request #108 from linkernetworks/johnlin/error-handling
Browse files Browse the repository at this point in the history
use switch cases to handle mgo error
  • Loading branch information
Hung-Wei Chiu authored Jul 17, 2018
2 parents 764af12 + 6660999 commit 339e9c4
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 38 deletions.
32 changes: 20 additions & 12 deletions src/server/handler_network.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,12 +96,14 @@ func listNetworkHandler(ctx *web.Context) {
q = c.Find(selector).Sort("_id").Skip((page - 1) * pageSize).Limit(pageSize)

if err := q.All(&networks); err != nil {
if err == mgo.ErrNotFound {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}

count, err := session.Count(entity.NetworkCollectionName, bson.M{})
Expand All @@ -126,12 +128,14 @@ func getNetworkHandler(ctx *web.Context) {

var network entity.Network
if err := c.FindId(bson.ObjectIdHex(id)).One(&network); err != nil {
if err == mgo.ErrNotFound {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}
resp.WriteEntity(network)
}
Expand All @@ -147,12 +151,14 @@ func deleteNetworkHandler(ctx *web.Context) {

var network entity.Network
if err := c.FindId(bson.ObjectIdHex(id)).One(&network); err != nil {
if err == mgo.ErrNotFound {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}

networkProvider, err := np.GetNetworkProvider(&network)
Expand All @@ -167,12 +173,14 @@ func deleteNetworkHandler(ctx *web.Context) {
}

if err := session.Remove(entity.NetworkCollectionName, "_id", bson.ObjectIdHex(id)); err != nil {
if mgo.ErrNotFound == err {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}

resp.WriteEntity(ActionResponse{
Expand Down
26 changes: 16 additions & 10 deletions src/server/handler_pod.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,12 +79,14 @@ func deletePodHandler(ctx *web.Context) {
}

if err := session.Remove(entity.PodCollectionName, "_id", bson.ObjectIdHex(id)); err != nil {
if mgo.ErrNotFound == err {
response.BadRequest(req.Request, resp.ResponseWriter, err)
} else {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}

resp.WriteEntity(ActionResponse{
Expand Down Expand Up @@ -121,12 +123,14 @@ func listPodHandler(ctx *web.Context) {
q = c.Find(selector).Sort("_id").Skip((page - 1) * pageSize).Limit(pageSize)

if err := q.All(&pods); err != nil {
if err == mgo.ErrNotFound {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}

count, err := session.Count(entity.PodCollectionName, bson.M{})
Expand All @@ -151,12 +155,14 @@ func getPodHandler(ctx *web.Context) {

var pod entity.Pod
if err := c.FindId(bson.ObjectIdHex(id)).One(&pod); err != nil {
if err == mgo.ErrNotFound {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}
resp.WriteEntity(pod)
}
24 changes: 15 additions & 9 deletions src/server/handler_storage.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,12 +101,14 @@ func listStorage(ctx *web.Context) {
q = c.Find(selector).Sort("_id").Skip((page - 1) * pageSize).Limit(pageSize)

if err := q.All(&storageProviders); err != nil {
if err == mgo.ErrNotFound {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}

count, err := session.Count(entity.StorageCollectionName, bson.M{})
Expand All @@ -131,12 +133,14 @@ func deleteStorage(ctx *web.Context) {

var storage entity.Storage
if err := c.FindId(bson.ObjectIdHex(id)).One(&storage); err != nil {
if err == mgo.ErrNotFound {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}

storageProvider, err := storageprovider.GetStorageProvider(&storage)
Expand All @@ -151,12 +155,14 @@ func deleteStorage(ctx *web.Context) {
}

if err := session.Remove(entity.StorageCollectionName, "_id", bson.ObjectIdHex(id)); err != nil {
if mgo.ErrNotFound == err {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}

resp.WriteEntity(ActionResponse{
Expand Down
18 changes: 11 additions & 7 deletions src/server/handler_volume.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,14 @@ func deleteVolume(ctx *web.Context) {
}

if err := session.Remove(entity.VolumeCollectionName, "_id", bson.ObjectIdHex(id)); err != nil {
if mgo.ErrNotFound == err {
response.BadRequest(req.Request, resp.ResponseWriter, err)
} else {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}

resp.WriteEntity(ActionResponse{
Expand Down Expand Up @@ -122,12 +124,14 @@ func listVolume(ctx *web.Context) {
q = c.Find(selector).Sort("_id").Skip((page - 1) * pageSize).Limit(pageSize)

if err := q.All(&volumes); err != nil {
if err == mgo.ErrNotFound {
switch err {
case mgo.ErrNotFound:
response.NotFound(req.Request, resp.ResponseWriter, err)
} else {
return
default:
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
return
}

count, err := session.Count(entity.VolumeCollectionName, bson.M{})
Expand Down

0 comments on commit 339e9c4

Please sign in to comment.