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