diff --git a/devops-service/app/api2/handlers/project.rb b/devops-service/app/api2/handlers/project.rb index aeb034e..570dab8 100644 --- a/devops-service/app/api2/handlers/project.rb +++ b/devops-service/app/api2/handlers/project.rb @@ -62,6 +62,8 @@ module Devops env = parser.add_or_update_deploy_env begin db_env = project.deploy_env(deploy_env) + servers = Devops::Db.connector.servers_by_project_and_deploy_env(id, deploy_env) + raise InvalidRecord.new("Can not update environment '#{deploy_env}', there are #{servers.size} servers on it") unless servers.empty? begin project.deploy_env(env.identifier) raise InvalidRecord.new("Can not change environment '#{deploy_env}' to '#{env.identifier}', environment '#{env.identifier}' already exist") unless deploy_env == env.identifier diff --git a/devops-service/db/mongo/connectors/server.rb b/devops-service/db/mongo/connectors/server.rb index b90a3a0..bfebcc2 100644 --- a/devops-service/db/mongo/connectors/server.rb +++ b/devops-service/db/mongo/connectors/server.rb @@ -41,6 +41,11 @@ module Connectors list(query) end + def servers_by_project_and_deploy_env project, env + query = {project: project, deploy_env: env} + list(query) + end + def server_by_instance_id(id) find_server('_id' => id) end diff --git a/devops-service/db/mongo/mongo_connector.rb b/devops-service/db/mongo/mongo_connector.rb index 71e0bd1..714c927 100644 --- a/devops-service/db/mongo/mongo_connector.rb +++ b/devops-service/db/mongo/mongo_connector.rb @@ -26,7 +26,7 @@ class MongoConnector :project_template_delete] => :projects_templates_connector, [:servers_find, :servers, :stack_servers, :servers_by_names, :server_by_instance_id, :server_by_chef_node_name, :servers_by_key, :server_insert, - :server_delete, :server_update, :server_set_chef_node_name, :stack_servers_delete, :set_server_run_list] => :servers_connector, + :server_delete, :server_update, :server_set_chef_node_name, :stack_servers_delete, :set_server_run_list, :servers_by_project_and_deploy_env] => :servers_connector, [:user_auth, :user, :users, :users_names, :user_insert, :user_delete, :user_update, :create_root_user, :check_user_privileges] => :users_connector, [:keys, :key, :key_insert, :key_delete] => :keys_connector,