Skip to content

Commit

Permalink
use update
Browse files Browse the repository at this point in the history
  • Loading branch information
John-Lin committed Sep 28, 2018
1 parent bd024db commit 842a85e
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 17 deletions.
44 changes: 30 additions & 14 deletions src/server/handler_deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -315,8 +315,9 @@ func uploadDeploymentYAMLHandler(ctx *web.Context) {
resp.WriteHeaderAndEntity(http.StatusCreated, d)
}

func createAutoscalerHandler(ctx *web.Context) {
func updateAutoscalerHandler(ctx *web.Context) {
sp, req, resp := ctx.ServiceProvider, ctx.Request, ctx.Response
enableAutoscaler := req.QueryParameter("enable") == "true"

session := sp.Mongo.NewSession()
defer session.Close()
Expand All @@ -332,19 +333,34 @@ func createAutoscalerHandler(ctx *web.Context) {
return
}

if err := deployment.CreateAutoscaler(sp, autoscalerInfo); err != nil {
if errors.IsAlreadyExists(err) {
response.Conflict(req.Request, resp.ResponseWriter, fmt.Errorf("Autoscaler Name: %s already existed", autoscalerInfo.Name))
} else if errors.IsConflict(err) {
response.Conflict(req.Request, resp.ResponseWriter, fmt.Errorf("Create autoscaler setting has conflict: %v", err))
} else if errors.IsInvalid(err) {
response.BadRequest(req.Request, resp.ResponseWriter, fmt.Errorf("Create autoscaler setting is invalid: %v", err))
} else {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
if enableAutoscaler {
// Create Autoscaler
if err := deployment.CreateAutoscaler(sp, autoscalerInfo); err != nil {
if errors.IsAlreadyExists(err) {
response.Conflict(req.Request, resp.ResponseWriter, err)
} else if errors.IsConflict(err) {
response.Conflict(req.Request, resp.ResponseWriter, err)
} else if errors.IsInvalid(err) {
response.BadRequest(req.Request, resp.ResponseWriter, err)
} else {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
}
return

}
} else {
// Delete Autoscaler
if err := deployment.DeleteAutoscaler(sp, autoscalerInfo); err != nil {
if errors.IsNotFound(err) {
response.NotFound(req.Request, resp.ResponseWriter, err)
} else if errors.IsForbidden(err) {
response.NotAcceptable(req.Request, resp.ResponseWriter, err)
} else {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
}
return
}
return
}

// find the deployment id by deployment name
deployment, err := backend.FindDeploymentByName(session, autoscalerInfo.ScaleTargetRefName)
if err != nil {
Expand All @@ -353,7 +369,7 @@ func createAutoscalerHandler(ctx *web.Context) {
}

// Update autoscalerInfo
deployment.IsAutoscaler = true
deployment.IsAutoscaler = enableAutoscaler
deployment.AutoscalerInfo = autoscalerInfo
modifier := bson.M{
"$set": deployment,
Expand All @@ -365,5 +381,5 @@ func createAutoscalerHandler(ctx *web.Context) {
response.InternalServerError(req.Request, resp.ResponseWriter, err)
return
}
resp.WriteHeaderAndEntity(http.StatusCreated, deployment)
resp.WriteHeaderAndEntity(http.StatusAccepted, deployment)
}
4 changes: 2 additions & 2 deletions src/server/handler_deployment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -500,14 +500,14 @@ func (suite *DeploymentTestSuite) TestCreateDeploymentWithAutoscaler() {
suite.NoError(err)

autoBodyReader := strings.NewReader(string(autoBodyBytes))
autoHTTPRequest, err := http.NewRequest("POST", "http://localhost:7890/v1/deployments/autoscale", autoBodyReader)
autoHTTPRequest, err := http.NewRequest("PUT", "http://localhost:7890/v1/deployments/autoscale/?enbale=true", autoBodyReader)
suite.NoError(err)

autoHTTPRequest.Header.Add("Content-Type", "application/json")
autoHTTPRequest.Header.Add("Authorization", suite.JWTBearer)
autoHTTPWriter := httptest.NewRecorder()
suite.wc.Dispatch(autoHTTPWriter, autoHTTPRequest)
assertResponseCode(suite.T(), http.StatusCreated, autoHTTPWriter)
assertResponseCode(suite.T(), http.StatusAccepted, autoHTTPWriter)

// load data to check
retDeployment := entity.Deployment{}
Expand Down
2 changes: 1 addition & 1 deletion src/server/route.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ func newDeploymentService(sp *serviceprovider.Container) *restful.WebService {
webService.Route(webService.GET("/").To(handler.RESTfulServiceHandler(sp, listDeploymentHandler)))
webService.Route(webService.GET("/{id}").To(handler.RESTfulServiceHandler(sp, getDeploymentHandler)))
webService.Route(webService.POST("/upload/yaml").Consumes("multipart/form-data").To(handler.RESTfulServiceHandler(sp, uploadDeploymentYAMLHandler)))
webService.Route(webService.POST("/autoscale").To(handler.RESTfulServiceHandler(sp, createAutoscalerHandler)))
webService.Route(webService.PUT("/autoscale").To(handler.RESTfulServiceHandler(sp, updateAutoscalerHandler)))
return webService
}

Expand Down

0 comments on commit 842a85e

Please sign in to comment.