You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2012/12/10 11:11:30 UTC

[PATCH core 1/2] CIMI: Be more carefull when removing persistence data about entity (DTACLOUD-395)

From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 server/lib/db.rb | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/server/lib/db.rb b/server/lib/db.rb
index e6fe761..ef83462 100644
--- a/server/lib/db.rb
+++ b/server/lib/db.rb
@@ -48,7 +48,8 @@ module Deltacloud
 
       def delete_attributes_for(model)
         return if test_environment?
-        get_entity(model).destroy
+        entity = get_entity(model)
+        !entity.nil? && entity.destroy!
       end
 
       def get_entity(model)
-- 
1.8.0.1


Re: [PATCH core 2/2] CIMI: Moved helper methods out of db.rb to separe helper file

Posted by Michal Fojtik <mf...@redhat.com>.
On 12/10, David Lutterkort wrote:
> I needed to make a small change:

Yes, sorry for that. I found it when I get home, but you was faster :)

  -- Michal

> 
> On Mon, 2012-12-10 at 11:11 +0100, mfojtik@redhat.com wrote:
> > 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
> 
> Had to qualify Provider as Deltacloud::Database::Provider for this to
> work; pushed as e6c46db6
> 
> David
> 
> 

-- 
Michal Fojtik <mf...@redhat.com>
Deltacloud API, CloudForms

Re: [PATCH core 2/2] CIMI: Moved helper methods out of db.rb to separe helper file

Posted by David Lutterkort <lu...@redhat.com>.
I needed to make a small change:

On Mon, 2012-12-10 at 11:11 +0100, mfojtik@redhat.com wrote:
> 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

Had to qualify Provider as Deltacloud::Database::Provider for this to
work; pushed as e6c46db6

David



[PATCH core 2/2] CIMI: Moved helper methods out of db.rb to separe helper file

Posted by mf...@redhat.com.
From: Michal Fojtik <mf...@redhat.com>


Signed-off-by: Michal fojtik <mf...@redhat.com>
---
 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