diff --git a/devops-service/app/api2/handlers/stack_template.rb b/devops-service/app/api2/handlers/stack_template.rb index 3d38be7..1626b32 100644 --- a/devops-service/app/api2/handlers/stack_template.rb +++ b/devops-service/app/api2/handlers/stack_template.rb @@ -41,17 +41,13 @@ 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 + envs_with_this_template << "#{project.id}-#{env.identifier}" end end envs_with_this_template diff --git a/devops-service/db/mongo/connectors/project.rb b/devops-service/db/mongo/connectors/project.rb index 4824e10..805a724 100644 --- a/devops-service/db/mongo/connectors/project.rb +++ b/devops-service/db/mongo/connectors/project.rb @@ -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 diff --git a/devops-service/db/mongo/mongo_connector.rb b/devops-service/db/mongo/mongo_connector.rb index ca7ed71..e188e66 100644 --- a/devops-service/db/mongo/mongo_connector.rb +++ b/devops-service/db/mongo/mongo_connector.rb @@ -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