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