From: Jozef Zigmund jzigmund@redhat.com
--- src/app/models/instance.rb | 6 ++++++ src/app/models/pool.rb | 1 + .../migrate/20110413093434_add_enabled_to_pool.rb | 19 +++++++++++++++++++ src/db/seeds.rb | 2 +- src/spec/controllers/pools_controller_spec.rb | 3 ++- src/spec/factories/pool.rb | 1 + src/spec/models/instance_spec.rb | 6 ++++++ 7 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 src/db/migrate/20110413093434_add_enabled_to_pool.rb
diff --git a/src/app/models/instance.rb b/src/app/models/instance.rb index 1841ecc..545afb4 100644 --- a/src/app/models/instance.rb +++ b/src/app/models/instance.rb @@ -104,6 +104,8 @@ class Instance < ActiveRecord::Base validates_uniqueness_of :name, :scope => :pool_id validates_length_of :name, :maximum => 1024
+ before_save :check_enabled_pool + STATE_NEW = "new" STATE_PENDING = "pending" STATE_RUNNING = "running" @@ -128,6 +130,10 @@ class Instance < ActiveRecord::Base end end
+ def check_enabled_pool + pool.enabled == true ? return : errors.add(:pool, "You don't have enabled pool for this instance") + end + def object_list super + [pool, deployment] end diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb index c158403..234904e 100644 --- a/src/app/models/pool.rb +++ b/src/app/models/pool.rb @@ -50,6 +50,7 @@ class Pool < ActiveRecord::Base
validates_presence_of :name validates_presence_of :pool_family + validates_inclusion_of :enabled, :in => [true, false] validates_uniqueness_of :name validates_uniqueness_of :exported_as, :if => :exported_as validates_length_of :name, :maximum => 255 diff --git a/src/db/migrate/20110413093434_add_enabled_to_pool.rb b/src/db/migrate/20110413093434_add_enabled_to_pool.rb new file mode 100644 index 0000000..a5c8948 --- /dev/null +++ b/src/db/migrate/20110413093434_add_enabled_to_pool.rb @@ -0,0 +1,19 @@ +class AddEnabledToPool < ActiveRecord::Migration + def self.up + add_column :pools, :enabled, :boolean, :default => false + set_enabled + end + + def self.down + remove_column :pools, :enabled + end + + def self.set_enabled + unless Pool.all.empty? + Pool.all.each do |pool| + pool.enabled = pool.name == 'default_pool' ? true : false + pool.save! + end + end + end +end diff --git a/src/db/seeds.rb b/src/db/seeds.rb index 69be3f4..a42517b 100644 --- a/src/db/seeds.rb +++ b/src/db/seeds.rb @@ -2,7 +2,7 @@ PoolFamily.create!(:name => "default", :description => "default pool family")
# Default Pool -Pool.create!(:name => "default_pool", :quota => Quota.create, :pool_family => PoolFamily.find_by_name('default')) +Pool.create!(:name => "default_pool", :quota => Quota.create, :pool_family => PoolFamily.find_by_name('default'), :enabled => true)
# Create default roles diff --git a/src/spec/controllers/pools_controller_spec.rb b/src/spec/controllers/pools_controller_spec.rb index ae84666..9c730c3 100644 --- a/src/spec/controllers/pools_controller_spec.rb +++ b/src/spec/controllers/pools_controller_spec.rb @@ -25,7 +25,8 @@ describe Resources::PoolsController do lambda do post :create, :pool => { :name => 'foopool', - :pool_family_id => PoolFamily.find_by_name('default').id + :pool_family_id => PoolFamily.find_by_name('default').id, + :enabled => true } end.should change(Pool, :count).by(1) id = Pool.find(:first, :conditions => ['name = ?', 'foopool']).id diff --git a/src/spec/factories/pool.rb b/src/spec/factories/pool.rb index 3b20f96..918335b 100644 --- a/src/spec/factories/pool.rb +++ b/src/spec/factories/pool.rb @@ -2,6 +2,7 @@ Factory.define :pool do |p| p.sequence(:name) { |n| "mypool#{n}" } p.pool_family { |p| PoolFamily.find_by_name('default') } p.association :quota + p.enabled true end
Factory.define :tpool, :parent => :pool do |p| diff --git a/src/spec/models/instance_spec.rb b/src/spec/models/instance_spec.rb index 8d279de..409342c 100644 --- a/src/spec/models/instance_spec.rb +++ b/src/spec/models/instance_spec.rb @@ -8,6 +8,12 @@ describe Instance do @actions = ['start', 'stop'] end
+ it "should not save when pool is not enabled" do + @instance.pool.enabled = false + @instance.save + @instance.errors[:pool].should == "You don't have enabled pool for this instance" + end + it "should require pool to be set" do @instance.pool_id = nil @instance.should_not be_valid