From: Jozef Zigmund jzigmund@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" }
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