From: Jozef Zigmund jzigmund@redhat.com
--- .../admin/provider_accounts_controller.rb | 32 ++++++++++++----- src/app/controllers/admin/providers_controller.rb | 2 +- src/app/helpers/admin/provider_accounts_helper.rb | 21 +++++++++++ src/app/models/provider.rb | 8 ++-- src/app/views/admin/provider_accounts/_aws.haml | 39 ++++++++++++++++++++ src/app/views/admin/provider_accounts/_gogrid.haml | 16 ++++++++ .../views/admin/provider_accounts/_opennebula.haml | 16 ++++++++ .../provider_accounts/_provider_selection.haml | 24 ++++++++++++ .../views/admin/provider_accounts/_rackspace.haml | 16 ++++++++ src/app/views/admin/provider_accounts/_rhevm.haml | 2 + src/app/views/admin/provider_accounts/new.haml | 19 ++++------ src/app/views/layouts/newui.haml | 1 - src/config/routes.rb | 3 +- 13 files changed, 172 insertions(+), 27 deletions(-) create mode 100644 src/app/helpers/admin/provider_accounts_helper.rb create mode 100644 src/app/views/admin/provider_accounts/_aws.haml create mode 100644 src/app/views/admin/provider_accounts/_gogrid.haml create mode 100644 src/app/views/admin/provider_accounts/_opennebula.haml create mode 100644 src/app/views/admin/provider_accounts/_provider_selection.haml create mode 100644 src/app/views/admin/provider_accounts/_rackspace.haml create mode 100644 src/app/views/admin/provider_accounts/_rhevm.haml
diff --git a/src/app/controllers/admin/provider_accounts_controller.rb b/src/app/controllers/admin/provider_accounts_controller.rb index e5d3ccd..41319e9 100644 --- a/src/app/controllers/admin/provider_accounts_controller.rb +++ b/src/app/controllers/admin/provider_accounts_controller.rb @@ -17,12 +17,8 @@ class Admin::ProviderAccountsController < ApplicationController
def show @tab_captions = ['Properties', 'Credentials', 'History', 'Permissions'] -<<<<<<< HEAD - @account = CloudAccount.find(params[:id]) - require_privilege(Privilege::VIEW, @account) -======= @account = ProviderAccount.find(params[:id]) ->>>>>>> Rename CloudAccount to ProviderAccount + require_privilege(Privilege::VIEW, @account) @details_tab = params[:details_tab].blank? ? 'properties' : params[:details_tab]
if params.delete :test_account @@ -42,17 +38,18 @@ class Admin::ProviderAccountsController < ApplicationController end
def new - @cloud_account = ProviderAccount.new + @provider_account = ProviderAccount.new @quota = Quota.new @providers = Provider.all + @selected_provider = @providers.first unless @providers.blank? end
def create - @provider = Provider.find(params[:provider_id]) - require_privilege(Privilege::CREATE, CloudAccount, @provider) + @provider = Provider.find(params[:select_provider]) + require_privilege(Privilege::CREATE, ProviderAccount, @provider)
@providers = Provider.all - @cloud_account = ProviderAccount.new(params[:cloud_account]) + @cloud_account = ProviderAccount.new(params[:provider_account]) @cloud_account.provider = @provider @cloud_account.quota = @quota = Quota.new
@@ -123,6 +120,23 @@ class Admin::ProviderAccountsController < ApplicationController redirect_to admin_provider_accounts_url end
+ def set_selected_provider + @quota = Quota.new + @provider_account = ProviderAccount.new + respond_to do |format| + format.js { + @providers = Provider.find(:all) + @selected_provider = Provider.find(params[:select_provider]) + render :partial => 'provider_selection' + } + format.html { + @providers = Provider.find(:all) + @selected_provider = Provider.find(params[:select_provider]) + render :action => 'new', :layout => true + } + end + end + protected
def test_account(account) diff --git a/src/app/controllers/admin/providers_controller.rb b/src/app/controllers/admin/providers_controller.rb index f06f354..aaa6c07 100644 --- a/src/app/controllers/admin/providers_controller.rb +++ b/src/app/controllers/admin/providers_controller.rb @@ -52,7 +52,7 @@ class Admin::ProvidersController < ApplicationController test_connection(@provider) render :action => 'new' else - @provider.set_cloud_type! + #@provider.set_cloud_type! if @provider.save && @provider.populate_hardware_profiles flash[:notice] = "Provider added." redirect_to admin_providers_path diff --git a/src/app/helpers/admin/provider_accounts_helper.rb b/src/app/helpers/admin/provider_accounts_helper.rb new file mode 100644 index 0000000..8e73a04 --- /dev/null +++ b/src/app/helpers/admin/provider_accounts_helper.rb @@ -0,0 +1,21 @@ +module Admin::ProviderAccountsHelper + + def display_provider_account_login_form(cloud_type) + case cloud_type + when 0 + render :partial => "mock" + when 1 + render :partial => "aws" + when 2 + render :partial => "gogrid" + when 3 + render :partial => "rackspace" + when 4 + render :partial => "rhevm" + when 5 + render :partial => "opennebula" + else + flash.now[:warning] = "You don't have any provider yet" + end + end +end diff --git a/src/app/models/provider.rb b/src/app/models/provider.rb index 38445be..8539391 100644 --- a/src/app/models/provider.rb +++ b/src/app/models/provider.rb @@ -67,10 +67,10 @@ class Provider < ActiveRecord::Base return self.errors.empty? end
- def set_cloud_type! - deltacloud = connect - self.cloud_type = deltacloud.driver_name unless deltacloud.nil? - end +# def set_cloud_type! +# deltacloud = connect +# self.cloud_type = deltacloud.driver_name unless deltacloud.nil? +# end
def connect begin diff --git a/src/app/views/admin/provider_accounts/_aws.haml b/src/app/views/admin/provider_accounts/_aws.haml new file mode 100644 index 0000000..0d4ffb4 --- /dev/null +++ b/src/app/views/admin/provider_accounts/_aws.haml @@ -0,0 +1,39 @@ +%fieldset.nomargin.clearfix + = label_tag "Account name:" + = text_field :provider_account, :label + = label_tag "Username" + = text_field :provider_account, :username + = label_tag "Password" + = password_field :provider_account, :password + = label_tag "Quota" + = text_field :quota, :maximum_running_instances, :title => t('cloud_accounts.form.quota_instances'), :value => @quota.maximum_running_instances || "unlimited", :id => "quota_instances", :class => "grid_3 omega" +%fieldset.nomargin.clearfix + .grid_3.prefix_10.alpha.omega + ( + %button.linkbutton.nospace{ :type => 'button', :onclick => "set_unlimited_quota("quota_instances");" }<> + = t('cloud_accounts.form.unlimited_quota') + ) + +%fieldset.clearfix.nomargin + %label.grid_4.la.alpha + = t('cloud_accounts.form.account_number') + %span.required * + = text_field_tag :account_number + %label.grid_3.la + = t('cloud_accounts.form.account_private_cert') + %span.required * + = file_field :x509_cert_priv_file, :title => t('cloud_accounts.form.account_private_cert') + %label.grid_3.la + = t('cloud_accounts.form.account_public_cert') + %span.required * + = file_field :x509_cert_pub_file, :title => t('cloud_accounts.form.account_public_cert') + .grid_3.omega + ( + %button.linkbutton.nospace{ :type => 'submit', :value => t('cloud_accounts.form.test_account'), :name => 'test_account', :id => 'test_account' }<> + = t('cloud_accounts.form.test_account') + ) + +:javascript + function set_unlimited_quota(elem_id) { + $("#" + elem_id)[0].value = "unlimited"; + } diff --git a/src/app/views/admin/provider_accounts/_gogrid.haml b/src/app/views/admin/provider_accounts/_gogrid.haml new file mode 100644 index 0000000..65b5998 --- /dev/null +++ b/src/app/views/admin/provider_accounts/_gogrid.haml @@ -0,0 +1,16 @@ +%fieldset.clear + = label_tag "Account name:" + = text_field :provider_account, :label +%fieldset.clear + = label_tag :username, "API Key:" + = text_field :provider_account,:username +%fieldset.clear + = label_tag :password, "Secret:" + = password_field :provider_account,:password + = label_tag "Quota" + = text_field :quota, :maximum_running_instances, :title => t('cloud_accounts.form.quota_instances'), :value => @quota.maximum_running_instances || "unlimited", :id => "quota_instances", :class => "grid_3 omega" +.grid_3.omega + ( + %button.linkbutton.nospace{ :type => 'submit', :value => t('cloud_accounts.form.test_account'), :name => 'test_account', :id => 'test_account' }<> + = t('cloud_accounts.form.test_account') + ) diff --git a/src/app/views/admin/provider_accounts/_opennebula.haml b/src/app/views/admin/provider_accounts/_opennebula.haml new file mode 100644 index 0000000..e04902e --- /dev/null +++ b/src/app/views/admin/provider_accounts/_opennebula.haml @@ -0,0 +1,16 @@ +%fieldset.clear + = label_tag "Account name:" + = text_field :provider_account, :label +%fieldset.clear + = label_tag :username, "API Key:" + = text_field :provider_account, :username +%fieldset.clear + = label_tag :password, "Secret:" + = password_field :provider_account, :password + = label_tag "Quota" + = text_field :quota, :maximum_running_instances, :title => t('cloud_accounts.form.quota_instances'), :value => @quota.maximum_running_instances || "unlimited", :id => "quota_instances", :class => "grid_3 omega" +.grid_3.omega + ( + %button.linkbutton.nospace{ :type => 'submit', :value => t('cloud_accounts.form.test_account'), :name => 'test_account', :id => 'test_account' }<> + = t('cloud_accounts.form.test_account') + ) diff --git a/src/app/views/admin/provider_accounts/_provider_selection.haml b/src/app/views/admin/provider_accounts/_provider_selection.haml new file mode 100644 index 0000000..334f314 --- /dev/null +++ b/src/app/views/admin/provider_accounts/_provider_selection.haml @@ -0,0 +1,24 @@ +%fieldset#cloud_type.clear + = select_tag ("select_provider", options_for_select(@providers.map{ |p| [p.name, p.id] }, :selected => @selected_provider.id)) + = restful_submit_tag "Choose", 'set_selected_provider',set_selected_provider_admin_provider_accounts_path, 'GET', :class => 'button' + = label_tag "Cloud type: " + = t(Provider::PROVIDERS[@selected_provider.cloud_type]) + = display_provider_account_login_form(@selected_provider.cloud_type) + %fieldset.clearfix + .grid_13.alpha.omega + = submit_tag t(:add), :class => "ra nomargin dialogbutton" + +:javascript + $(document).ready(function(){ + var selected_provider; + $("#select_provider").change(function() + { + selected_provider = $("option:selected").attr('value'); + $.get("#{set_selected_provider_admin_provider_accounts_url}", {select_provider:selected_provider}, + function(result) { + $("#cloud_type").html(result); + } + ); + + }); + }); diff --git a/src/app/views/admin/provider_accounts/_rackspace.haml b/src/app/views/admin/provider_accounts/_rackspace.haml new file mode 100644 index 0000000..c13672c --- /dev/null +++ b/src/app/views/admin/provider_accounts/_rackspace.haml @@ -0,0 +1,16 @@ +%fieldset.clear + = label_tag "Account name:" + = text_field :provider_account, :label +%fieldset.clear + = label_tag:username, "API Key:" + = text_field :provider_account, :username +%fieldset.clear + = label_tag :password, "Secret:" + = password_field :provider_account, :password + = label_tag "Quota" + = text_field :quota, :maximum_running_instances, :title => t('cloud_accounts.form.quota_instances'), :value => @quota.maximum_running_instances || "unlimited", :id => "quota_instances", :class => "grid_3 omega" +.grid_3.omega + ( + %button.linkbutton.nospace{ :type => 'submit', :value => t('cloud_accounts.form.test_account'), :name => 'test_account', :id => 'test_account' }<> + = t('cloud_accounts.form.test_account') + ) diff --git a/src/app/views/admin/provider_accounts/_rhevm.haml b/src/app/views/admin/provider_accounts/_rhevm.haml new file mode 100644 index 0000000..dd86c72 --- /dev/null +++ b/src/app/views/admin/provider_accounts/_rhevm.haml @@ -0,0 +1,2 @@ +%fieldset.clear + Login form for RHEV-M (not implemented yet) diff --git a/src/app/views/admin/provider_accounts/new.haml b/src/app/views/admin/provider_accounts/new.haml index e567bce..4b45ac1 100644 --- a/src/app/views/admin/provider_accounts/new.haml +++ b/src/app/views/admin/provider_accounts/new.haml @@ -1,16 +1,13 @@ #details.grid_13 %h2 = t('cloud_accounts.new.new_provider_account') - - form_for @cloud_account, :url => admin_provider_accounts_path, :html => { :multipart => true } do |f| %label{ :for => :provider_id } Provider - = select_tag :provider_id, options_for_select(@providers.map{ |p| [p.name, p.id] }) - = render :partial => 'form', :locals => { :f => f } - %fieldset.clearfix - .grid_13.alpha.omega - = submit_tag t(:add), :class => "ra nomargin dialogbutton" - %section - %p.requirement - %span.required * - - - = t('cloud_accounts.new.required_field') + %fieldset.clear + - form_tag (admin_provider_accounts_path, :multipart => true) do + = render :partial => 'provider_selection' + %section + %p.requirement + %span.required * + - + = t('cloud_accounts.new.required_field') diff --git a/src/app/views/layouts/newui.haml b/src/app/views/layouts/newui.haml index 681f607..1f8c7d0 100644 --- a/src/app/views/layouts/newui.haml +++ b/src/app/views/layouts/newui.haml @@ -5,7 +5,6 @@ %title Red Hat Cloud Engine = yield :title - = stylesheet_link_tag 'facebox' = stylesheet_link_tag 'jquery.ui-1.8.1/jquery-ui-1.8.1.custom.css' = stylesheet_link_tag 'jquery.loadmask' diff --git a/src/config/routes.rb b/src/config/routes.rb index 82c624a..5db5a08 100644 --- a/src/config/routes.rb +++ b/src/config/routes.rb @@ -50,7 +50,8 @@ ActionController::Routing::Routes.draw do |map| r.resources :hardware_profiles, :collection => { :multi_destroy => :delete } r.resources :providers, :collection => { :multi_destroy => :delete } r.resources :users, :collection => { :multi_destroy => :delete } - r.resources :provider_accounts, :collection => { :multi_destroy => :delete } + r.resources :provider_accounts, :collection => { :multi_destroy => :delete, :set_selected_provider => :get} + r.resources :roles, :collection => { :multi_destroy => :delete } r.resources :settings, :collection => { :self_service => :get, :general_settings => :get } r.resources :pool_families, :collection => { :multi_destroy => :delete }