#716: new db query

This commit is contained in:
amartynov 2015-09-24 15:37:11 +03:00
parent 762572553c
commit df07455d40
3 changed files with 11 additions and 8 deletions

View File

@ -41,19 +41,15 @@ module Devops
private
#TODO: projects and env should be returned from mongo
def envs_using_stack_template(id)
projects = Devops::Db.connector.projects_all
projects = Devops::Db.connector.projects_and_deploy_envs_by_field('stack_template', id)
envs_with_this_template = []
projects.each do |project|
project.deploy_envs.each do |env|
next unless env.respond_to?(:stack_template)
if env.stack_template == id
envs_with_this_template << "#{project.id}-#{env.identifier}"
end
end
end
envs_with_this_template
end

View File

@ -97,6 +97,13 @@ module Connectors
project
end
def projects_and_deploy_envs_by_field field, value
q = {}
q[field] = value
# {find all projects with deploy_envs with field=value}, {return deploy_envs with field=value}
list({'deploy_envs' => {'$elemMatch' => q}}, {'deploy_envs' => {'$elemMatch' => q}})
end
def set_project_deploy_env_field(project_id, env, field, value)
@collection.update({"_id" => project_id, "deploy_envs.identifier" => env}, {"$set" => {"deploy_envs.$.#{field}" => value}})
end

View File

@ -22,7 +22,7 @@ class MongoConnector
[:project, :projects_all, :projects, :project_names_with_envs,
:projects_by_image, :projects_by_user, :project_insert, :project_update,
:project_delete, :is_project_exists?, :check_project_auth, :set_project_run_list, :set_project_deploy_env_field, :set_project_env_run_list, :add_deploy_env_to_project, :remove_deploy_env_from_project, :project_update_field,
:archive_project, :unarchive_project] => :projects_connector,
:archive_project, :unarchive_project, :projects_and_deploy_envs_by_field] => :projects_connector,
[:project_templates, :project_template_insert, :project_template_update,
:project_template_delete] => :projects_templates_connector,
[:servers_find, :servers, :stack_servers, :servers_by_names, :server_by_instance_id,
@ -67,7 +67,7 @@ class MongoConnector
end
def projects_templates_connector
@projects__templates_connector ||= Connectors::ProjectTemplates.new(@db)
@projects_templates_connector ||= Connectors::ProjectTemplates.new(@db)
end
def servers_connector