From: Jozef Zigmund <jzigmund(a)redhat.com>
---
.../admin/provider_accounts_controller.rb | 4 +-
.../controllers/provider_accounts_controller.rb | 6 ++--
src/app/models/cloud_account_observer.rb | 9 --------
src/app/models/instance_observer.rb | 6 ++--
src/app/models/privilege.rb | 8 +++---
src/app/models/provider_account_observer.rb | 9 ++++++++
src/config/environment.rb | 2 +-
src/db/development_structure.sql | 21 ++++++++++--------
...737_rename_cloud_accout_id_for_instance_keys.rb | 9 --------
src/features/instance.feature | 2 +-
src/features/provider.feature | 10 ++++----
.../step_definitions/provider_account_steps.rb | 4 +-
src/spec/models/cloud_account_observer_spec.rb | 22 --------------------
src/spec/models/provider_account_observer_spec.rb | 22 ++++++++++++++++++++
14 files changed, 64 insertions(+), 70 deletions(-)
delete mode 100644 src/app/models/cloud_account_observer.rb
create mode 100644 src/app/models/provider_account_observer.rb
delete mode 100644
src/db/migrate/20110125122737_rename_cloud_accout_id_for_instance_keys.rb
delete mode 100644 src/spec/models/cloud_account_observer_spec.rb
create mode 100644 src/spec/models/provider_account_observer_spec.rb
diff --git a/src/app/controllers/admin/provider_accounts_controller.rb
b/src/app/controllers/admin/provider_accounts_controller.rb
index 44d3fc6..d01c20e 100644
--- a/src/app/controllers/admin/provider_accounts_controller.rb
+++ b/src/app/controllers/admin/provider_accounts_controller.rb
@@ -8,7 +8,7 @@ class Admin::ProviderAccountsController < ApplicationController
if @search_term.blank?
load_accounts
else
- search = CloudAccount.search do
+ search = ProviderAccount.search do
keywords(params[:q])
end
@accounts = search.results
@@ -103,7 +103,7 @@ class Admin::ProviderAccountsController < ApplicationController
limit = params[:quota][:maximum_running_instances] if params[:quota]
@provider_account.quota.set_maximum_running_instances(limit)
if @provider_account.update_attributes(params[:provider_account])
- flash[:notice] = "Cloud Account updated!"
+ flash[:notice] = "Provider Account updated!"
redirect_to admin_provider_account_path(@provider_account)
else
render :action => :edit
diff --git a/src/app/controllers/provider_accounts_controller.rb
b/src/app/controllers/provider_accounts_controller.rb
index 99ca85d..962bca7 100644
--- a/src/app/controllers/provider_accounts_controller.rb
+++ b/src/app/controllers/provider_accounts_controller.rb
@@ -31,14 +31,14 @@ class ProviderAccountsController < ApplicationController
def index
@provider = Provider.find(params[:provider_id])
- require_privilege(Privilege::VIEW, CloudAccount, @provider)
+ require_privilege(Privilege::VIEW, ProviderAccount, @provider)
end
def new
@provider = Provider.find(params[:provider_id])
@provider_account = ProviderAccount.new
@quota = Quota.new
- require_privilege(Privilege::CREATE, CloudAccount, @provider)
+ require_privilege(Privilege::CREATE, ProviderAccount, @provider)
end
def create
@@ -85,7 +85,7 @@ class ProviderAccountsController < ApplicationController
def update_accounts
@provider = Provider.find(params[:provider][:id])
- require_privilege(Privilege::MODIFY, CloudAccount, @provider)
+ require_privilege(Privilege::MODIFY, ProviderAccount, @provider)
@providers = Provider.list_for_user(@current_user, Privilege::VIEW)
success = true
diff --git a/src/app/models/cloud_account_observer.rb
b/src/app/models/cloud_account_observer.rb
deleted file mode 100644
index a0826ea..0000000
--- a/src/app/models/cloud_account_observer.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class CloudAccountObserver < ActiveRecord::Observer
- def after_create(account)
- if key = account.generate_auth_key
- account.update_attribute(:instance_key, InstanceKey.create!(:pem => key.pem,
:name => key.id, :instance_key_owner => account))
- end
- end
-end
-
-CloudAccountObserver.instance
diff --git a/src/app/models/instance_observer.rb b/src/app/models/instance_observer.rb
index 157ac39..e14e8d2 100644
--- a/src/app/models/instance_observer.rb
+++ b/src/app/models/instance_observer.rb
@@ -36,9 +36,9 @@ class InstanceObserver < ActiveRecord::Observer
hwp = an_instance.hardware_profile
pool = an_instance.pool
user = an_instance.owner
- cloud_account = an_instance.provider_account
+ provider_account = an_instance.provider_account
- [cloud_account, pool, user].each do |parent|
+ [provider_account, pool, user].each do |parent|
if parent
quota = parent.quota
if quota
@@ -65,7 +65,7 @@ class InstanceObserver < ActiveRecord::Observer
# we try to generate key only when instance is running
# and instance_key is not generated yet
return if instance.state != Instance::STATE_RUNNING or instance.instance_key
- if key = instance.cloud_account.generate_auth_key
+ if key = instance.provider_account.generate_auth_key
instance.instance_key = InstanceKey.create!(:pem => key.pem, :name => key.id,
:instance_key_owner => instance)
end
end
diff --git a/src/app/models/privilege.rb b/src/app/models/privilege.rb
index f7a61ef..1ef514c 100644
--- a/src/app/models/privilege.rb
+++ b/src/app/models/privilege.rb
@@ -33,7 +33,7 @@ class Privilege < ActiveRecord::Base
# Deployable: choose this deployable to launch
# Instance: may perform actions on this instance
# Realm: may map this realm
- # CloudAccount: May add this account to PoolFamily
+ # ProviderAccount: May add this account to PoolFamily
ACTIONS = [ CREATE, MODIFY, USE, VIEW,
@@ -47,7 +47,7 @@ class Privilege < ActiveRecord::Base
HardwareProfile => ACTIONS - [USE, VIEW],
Realm => ACTIONS - [VIEW],
Provider => ACTIONS - [USE],
- CloudAccount => ACTIONS,
+ ProviderAccount => ACTIONS,
User => [ CREATE, MODIFY, VIEW] }
belongs_to :role
@@ -99,7 +99,7 @@ class Privilege < ActiveRecord::Base
# view_perms Can view permissions
# set_perms Can set permissions (or can set instance permissions on this pool)
#
- # Quota The Pool/CloudAccount/PoolFamily/User assigned the quota
+ # Quota The Pool/ProviderAccount/PoolFamily/User assigned the quota
# view Can view quota on this obj
# modify Can edit quota on this obj
#
@@ -123,7 +123,7 @@ class Privilege < ActiveRecord::Base
# view_perms Can view permissions
# set_perms Can set permissions
#
- # CloudAccount This CloudAccount
+ # ProviderAccount This ProviderAccount
# view Can view
# use Can map to PoolFamily
# modify Can modify
diff --git a/src/app/models/provider_account_observer.rb
b/src/app/models/provider_account_observer.rb
new file mode 100644
index 0000000..ddf19c6
--- /dev/null
+++ b/src/app/models/provider_account_observer.rb
@@ -0,0 +1,9 @@
+class ProviderAccountObserver < ActiveRecord::Observer
+ def after_create(account)
+ if key = account.generate_auth_key
+ account.update_attribute(:instance_key, InstanceKey.create!(:pem => key.pem,
:name => key.id, :instance_key_owner => account))
+ end
+ end
+end
+
+ProviderAccountObserver.instance
diff --git a/src/config/environment.rb b/src/config/environment.rb
index a897feb..986cfe4 100644
--- a/src/config/environment.rb
+++ b/src/config/environment.rb
@@ -57,7 +57,7 @@ Rails::Initializer.run do |config|
config.middleware.swap Rack::MethodOverride, 'Rack::RestfulSubmit'
- config.active_record.observers = :instance_observer, :task_observer,
:cloud_account_observer
+ config.active_record.observers = :instance_observer, :task_observer,
:provider_account_observer
# Only load the plugins named here, in the order given. By default, all plugins
# in vendor/plugins are loaded in alphabetical order.
# :all can be used as a placeholder for all plugins not explicitly named
diff --git a/src/db/development_structure.sql b/src/db/development_structure.sql
index 5f9b7d0..93ab70b 100644
--- a/src/db/development_structure.sql
+++ b/src/db/development_structure.sql
@@ -1,22 +1,21 @@
CREATE TABLE "base_permission_objects" ("id" INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL, "name" varchar(255) NOT NULL, "created_at"
datetime, "updated_at" datetime);
-CREATE TABLE "cloud_accounts_pool_families" ("cloud_account_id"
integer NOT NULL, "pool_family_id" integer NOT NULL);
CREATE TABLE "deployables" ("id" INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL, "name" varchar(255), "created_at" datetime,
"updated_at" datetime);
CREATE TABLE "hardware_profile_map" ("aggregator_hardware_profile_id"
integer, "provider_hardware_profile_id" integer);
CREATE TABLE "hardware_profile_properties" ("id" INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL, "name" varchar(255) NOT NULL, "kind"
varchar(255) NOT NULL, "unit" varchar(255) NOT NULL, "value"
varchar(255) NOT NULL, "range_first" varchar(255), "range_last"
varchar(255), "lock_version" integer DEFAULT 0, "created_at" datetime,
"updated_at" datetime);
-CREATE TABLE "hardware_profiles" ("id" INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL, "external_key" varchar(255) NOT NULL, "name"
varchar(1024) NOT NULL, "memory_id" integer, "storage_id" integer,
"cpu_id" integer, "architecture_id" integer, "provider_id"
integer, "lock_version" integer DEFAULT 0, "created_at" datetime,
"updated_at" datetime);
+CREATE TABLE "hardware_profiles" ("id" INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL, "external_key" varchar(255), "name"
varchar(1024) NOT NULL, "memory_id" integer, "storage_id" integer,
"cpu_id" integer, "architecture_id" integer, "provider_id"
integer, "lock_version" integer DEFAULT 0, "created_at" datetime,
"updated_at" datetime);
CREATE TABLE "images" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT
NULL, "uuid" varchar(255), "name" varchar(255) NOT NULL,
"build_id" varchar(255), "uri" varchar(255), "status"
varchar(255), "target" varchar(255), "template_id" integer,
"created_at" datetime, "updated_at" datetime);
CREATE TABLE "instance_events" ("id" INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL, "instance_id" integer NOT NULL, "event_type"
varchar(255) NOT NULL, "event_time" datetime, "status" varchar(255),
"message" varchar(255), "created_at" datetime, "updated_at"
datetime);
CREATE TABLE "instance_hwps" ("id" INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL, "memory" varchar(255), "cpu" varchar(255),
"architecture" varchar(255), "storage" varchar(255),
"lock_version" integer DEFAULT 0);
-CREATE TABLE "instance_keys" ("id" INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL, "provider_account_id" integer NOT NULL, "name" varchar(255)
NOT NULL, "pem" text, "created_at" datetime, "updated_at"
datetime);
-CREATE TABLE "instances" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT
NULL, "external_key" varchar(255), "name" varchar(1024) NOT NULL,
"hardware_profile_id" integer NOT NULL, "template_id" integer NOT
NULL, "realm_id" integer, "owner_id" integer, "pool_id"
integer NOT NULL, "provider_account_id" integer, "instance_hwp_id"
integer, "public_addresses" varchar(255), "private_addresses"
varchar(255), "state" varchar(255), "condor_job_id" varchar(255),
"last_error" text(255), "instance_key_id" integer,
"lock_version" integer DEFAULT 0, "acc_pending_time" integer DEFAULT
0, "acc_running_time" integer DEFAULT 0, "acc_shutting_down_time"
integer DEFAULT 0, "acc_stopped_time" integer DEFAULT 0,
"time_last_pending" datetime, "time_last_running" datetime,
"time_last_shutting_down" datetime, "time_last_stopped" datetime,
"created_at" datetime, "updated_at" datetime);
+CREATE TABLE "instance_keys" ("id" INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL, "instance_key_owner_id" integer NOT NULL,
"instance_key_owner_type" varchar(255) NOT NULL, "name" varchar(255)
NOT NULL, "pem" text, "created_at" datetime, "updated_at"
datetime);
+CREATE TABLE "instances" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT
NULL, "external_key" varchar(255), "name" varchar(1024) NOT NULL,
"hardware_profile_id" integer NOT NULL, "template_id" integer NOT
NULL, "realm_id" integer, "owner_id" integer, "pool_id"
integer NOT NULL, "provider_account_id" integer, "instance_hwp_id"
integer, "public_addresses" varchar(255), "private_addresses"
varchar(255), "state" varchar(255), "condor_job_id" varchar(255),
"last_error" text(255), "lock_version" integer DEFAULT 0,
"acc_pending_time" integer DEFAULT 0, "acc_running_time" integer
DEFAULT 0, "acc_shutting_down_time" integer DEFAULT 0,
"acc_stopped_time" integer DEFAULT 0, "time_last_pending" datetime,
"time_last_running" datetime, "time_last_shutting_down" datetime,
"time_last_stopped" datetime, "created_at" datetime,
"updated_at" datetime);
CREATE TABLE "metadata_objects" ("id" INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL, "key" varchar(255) NOT NULL, "value"
varchar(255) NOT NULL, "object_type" varchar(255), "lock_version"
integer DEFAULT 0, "created_at" datetime, "updated_at" datetime);
CREATE TABLE "permissions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL, "role_id" integer NOT NULL, "user_id" integer NOT NULL,
"permission_object_id" integer, "permission_object_type" varchar(255),
"lock_version" integer DEFAULT 0, "created_at" datetime,
"updated_at" datetime);
CREATE TABLE "pool_families" ("id" INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL, "name" varchar(255) NOT NULL, "description" varchar(255),
"lock_version" integer DEFAULT 0, "created_at" datetime,
"updated_at" datetime);
+CREATE TABLE "pool_families_provider_accounts" ("provider_account_id"
integer NOT NULL, "pool_family_id" integer NOT NULL);
CREATE TABLE "pools" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT
NULL, "name" varchar(255) NOT NULL, "exported_as" varchar(255),
"quota_id" integer, "pool_family_id" integer NOT NULL,
"lock_version" integer DEFAULT 0, "created_at" datetime,
"updated_at" datetime);
-CREATE TABLE "privileges" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT
NULL, "name" varchar(255) NOT NULL, "lock_version" integer DEFAULT 0,
"created_at" datetime, "updated_at" datetime);
-CREATE TABLE "privileges_roles" ("privilege_id" integer NOT NULL,
"role_id" integer NOT NULL);
+CREATE TABLE "privileges" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT
NULL, "role_id" integer NOT NULL, "target_type" varchar(255) NOT NULL,
"action" varchar(255) NOT NULL, "lock_version" integer DEFAULT 0,
"created_at" datetime, "updated_at" datetime);
CREATE TABLE "property_enum_entries" ("id" INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL, "hardware_profile_property_id" integer NOT NULL,
"value" varchar(255) NOT NULL, "lock_version" integer DEFAULT 0,
"created_at" datetime, "updated_at" datetime);
-CREATE TABLE "provider_accounts" ("id" INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL, "label" varchar(255) NOT NULL, "username"
varchar(255) NOT NULL, "password" varchar(255) NOT NULL, "provider_id"
integer NOT NULL, "quota_id" integer, "lock_version" integer DEFAULT
0, "account_number" varchar(255) NOT NULL, "x509_cert_priv" text NOT
NULL, "x509_cert_pub" text NOT NULL, "created_at" datetime,
"updated_at" datetime);
+CREATE TABLE "provider_accounts" ("id" INTEGER PRIMARY KEY
AUTOINCREMENT NOT NULL, "label" varchar(255) NOT NULL, "username"
varchar(255) NOT NULL, "password" varchar(255) NOT NULL, "provider_id"
integer NOT NULL, "quota_id" integer, "lock_version" integer DEFAULT
0, "account_number" varchar(255), "x509_cert_priv" text,
"x509_cert_pub" text, "created_at" datetime, "updated_at"
datetime);
CREATE TABLE "providers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT
NULL, "name" varchar(255) NOT NULL, "cloud_type" integer(255) NOT
NULL, "url" varchar(255) NOT NULL, "lock_version" integer DEFAULT 0,
"created_at" datetime, "updated_at" datetime);
CREATE TABLE "quotas" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT
NULL, "running_instances" integer DEFAULT 0, "total_instances" integer
DEFAULT 0, "maximum_running_instances" integer,
"maximum_total_instances" integer, "lock_version" integer DEFAULT 0,
"created_at" datetime, "updated_at" datetime);
CREATE TABLE "realm_map" ("frontend_realm_id" integer,
"backend_realm_id" integer);
@@ -80,10 +79,14 @@ INSERT INTO schema_migrations (version) VALUES
('20101021172441');
INSERT INTO schema_migrations (version) VALUES ('20110103160939');
+INSERT INTO schema_migrations (version) VALUES ('20110107000000');
+
INSERT INTO schema_migrations (version) VALUES ('20110112094108');
INSERT INTO schema_migrations (version) VALUES ('20110117140824');
-INSERT INTO schema_migrations (version) VALUES ('20110125122737');
+INSERT INTO schema_migrations (version) VALUES ('20110125123410');
+
+INSERT INTO schema_migrations (version) VALUES ('20110125154113');
-INSERT INTO schema_migrations (version) VALUES ('20110125123410');
\ No newline at end of file
+INSERT INTO schema_migrations (version) VALUES ('20110126161751');
\ No newline at end of file
diff --git a/src/db/migrate/20110125122737_rename_cloud_accout_id_for_instance_keys.rb
b/src/db/migrate/20110125122737_rename_cloud_accout_id_for_instance_keys.rb
deleted file mode 100644
index 79acc02..0000000
--- a/src/db/migrate/20110125122737_rename_cloud_accout_id_for_instance_keys.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-class RenameCloudAccoutIdForInstanceKeys < ActiveRecord::Migration
- def self.up
- rename_column :instance_keys, :cloud_account_id, :provider_account_id
- end
-
- def self.down
- rename_column :instance_keys, :provider_account_id, :cloud_account_id
- end
-end
diff --git a/src/features/instance.feature b/src/features/instance.feature
index ad22025..4e4e59c 100644
--- a/src/features/instance.feature
+++ b/src/features/instance.feature
@@ -109,4 +109,4 @@ Feature: Mange Instances
And I press "Search"
Then I should not see "mock"
And I should see "test"
- And I should not see "other"
\ No newline at end of file
+ And I should not see "other"
diff --git a/src/features/provider.feature b/src/features/provider.feature
index ff9c05b..a01c1fe 100644
--- a/src/features/provider.feature
+++ b/src/features/provider.feature
@@ -79,20 +79,20 @@ Feature: Manage Providers
Given there are these providers:
| name | url |
| Test |
http://testprovider.com/api |
- | Mock |
http://mockprovider.com/api |
+ | Kenny |
http://mockprovider.com/api |
| Other |
http://sometesturl.com/api |
And I am on the admin providers page
Then I should see the following:
| Test |
http://testprovider.com/api |
- | Mock |
http://mockprovider.com/ap |
+ | Kenny |
http://mockprovider.com/ap |
| Other |
http://sometesturl.com/api |
When I fill in "q" with "test"
And I press "Search"
Then I should see "Test"
And I should see "Other"
- And I should not see "Mock"
- When I fill in "q" with "Mock"
+ And I should not see "Kenny"
+ When I fill in "q" with "Kenny"
And I press "Search"
- Then I should see "Mock"
+ Then I should see "Kenny"
And I should not see "Test"
And I should not see "Other"
diff --git a/src/features/step_definitions/provider_account_steps.rb
b/src/features/step_definitions/provider_account_steps.rb
index b3ffc09..86a6d31 100644
--- a/src/features/step_definitions/provider_account_steps.rb
+++ b/src/features/step_definitions/provider_account_steps.rb
@@ -22,7 +22,7 @@ end
Given /^there is a second provider account named "([^"]*)"$/ do |label|
@provider = Factory(:mock_provider, :name => 'secondprovider')
- @cloud_account = Factory(:mock_cloud_account, :provider => @provider, :label =>
label)
+ @provider_account = Factory(:mock_provider_account, :provider => @provider, :label
=> label)
end
@@ -33,6 +33,6 @@ end
Given /^that there are these provider accounts:$/ do |table|
table.hashes.each do |hash|
- Factory.create(:cloud_account, :name => hash['name'], :username =>
hash['username'])
+ Factory.create(:provider_account, :name => hash['name'], :username =>
hash['username'])
end
end
diff --git a/src/spec/models/cloud_account_observer_spec.rb
b/src/spec/models/cloud_account_observer_spec.rb
deleted file mode 100644
index 48491c0..0000000
--- a/src/spec/models/cloud_account_observer_spec.rb
+++ /dev/null
@@ -1,22 +0,0 @@
-require 'spec_helper'
-
-describe CloudAccountObserver do
- fixtures :all
-
- it "should create an instance_key if provider is EC2" do
- @client = mock('DeltaCloud', :null_object => true)
- @provider = Factory.build :ec2_provider
- @key = mock('Key', :null_object => true)
- @key.stub!(:pem).and_return("PEM")
- @key.stub!(:id).and_return("1_user")
- @client.stub!(:"feature?").and_return(true)
- @client.stub!(:"create_key").and_return(@key)
-
- cloud_account = Factory.build :ec2_cloud_account
- cloud_account.stub!(:connect).and_return(@client)
- cloud_account.save
- cloud_account.instance_key.should_not == nil
- cloud_account.instance_key.pem == "PEM"
- cloud_account.instance_key.id == "1_user"
- end
-end
diff --git a/src/spec/models/provider_account_observer_spec.rb
b/src/spec/models/provider_account_observer_spec.rb
new file mode 100644
index 0000000..0c397db
--- /dev/null
+++ b/src/spec/models/provider_account_observer_spec.rb
@@ -0,0 +1,22 @@
+require 'spec_helper'
+
+describe ProviderAccountObserver do
+ fixtures :all
+
+ it "should create an instance_key if provider is EC2" do
+ @client = mock('DeltaCloud', :null_object => true)
+ @provider = Factory.build :ec2_provider
+ @key = mock('Key', :null_object => true)
+ @key.stub!(:pem).and_return("PEM")
+ @key.stub!(:id).and_return("1_user")
+ @client.stub!(:"feature?").and_return(true)
+ @client.stub!(:"create_key").and_return(@key)
+
+ provider_account = Factory.build :ec2_provider_account
+ provider_account.stub!(:connect).and_return(@client)
+ provider_account.save
+ provider_account.instance_key.should_not == nil
+ provider_account.instance_key.pem == "PEM"
+ provider_account.instance_key.id == "1_user"
+ end
+end
--
1.7.3.5