On 01/27/2011 10:43 AM, jzigmund(a)redhat.com wrote:
From: Jozef Zigmund<jzigmund(a)redhat.com>
All supported providers are included in constant hash, that is named PROVIDERS in
Provider model. So now, attribute of class "cloud_type" must be one of these
PROVIDERS value.
---
src/app/controllers/admin/providers_controller.rb | 3 ++-
src/app/models/provider.rb | 5 +++--
src/app/views/admin/providers/_form.haml | 9 +++++++--
src/app/views/admin/providers/_list.haml | 1 +
src/config/locales/en.yml | 6 ++++++
...824_rename_cloud_account_to_provider_account.rb | 1 +
6 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/src/app/controllers/admin/providers_controller.rb
b/src/app/controllers/admin/providers_controller.rb
index a898d72..f06f354 100644
--- a/src/app/controllers/admin/providers_controller.rb
+++ b/src/app/controllers/admin/providers_controller.rb
@@ -116,7 +116,8 @@ class Admin::ProvidersController< ApplicationController
def load_providers
@header = [{ :name => "Provider name", :sort_attr => :name },
- { :name => "Provider URL", :sort_attr => :name }
+ { :name => "Provider URL", :sort_attr => :name },
+ { :name => "Provider Type", :sort_attr => :name }
]
@providers = Provider.list_for_user(@current_user, Privilege::VIEW)
@url_params = params.clone
diff --git a/src/app/models/provider.rb b/src/app/models/provider.rb
index d2c9dfb..38445be 100644
--- a/src/app/models/provider.rb
+++ b/src/app/models/provider.rb
@@ -29,7 +29,7 @@ class Provider< ActiveRecord::Base
require 'util/deltacloud'
include PermissionedObject
- PROVIDERS = { 1 => "AWS", 2 => "GoGrid" , 3 =>
"Rackspace", 4 => "RHEVM", 5 => "OpenNebula" }
+ PROVIDERS = { 0 => "mock", 1 => "AWS", 2 =>
"GoGrid" , 3 => "Rackspace", 4 => "RHEVM", 5 =>
"OpenNebula" }
This should probably be PROVIDER_TYPES, since
"RHEVM" is a provider
type, but "my RHEVM server at foo.redhat.com" is a provider, and "ec2"
is a provider type, but "ec2-us-east" is a provider.
has_many :provider_accounts, :dependent => :destroy
has_many :hardware_profiles, :dependent => :destroy
@@ -39,12 +39,13 @@ class Provider< ActiveRecord::Base
validates_presence_of :name
validates_uniqueness_of :name
- validates_presence_of :cloud_type
validates_presence_of :url
validates_format_of :name, :with => /^[\w -]*$/n, :message => "must only
contain: numbers, letters, spaces, '_' and '-'"
validates_length_of :name, :maximum => 255
+ validates_inclusion_of :cloud_type, :in => PROVIDERS
+
I think we should use provider_type instead of cloud_type to be
consistent here.
has_many :permissions, :as => :permission_object, :dependent
=> :destroy,
:include => [:role],
:order => "permissions.id ASC"
diff --git a/src/app/views/admin/providers/_form.haml
b/src/app/views/admin/providers/_form.haml
index fe8c9ca..c980c0a 100644
--- a/src/app/views/admin/providers/_form.haml
+++ b/src/app/views/admin/providers/_form.haml
@@ -1,5 +1,6 @@
= form.error_message_on :name, 'Name'
= form.error_message_on :url, 'URL'
+= form.error_message_on :cloud_type
%fieldset.clear
= form.label :name,'Provider name :'
= form.text_field :name, :title => 'provider_name', :value =>
@provider.name, :class => "clear grid_4 alpha"
@@ -10,5 +11,9 @@
%button.linkbutton.nospace{ :type => 'submit', :value =>
t('.test_connection'), :name => 'test_connection', :id =>
'test_connection' }
Test connection
)
- %fieldset.clear
- = form.submit "Save", :class => "submit formbutton"
+%fieldset.clear
+ = form.label :cloud_type
+ = form.select (:cloud_type, Provider::PROVIDERS.collect {|id, cloud_type|
[t(cloud_type),id] }, :prompt => "Select type of provider")
+
+%fieldset.clear
+ = form.submit "Save", :class => "submit formbutton"
diff --git a/src/app/views/admin/providers/_list.haml
b/src/app/views/admin/providers/_list.haml
index 21ad381..bce2af6 100644
--- a/src/app/views/admin/providers/_list.haml
+++ b/src/app/views/admin/providers/_list.haml
@@ -17,3 +17,4 @@
%input{:name => "provider_selected[]", :type =>
"checkbox", :value => provider.id, :id =>
"provider_checkbox_#{provider.id}", :checked => selected }
= link_to provider.name, admin_provider_path(provider)
%td= provider.url
+ %td= t(Provider::PROVIDERS[provider.cloud_type])
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index 715c0a0..dcb379b 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -85,6 +85,12 @@ en:
pool_families: Pool Families
setting: Settings
name: Name
+ AWS: Amazon EC2
+ RHEVM: RHEV-M
+ GoGrid: GoGrid
+ Rackspace: Rackspace
+ OpenNebula: OpenNebula
+ mock: Mock
admin:
settings:
index:
diff --git a/src/db/migrate/20110117140824_rename_cloud_account_to_provider_account.rb
b/src/db/migrate/20110117140824_rename_cloud_account_to_provider_account.rb
index 154649d..2ccadb4 100644
--- a/src/db/migrate/20110117140824_rename_cloud_account_to_provider_account.rb
+++ b/src/db/migrate/20110117140824_rename_cloud_account_to_provider_account.rb
@@ -1,6 +1,7 @@
class RenameCloudAccountToProviderAccount< ActiveRecord::Migration
def self.up
rename_table (:cloud_accounts,:provider_accounts)
+ change_column (:providers, :cloud_type, :integer, :null => false)
end
def self.down