On Thu, Dec 23, 2010 at 01:25:34PM +0100, Tomas Sedovic wrote:
> On 12/22/2010 09:18 PM, steve linabery wrote:
> >On Wed, Dec 22, 2010 at 07:15:29PM +0100, [email protected] wrote:
> >>From: Tomas Sedovic<[email protected]>
> >>
> >>---
> >>  .../admin/provider_accounts_controller.rb          |  126 
> >> ++++++++++++++++++++
> >>  src/app/controllers/cloud_accounts_controller.rb   |    4 +-
> >>  .../admin/provider_accounts/_credentials.haml      |    3 +
> >>  src/app/views/admin/provider_accounts/_form.haml   |   52 ++++++++
> >>  .../views/admin/provider_accounts/_history.haml    |    3 +
> >>  src/app/views/admin/provider_accounts/_list.haml   |   18 +++
> >>  .../admin/provider_accounts/_permissions.haml      |    3 +
> >>  .../views/admin/provider_accounts/_properties.haml |    5 +
> >>  src/app/views/admin/provider_accounts/edit.haml    |   13 ++
> >>  src/app/views/admin/provider_accounts/index.haml   |    3 +-
> >>  src/app/views/admin/provider_accounts/new.haml     |   16 +++
> >>  src/app/views/admin/provider_accounts/show.haml    |    5 +
> >>  src/config/routes.rb                               |    3 +-
> >>  13 files changed, 250 insertions(+), 4 deletions(-)
> >>  create mode 100644 src/app/views/admin/provider_accounts/_credentials.haml
> >>  create mode 100644 src/app/views/admin/provider_accounts/_form.haml
> >>  create mode 100644 src/app/views/admin/provider_accounts/_history.haml
> >>  create mode 100644 src/app/views/admin/provider_accounts/_list.haml
> >>  create mode 100644 src/app/views/admin/provider_accounts/_permissions.haml
> >>  create mode 100644 src/app/views/admin/provider_accounts/_properties.haml
> >>  create mode 100644 src/app/views/admin/provider_accounts/edit.haml
> >>  create mode 100644 src/app/views/admin/provider_accounts/new.haml
> >>  create mode 100644 src/app/views/admin/provider_accounts/show.haml
> >>
> >>diff --git a/src/app/controllers/admin/provider_accounts_controller.rb 
> >>b/src/app/controllers/admin/provider_accounts_controller.rb
> >>index dda74ae..25ed002 100644
> >>--- a/src/app/controllers/admin/provider_accounts_controller.rb
> >>+++ b/src/app/controllers/admin/provider_accounts_controller.rb
> >>@@ -1,6 +1,132 @@
> >>  class Admin::ProviderAccountsController<  ApplicationController
> >>    before_filter :require_user
> >>+  before_filter :load_accounts, :only =>  [:index, :show]
> >>
> >>    def index
> >>    end
> >>+
> >>+  def show
> >>+    @tab_captions = ['Properties', 'Credentials', 'History', 'Permissions']
> >>+    @account = CloudAccount.find(params[:id])
> >>+    @details_tab = params[:details_tab].blank? ? 'properties' : 
> >>params[:details_tab]
> >>+
> >>+    if params.delete :test_account
> >>+      test_account(@account)
> >>+      render :action =>  'show' and return
> >>+    end
> >>+
> >>+    respond_to do |format|
> >>+      format.js do
> >>+        if @url_params.delete :details_pane
> >>+          render :partial =>  'layouts/details_pane' and return
> >>+        end
> >>+        render :partial =>  @details_tab and return
> >>+      end
> >>+      format.html { render :action =>  'show'}
> >>+    end
> >>+  end
> >>+
> >>+  def new
> >>+    @cloud_account = CloudAccount.new
> >>+    @quota = Quota.new
> >>+    @providers = Provider.all
> >>+  end
> >>+
> >>+  def create
> >>+    @provider = Provider.find(params[:provider_id])
> >>+    require_privilege(Privilege::ACCOUNT_MODIFY, @provider)
> >>+
> >>+    @providers = Provider.all
> >>+    @cloud_account = CloudAccount.new(params[:cloud_account])
> >>+    @cloud_account.provider = @provider
> >>+    @cloud_account.quota = @quota = Quota.new
> >>+
> >>+    if params.delete :test_account
> >>+      test_account(@cloud_account)
> >>+      render :action =>  'new' and return
> >>+    end
> >>+
> >>+    limit = params[:quota][:maximum_running_instances] if params[:quota]
> >>+    @cloud_account.quota.set_maximum_running_instances(limit)
> >>+
> >>+    if @cloud_account.invalid?
> >>+      if not @cloud_account.valid_credentials?
> >>+        flash.now[:error] = "The entered credential information is 
> >>incorrect"
> >>+      elsif @cloud_account.errors.on(:username)
> >>+        flash.now[:error] = "The access key 
> >>'#{params[:cloud_account][:username]}' has already been taken."
> >>+      else
> >>+        flash.now[:error] = "You must fill in all the required fields"
> >>+      end
> >>+      render :action =>  'new' and return
> >>+    end
> >>+
> >>+    @cloud_account.zones<<  Zone.default
> >>+    @cloud_account.save!
> >>+    if @cloud_account.populate_realms
> >>+      flash[:notice] = "Provider account added."
> >>+    end
> >>+    redirect_to admin_provider_account_path(@cloud_account)
> >>+    kick_condor
> >>+  end
> >>+
> >>+  def edit
> >>+    @cloud_account = CloudAccount.find(params[:id])
> >>+    @quota = @cloud_account.quota
> >>+    @provider = @cloud_account.provider
> >>+    require_privilege(Privilege::ACCOUNT_MODIFY,@provider)
> >>+  end
> >>+
> >>+  def update
> >>+    @cloud_account = CloudAccount.find(params[:id])
> >>+    @provider = @cloud_account.provider
> >>+    require_privilege(Privilege::ACCOUNT_MODIFY, @provider)
> >>+    @quota = @cloud_account.quota
> >>+
> >>+    if params.delete :test_account
> >>+      test_account(@cloud_account)
> >>+      render :action =>  'new' and return
> >>+    end
> >>+
> >>+    limit = params[:quota][:maximum_running_instances] if params[:quota]
> >>+    @cloud_account.quota.set_maximum_running_instances(limit)
> >>+    if @cloud_account.update_attributes(params[:cloud_account])
> >>+      flash[:notice] = "Cloud Account updated!"
> >>+      redirect_to admin_provider_account_path(@cloud_account)
> >>+    else
> >>+      render :action =>  :edit
> >>+    end
> >>+  end
> >>+
> >>+  def multi_destroy
> >>+    if (not params[:accounts_selected]) or 
> >>(params[:accounts_selected].length == 0)
> >>+      flash[:notice] = "You must select some accounts first."
> >>+    else
> >>+      CloudAccount.destroy(params[:accounts_selected])
> >>+    end
> >>+    redirect_to admin_provider_accounts_url
> >>+  end
> >>+
> >>+  protected
> >>+
> >>+  def test_account(account)
> >>+    if account.valid_credentials?
> >>+      flash.now[:notice] = "Test Connection Success: Valid Account Details"
> >>+    else
> >>+      flash.now[:error] = "Test Connection Failed: Invalid Account Details"
> >>+    end
> >>+  rescue
> >>+    flash.now[:error] = "Test Connection Failed: Could not connect to 
> >>provider"
> >>+  end
> >>+
> >>+  def load_accounts
> >>+    @header = [
> >>+      { :name =>  "Name", :sort_attr =>  :name },
> >>+      { :name =>  "Username", :sort_attr =>  :username},
> >>+    ]
> >>+    @accounts = CloudAccount.paginate(:all,
> >>+      :page =>  params[:page] || 1,
> >>+      :order =>  (params[:order_field] || 'label') +' '+ 
> >>(params[:order_dir] || 'asc')
> >>+    )
> >>+    @url_params = params
> >>+  end
> >>  end
> >>diff --git a/src/app/controllers/cloud_accounts_controller.rb 
> >>b/src/app/controllers/cloud_accounts_controller.rb
> >>index ae0a224..d21d532 100644
> >>--- a/src/app/controllers/cloud_accounts_controller.rb
> >>+++ b/src/app/controllers/cloud_accounts_controller.rb
> >>@@ -48,9 +48,9 @@ class CloudAccountsController<  ApplicationController
> >>      @cloud_account.provider = @provider
> >>      @cloud_account.quota = @quota = Quota.new
> >>
> >>-    if params[:test_account]
> >>+    if params.delete :test_account
> >>        test_account(@cloud_account)
> >>-      render :action =>  'new' and return
> >>+      redirect_to admin_provider_account_path(@cloud_account) and return
> >>      end
> >>
> >>      limit = params[:quota][:maximum_running_instances] if params[:quota]
> >>diff --git a/src/app/views/admin/provider_accounts/_credentials.haml 
> >>b/src/app/views/admin/provider_accounts/_credentials.haml
> >>new file mode 100644
> >>index 0000000..9d31c8d
> >>--- /dev/null
> >>+++ b/src/app/views/admin/provider_accounts/_credentials.haml
> >>@@ -0,0 +1,3 @@
> >>+%h3
> >>+  Credentials for
> >>+  = @account.name
> >>diff --git a/src/app/views/admin/provider_accounts/_form.haml 
> >>b/src/app/views/admin/provider_accounts/_form.haml
> >>new file mode 100644
> >>index 0000000..853d348
> >>--- /dev/null
> >>+++ b/src/app/views/admin/provider_accounts/_form.haml
> >>@@ -0,0 +1,52 @@
> >>+= error_messages_for 'cloud_account'
> >>+%fieldset.clearfix.nomargin
> >>+  %label.grid_4.la.alpha
> >>+    = t('cloud_accounts.form.account_name')
> >>+    %span.required *
> >>+  %label.grid_3.la
> >>+    = t('cloud_accounts.form.user_name')
> >>+    %span.required *
> >>+  %label.grid_3.la
> >>+    = t('cloud_accounts.form.password')
> >>+    %span.required *
> >>+  %label.grid_3.la.omega
> >>+    = t('cloud_accounts.form.quota_instances')
> >>+    %span.required *
> >>+%fieldset.nomargin.clearfix
> >>+  = f.text_field :label, :title =>  t('cloud_accounts.form.account_name'), 
> >>:class =>  "grid_4 alpha"
> >>+  = f.text_field :username, :title =>  t('cloud_accounts.form.user_name'), 
> >>:class =>  "grid_3"
> >>+  = f.password_field :password, :title =>  
> >>t('cloud_accounts.form.password'), :class =>  "grid_3"
> >>+  = 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 *
> >>+  %label.grid_3.la
> >>+    = t('cloud_accounts.form.account_private_cert')
> >>+    %span.required *
> >>+  %label.grid_3.la
> >>+    = t('cloud_accounts.form.account_public_cert')
> >>+    %span.required *
> >>+  .grid_3.omega
> >>+%fieldset.clearfix.nomargin
> >>+  = f.text_field :account_number, :title =>  
> >>t('cloud_accounts.form.account_number'), :class =>  "grid_4 alpha"
> >>+  .grid_3
> >>+    = f.file_field :x509_cert_priv_file, :title =>  
> >>t('cloud_accounts.form.account_private_cert')
> >>+  .grid_3
> >>+    = f.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/_history.haml 
> >>b/src/app/views/admin/provider_accounts/_history.haml
> >>new file mode 100644
> >>index 0000000..429320a
> >>--- /dev/null
> >>+++ b/src/app/views/admin/provider_accounts/_history.haml
> >>@@ -0,0 +1,3 @@
> >>+%h3
> >>+  History for
> >>+  = @account.name
> >>diff --git a/src/app/views/admin/provider_accounts/_list.haml 
> >>b/src/app/views/admin/provider_accounts/_list.haml
> >>new file mode 100644
> >>index 0000000..17c982f
> >>--- /dev/null
> >>+++ b/src/app/views/admin/provider_accounts/_list.haml
> >>@@ -0,0 +1,18 @@
> >>+- form_tag do
> >>+  = link_to "New Account", new_admin_provider_account_path, :class =>  
> >>'button'
> >>+  = restful_submit_tag "Delete", "delete", 
> >>multi_destroy_admin_provider_accounts_path, 'DELETE'
> >>+  %p
> >>+    Select:&nbsp;
> >>+    = link_to "All", @url_params.merge(:select =>  'all')
> >>+    %span>  ,&nbsp;
> >>+    = link_to "None", @url_params.merge(:select =>  'none')
> >>+  %table
> >>+    = sortable_table_header @header
> >>+    - @accounts.each do |account|
> >>+      %tr
> >>+        %td
> >>+          - selected = @url_params[:select] == 'all'
> >>+          %input{:name =>  'accounts_selected[]', :type =>  'checkbox', 
> >>:value =>  account.id, :id =>  "account_checkbox_#{account.id}", :checked 
> >>=>  selected }
> >>+          = link_to account.name, admin_provider_account_path(account)
> >>+        %td
> >>+          =account.username
> >>diff --git a/src/app/views/admin/provider_accounts/_permissions.haml 
> >>b/src/app/views/admin/provider_accounts/_permissions.haml
> >>new file mode 100644
> >>index 0000000..92ad7a5
> >>--- /dev/null
> >>+++ b/src/app/views/admin/provider_accounts/_permissions.haml
> >>@@ -0,0 +1,3 @@
> >>+%h3
> >>+  Permissions for
> >>+  = @account.name
> >>diff --git a/src/app/views/admin/provider_accounts/_properties.haml 
> >>b/src/app/views/admin/provider_accounts/_properties.haml
> >>new file mode 100644
> >>index 0000000..6371968
> >>--- /dev/null
> >>+++ b/src/app/views/admin/provider_accounts/_properties.haml
> >>@@ -0,0 +1,5 @@
> >>+%h3
> >>+  Properties for
> >>+  = @account.name
> >>+= link_to "Edit", edit_admin_provider_account_path(@account), { :class =>  
> >>'button' }
> >>+= link_to "Test", admin_provider_account_path(@account, {:test_account =>  
> >>true}), { :class =>  'button' }
> >>diff --git a/src/app/views/admin/provider_accounts/edit.haml 
> >>b/src/app/views/admin/provider_accounts/edit.haml
> >>new file mode 100644
> >>index 0000000..9a55d84
> >>--- /dev/null
> >>+++ b/src/app/views/admin/provider_accounts/edit.haml
> >>@@ -0,0 +1,13 @@
> >>+#details.grid_13
> >>+  %h2
> >>+    = t('cloud_accounts.edit.edit_provider_account')
> >>+  - form_for @cloud_account, :url =>  admin_provider_account_path, :html 
> >>=>  { :method =>  :put, :multipart =>  true } do |f|
> >>+    = render :partial =>  'form', :locals =>  { :f =>  f }
> >>+    %fieldset.clearfix
> >>+      .grid_13.alpha.omega
> >>+        = submit_tag t(:edit), :class =>  "ra nomargin dialogbutton"
> >>+    %section
> >>+      %p.requirement
> >>+        %span.required *
> >>+        \-
> >>+        = t('cloud_accounts.edit.required_field')
> >>diff --git a/src/app/views/admin/provider_accounts/index.haml 
> >>b/src/app/views/admin/provider_accounts/index.haml
> >>index 72c0ee2..62ccbc6 100644
> >>--- a/src/app/views/admin/provider_accounts/index.haml
> >>+++ b/src/app/views/admin/provider_accounts/index.haml
> >>@@ -1 +1,2 @@
> >>-admin/provider_accounts/index.haml
> >>+- content_for :list do
> >>+  = render :partial =>  'list'
> >>diff --git a/src/app/views/admin/provider_accounts/new.haml 
> >>b/src/app/views/admin/provider_accounts/new.haml
> >>new file mode 100644
> >>index 0000000..e567bce
> >>--- /dev/null
> >>+++ b/src/app/views/admin/provider_accounts/new.haml
> >>@@ -0,0 +1,16 @@
> >>+#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')
> >>diff --git a/src/app/views/admin/provider_accounts/show.haml 
> >>b/src/app/views/admin/provider_accounts/show.haml
> >>new file mode 100644
> >>index 0000000..05eeedd
> >>--- /dev/null
> >>+++ b/src/app/views/admin/provider_accounts/show.haml
> >>@@ -0,0 +1,5 @@
> >>+- content_for :list do
> >>+  = render :partial =>  'list'
> >>+
> >>+- content_for :details do
> >>+  = render :partial =>  'layouts/details_pane'
> >>diff --git a/src/config/routes.rb b/src/config/routes.rb
> >>index 99af504..3344058 100644
> >>--- a/src/config/routes.rb
> >>+++ b/src/config/routes.rb
> >>@@ -44,8 +44,9 @@ ActionController::Routing::Routes.draw do |map|
> >>    map.connect '/set_layout', :controller =>  'application', :action =>  
> >> 'set_layout'
> >>
> >>    map.namespace 'admin' do |r|
> >>-    r.resources :hardware_profiles, :pool_families, :providers, 
> >>:provider_accounts, :realms, :roles, :settings
> >>+    r.resources :hardware_profiles, :pool_families, :providers, :realms, 
> >>:roles, :settings
> >>      r.resources :users, :collection =>  { :multi_destroy =>  :delete }
> >>+    r.resources :provider_accounts, :collection =>  { :multi_destroy =>  
> >>:delete }
> >>    end
> >>
> >>    map.resources :pools
> >>--
> >>1.7.3.3
> >>
> >>_______________________________________________
> >>deltacloud-devel mailing list
> >>[email protected]
> >>https://fedorahosted.org/mailman/listinfo/deltacloud-devel
> >
> >While testing this, I notice that on the 'new' form the columns and text 
> >fields are not nicely arranged. I don't know if this is due to a flawed 
> >local setup on my part or not. Please advise?
> >
> >Thanks,
> >Steve
> 
> Hey Steve,
> 
> That is a remnant of the old design -- I didn't get to fixing the
> CSS yet and the current styling breaks with the new layout.
> 
> I'll fix it asap, but right now the patch is more about the
> functionality. Sorry, I should have mentioned it sooner.
> 
> Thomas

Not a problem; I just wanted to be sure it wasn't a problem with my setup.

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

Reply via email to