From: Jozef Zigmund <[email protected]>

---
 .../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 }
-- 
1.7.3.5

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

Reply via email to