Return-Path: X-Original-To: apmail-deltacloud-dev-archive@www.apache.org Delivered-To: apmail-deltacloud-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id F3253E235 for ; Mon, 10 Dec 2012 10:12:04 +0000 (UTC) Received: (qmail 23311 invoked by uid 500); 10 Dec 2012 10:12:04 -0000 Delivered-To: apmail-deltacloud-dev-archive@deltacloud.apache.org Received: (qmail 23287 invoked by uid 500); 10 Dec 2012 10:12:04 -0000 Mailing-List: contact dev-help@deltacloud.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@deltacloud.apache.org Delivered-To: mailing list dev@deltacloud.apache.org Received: (qmail 23279 invoked by uid 99); 10 Dec 2012 10:12:04 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 10 Dec 2012 10:12:04 +0000 X-ASF-Spam-Status: No, hits=-5.0 required=5.0 tests=RCVD_IN_DNSWL_HI,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of mfojtik@redhat.com designates 209.132.183.28 as permitted sender) Received: from [209.132.183.28] (HELO mx1.redhat.com) (209.132.183.28) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 10 Dec 2012 10:11:56 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id qBAABZCC002758 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 10 Dec 2012 05:11:35 -0500 Received: from boosh.local.com (dhcp-29-219.brq.redhat.com [10.34.29.219]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id qBAABXHj016575 for ; Mon, 10 Dec 2012 05:11:34 -0500 From: mfojtik@redhat.com To: dev@deltacloud.apache.org Subject: [PATCH core 2/2] CIMI: Moved helper methods out of db.rb to separe helper file Date: Mon, 10 Dec 2012 11:11:31 +0100 Message-Id: <1355134291-11129-2-git-send-email-mfojtik@redhat.com> In-Reply-To: <1355134291-11129-1-git-send-email-mfojtik@redhat.com> References: <1355134291-11129-1-git-send-email-mfojtik@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Virus-Checked: Checked by ClamAV on apache.org From: Michal Fojtik Signed-off-by: Michal fojtik --- server/lib/cimi/helpers.rb | 3 +- server/lib/cimi/helpers/database_helper.rb | 46 ++++++++++++++++++++++++ server/lib/cimi/server.rb | 2 ++ server/lib/db.rb | 56 +++--------------------------- 4 files changed, 54 insertions(+), 53 deletions(-) create mode 100644 server/lib/cimi/helpers/database_helper.rb diff --git a/server/lib/cimi/helpers.rb b/server/lib/cimi/helpers.rb index c2f2461..ea71cbf 100644 --- a/server/lib/cimi/helpers.rb +++ b/server/lib/cimi/helpers.rb @@ -26,11 +26,12 @@ end # Declare namespace for CIMI models # -require_relative '../db' require_relative '../deltacloud/drivers' require_relative '../deltacloud/models' require_relative '../deltacloud/helpers/driver_helper' require_relative '../deltacloud/helpers/auth_helper' require_relative '../deltacloud/helpers/deltacloud_helper' require_relative '../deltacloud/helpers/rabbit_helper' + require_relative './helpers/cimi_helper' +require_relative './helpers/database_helper' diff --git a/server/lib/cimi/helpers/database_helper.rb b/server/lib/cimi/helpers/database_helper.rb new file mode 100644 index 0000000..d6aa55b --- /dev/null +++ b/server/lib/cimi/helpers/database_helper.rb @@ -0,0 +1,46 @@ +module Deltacloud + module Helpers + + module Database + + def test_environment? + Deltacloud.test_environment? + end + + def store_attributes_for(model, values={}) + return if test_environment? + return if model.nil? or values.empty? + current_db.entities.first_or_create(:be_kind => model.to_entity, :be_id => model.id).update(values) + end + + def load_attributes_for(model) + return {} if test_environment? + entity = get_entity(model) + entity.nil? ? {} : entity.to_hash + end + + def delete_attributes_for(model) + return if test_environment? + entity = get_entity(model) + !entity.nil? && entity.destroy! + end + + def get_entity(model) + current_db.entities.first(:be_kind => model.to_entity, :be_id => model.id) + end + + def current_provider + Thread.current[:provider] || ENV['API_PROVIDER'] || 'default' + end + + # This method allows to store things into database based on current driver + # and provider. + # + def current_db + Provider.first_or_create(:driver => driver_symbol.to_s, :url => current_provider) + end + + end + end + +end diff --git a/server/lib/cimi/server.rb b/server/lib/cimi/server.rb index b1fc751..02891c5 100644 --- a/server/lib/cimi/server.rb +++ b/server/lib/cimi/server.rb @@ -21,6 +21,8 @@ require 'sinatra/base' require 'sinatra/rabbit' require_relative '../sinatra' +require_relative '../db' + require_relative './helpers' require_relative './collections' diff --git a/server/lib/db.rb b/server/lib/db.rb index ef83462..2a5114d 100644 --- a/server/lib/db.rb +++ b/server/lib/db.rb @@ -1,13 +1,7 @@ module Deltacloud def self.test_environment? - ENV['RACK_ENV'] == 'test' - end - - module Database - def test_environment? - Deltacloud.test_environment? - end + ENV['RACK_ENV'] == 'test' || ENV['DELTACLOUD_NO_DATABASE'] end unless test_environment? @@ -17,59 +11,17 @@ module Deltacloud require_relative './db/machine_template' end - DATABASE_LOCATION = ENV['DATABASE_LOCATION'] || "/var/tmp/deltacloud-mock-#{ENV['USER']}/db.sqlite" + DATABASE_LOCATION = ENV['DATABASE_LOCATION'] || File.join('/', 'var', 'tmp', "deltacloud-mock-#{ENV['USER']}", 'db.sqlite') def self.initialize_database - DataMapper::Logger.new($stdout, :debug) + DataMapper::Logger.new($stdout, :debug) if ENV['API_VERBOSE'] dbdir = File::dirname(DATABASE_LOCATION) - unless File::directory?(dbdir) - FileUtils::mkdir(dbdir) - end + FileUtils::mkdir(dbdir) unless File::directory?(dbdir) DataMapper::setup(:default, "sqlite://#{DATABASE_LOCATION}") DataMapper::finalize DataMapper::auto_upgrade! end - module Helpers - module Database - include Deltacloud::Database - - def store_attributes_for(model, values={}) - return if test_environment? - return if model.nil? or values.empty? - current_db.entities.first_or_create(:be_kind => model.to_entity, :be_id => model.id).update(values) - end - - def load_attributes_for(model) - return {} if test_environment? - entity = get_entity(model) - entity.nil? ? {} : entity.to_hash - end - - def delete_attributes_for(model) - return if test_environment? - entity = get_entity(model) - !entity.nil? && entity.destroy! - end - - def get_entity(model) - current_db.entities.first(:be_kind => model.to_entity, :be_id => model.id) - end - - def current_provider - Thread.current[:provider] || ENV['API_PROVIDER'] || 'default' - end - - # This method allows to store things into database based on current driver - # and provider. - # - def current_db - Provider.first_or_create(:driver => driver_symbol.to_s, :url => current_provider) - end - - end - end - end Deltacloud::initialize_database unless Deltacloud.test_environment? -- 1.8.0.1