Tightening up deltacloud security
by Mo Morsi
I just spent a few cycles going over the deltacloud overview diagram,
figuring out which components and communication buses need to be locked
down in terms of encryption, authentication, and authorization. Here are
my findings in hopes of facilitating a discussion around this (feel free
to shout out if you think anything can or should be changed, by no means
is this set in stone). If it looks good for the most part I will begin
implementing this in the deltacloud installer/configuration recipe next
week (after I get back to and integrate Mike's feedback to my last
recipe patchset).
Communication which needs to be secured:
----------------------------------------
End User -> Aggregator WUI: http (apache)
iwhd & core -> Cloud Providers: http (cloud specific)
Aggregator & image_builder_agent -> iwhd: http (libmicrohttpd)
image_builder_console -> image_builder_agent: qmf
image_builder_service, aggregator wui, condor_refershd, dbomatic ->
database: postgres
condormatic -> condor: condor
libdeltacloud, deltacloudc -> deltacloudd: http (thin/webrick)
Other communication which does not need to be secured:
----------------------------------------
Apache -> Thin (for aggregator wui, running on same box)
dbomatic -> condor (log parsing)
Components needing authentication/authorization
----------------------------------------
Aggregator wui
Condor
image_builder_agent
iwhd
core
db
Specific Tasks:
----------------------------------------
* setup mod_ssl for apache in recipe, ensure aggregator wui is
accessible via https
* configure ssl support for postgres in recipe
* configure ssl support for qpid broker and client for
image_builder_agent/console
* configure ssl support in libmicrohttpd for iwhd, or if we cannot,
restrict to local traffic only and forward approprate public traffic
from apache
* setup ssl for condor and lock condor down to only accept commands from
aggregator wui and condor_refreshd
* restrict core's thin & webrick servers to local traffic only, forward
public traffic from apache
* setup and assign certificates for various services which require them
(auto assign to clients who cant prompt user to verify certificates)
* install kerberos, ldap, freeipa for user authentication/authorization
and management
- verify user on login in aggregator wui
- verify user has permission to submit jobs to scheduler
- verify user has permission to run requests on specific core drivers
/ backend cloud providers (another job requirement when instances are
being scheduled, etc)
- verify user has permission to build images of certain types and
store them in the image warehouse
Eventually:
----------------------------------------
* tighten up postgres user access, create different users w/ limited
roles for the various deltacloud services (for aggregator wui,
condor_refreshd, dbomatic, image_builder_service)
* look into various cloud provider security solutions, how to integrate
into core if not done already (communicate w/ cloud provider web
services via ssl)
-Mo
13 years, 5 months
[PATCH aeolus] Added placeholders, views for deployments
by Martyn Taylor
From: Martyn Taylor <mtaylor(a)redhat.com>
Adds placeholders, currently no functionality since we do not have the deployment model in place
---
.../resources/deployments_controller.rb | 31 +++++++++++++++++++-
src/app/stylesheets/newui.scss | 16 ++++++++++
src/app/views/resources/deployments/_history.haml | 1 +
.../views/resources/deployments/_instances.haml | 2 +
src/app/views/resources/deployments/_list.haml | 20 +++++++++++++
.../views/resources/deployments/_permissions.haml | 2 +
.../views/resources/deployments/_properties.haml | 2 +
.../resources/deployments/_provider_services.haml | 1 +
.../resources/deployments/_required_services.haml | 1 +
src/app/views/resources/deployments/index.haml | 3 +-
src/app/views/resources/deployments/show.haml | 5 +++
11 files changed, 82 insertions(+), 2 deletions(-)
create mode 100644 src/app/views/resources/deployments/_history.haml
create mode 100644 src/app/views/resources/deployments/_instances.haml
create mode 100644 src/app/views/resources/deployments/_list.haml
create mode 100644 src/app/views/resources/deployments/_permissions.haml
create mode 100644 src/app/views/resources/deployments/_properties.haml
create mode 100644 src/app/views/resources/deployments/_provider_services.haml
create mode 100644 src/app/views/resources/deployments/_required_services.haml
create mode 100644 src/app/views/resources/deployments/show.haml
diff --git a/src/app/controllers/resources/deployments_controller.rb b/src/app/controllers/resources/deployments_controller.rb
index fecdfae..7d5d9be 100644
--- a/src/app/controllers/resources/deployments_controller.rb
+++ b/src/app/controllers/resources/deployments_controller.rb
@@ -1,6 +1,35 @@
class Resources::DeploymentsController < ApplicationController
before_filter :require_user
+ before_filter :load_deployments, :only => [:index, :show]
def index
end
-end
+
+ def show
+ @tab_captions = ['Properties', 'Instances', 'Provider Services', 'Required Services', 'History', 'Permissions']
+ @details_tab = params[:details_tab].blank? ? 'properties' : params[:details_tab]
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :action => 'show'}
+ end
+ @url_params = params.clone
+ end
+
+ private
+ def load_deployments
+ @url_params = params
+ @header = [
+ { :name => "Deployment name", :sort_attr => :name },
+ { :name => "Deployable", :sortable => false },
+ { :name => "Deployment Owner", :sort_attr => "owner.last_name"},
+ { :name => "Running Since", :sort_attr => :running_since },
+ { :name => "Heath Metric", :sort_attr => :health },
+ { :name => "Pool", :sort_attr => "pool.name" }
+ ]
+ end
+end
\ No newline at end of file
diff --git a/src/app/stylesheets/newui.scss b/src/app/stylesheets/newui.scss
index 4eb16e6..a2ba8e3 100644
--- a/src/app/stylesheets/newui.scss
+++ b/src/app/stylesheets/newui.scss
@@ -1353,6 +1353,22 @@ $content-left: 180px;
}
}
+#object-actions {
+ position: relative;
+ float: left;
+ width: 100%;
+}
+
+#search-actions {
+ position: relative;
+ float: right;
+}
+
+#selections {
+ position: relative;
+ float: left;
+}
+
#details-view {
border: 1px solid;
position: absolute;
diff --git a/src/app/views/resources/deployments/_history.haml b/src/app/views/resources/deployments/_history.haml
new file mode 100644
index 0000000..9f4a57e
--- /dev/null
+++ b/src/app/views/resources/deployments/_history.haml
@@ -0,0 +1 @@
+%h3 List of deployment events
diff --git a/src/app/views/resources/deployments/_instances.haml b/src/app/views/resources/deployments/_instances.haml
new file mode 100644
index 0000000..2ac1792
--- /dev/null
+++ b/src/app/views/resources/deployments/_instances.haml
@@ -0,0 +1,2 @@
+%h3 List Instances for Deployment
+%h3 "Expand" button shifts list view to show the Instance list
diff --git a/src/app/views/resources/deployments/_list.haml b/src/app/views/resources/deployments/_list.haml
new file mode 100644
index 0000000..6c3dee8
--- /dev/null
+++ b/src/app/views/resources/deployments/_list.haml
@@ -0,0 +1,20 @@
+- form_tag do |f|
+ #object-actions
+ = restful_submit_tag "Start", "start", resources_deployments_path, "PUT"
+ = restful_submit_tag "Stop", "stop", resources_deployments_path, "PUT"
+ = restful_submit_tag "Delete", "delete", resources_deployments_path, "DELETE"
+
+ #search-actions
+ = restful_submit_tag "Save Search", "save_search", resources_deployments_path, "PUT"
+ = restful_submit_tag "Save Selection", "save_selection", resources_deployments_path, "PUT"
+ = restful_submit_tag "Export to File", "export", resources_deployments_path, "PUT"
+
+ #selections
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+
+%table
+ = sortable_table_header @header
\ No newline at end of file
diff --git a/src/app/views/resources/deployments/_permissions.haml b/src/app/views/resources/deployments/_permissions.haml
new file mode 100644
index 0000000..dd88c8e
--- /dev/null
+++ b/src/app/views/resources/deployments/_permissions.haml
@@ -0,0 +1,2 @@
+%h3 Users and roles they are in for this Deployment
+%h3 Manage permissions on tehi deployment (if you have permissions to do so)
diff --git a/src/app/views/resources/deployments/_properties.haml b/src/app/views/resources/deployments/_properties.haml
new file mode 100644
index 0000000..5d2c584
--- /dev/null
+++ b/src/app/views/resources/deployments/_properties.haml
@@ -0,0 +1,2 @@
+%h3 Owner Details
+%h3 CDL
diff --git a/src/app/views/resources/deployments/_provider_services.haml b/src/app/views/resources/deployments/_provider_services.haml
new file mode 100644
index 0000000..435f470
--- /dev/null
+++ b/src/app/views/resources/deployments/_provider_services.haml
@@ -0,0 +1 @@
+%h3 List of services required by deployment
diff --git a/src/app/views/resources/deployments/_required_services.haml b/src/app/views/resources/deployments/_required_services.haml
new file mode 100644
index 0000000..30e7601
--- /dev/null
+++ b/src/app/views/resources/deployments/_required_services.haml
@@ -0,0 +1 @@
+%h3 List of services required by deployment
diff --git a/src/app/views/resources/deployments/index.haml b/src/app/views/resources/deployments/index.haml
index fdc537d..d051c94 100644
--- a/src/app/views/resources/deployments/index.haml
+++ b/src/app/views/resources/deployments/index.haml
@@ -1 +1,2 @@
-resources/deployments/index.haml
+- content_for :list do
+ = render :partial => 'list'
\ No newline at end of file
diff --git a/src/app/views/resources/deployments/show.haml b/src/app/views/resources/deployments/show.haml
new file mode 100644
index 0000000..a5a777d
--- /dev/null
+++ b/src/app/views/resources/deployments/show.haml
@@ -0,0 +1,5 @@
+- content_for :list do
+ = render :partial => 'list'
+
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
\ No newline at end of file
--
1.7.2.3
13 years, 5 months
[PATCH aeolus] Added placeholders, views for deployments
by Martyn Taylor
From: Martyn Taylor <mtaylor(a)redhat.com>
Adds placeholders, currently no functionality since we do not have the deployment model in place
---
.../resources/deployments_controller.rb | 28 +++++++++++++++++++-
src/app/stylesheets/newui.scss | 16 +++++++++++
src/app/views/resources/deployments/_history.haml | 1 +
.../views/resources/deployments/_instances.haml | 2 +
src/app/views/resources/deployments/_list.haml | 20 ++++++++++++++
.../views/resources/deployments/_permissions.haml | 2 +
.../views/resources/deployments/_properties.haml | 2 +
.../resources/deployments/_provider_services.haml | 1 +
.../resources/deployments/_required_services.haml | 1 +
src/app/views/resources/deployments/index.haml | 3 +-
src/app/views/resources/deployments/show.haml | 4 +++
11 files changed, 78 insertions(+), 2 deletions(-)
create mode 100644 src/app/views/resources/deployments/_history.haml
create mode 100644 src/app/views/resources/deployments/_instances.haml
create mode 100644 src/app/views/resources/deployments/_list.haml
create mode 100644 src/app/views/resources/deployments/_permissions.haml
create mode 100644 src/app/views/resources/deployments/_properties.haml
create mode 100644 src/app/views/resources/deployments/_provider_services.haml
create mode 100644 src/app/views/resources/deployments/_required_services.haml
create mode 100644 src/app/views/resources/deployments/show.haml
diff --git a/src/app/controllers/resources/deployments_controller.rb b/src/app/controllers/resources/deployments_controller.rb
index fecdfae..11a35d4 100644
--- a/src/app/controllers/resources/deployments_controller.rb
+++ b/src/app/controllers/resources/deployments_controller.rb
@@ -1,6 +1,32 @@
class Resources::DeploymentsController < ApplicationController
before_filter :require_user
+ before_filter :load_deployments, :only => [:index, :show]
def index
end
-end
+
+ def show
+ if params[:details_tab].blank?
+ @details_tab = 'properties'
+ else
+ @details_tab = params[:details_tab]
+ end
+ if params[:ajax] == 'true'
+ render :partial => @details_tab
+ return
+ end
+ @url_params = params.clone
+ end
+
+ private
+ def load_deployments
+ @header = [
+ { :name => "Deployment name", :sort_attr => :name },
+ { :name => "Deployable", :sortable => false },
+ { :name => "Deployment Owner", :sort_attr => "owner.last_name"},
+ { :name => "Running Since", :sort_attr => :running_since },
+ { :name => "Heath Metric", :sort_attr => :health },
+ { :name => "Pool", :sort_attr => "pool.name" }
+ ]
+ end
+end
\ No newline at end of file
diff --git a/src/app/stylesheets/newui.scss b/src/app/stylesheets/newui.scss
index 4eb16e6..a2ba8e3 100644
--- a/src/app/stylesheets/newui.scss
+++ b/src/app/stylesheets/newui.scss
@@ -1353,6 +1353,22 @@ $content-left: 180px;
}
}
+#object-actions {
+ position: relative;
+ float: left;
+ width: 100%;
+}
+
+#search-actions {
+ position: relative;
+ float: right;
+}
+
+#selections {
+ position: relative;
+ float: left;
+}
+
#details-view {
border: 1px solid;
position: absolute;
diff --git a/src/app/views/resources/deployments/_history.haml b/src/app/views/resources/deployments/_history.haml
new file mode 100644
index 0000000..9f4a57e
--- /dev/null
+++ b/src/app/views/resources/deployments/_history.haml
@@ -0,0 +1 @@
+%h3 List of deployment events
diff --git a/src/app/views/resources/deployments/_instances.haml b/src/app/views/resources/deployments/_instances.haml
new file mode 100644
index 0000000..2ac1792
--- /dev/null
+++ b/src/app/views/resources/deployments/_instances.haml
@@ -0,0 +1,2 @@
+%h3 List Instances for Deployment
+%h3 "Expand" button shifts list view to show the Instance list
diff --git a/src/app/views/resources/deployments/_list.haml b/src/app/views/resources/deployments/_list.haml
new file mode 100644
index 0000000..6c3dee8
--- /dev/null
+++ b/src/app/views/resources/deployments/_list.haml
@@ -0,0 +1,20 @@
+- form_tag do |f|
+ #object-actions
+ = restful_submit_tag "Start", "start", resources_deployments_path, "PUT"
+ = restful_submit_tag "Stop", "stop", resources_deployments_path, "PUT"
+ = restful_submit_tag "Delete", "delete", resources_deployments_path, "DELETE"
+
+ #search-actions
+ = restful_submit_tag "Save Search", "save_search", resources_deployments_path, "PUT"
+ = restful_submit_tag "Save Selection", "save_selection", resources_deployments_path, "PUT"
+ = restful_submit_tag "Export to File", "export", resources_deployments_path, "PUT"
+
+ #selections
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+
+%table
+ = sortable_table_header @header
\ No newline at end of file
diff --git a/src/app/views/resources/deployments/_permissions.haml b/src/app/views/resources/deployments/_permissions.haml
new file mode 100644
index 0000000..dd88c8e
--- /dev/null
+++ b/src/app/views/resources/deployments/_permissions.haml
@@ -0,0 +1,2 @@
+%h3 Users and roles they are in for this Deployment
+%h3 Manage permissions on tehi deployment (if you have permissions to do so)
diff --git a/src/app/views/resources/deployments/_properties.haml b/src/app/views/resources/deployments/_properties.haml
new file mode 100644
index 0000000..5d2c584
--- /dev/null
+++ b/src/app/views/resources/deployments/_properties.haml
@@ -0,0 +1,2 @@
+%h3 Owner Details
+%h3 CDL
diff --git a/src/app/views/resources/deployments/_provider_services.haml b/src/app/views/resources/deployments/_provider_services.haml
new file mode 100644
index 0000000..435f470
--- /dev/null
+++ b/src/app/views/resources/deployments/_provider_services.haml
@@ -0,0 +1 @@
+%h3 List of services required by deployment
diff --git a/src/app/views/resources/deployments/_required_services.haml b/src/app/views/resources/deployments/_required_services.haml
new file mode 100644
index 0000000..30e7601
--- /dev/null
+++ b/src/app/views/resources/deployments/_required_services.haml
@@ -0,0 +1 @@
+%h3 List of services required by deployment
diff --git a/src/app/views/resources/deployments/index.haml b/src/app/views/resources/deployments/index.haml
index fdc537d..d051c94 100644
--- a/src/app/views/resources/deployments/index.haml
+++ b/src/app/views/resources/deployments/index.haml
@@ -1 +1,2 @@
-resources/deployments/index.haml
+- content_for :list do
+ = render :partial => 'list'
\ No newline at end of file
diff --git a/src/app/views/resources/deployments/show.haml b/src/app/views/resources/deployments/show.haml
new file mode 100644
index 0000000..894decb
--- /dev/null
+++ b/src/app/views/resources/deployments/show.haml
@@ -0,0 +1,4 @@
+- content_for :list do
+ = render :partial => 'list'
+
+= render :partial => 'layouts/details_pane', :locals => { :tabs => ['Properties', 'Instances', 'Provider Services', 'Required Services', 'History', 'Permissions'] }
--
1.7.2.3
13 years, 5 months
[PATCH aggregator] New UI for Admin/Roles
by lmartinc@redhat.com
From: Ladislav Martincik <lmartinc(a)redhat.com>
---
src/app/controllers/admin/roles_controller.rb | 56 ++++++++++++++++++++++++-
src/app/views/admin/roles/_form.haml | 8 ++++
src/app/views/admin/roles/_list.haml | 16 +++++++
src/app/views/admin/roles/edit.haml | 4 ++
src/app/views/admin/roles/index.haml | 3 +-
src/app/views/admin/roles/new.haml | 3 +
src/app/views/admin/roles/show.haml | 8 ++++
src/config/routes.rb | 3 +-
src/features/role.feature | 39 +++++++++++++++++
src/features/step_definitions/role_steps.rb | 24 +++++++++++
src/features/step_definitions/user_steps.rb | 4 +-
src/features/support/paths.rb | 3 +
12 files changed, 166 insertions(+), 5 deletions(-)
create mode 100644 src/app/views/admin/roles/_form.haml
create mode 100644 src/app/views/admin/roles/_list.haml
create mode 100644 src/app/views/admin/roles/edit.haml
create mode 100644 src/app/views/admin/roles/new.haml
create mode 100644 src/app/views/admin/roles/show.haml
create mode 100644 src/features/role.feature
create mode 100644 src/features/step_definitions/role_steps.rb
diff --git a/src/app/controllers/admin/roles_controller.rb b/src/app/controllers/admin/roles_controller.rb
index 95868d4..3749c55 100644
--- a/src/app/controllers/admin/roles_controller.rb
+++ b/src/app/controllers/admin/roles_controller.rb
@@ -1,6 +1,60 @@
class Admin::RolesController < ApplicationController
before_filter :require_user
+ before_filter :load_roles, :only => [:index, :show]
- def index
+ def create
+ @role = Role.new(params[:role])
+
+ # TODO: (lmartinc) Fix this and let user select the scope. Consult with sseago.
+ @role.scope = BasePermissionObject.to_s if @role.scope.nil?
+
+ if @role.save
+ flash[:notice] = 'Role successfully saved!'
+ redirect_to admin_roles_path and return
+ end
+
+ render :action => 'new'
+ end
+
+ def show
+ @role = Role.find(params[:id])
+ end
+
+ def edit
+ @role = Role.find(params[:id])
+ end
+
+ def update
+ @role = Role.find(params[:id])
+
+ if params[:commit] == "Reset"
+ redirect_to edit_admin_role_url(@role) and return
+ end
+
+ if @role.update_attributes(params[:role])
+ flash[:notice] = 'Role updated successfully!'
+ redirect_to admin_roles_url and return
+ end
+
+ render :action => 'edit'
+ end
+
+ def multi_destroy
+ Role.destroy(params[:role_selected])
+ redirect_to admin_roles_url
end
+
+ protected
+
+ def load_roles
+ @header = [
+ { :name => "Role name", :sort_attr => :name }
+ ]
+ @roles = Role.paginate(:all,
+ :page => params[:page] || 1,
+ :order => (params[:order_field] || 'name') +' '+ (params[:order_dir] || 'asc')
+ )
+ @url_params = params.clone
+ end
+
end
diff --git a/src/app/views/admin/roles/_form.haml b/src/app/views/admin/roles/_form.haml
new file mode 100644
index 0000000..fc10dd2
--- /dev/null
+++ b/src/app/views/admin/roles/_form.haml
@@ -0,0 +1,8 @@
+= form.error_messages
+%fieldset.clear
+ = form.label :name, 'Name', :class => "grid_3 alpha"
+ = form.text_field :name, :class => "grid_5"
+%fieldset.clearfix
+ = form.submit "Save", :class => "submit formbutton"
+ = form.submit "Reset", :class => "submit formbutton"
+ = link_to t(:cancel), admin_roles_path, :class => 'button formbutton'
diff --git a/src/app/views/admin/roles/_list.haml b/src/app/views/admin/roles/_list.haml
new file mode 100644
index 0000000..1c86a8c
--- /dev/null
+++ b/src/app/views/admin/roles/_list.haml
@@ -0,0 +1,16 @@
+- form_tag do
+ = restful_submit_tag "New Role", "new", new_admin_role_path, 'GET'
+ = restful_submit_tag "Destroy", "destroy", multi_destroy_admin_roles_path, 'DELETE'
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+ %table
+ = sortable_table_header @header
+ - @roles.each do |role|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ %input{:name => "role_selected[]", :type => "checkbox", :value => role.id, :id => "role_checkbox_#{role.id}", :checked => selected }
+ = link_to role.name, admin_role_path(role)
diff --git a/src/app/views/admin/roles/edit.haml b/src/app/views/admin/roles/edit.haml
new file mode 100644
index 0000000..7aa428e
--- /dev/null
+++ b/src/app/views/admin/roles/edit.haml
@@ -0,0 +1,4 @@
+%h2 Editing Role: #{(a)role.name}
+
+- form_for @role, :url => admin_role_path(@role), :html => { :method => :put } do |f|
+ = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/admin/roles/index.haml b/src/app/views/admin/roles/index.haml
index d063630..62ccbc6 100644
--- a/src/app/views/admin/roles/index.haml
+++ b/src/app/views/admin/roles/index.haml
@@ -1 +1,2 @@
-admin/roles/index.haml
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/admin/roles/new.haml b/src/app/views/admin/roles/new.haml
new file mode 100644
index 0000000..7fe46ba
--- /dev/null
+++ b/src/app/views/admin/roles/new.haml
@@ -0,0 +1,3 @@
+%h2 New Role
+- form_for Role.new, :url => admin_roles_path do |f|
+ = render :partial => "form", :locals => { :form => f }
diff --git a/src/app/views/admin/roles/show.haml b/src/app/views/admin/roles/show.haml
new file mode 100644
index 0000000..5f083d4
--- /dev/null
+++ b/src/app/views/admin/roles/show.haml
@@ -0,0 +1,8 @@
+-content_for :list do
+ = render :partial => 'list'
+-content_for :details do
+ .grid_13
+ %h2 #{(a)role.name}
+ %strong Scope:
+ %span #{(a)role.scope}
+ = link_to t(:edit), edit_admin_role_path(@role), :class => 'button formbutton'
diff --git a/src/config/routes.rb b/src/config/routes.rb
index 5dd6560..052eba5 100644
--- a/src/config/routes.rb
+++ b/src/config/routes.rb
@@ -43,8 +43,9 @@ ActionController::Routing::Routes.draw do |map|
map.connect '/set_layout', :controller => 'application', :action => 'set_layout'
map.namespace 'admin' do |r|
- r.resources :hardware_profiles, :pool_families, :providers, :provider_accounts, :realms, :roles, :settings
+ r.resources :hardware_profiles, :pool_families, :providers, :provider_accounts, :realms, :settings
r.resources :users, :collection => { :multi_destroy => :delete }
+ r.resources :roles, :collection => { :multi_destroy => :delete }
end
map.resources :pools
diff --git a/src/features/role.feature b/src/features/role.feature
new file mode 100644
index 0000000..1975f5a
--- /dev/null
+++ b/src/features/role.feature
@@ -0,0 +1,39 @@
+Feature: Manage Roles
+ In order to manage roles
+ As an admin
+ I want to add/edit/remove roles
+
+ Background:
+ Given I am an authorised user
+ And I am logged in
+ And there's no role
+ And a role "Captan" exists
+ And I am using new UI
+
+ Scenario: Change the name
+ Given I am on the admin roles page
+ And there is a role "Captan"
+ When I follow "Captan"
+ And I follow "Edit"
+ Then I should see "Editing Role:"
+ When I fill in "role[name]" with "Admiral"
+ And I press "Save"
+ Then I should see "Role updated successfully!"
+
+ Scenario: Show role detials
+ Given a role "Admiral" exists
+ And I am on the admin roles page
+ When I follow "Admiral"
+ Then I should be on Admiral's role page
+
+ Scenario: Delete roles
+ Given a role "Admiral" exists
+ And I am on the admin roles page
+ And there are 2 roles
+ When I check "Admiral" role
+ And I check "Captan" role
+ And I press "Destroy"
+ Then there should only be 0 roles
+ And I should be on the admin roles page
+ And I should not see "Captan"
+ And I should not see "Admiral"
diff --git a/src/features/step_definitions/role_steps.rb b/src/features/step_definitions/role_steps.rb
new file mode 100644
index 0000000..3dac6d0
--- /dev/null
+++ b/src/features/step_definitions/role_steps.rb
@@ -0,0 +1,24 @@
+Given /there's no role/ do
+ Role.destroy_all
+end
+
+Given /^a role "([^"]*)" exists$/ do |role_name|
+ Role.create(:name => role_name, :scope => BasePermissionObject.to_s)
+end
+
+Given /^there is a role "([^"]*)"$/ do |name|
+ Role.find_by_name(name).should_not == nil
+end
+
+Given /^there are (\d+) roles$/ do |number|
+ Role.count.should == number.to_i
+end
+
+When /^(?:|I )check "([^"]*)" role$/ do |role_name|
+ role = Role.find_by_name(role_name)
+ check("role_checkbox_#{role.id}")
+end
+
+Then /^there should only be (\d+) roles$/ do |number|
+ Role.count.should == number.to_i
+end
diff --git a/src/features/step_definitions/user_steps.rb b/src/features/step_definitions/user_steps.rb
index c6467e8..ed474e3 100644
--- a/src/features/step_definitions/user_steps.rb
+++ b/src/features/step_definitions/user_steps.rb
@@ -3,9 +3,9 @@ Given /^there is a user "([^"]*)"$/ do |name|
end
Given /^there are (\d+) users$/ do |number|
- User.all.size.should == number.to_i
+ User.count.should == number.to_i
end
Then /^there should only be (\d+) users$/ do |number|
- User.all.size.should == number.to_i
+ User.count.should == number.to_i
end
diff --git a/src/features/support/paths.rb b/src/features/support/paths.rb
index c60b940..12eb062 100644
--- a/src/features/support/paths.rb
+++ b/src/features/support/paths.rb
@@ -20,6 +20,9 @@ module NavigationHelpers
when /^(.*)'s user page$/i
admin_user_path(User.find_by_login($1))
+ when /^(.*)'s role page$/i
+ admin_role_path(Role.find_by_name($1))
+
when /the account page/
account_path
--
1.7.3.2
13 years, 5 months
New UI: Resource Management -> Pools area, rev. 5
by Tomas Sedovic
This implements Jan's and Ladislav's suggestions and (hopefuly) results in a
shorter and cleaner code.
[PATCH aeolus 1/3] Add the Resource Management -> Pools page
[PATCH aeolus 2/3] Tabs for the Details pane
[PATCH aeolus 3/3] Implement the edit functionality for pools
13 years, 5 months
[PATCH aggregator] set of patches for new Users/UI mixed with small fixes
by lmartinc@redhat.com
[PATCH aggregator 1/7] Integration of rack-restful_submit
[PATCH aggregator 2/7] Add the Resource Management -> Pools page
[PATCH aggregator 3/7] Moving users into admin/users (first pass).
[PATCH aggregator 4/7] Small refactoring of application controller.
[PATCH aggregator 5/7] Support new UI in Cucumber.
[PATCH aggregator 6/7] Fixing broken tests and business logic for clouds/pools.
[PATCH aggregator 7/7] New Rack::RestfulSubmit version
13 years, 5 months
[PATCH aeolus] Don't load the missing 960.png image
by Tomas Sedovic
From: Tomas Sedovic <tsedovic(a)redhat.com>
The stylesheets were requiring an image called "960.png" which was never
present in the codebase.
---
src/app/stylesheets/aggregator.scss | 1 -
src/app/stylesheets/newui.scss | 1 -
2 files changed, 0 insertions(+), 2 deletions(-)
diff --git a/src/app/stylesheets/aggregator.scss b/src/app/stylesheets/aggregator.scss
index fe37976..381fc6d 100644
--- a/src/app/stylesheets/aggregator.scss
+++ b/src/app/stylesheets/aggregator.scss
@@ -1322,5 +1322,4 @@ a.iconbutton {
left: 50%;
width: 1020px;
margin-left: -510px;
- background: url(../../images/960.png) repeat-y top center;
}
diff --git a/src/app/stylesheets/newui.scss b/src/app/stylesheets/newui.scss
index 5b341bd..2a78722 100644
--- a/src/app/stylesheets/newui.scss
+++ b/src/app/stylesheets/newui.scss
@@ -1358,5 +1358,4 @@ a.iconbutton {
left: 50%;
width: 1020px;
margin-left: -510px;
- background: url(../../images/960.png) repeat-y top center;
}
--
1.7.3.3
13 years, 5 months