From: Jozef Zigmund <[email protected]>

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" }
 
   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
+
   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
-- 
1.7.3.5

_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to