On Thu, 2010-03-18 at 22:00 -0500, Steve Linabery wrote: > Also, add 'create and add new cloud account from portal pool view'. > Added link on provider view to see existing accounts & add new accounts. > With the functionality added by this patch, I'm able to start Mock instances. > Handy for demos! > --- > src/app/controllers/cloud_accounts_controller.rb | 67 > ++++++++++++++++++++ > src/app/controllers/portal_pool_controller.rb | 22 +++++++ > src/app/views/cloud_accounts/_form.erb | 13 ++++ > src/app/views/cloud_accounts/new.html.erb | 14 ++++ > .../views/cloud_accounts/new_from_pool.html.erb | 11 +++ > src/app/views/portal_pool/accounts.html.erb | 2 +- > .../views/portal_pool/accounts_for_pool.html.erb | 36 +++++++++++ > 7 files changed, 164 insertions(+), 1 deletions(-) > create mode 100644 src/app/controllers/cloud_accounts_controller.rb > create mode 100644 src/app/views/cloud_accounts/_form.erb > create mode 100644 src/app/views/cloud_accounts/new.html.erb > create mode 100644 src/app/views/cloud_accounts/new_from_pool.html.erb > create mode 100644 src/app/views/portal_pool/accounts_for_pool.html.erb > > diff --git a/src/app/controllers/cloud_accounts_controller.rb > b/src/app/controllers/cloud_accounts_controller.rb > new file mode 100644 > index 0000000..8f43981 > --- /dev/null > +++ b/src/app/controllers/cloud_accounts_controller.rb > @@ -0,0 +1,67 @@ > +# > +# Copyright (C) 2010 Red Hat, Inc. > +# > +# This program is free software; you can redistribute it and/or modify > +# it under the terms of the GNU General Public License as published by > +# the Free Software Foundation; version 2 of the License. > +# > +# This program is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program; if not, write to the Free Software > +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, > +# MA 02110-1301, USA. A copy of the GNU General Public License is > +# also available at http://www.gnu.org/copyleft/gpl.html. > + > +# Filters added to this controller apply to all controllers in the > application. > +# Likewise, all the methods added will be available for all controllers. > + > +class CloudAccountsController < ApplicationController > + before_filter :require_user > + > + def new > + @cloud_account = CloudAccount.new This whole block below can be: @providers = Provider.list_for_user(@current_user, Privilege::PROVIDER_VIEW) > + @providers = [] > + all_providers = Provider.all > + all_providers.each {|provider| > + @providers << provider if > authorized?(Privilege::PROVIDER_VIEW,provider) > + } > + end > + > + def new_from_pool > + @pool = PortalPool.find(params[:pool_id]) > + require_privilege(Privilege::ACCOUNT_ADD,@pool) > + @cloud_account = CloudAccount.new same here: @providers = Provider.list_for_user(@current_user, Privilege::PROVIDER_VIEW) > + @providers = [] > + all_providers = Provider.all > + all_providers.each {|provider| > + @providers << provider if > authorized?(Privilege::PROVIDER_VIEW,provider) > + } > + end > + > + > + def create > + @cloud_account = CloudAccount.new(params[:cloud_account]) > + @provider = Provider.find(params[:provider][:id]) > + require_privilege(Privilege::ACCOUNT_MODIFY,@provider) > + @cloud_account.provider = @provider > + @cloud_account.save! > + end > + > + def create_from_pool > + @pool = PortalPool.find(params[:pool][:id]) > + @cloud_account = CloudAccount.new(params[:cloud_account]) > + @provider = Provider.find(params[:provider][:id]) > + @cloud_account.provider = @provider > + @cloud_account.save! > + @pool.cloud_accounts << @cloud_account unless > @pool.cloud_accounts.map{|x| x.id}.include?(@cloud_account.id) > + @pool.save! > + @pool.populate_realms_and_images([...@cloud_account]) > + redirect_to :controller => "portal_pool", :action => 'show', :id => > @pool.id > + end > + > + > +end > diff --git a/src/app/controllers/portal_pool_controller.rb > b/src/app/controllers/portal_pool_controller.rb > index 1897fc9..0f2c8d4 100644 > --- a/src/app/controllers/portal_pool_controller.rb > +++ b/src/app/controllers/portal_pool_controller.rb > @@ -77,4 +77,26 @@ class PortalPoolController < ApplicationController > > def delete > end > + > + def accounts_for_pool > + @pool = PortalPool.find(params[:pool_id]) > + require_privilege(Privilege::ACCOUNT_ADD,@pool) > + @cloud_accounts = [] > + all_accounts = CloudAccount.all > + all_accounts.each {|account| > + if authorized?(Privilege::ACCOUNT_VIEW,account) && > authorized?(Privilege::ACCOUNT_ADD,account) > + @cloud_accounts << account unless @pool.cloud_accounts.map{|x| > x.id}.include?(account.id) > + end > + } Why does this ^ need both ADD and VIEW? it appears we are just viewing here, no? > + end > + > + def add_account > + @portal_pool = PortalPool.find(params[:portal_pool]) > + @cloud_account = CloudAccount.find(params[:cloud_account]) > + @portal_pool.cloud_accounts << @cloud_account unless > @portal_pool.cloud_accounts.map{|x| x.id}.include?(@cloud_account.id) > + @portal_pool.save! > + @portal_pool.populate_realms_and_images([...@cloud_account]) > + redirect_to :action => 'show', :id => @portal_pool.id > + end > + > end > diff --git a/src/app/views/cloud_accounts/_form.erb > b/src/app/views/cloud_accounts/_form.erb > new file mode 100644 > index 0000000..4fa1a79 > --- /dev/null > +++ b/src/app/views/cloud_accounts/_form.erb > @@ -0,0 +1,13 @@ > +<ul> > + <li> > + <%= form.label :username, "Cloud Account username" %> > + <%= form.text_field :username %> > + </li> > + <li> > + <%= form.label :password, "Cloud Account password" %> > + <%= form.password_field :password %> > + </li> > + <li> > + <%= select("provider", "id", @providers.map{|p| [p.name,p.id]} , { > :include_blank => false }) %> > + </li> > +</ul> > diff --git a/src/app/views/cloud_accounts/new.html.erb > b/src/app/views/cloud_accounts/new.html.erb > new file mode 100644 > index 0000000..40f32cb > --- /dev/null > +++ b/src/app/views/cloud_accounts/new.html.erb > @@ -0,0 +1,14 @@ > +<% if @providers.size == 0 %> > +<h1>No Providers available to associate with a new cloud account</h1> > +<% else %> > +<h2 class="greeting">New Cloud Account</h2> > + > +<div class="dcloud_form"> > + <% form_for @cloud_account, :url => { :action => "create" } do |f| %> > + <%= f.error_messages %> > + <%= render :partial => "form", :object => f %> > + <%= f.submit "Create Cloud Account", :class => "submit" %> > + <% end %> > + <%= link_to "Cancel", root_path, :class => 'actionlink' %> > +</div> > +<% end %> > diff --git a/src/app/views/cloud_accounts/new_from_pool.html.erb > b/src/app/views/cloud_accounts/new_from_pool.html.erb > new file mode 100644 > index 0000000..747df03 > --- /dev/null > +++ b/src/app/views/cloud_accounts/new_from_pool.html.erb > @@ -0,0 +1,11 @@ > +<h2 class="greeting">New Cloud Account</h2> > + > +<div class="dcloud_form"> > + <% form_for @cloud_account, :url => { :action => "create_from_pool" } do > |f| %> > + <%= f.error_messages %> > + <%= render :partial => "form", :object => f %> > + <%= hidden_field :pool, :id %> > + <%= f.submit "Create Cloud Account", :class => "submit" %> > + <% end %> > + <%= link_to "Cancel", root_path, :class => 'actionlink' %> > +</div> > diff --git a/src/app/views/portal_pool/accounts.html.erb > b/src/app/views/portal_pool/accounts.html.erb > index 81a8a76..e6b4f1c 100644 > --- a/src/app/views/portal_pool/accounts.html.erb > +++ b/src/app/views/portal_pool/accounts.html.erb > @@ -18,6 +18,6 @@ > </tbody> > </table> > <% end %> > -<%= link_to "View/Add Existing Cloud Accounts", {:controller => > "cloud_accounts",:action => "accounts_for_pool", :pool_id => @pool}, > :class=>"actionlink" %> > +<%= link_to "View/Add Existing Cloud Accounts", {:controller => > "portal_pool",:action => "accounts_for_pool", :pool_id => @pool}, > :class=>"actionlink" %> > <%= link_to "Add a New Cloud Account", {:controller => > "cloud_accounts",:action => "new_from_pool", :pool_id => @pool}, > :class=>"actionlink" %><br/> > > diff --git a/src/app/views/portal_pool/accounts_for_pool.html.erb > b/src/app/views/portal_pool/accounts_for_pool.html.erb > new file mode 100644 > index 0000000..e273551 > --- /dev/null > +++ b/src/app/views/portal_pool/accounts_for_pool.html.erb > @@ -0,0 +1,36 @@ > +<% if @pool.cloud_accounts.size > 0 %> > +<h1>These Cloud Accounts are already attached to this pool</h1> > +<table> > +<thead> > +<tr> > +<th scope="col">Provider Name</th> > +<th scope="col">Cloud Account User Name</th> > +</tr> > +<% @pool.cloud_accounts.each {|a| %> > +<tr> > +<td><%= a.provider.name %></td> > +<td><%= a.username %></td> > +</tr> > +<% } %> > +</table> > +<% end %> > + > +<% if @cloud_accounts.size == 0 %> > +<h1>There are no existing Cloud Accounts available to add</h1> > +<% else %> > +<h1>These Cloud Accounts are available to add</h1> > +<table> > +<thead> > +<tr> > +<th scope="col">Provider Name</th> > +<th scope="col">Cloud Account User Name</th> > +</tr> > +<% @cloud_accounts.each {|a| %> > +<tr> > +<td><%= a.provider.name %></td> > +<td><%= a.username %> <%= link_to "Add this account", {:controller=> > "portal_pool", > + :action => "add_account", :portal_pool => @pool, :cloud_account => a}, > :class => "actionlink" %></td> > +</tr> > +<% } %> > +</table> > +<% end %>
_______________________________________________ deltacloud-devel mailing list [email protected] https://fedorahosted.org/mailman/listinfo/deltacloud-devel
