From: Jozef Zigmund <jzigmund(a)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!
+ #(a)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((a)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((a)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((a)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 }
--
1.7.3.5