On Thu, Dec 23, 2010 at 04:01:21PM +0100, Jozef Zigmund wrote:
On 12/22/2010 07:15 PM, tsedovic@redhat.com wrote:
From: Tomas Sedovictsedovic@redhat.com
.../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
this line ^^ should be render :action => 'edit', now you will get an error
- 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:
- = link_to "All", @url_params.merge(:select => 'all')
- %span> ,
- = 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
It's working fine, but i've found little bug (in controller, action update, comment is inline). After remove this, you can feel free to push it. ACK.
-- Jozef Zigmund Associate Software Engineer, Deltacloud
deltacloud-devel mailing list deltacloud-devel@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/deltacloud-devel
ACK here, too.
Thank you for catching that Jozef; I missed it.
Steve