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: > >>+ = 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 > >>-- > >>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
