---
 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

Reply via email to