require "mongo" require "forwardable" require "db/mongo/connectors/base" Dir["db/mongo/connectors/helpers/*.rb"].each {|file| require file } Dir["db/mongo/connectors/*.rb"].each {|file| require file } include Mongo class MongoConnector extend Forwardable delegate( [:images, :image, :image_insert, :image_delete, :image_update] => :images_connector, [:stack_templates, :stack_template, :stack_template_insert, :stack_template_delete, :stack_template_update] => :stack_templates_connector, [:stacks, :stack, :stack_insert, :stack_delete, :stack_update, :set_stack_run_list] => :stacks_connector, [:available_images, :add_available_images, :delete_available_images] => :filters_connector, [: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_env_run_list] => :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, :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, [: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, [:save_report, :report, :reports, :set_report_status] => :reports_connector, [:statistic] => :statistics_connector ) def initialize(db, host, port=27017, user=nil, password=nil) @db = MongoClient.new(host, port).db(db) @db.authenticate(user, password) unless user.nil? or password.nil? end private def images_connector @image_connector ||= Connectors::Image.new(@db) end def stack_templates_connector @stack_templates_connector ||= Connectors::StackTemplate.new(@db) end def stacks_connector @stack_connector ||= Connectors::Stack.new(@db) end def filters_connector @filter_connector ||= Connectors::Filter.new(@db) end def projects_connector @projects_connector ||= Connectors::Project.new(@db) end def projects_templates_connector @projects__templates_connector ||= Connectors::ProjectTemplates.new(@db) end def servers_connector @servers_connector ||= Connectors::Server.new(@db) end def users_connector @users_connector ||= Connectors::User.new(@db) end def keys_connector @keys_connector ||= Connectors::Key.new(@db) end def reports_connector @reports_connector ||= Connectors::Report.new(@db) end def statistics_connector @statistics_connector ||= Connectors::Statistic.new(@db) end end