On Wed, May 05, 2010 at 05:39:26PM -0400, Mohammed Morsi wrote:
> ---
>  src/app/controllers/cloud_accounts_controller.rb |   28 
> ++++++++++++++++++++++
>  src/app/controllers/provider_controller.rb       |    4 +-
>  src/app/models/cloud_account.rb                  |    7 +++++
>  src/app/views/cloud_accounts/_form.html.erb      |   12 +++++++++
>  src/app/views/cloud_accounts/edit.html.erb       |   10 ++++++++
>  src/app/views/provider/accounts.html.erb         |    4 +++
>  src/app/views/provider/new_account.html.erb      |   13 ++--------
>  7 files changed, 66 insertions(+), 12 deletions(-)
>  create mode 100644 src/app/views/cloud_accounts/_form.html.erb
>  create mode 100644 src/app/views/cloud_accounts/edit.html.erb
> 
> diff --git a/src/app/controllers/cloud_accounts_controller.rb 
> b/src/app/controllers/cloud_accounts_controller.rb
> index 26c1a63..05e024e 100644
> --- a/src/app/controllers/cloud_accounts_controller.rb
> +++ b/src/app/controllers/cloud_accounts_controller.rb
> @@ -66,5 +66,33 @@ class CloudAccountsController < ApplicationController
>      redirect_to :controller => "pool", :action => 'show', :id => @pool.id
>    end
>  
> +  def edit
> +    @cloud_account = CloudAccount.find(params[:id])
> +    @provider = @cloud_account.provider
> +    require_privilege(Privilege::ACCOUNT_MODIFY,@provider)
> +  end
>  
> +  def update
> +    @cloud_account = CloudAccount.find(params[:cloud_account][:id])
> +    require_privilege(Privilege::ACCOUNT_MODIFY,@cloud_account.provider)
> +    if @cloud_account.update_attributes(params[:cloud_account])
> +      flash[:notice] = "Cloud Account updated!"
> +      redirect_to :controller => 'provider', :action => 'accounts', :id => 
> @cloud_account.provider.id
> +    else
> +      render :action => :edit
> +    end
> +  end
> +
> +  def destroy
> +    acct = CloudAccount.find(params[:id])
> +    provider = acct.provider
> +    require_privilege(Privilege::ACCOUNT_MODIFY,provider)
> +    if acct.destroyable?
> +      CloudAccount.destroy(params[:id])
> +      flash[:notice] = "Cloud Account destroyed"
> +    else
> +      flash[:notice] = "Cloud Account could not be destroyed"
> +    end
> +    redirect_to :controller => 'provider', :action => 'accounts', :id => 
> provider.id
> +  end
>  end
> diff --git a/src/app/controllers/provider_controller.rb 
> b/src/app/controllers/provider_controller.rb
> index 0252a26..23b5ba0 100644
> --- a/src/app/controllers/provider_controller.rb
> +++ b/src/app/controllers/provider_controller.rb
> @@ -74,8 +74,8 @@ class ProviderController < ApplicationController
>  
>    def create_account
>       require_privilege(Privilege::ACCOUNT_MODIFY)
> -     @acct = CloudAccount.find_or_create(params[:account])
> -     @provider = Provider.find(params[:account][:provider_id])
> +     @acct = CloudAccount.find_or_create(params[:cloud_account])
> +     @provider = Provider.find(params[:cloud_account][:provider_id])
>       @provider.cloud_accounts << @acct
>       redirect_to :action => 'accounts', :id => @provider.id
>    end
> diff --git a/src/app/models/cloud_account.rb b/src/app/models/cloud_account.rb
> index 62cecc3..1d6b3e9 100644
> --- a/src/app/models/cloud_account.rb
> +++ b/src/app/models/cloud_account.rb
> @@ -38,6 +38,13 @@ class CloudAccount < ActiveRecord::Base
>             :include => [:role],
>             :order => "permissions.id ASC"
>  
> +
> +  before_destroy {|entry| entry.destroyable? }
> +
> +  def destroyable?
> +    self.instances.empty?
> +  end
> +
>    def connect
>      begin
>        return DeltaCloud.new(username, password, provider.url)
> diff --git a/src/app/views/cloud_accounts/_form.html.erb 
> b/src/app/views/cloud_accounts/_form.html.erb
> new file mode 100644
> index 0000000..9b7b176
> --- /dev/null
> +++ b/src/app/views/cloud_accounts/_form.html.erb
> @@ -0,0 +1,12 @@
> +<fieldset>
> +<legend>Account</legend>
> +<%= hidden_field :cloud_account,  :id %>
> +<%= hidden_field :cloud_account, :provider_id, :value => @provider.id %>
> +<ul>
> +<% if @cloud_account.nil? %>
> +<li><label>UserName<span>UserName for the account you wish to connect to 
> this pool.</span></label><%= text_field :cloud_account, :username %></li>
> +<% end %>
> +<li><label>Password<span>Password for the account you wish to connect to 
> this pool.</span></label><%=password_field :cloud_account, :password %></li>
> +</ul>
> +</fieldset>
> +<%= submit_tag "Save", :class => "submit" %>
> diff --git a/src/app/views/cloud_accounts/edit.html.erb 
> b/src/app/views/cloud_accounts/edit.html.erb
> new file mode 100644
> index 0000000..3ae86aa
> --- /dev/null
> +++ b/src/app/views/cloud_accounts/edit.html.erb
> @@ -0,0 +1,10 @@
> +<div class="dcloud_form">
> +  <%= error_messages_for 'cloud_account' %>
> +
> +  <h2>Edit Cloud Account</h2><br />
> +
> +  <% form_for @cloud_account, :url => { :action => 'update' } do |form| -%>
> +    <%= render :partial => 'form' %>
> +  <% end %>
> +
> +</div>
> diff --git a/src/app/views/provider/accounts.html.erb 
> b/src/app/views/provider/accounts.html.erb
> index 595443d..a763a33 100644
> --- a/src/app/views/provider/accounts.html.erb
> +++ b/src/app/views/provider/accounts.html.erb
> @@ -5,12 +5,16 @@
>        <thead>
>          <tr>
>          <th scope="col">Username</th>
> +        <th scope="col"></th>
> +        <th scope="col"></th>
>          </tr>
>        </thead>
>        <tbody>
>    <%[email protected]_accounts.each {|acct| %>
>          <tr>
>            <td><%= acct.username %></td>
> +          <td><%= link_to "Edit",   {:controller => 'cloud_accounts', 
> :action => 'edit', :id => acct.id}    if has_account_modify?(@provider) 
> %></td>
> +          <td><%= link_to "Delete", {:controller => 'cloud_accounts', 
> :action => 'destroy', :id => acct.id} if has_account_modify?(@provider) && 
> acct.destroyable? %></td>
>          </tr>
>        <% } %>
>      </tbody>
> diff --git a/src/app/views/provider/new_account.html.erb 
> b/src/app/views/provider/new_account.html.erb
> index b9ae229..eed474f 100644
> --- a/src/app/views/provider/new_account.html.erb
> +++ b/src/app/views/provider/new_account.html.erb
> @@ -4,15 +4,8 @@
>  
>    <h2>Create an Account for this Provider</h2><br />
>  
> -  <% form_tag :action => 'create_account' do -%>
> -    <fieldset>
> -    <legend>Account</legend>
> -    <ul>
> -    <li><label>UserName<span>UserName for the account you wish to connect to 
> this pool.</span></label><%= text_field :account, :username %></li>
> -    <li><label>Password<span>Password for the account you wish to connect to 
> this pool.</span></label><%=password_field :account, :password %></li>
> -    </ul>
> -    <%=hidden_field :account, :provider_id, :value => @provider.id %>
> -    </fieldset>
> -    <%= submit_tag "Save", :class => "submit" %>
> +  <% form_tag :action => 'create_account' do |form| -%>
> +    <%= render :partial => 'cloud_accounts/form' %>
>    <% end %>
> +
>  </div>
> -- 
> 1.6.2.5
> 
> _______________________________________________
> deltacloud-devel mailing list
> [email protected]
> https://fedorahosted.org/mailman/listinfo/deltacloud-devel

WFM. ACK.

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

Reply via email to