On Fri, Mar 19, 2010 at 02:14:16PM -0400, Jason Guiditta wrote:
> 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?
Well, we only (I assumed) want to see accounts that we can add, but we could
also grey out those accounts that they have VIEW on.
> > + 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