func templateUpdate(w http.ResponseWriter, r *http.Request, token auth.Token) error { var paramTemplate iaas.Template err := json.NewDecoder(r.Body).Decode(¶mTemplate) if err != nil { return &errors.HTTP{Code: http.StatusBadRequest, Message: err.Error()} } templateName := r.URL.Query().Get(":template_name") dbTpl, err := iaas.FindTemplate(templateName) if err != nil { if err == mgo.ErrNotFound { return &errors.HTTP{Code: http.StatusNotFound, Message: "template not found"} } return err } allowed := permission.Check(token, permission.PermMachineTemplateUpdate, permission.Context(permission.CtxIaaS, dbTpl.IaaSName), ) if !allowed { return permission.ErrUnauthorized } err = dbTpl.Update(¶mTemplate) if err != nil { return err } w.WriteHeader(http.StatusOK) return nil }
// title: template destroy // path: /iaas/templates/{template_name} // method: DELETE // responses: // 200: OK // 401: Unauthorized // 404: Not found func templateDestroy(w http.ResponseWriter, r *http.Request, token auth.Token) (err error) { r.ParseForm() templateName := r.URL.Query().Get(":template_name") t, err := iaas.FindTemplate(templateName) if err != nil { if err == mgo.ErrNotFound { return &errors.HTTP{Code: http.StatusNotFound, Message: "template not found"} } return err } iaasCtx := permission.Context(permission.CtxIaaS, t.IaaSName) allowed := permission.Check(token, permission.PermMachineTemplateDelete, iaasCtx) if !allowed { return permission.ErrUnauthorized } evt, err := event.New(&event.Opts{ Target: event.Target{Type: event.TargetTypeIaas, Value: t.IaaSName}, Kind: permission.PermMachineTemplateDelete, Owner: token, CustomData: event.FormToCustomData(r.Form), Allowed: event.Allowed(permission.PermMachineReadEvents, iaasCtx), }) if err != nil { return err } defer func() { evt.Done(err) }() return iaas.DestroyTemplate(templateName) }
func templateDestroy(w http.ResponseWriter, r *http.Request, token auth.Token) error { templateName := r.URL.Query().Get(":template_name") t, err := iaas.FindTemplate(templateName) if err != nil { if err == mgo.ErrNotFound { return &errors.HTTP{Code: http.StatusNotFound, Message: "template not found"} } return err } allowed := permission.Check(token, permission.PermMachineTemplateDelete, permission.Context(permission.CtxIaaS, t.IaaSName), ) if !allowed { return permission.ErrUnauthorized } err = iaas.DestroyTemplate(templateName) if err != nil { return err } return nil }
func templateUpdate(w http.ResponseWriter, r *http.Request, token auth.Token) error { var paramTemplate iaas.Template err := json.NewDecoder(r.Body).Decode(¶mTemplate) if err != nil { return &errors.HTTP{Code: http.StatusBadRequest, Message: err.Error()} } templateName := r.URL.Query().Get(":template_name") dbTpl, err := iaas.FindTemplate(templateName) if err != nil { if err == mgo.ErrNotFound { return &errors.HTTP{Code: http.StatusNotFound, Message: "template not found"} } return err } err = dbTpl.Update(¶mTemplate) if err != nil { return err } w.WriteHeader(http.StatusOK) return nil }
// title: template update // path: /iaas/templates/{template_name} // method: PUT // consume: application/x-www-form-urlencoded // responses: // 200: OK // 400: Invalid data // 401: Unauthorized // 404: Not found func templateUpdate(w http.ResponseWriter, r *http.Request, token auth.Token) (err error) { err = r.ParseForm() if err != nil { return &errors.HTTP{Code: http.StatusBadRequest, Message: err.Error()} } var paramTemplate iaas.Template dec := form.NewDecoder(nil) dec.IgnoreUnknownKeys(true) err = dec.DecodeValues(¶mTemplate, r.Form) if err != nil { return &errors.HTTP{Code: http.StatusBadRequest, Message: err.Error()} } templateName := r.URL.Query().Get(":template_name") dbTpl, err := iaas.FindTemplate(templateName) if err != nil { if err == mgo.ErrNotFound { return &errors.HTTP{Code: http.StatusNotFound, Message: "template not found"} } return err } iaasCtx := permission.Context(permission.CtxIaaS, dbTpl.IaaSName) allowed := permission.Check(token, permission.PermMachineTemplateUpdate, iaasCtx) if !allowed { return permission.ErrUnauthorized } evt, err := event.New(&event.Opts{ Target: event.Target{Type: event.TargetTypeIaas, Value: dbTpl.IaaSName}, Kind: permission.PermMachineTemplateUpdate, Owner: token, CustomData: event.FormToCustomData(r.Form), Allowed: event.Allowed(permission.PermMachineReadEvents, iaasCtx), }) if err != nil { return err } defer func() { evt.Done(err) }() return dbTpl.Update(¶mTemplate) }