As an SA I want to enable the pool so that it can be used for a deployment.
This feature includes 2 subtasks: - #1109 - Add switch on pool model for enable/disable pool - #1110 - Update UI to reflect enabled/disabled pools
From: Jozef Zigmund jzigmund@redhat.com
--- src/app/models/pool.rb | 1 + src/app/views/resources/pools/_list.haml | 2 ++ src/app/views/resources/pools/edit.haml | 3 +++ src/app/views/resources/pools/new.haml | 5 ++++- .../migrate/20110413093434_add_enabled_to_pool.rb | 19 +++++++++++++++++++ src/db/seeds.rb | 2 +- 6 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 src/db/migrate/20110413093434_add_enabled_to_pool.rb
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb index a228a14..b3da2a7 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/app/views/resources/pools/_list.haml b/src/app/views/resources/pools/_list.haml index 1e7b3d7..c8083b7 100644 --- a/src/app/views/resources/pools/_list.haml +++ b/src/app/views/resources/pools/_list.haml @@ -21,6 +21,8 @@ ='%' %td = pool.pool_family.name + %td + = pool.enabled
:javascript $(document).ready(function () { diff --git a/src/app/views/resources/pools/edit.haml b/src/app/views/resources/pools/edit.haml index cc00233..d4c511f 100644 --- a/src/app/views/resources/pools/edit.haml +++ b/src/app/views/resources/pools/edit.haml @@ -17,6 +17,9 @@ %button.linkbutton.nospace{ :type => 'button', :onclick => "set_unlimited_quota("quota_instances");" }<> = t('provider_accounts.form.unlimited_quota') ) + %fieldset + = form.label :enabled, "Enabled:",{ :class => "grid_2 alpha" } + = form.check_box :enabled %fieldset.clear
= form.submit "Save" diff --git a/src/app/views/resources/pools/new.haml b/src/app/views/resources/pools/new.haml index dde52c9..5c48c9e 100644 --- a/src/app/views/resources/pools/new.haml +++ b/src/app/views/resources/pools/new.haml @@ -8,12 +8,15 @@ = form.label :pool_family_id, "Pool Family:", :class => "grid_2 alpha" = form.collection_select :pool_family_id, PoolFamily.all, :id, :name %fieldset - = label_tag "Quota" + = label_tag "Quota:" = text_field :quota, :maximum_running_instances, :title => t('provider_accounts.form.quota_instances'), :value => @quota.maximum_running_instances || "unlimited", :id => "quota_instances", :class => "grid_3 omega" ( %button.linkbutton.nospace{ :type => 'button', :onclick => "set_unlimited_quota("quota_instances");" }<> = t('provider_accounts.form.unlimited_quota') ) + %fieldset + = form.label :enabled, "Enabled:",{ :class => "grid_2 alpha" } + = form.check_box :enabled %fieldset.clear
= form.submit "Save" 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
On 04/19/2011 08:29 AM, jzigmund@redhat.com wrote:
From: Jozef Zigmundjzigmund@redhat.com
src/app/models/pool.rb | 1 + src/app/views/resources/pools/_list.haml | 2 ++ src/app/views/resources/pools/edit.haml | 3 +++ src/app/views/resources/pools/new.haml | 5 ++++- .../migrate/20110413093434_add_enabled_to_pool.rb | 19 +++++++++++++++++++ src/db/seeds.rb | 2 +- 6 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 src/db/migrate/20110413093434_add_enabled_to_pool.rb
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb index a228a14..b3da2a7 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/app/views/resources/pools/_list.haml b/src/app/views/resources/pools/_list.haml index 1e7b3d7..c8083b7 100644 --- a/src/app/views/resources/pools/_list.haml +++ b/src/app/views/resources/pools/_list.haml @@ -21,6 +21,8 @@ ='%' %td = pool.pool_family.name
%td
= pool.enabled
:javascript $(document).ready(function () {
diff --git a/src/app/views/resources/pools/edit.haml b/src/app/views/resources/pools/edit.haml index cc00233..d4c511f 100644 --- a/src/app/views/resources/pools/edit.haml +++ b/src/app/views/resources/pools/edit.haml @@ -17,6 +17,9 @@ %button.linkbutton.nospace{ :type => 'button', :onclick => "set_unlimited_quota("quota_instances");" }<> = t('provider_accounts.form.unlimited_quota') )
%fieldset
= form.label :enabled, "Enabled:",{ :class => "grid_2 alpha" }
= form.check_box :enabled %fieldset.clear
= form.submit "Save"
diff --git a/src/app/views/resources/pools/new.haml b/src/app/views/resources/pools/new.haml index dde52c9..5c48c9e 100644 --- a/src/app/views/resources/pools/new.haml +++ b/src/app/views/resources/pools/new.haml @@ -8,12 +8,15 @@ = form.label :pool_family_id, "Pool Family:", :class => "grid_2 alpha" = form.collection_select :pool_family_id, PoolFamily.all, :id, :name %fieldset
- = label_tag "Quota"
= label_tag "Quota:" = text_field :quota, :maximum_running_instances, :title => t('provider_accounts.form.quota_instances'), :value => @quota.maximum_running_instances || "unlimited", :id => "quota_instances", :class => "grid_3 omega" ( %button.linkbutton.nospace{ :type => 'button', :onclick => "set_unlimited_quota("quota_instances");" }<> = t('provider_accounts.form.unlimited_quota') )
%fieldset
= form.label :enabled, "Enabled:",{ :class => "grid_2 alpha" }
= form.check_box :enabled %fieldset.clear
= form.submit "Save"
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
I think for the migration you should just enable all of them. We should avoid adding any additional dependencies on the current name of the default pool, since it could be changed at any time.
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
From: Jozef Zigmund jzigmund@redhat.com
--- .../controllers/resources/instances_controller.rb | 3 ++- src/app/controllers/resources/pools_controller.rb | 3 ++- src/spec/controllers/instance_controller_spec.rb | 14 ++++++++++++++ src/spec/controllers/pools_controller_spec.rb | 3 ++- src/spec/factories/pool.rb | 1 + 5 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/src/app/controllers/resources/instances_controller.rb b/src/app/controllers/resources/instances_controller.rb index 75d6f96..efa9559 100644 --- a/src/app/controllers/resources/instances_controller.rb +++ b/src/app/controllers/resources/instances_controller.rb @@ -53,6 +53,7 @@ class Resources::InstancesController < ApplicationController require_privilege(Privilege::CREATE, Instance, Pool.find(@instance.pool_id)) free_quota = Quota.can_start_instance?(@instance, nil) + raise "Pool is not enabled" unless @instance.pool and @instance.pool.enabled @instance.transaction do @instance.save! # set owner permissions: @@ -190,7 +191,7 @@ class Resources::InstancesController < ApplicationController end
def init_new_instance_attrs - @pools = Pool.list_for_user(@current_user, Privilege::CREATE, :target_type => Instance) + @pools = Pool.list_for_user(@current_user, Privilege::CREATE, {:target_type => Instance,:conditions=>{ :enabled => true}}) @realms = FrontendRealm.all @hardware_profiles = HardwareProfile.all( :include => :architecture, diff --git a/src/app/controllers/resources/pools_controller.rb b/src/app/controllers/resources/pools_controller.rb index e557e91..af62592 100644 --- a/src/app/controllers/resources/pools_controller.rb +++ b/src/app/controllers/resources/pools_controller.rb @@ -118,7 +118,8 @@ class Resources::PoolsController < ApplicationController { :name => "Pool name", :sort_attr => :name }, { :name => "Quota (Instances)", :sort_attr => "quotas.total_instances"}, { :name => "% Quota used", :sortable => false }, - { :name => "Pool Family", :sort_attr => "pool_families.name" } + { :name => "Pool Family", :sort_attr => "pool_families.name" }, + { :name => "Enabled", :sort_attr => :enabled } ] end
diff --git a/src/spec/controllers/instance_controller_spec.rb b/src/spec/controllers/instance_controller_spec.rb index c2cfa64..ffed76d 100644 --- a/src/spec/controllers/instance_controller_spec.rb +++ b/src/spec/controllers/instance_controller_spec.rb @@ -66,4 +66,18 @@ describe Resources::InstancesController do {:name => 'mockinstance'}]).size.should == 0
end + + it "should not create instance in disabled pool" do + #instance = Factory.build(:new_instance) + #instance.pool.enabled = false + UserSession.create(@admin) + pool = Factory(:pool, :enabled => false) + template = Factory(:template) + hwp = Factory(:mock_hwp1) + post :create, :instance => { :name => 'mockinstance', + :pool_id => pool.id, + :template_id => template.id, + :hardware_profile_id => hwp.id } + response.flash[:warning].should == "Failed to launch instance: Pool is not enabled" + end end 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|
On 04/19/2011 02:29 PM, jzigmund@redhat.com wrote:
As an SA I want to enable the pool so that it can be used for a deployment.
This feature includes 2 subtasks:
- #1109 - Add switch on pool model for enable/disable pool
- #1110 - Update UI to reflect enabled/disabled pools
aeolus-devel mailing list aeolus-devel@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/aeolus-devel
Hey Jozef,
ACK to both patches.
I do agree with Scott that we should just set all polls as "enabled" in the migration, however. Please fix that before pushing.
Thanks, Thomas
aeolus-devel@lists.fedorahosted.org