[email protected] wrote:
> From: martyntaylor <[email protected]>
>
> rebase
> ---
> src/app/controllers/pool_controller.rb | 7 +-----
> src/app/models/pool.rb | 3 --
> src/app/models/user.rb | 1 -
> src/app/services/registration_service.rb | 3 +-
> src/db/migrate/20090803141507_create_pools.rb | 1 -
> src/features/pool.feature | 10 ++++----
> src/features/step_definitions/pool_steps.rb | 6 +++-
> src/spec/controllers/users_controller_spec.rb | 2 +-
> src/spec/factories/permission.rb | 6 +++++
> src/spec/factories/pool.rb | 1 -
> .../services/data_service_active_record_spec.rb | 22 +++++++------------
> 11 files changed, 26 insertions(+), 36 deletions(-)
>
> diff --git a/src/app/controllers/pool_controller.rb
> b/src/app/controllers/pool_controller.rb
> index 187da09..baa9431 100644
> --- a/src/app/controllers/pool_controller.rb
> +++ b/src/app/controllers/pool_controller.rb
> @@ -79,11 +79,6 @@ class PoolController < ApplicationController
> def create
> require_privilege(Privilege::POOL_MODIFY)
>
> - #FIXME: owner is set to current user for self-service account creation,
> - # but in the more general case we need a way for the admin to pick
> - # a user
> - params[:pool][:owner_id] = @current_user.id
> -
> #FIXME: This should probably be in a transaction
> @pool = Pool.new(params[:pool])
> # FIXME: do we need any more handling around save failures? What if perm
> @@ -96,7 +91,7 @@ class PoolController < ApplicationController
>
> @pool.zone = Zone.default
> @pool.save!
> - perm = Permission.new(:user => @pool.owner,
> + perm = Permission.new(:user => @current_user,
> :role => Role.find_by_name("Instance Creator and
> User"),
> :permission_object => @pool)
>
I'm not sure this part is really desired here -- an admin will be
creating the pool, but we're giving basic user level permissions here.
Although we need to set self-service permissions on the pool when new
users are added, I don't really think we need to add this at pool
creation time for the admin.
I think we should leave this part out entirely, unless leaving it out
breaks something here.
Scott
> perm.save!
> diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb
> index d186b20..582b440 100644
> --- a/src/app/models/pool.rb
> +++ b/src/app/models/pool.rb
> @@ -22,7 +22,6 @@
> class Pool < ActiveRecord::Base
> include PermissionedObject
> has_many :instances, :dependent => :destroy
> - belongs_to :owner, :class_name => "User", :foreign_key => "owner_id"
> belongs_to :quota
> belongs_to :zone
>
> @@ -31,10 +30,8 @@ class Pool < ActiveRecord::Base
>
>
>
> - validates_presence_of :owner_id
> validates_presence_of :name
> validates_presence_of :zone
> - validates_uniqueness_of :name, :scope => :owner_id
> validates_uniqueness_of :exported_as, :if => :exported_as
>
> has_many :permissions, :as => :permission_object, :dependent => :destroy,
> diff --git a/src/app/models/user.rb b/src/app/models/user.rb
> index fc0cbdc..0281a45 100644
> --- a/src/app/models/user.rb
> +++ b/src/app/models/user.rb
> @@ -23,7 +23,6 @@ class User < ActiveRecord::Base
> acts_as_authentic
>
> has_many :permissions
> - has_many :owned_pools, :class_name => "Pool", :foreign_key => "owner_id"
> has_many :owned_instances, :class_name => "Instance", :foreign_key =>
> "owner_id"
>
> belongs_to :quota
> diff --git a/src/app/services/registration_service.rb
> b/src/app/services/registration_service.rb
> index a9fbfca..140b92e 100644
> --- a/src/app/services/registration_service.rb
> +++ b/src/app/services/registration_service.rb
> @@ -14,8 +14,7 @@ class RegistrationService
> begin
> User.transaction do
> @user.save!
> - @pool = Pool.create!({ :name => @user.login, :owner => @user,
> - :zone => Zone.default})
> + @pool = Pool.create!({ :name => @user.login, :zone => Zone.default})
>
> @quota = Quota.new
> @quota.save!
> diff --git a/src/db/migrate/20090803141507_create_pools.rb
> b/src/db/migrate/20090803141507_create_pools.rb
> index d60687d..e0c1dc7 100644
> --- a/src/db/migrate/20090803141507_create_pools.rb
> +++ b/src/db/migrate/20090803141507_create_pools.rb
> @@ -24,7 +24,6 @@ class CreatePools < ActiveRecord::Migration
> create_table :pools do |t|
> t.string :name, :null => false
> t.string :exported_as
> - t.integer :owner_id, :null => false
> t.integer :quota_id
> t.integer :zone_id, :null => false
> t.integer :lock_version, :default => 0
> diff --git a/src/features/pool.feature b/src/features/pool.feature
> index ee1af53..ae0f10a 100644
> --- a/src/features/pool.feature
> +++ b/src/features/pool.feature
> @@ -21,7 +21,7 @@ Feature: Manage Pools
> And I should have a pool named "mockpool"
>
> Scenario: View Pool's Hardware Profiles
> - Given I own a pool named "mockpool"
> + Given I have Pool Creator permissions on a pool named "mockpool"
> And the Pool has the following Hardware Profiles:
> | name | memory | cpu |storage | architecture |
> | m1-small | 1740 | 2 | 160.0 | i386 |
> @@ -37,7 +37,7 @@ Feature: Manage Pools
> | m1-xlarge | 8192 | 8 | 1690.0 | x86_64 |
>
> Scenario: View Pool's Realms
> - Given I own a pool named "mockpool"
> + Given I have Pool Creator permissions on a pool named "mockpool"
> And the Pool has the following Realms named "Europe, United States"
> And I am on the instances page
> When I follow "mockpool"
> @@ -48,7 +48,7 @@ Feature: Manage Pools
>
> @tag
> Scenario: View Pool's Quota Usage
> - Given I own a pool named "mockpool"
> + Given I have Pool Creator permissions on a pool named "mockpool"
> And the Pool has a quota with following capacities:
> | resource | capacity |
> | maximum_running_instances | 10 |
> @@ -60,5 +60,5 @@ Feature: Manage Pools
> Then I should be on the show pool page
> When I follow "Quota"
> Then I should see the following:
> - | Running Instances | 10 | 8 | 2 |
> - | Total Instances | 15 | 15 | 0 |
> \ No newline at end of file
> + | Running Instances | 10 | 8 |
> + | Total Instances | 15 | 15 |
> \ No newline at end of file
> diff --git a/src/features/step_definitions/pool_steps.rb
> b/src/features/step_definitions/pool_steps.rb
> index 75de2e2..5643f48 100644
> --- a/src/features/step_definitions/pool_steps.rb
> +++ b/src/features/step_definitions/pool_steps.rb
> @@ -3,9 +3,9 @@ Given /^I am an authorised user$/ do
> @user = @admin_permission.user
> end
>
> -Given /^I own a pool named "([^\"]*)"$/ do |name|
> +Given /^I have Pool Creator permissions on a pool named "([^\"]*)"$/ do
> |name|
> @pool = Factory(:pool, :name => name)
> - @user.owned_pools << @pool
> + Factory(:pool_creator_permission, :user => @user, :permission_object =>
> @pool)
> end
>
> Given /^the Pool has the following Hardware Profiles:$/ do |table|
> @@ -65,6 +65,8 @@ Given /^the Pool has a quota with following capacities:$/
> do |table|
> end
>
> @quota = Factory(:quota, quota_hash)
> + @quota.save!
> +
> @pool.quota_id = @quota.id
> @pool.save
> end
> diff --git a/src/spec/controllers/users_controller_spec.rb
> b/src/spec/controllers/users_controller_spec.rb
> index 29c2f41..5add3c7 100644
> --- a/src/spec/controllers/users_controller_spec.rb
> +++ b/src/spec/controllers/users_controller_spec.rb
> @@ -31,7 +31,7 @@ describe UsersController do
> }.should change{ User.count }
> p = Pool.find_by_name("tuser2")
> p.should_not be_nil
> - assigns[:user].login.should == p.owner.login
> +
> p.name.should == "tuser2"
> p.permissions.size.should == 1
> p.permissions.any? {
> diff --git a/src/spec/factories/permission.rb
> b/src/spec/factories/permission.rb
> index 0aad3a2..8b9fd69 100644
> --- a/src/spec/factories/permission.rb
> +++ b/src/spec/factories/permission.rb
> @@ -19,3 +19,9 @@ Factory.define :pool_creator_permission, :parent =>
> :permission do |p|
> p.permission_object { |r| r.association(:mock_provider) }
> p.user { |u| u.association(:pool_creator) }
> end
> +
> +Factory.define :instance_creator_and_user_permission, :parent => :permission
> do |p|
> + p.role { |r| Role.find(:first, :conditions => ['name = ?', 'Instance
> Creator and User']) }
> + p.permission_object { |r| r.association(:pool) }
> + p.user { |u| u.association(:user) }
> +end
> \ No newline at end of file
> diff --git a/src/spec/factories/pool.rb b/src/spec/factories/pool.rb
> index 12a4376..da5525e 100644
> --- a/src/spec/factories/pool.rb
> +++ b/src/spec/factories/pool.rb
> @@ -1,6 +1,5 @@
> Factory.define :pool do |p|
> p.name 'mypool'
> - p.association :owner, :factory => :pool_user
> p.association :zone, :factory => :zone
> end
>
> diff --git a/src/spec/services/data_service_active_record_spec.rb
> b/src/spec/services/data_service_active_record_spec.rb
> index 9842146..b443fa9 100644
> --- a/src/spec/services/data_service_active_record_spec.rb
> +++ b/src/spec/services/data_service_active_record_spec.rb
> @@ -58,8 +58,7 @@ describe DataServiceActiveRecord do
> end
>
> it "should calculate the average, max and min task submission times" do
> - user = Factory :user
> - pool = Factory(:pool, :owner => user)
> + pool = Factory(:pool)
> instance = Factory(:instance, :pool_id => pool.id)
>
> start_time = Time.utc(2010,"jan",1,20,15,1)
> @@ -86,8 +85,7 @@ describe DataServiceActiveRecord do
> end
>
> it "should create data points for the average, max and min task submission
> times between two times at given intervals" do
> - user = Factory :user
> - pool = Factory(:pool, :owner => user)
> + pool = Factory(:pool)
> instance = Factory(:instance, :pool_id => pool.id)
>
> expected_averages = [ 20, 40, 60, 80, 100]
> @@ -164,8 +162,7 @@ describe DataServiceActiveRecord do
> runtime3 = [100, 200, 300, 400, 500]
> runtimes = [runtime1, runtime2, runtime3]
>
> - user = Factory :pool_user
> - pool = Factory(:pool, :owner => user)
> + pool = Factory(:pool)
> cloud_account = Factory :mock_cloud_account
>
> for i in 0..2 do
> @@ -188,8 +185,7 @@ describe DataServiceActiveRecord do
> end
>
> it "should generate the mean max and min instance runtimes of instances
> for a given cloud account or pool" do
> - user = Factory :pool_user
> - pool = Factory(:pool, :owner => user)
> + pool = Factory(:pool)
>
> cloud_account = Factory :mock_cloud_account
>
> @@ -208,8 +204,7 @@ describe DataServiceActiveRecord do
> end
>
> it "should calculate the average time it takes a provider to complete a
> task between two times" do
> - user = Factory :pool_user
> - pool = Factory(:pool, :owner => user)
> + pool = Factory(:pool)
> cloud_account = Factory(:mock_cloud_account)
> instance = Factory(:instance, :pool => pool, :cloud_account =>
> cloud_account)
>
> @@ -246,8 +241,8 @@ describe DataServiceActiveRecord do
> start_time = Time.utc(2010,"jan",1,20,15,1)
> create_time = start_time + 1
> end_time = create_time + 1
> - user = Factory :pool_user
> - pool = Factory(:pool, :owner => user)
> +
> + pool = Factory(:pool)
> cloud_account = Factory :mock_cloud_account
> instance = Factory(:instance, :pool => pool, :cloud_account =>
> cloud_account)
>
> @@ -293,8 +288,7 @@ describe DataServiceActiveRecord do
> failures = [5, 10, 15]
> number_of_instances = 20
>
> - user = Factory :pool_user
> - pool = Factory(:pool, :owner => user)
> + pool = Factory(:pool)
> cloud_account = Factory :mock_cloud_account
> instance = Factory(:instance, :pool => pool, :cloud_account =>
> cloud_account)
>
>
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel