// Delete function used to implement remove tenant request func Delete(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) { //STANDARD DECLARATIONS START code := http.StatusOK h := http.Header{} output := []byte("") err := error(nil) charset := "utf-8" //STANDARD DECLARATIONS END // Set Content-Type response Header value contentType := r.Header.Get("Accept") h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset)) vars := mux.Vars(r) // Try to open the mongo session session, err := mongo.OpenSession(cfg.MongoDB) defer session.Close() if err != nil { code = http.StatusInternalServerError return code, h, output, err } filter := bson.M{"id": vars["ID"]} // Retrieve Results from database results := []Tenant{} err = mongo.Find(session, cfg.MongoDB.Db, "tenants", filter, "name", &results) if err != nil { code = http.StatusInternalServerError return code, h, output, err } // Check if nothing found if len(results) < 1 { output, _ = respond.MarshalContent(respond.NotFound, contentType, "", " ") code = http.StatusNotFound return code, h, output, err } mongo.Remove(session, cfg.MongoDB.Db, "tenants", filter) if err != nil { code = http.StatusInternalServerError return code, h, output, err } // Create view of the results output, err = createMsgView("Tenant Successfully Deleted", 200) //Render the results into JSON if err != nil { code = http.StatusInternalServerError return code, h, output, err } h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset)) return code, h, output, err }
// Delete function used to implement remove tenant request func Delete(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) { //STANDARD DECLARATIONS START code := http.StatusOK h := http.Header{} output := []byte("") err := error(nil) contentType := "text/xml" charset := "utf-8" //STANDARD DECLARATIONS END // Content Negotiation contentType, err = respond.ParseAcceptHeader(r) h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset)) vars := mux.Vars(r) // if authentication procedure fails then // return unauthorized if authentication.AuthenticateAdmin(r.Header, cfg) == false { output, _ = respond.MarshalContent(respond.UnauthorizedMessage, contentType, "", " ") code = http.StatusUnauthorized //If wrong api key is passed we return UNAUTHORIZED http status return code, h, output, err } // Try to open the mongo session session, err := mongo.OpenSession(cfg.MongoDB) defer session.Close() if err != nil { code = http.StatusInternalServerError return code, h, output, err } filter := bson.M{"id": vars["ID"]} // Retrieve Results from database results := []Tenant{} err = mongo.Find(session, cfg.MongoDB.Db, "tenants", filter, "name", &results) if err != nil { code = http.StatusInternalServerError return code, h, output, err } // Check if nothing found if len(results) < 1 { output, _ = respond.MarshalContent(respond.NotFound, contentType, "", " ") code = http.StatusNotFound return code, h, output, err } mongo.Remove(session, cfg.MongoDB.Db, "tenants", filter) if err != nil { code = http.StatusInternalServerError return code, h, output, err } // Create view of the results output, err = createMsgView("Tenant Successfully Deleted", 200) //Render the results into JSON if err != nil { code = http.StatusInternalServerError return code, h, output, err } h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset)) return code, h, output, err }
// Delete function used to implement remove report request func Delete(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) { //STANDARD DECLARATIONS START code := http.StatusOK h := http.Header{} output := []byte("") err := error(nil) charset := "utf-8" //STANDARD DECLARATIONS END // Set Content-Type response Header value contentType := r.Header.Get("Accept") h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset)) // Grab Tenant DB configuration from context tenantDbConfig := context.Get(r, "tenant_conf").(config.MongoConfig) //Extracting record id from url id := mux.Vars(r)["id"] // Try to open the mongo session session, err := mongo.OpenSession(tenantDbConfig) defer session.Close() if err != nil { code = http.StatusInternalServerError return code, h, output, err } // We search by name and delete the document in db query := bson.M{"id": id} info, err := mongo.Remove(session, tenantDbConfig.Db, reportsColl, query) if err != nil { if err.Error() != "not found" { code = http.StatusInternalServerError return code, h, output, err } //Render the response into XML code = http.StatusNotFound output, err = ReportNotFound(contentType) return code, h, output, err } // info.Removed > 0 means that many documents have been removed // If deletion took place we notify user accordingly. // Else we notify that no tenant matched the specific name if info.Removed > 0 { code = http.StatusOK output, err = respond.CreateResponseMessage("Report was successfully deleted", "200", contentType) } else { code = http.StatusNotFound output, err = ReportNotFound(contentType) } //Render the response into XML if err != nil { code = http.StatusInternalServerError return code, h, output, err } return code, h, output, err }
//Delete metric profile based on id func Delete(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) { //STANDARD DECLARATIONS START code := http.StatusOK h := http.Header{} output := []byte("") err := error(nil) charset := "utf-8" //STANDARD DECLARATIONS END // Set Content-Type response Header value contentType := r.Header.Get("Accept") h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset)) vars := mux.Vars(r) // Grab Tenant DB configuration from context tenantDbConfig := context.Get(r, "tenant_conf").(config.MongoConfig) if err != nil { output, _ = respond.MarshalContent(respond.UnauthorizedMessage, contentType, "", " ") code = http.StatusUnauthorized //If wrong api key is passed we return UNAUTHORIZED http status return code, h, output, err } // Open session to tenant database session, err := mongo.OpenSession(tenantDbConfig) defer mongo.CloseSession(session) if err != nil { code = http.StatusInternalServerError return code, h, output, err } filter := bson.M{"id": vars["ID"]} // Retrieve Results from database results := []MongoInterface{} err = mongo.Find(session, tenantDbConfig.Db, "metric_profiles", filter, "name", &results) if err != nil { code = http.StatusInternalServerError return code, h, output, err } // Check if nothing found if len(results) < 1 { output, _ = respond.MarshalContent(respond.NotFound, contentType, "", " ") code = 404 return code, h, output, err } mongo.Remove(session, tenantDbConfig.Db, "metric_profiles", filter) if err != nil { code = http.StatusInternalServerError return code, h, output, err } // Create view of the results output, err = createMsgView("Metric Profile Successfully Deleted", 200) //Render the results into JSON if err != nil { code = http.StatusInternalServerError return code, h, output, err } h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset)) return code, h, output, err }
// Delete function used to implement remove report request func Delete(r *http.Request, cfg config.Config) (int, http.Header, []byte, error) { //STANDARD DECLARATIONS START code := http.StatusOK h := http.Header{} output := []byte("") err := error(nil) contentType := "text/xml" charset := "utf-8" //STANDARD DECLARATIONS END contentType, err = respond.ParseAcceptHeader(r) h.Set("Content-Type", fmt.Sprintf("%s; charset=%s", contentType, charset)) if err != nil { code = http.StatusNotAcceptable output, _ = respond.MarshalContent(respond.NotAcceptableContentType, contentType, "", " ") return code, h, output, err } tenantDbConfig, err := authentication.AuthenticateTenant(r.Header, cfg) if err != nil { output, _ = respond.MarshalContent(respond.UnauthorizedMessage, contentType, "", " ") code = http.StatusUnauthorized //If wrong api key is passed we return UNAUTHORIZED http status return code, h, output, err } //Extracting record id from url id := mux.Vars(r)["id"] // Try to open the mongo session session, err := mongo.OpenSession(tenantDbConfig) defer session.Close() if err != nil { code = http.StatusInternalServerError return code, h, output, err } // We search by name and delete the document in db query := bson.M{"id": id} info, err := mongo.Remove(session, tenantDbConfig.Db, reportsColl, query) if err != nil { if err.Error() != "not found" { code = http.StatusInternalServerError return code, h, output, err } //Render the response into XML code = http.StatusNotFound output, err = ReportNotFound(contentType) return code, h, output, err } // info.Removed > 0 means that many documents have been removed // If deletion took place we notify user accordingly. // Else we notify that no tenant matched the specific name if info.Removed > 0 { code = http.StatusOK output, err = respond.CreateResponseMessage("Report was successfully deleted", "200", contentType) } else { code = http.StatusNotFound output, err = ReportNotFound(contentType) } //Render the response into XML if err != nil { code = http.StatusInternalServerError return code, h, output, err } return code, h, output, err }