diff --git a/devops-service/db/mongo/models/project.rb b/devops-service/db/mongo/models/project.rb index 267d882..98a010a 100644 --- a/devops-service/db/mongo/models/project.rb +++ b/devops-service/db/mongo/models/project.rb @@ -16,6 +16,9 @@ module Devops define_hook :before_create define_hook :after_create + define_hook :before_delete + define_hook :after_delete + attr_accessor :id, :deploy_envs, :type, :archived, :description types :id => {:type => String, :empty => false}, @@ -145,6 +148,22 @@ module Devops self.type == MULTI_TYPE end + def create + res = {} + res[:before] = self.run_hook :before_create + Devops::Db.connector.project_insert self + res[:after] = self.run_hook :after_create + res + end + + def delete + res = {} + res[:before] = self.run_hook :before_delete + Devops::Db.connector.project_delete self.id + res[:after] = self.run_hook :after_delete + res + end + def self.build_from_bson p p["name"] = p["_id"] Project.new p diff --git a/devops-service/routes/v2.0/handlers/project.rb b/devops-service/routes/v2.0/handlers/project.rb index a122742..c3ae310 100644 --- a/devops-service/routes/v2.0/handlers/project.rb +++ b/devops-service/routes/v2.0/handlers/project.rb @@ -51,9 +51,8 @@ module Devops check_array(body["deploy_envs"], "Parameter 'deploy_envs' must be a not empty array of objects", Hash) p = Devops::Model::Project.new(body) halt_response("Project '#{p.id}' already exist") if settings.mongo.is_project_exists?(p) - puts "USER: #{request.env['REMOTE_USER']}" p.add_authorized_user [request.env['REMOTE_USER']] - settings.mongo.project_insert p + p.create roles_res = "" if p.multi? logger.info "Project '#{p.id}' with type 'multi' created" @@ -133,11 +132,12 @@ module Devops deploy_env = unless body.nil? check_string(body["deploy_env"], "Parameter 'deploy_env' should be a not empty string", true) end + project = settings.mongo.project(params[:project]) info = if deploy_env.nil? + project.delete settings.mongo.project_delete(params[:project]) "Project '#{params[:project]}' is deleted" else - project = settings.mongo.project(params[:project]) project.remove_env deploy_env settings.mongo.project_update project "Project '#{params[:project]}'. Deploy environment '#{deploy_env}' has been deleted"