[PATCH aggregator] Added validation for Cloud Account Login Credentials
by Martyn Taylor
From: martyntaylor <mtaylor(a)redhat.com>
---
src/app/models/cloud_account.rb | 19 ++++++++++++++++++-
src/features/step_definitions/pool_steps.rb | 2 +-
.../controllers/cloud_accounts_controller_spec.rb | 9 +++++++--
src/spec/factories/cloud_account.rb | 4 ++--
src/spec/models/cloud_account_spec.rb | 16 ++++++++++++++++
src/spec/models/instance_spec.rb | 12 +++++++-----
6 files changed, 51 insertions(+), 11 deletions(-)
diff --git a/src/app/models/cloud_account.rb b/src/app/models/cloud_account.rb
index 9b8458d..aaf980e 100644
--- a/src/app/models/cloud_account.rb
+++ b/src/app/models/cloud_account.rb
@@ -1,4 +1,4 @@
-#
+ #
# Copyright (C) 2009 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
@@ -127,4 +127,21 @@ class CloudAccount < ActiveRecord::Base
end
end
+ protected
+ def validate
+ errors.add_to_base("Login Credentials are Invalid for this Provider") unless valid_credentials?
+ end
+
+ private
+ def valid_credentials?
+ begin
+ deltacloud = DeltaCloud.new(username, password, provider.url)
+ #TODO This should be replaced by a DeltaCloud.test_credentials type method once/if it is implemented in the API
+ deltacloud.instances
+ rescue Exception => e
+ return false
+ end
+ return true
+ end
+
end
diff --git a/src/features/step_definitions/pool_steps.rb b/src/features/step_definitions/pool_steps.rb
index bd764ae..3d97da6 100644
--- a/src/features/step_definitions/pool_steps.rb
+++ b/src/features/step_definitions/pool_steps.rb
@@ -15,7 +15,7 @@ Given /^the Pool has the following Hardware Profiles:$/ do |table|
end
Given /^the Pool has the following Realms named "([^\"]*)"$/ do |names|
- @cloud_account = Factory :cloud_account
+ @cloud_account = Factory :mock_cloud_account
@provider = @cloud_account.provider
names.split(", ").each do |name|
diff --git a/src/spec/controllers/cloud_accounts_controller_spec.rb b/src/spec/controllers/cloud_accounts_controller_spec.rb
index d3e0f18..7a82a7a 100644
--- a/src/spec/controllers/cloud_accounts_controller_spec.rb
+++ b/src/spec/controllers/cloud_accounts_controller_spec.rb
@@ -23,9 +23,14 @@ describe CloudAccountsController do
it "should allow users with account modify permission to update a cloud account" do
UserSession.create(@admin)
- post :update, :cloud_account => { :id => @cloud_account.id, :password => 'foobar' }
+
+ @cloud_account.password = "foobar"
+ @cloud_account.stub!(:valid_credentials).and_return(true)
+ @cloud_account.save
+
+ post :update, :cloud_account => { :id => @cloud_account.id, :password => 'mockpassword' }
response.should redirect_to("http://test.host/provider/accounts/#{@provider.id}")
- CloudAccount.find((a)cloud_account.id).password.should == "foobar"
+ CloudAccount.find((a)cloud_account.id).password.should == "mockpassword"
end
it "should allow users with account modify permission to delete a cloud account" do
diff --git a/src/spec/factories/cloud_account.rb b/src/spec/factories/cloud_account.rb
index f494b52..b623b43 100644
--- a/src/spec/factories/cloud_account.rb
+++ b/src/spec/factories/cloud_account.rb
@@ -5,7 +5,7 @@ Factory.define :cloud_account do |f|
end
Factory.define :mock_cloud_account, :parent => :cloud_account do |f|
- f.sequence(:username) { |n| "testMockUser#(n)" }
- f.password "testMockPassword"
+ f.username "mockuser"
+ f.password "mockpassword"
f.provider { |p| p.association(:mock_provider) }
end
diff --git a/src/spec/models/cloud_account_spec.rb b/src/spec/models/cloud_account_spec.rb
index 0afe5a3..89fdf27 100644
--- a/src/spec/models/cloud_account_spec.rb
+++ b/src/spec/models/cloud_account_spec.rb
@@ -18,4 +18,20 @@ describe CloudAccount do
@cloud_account.destroy
CloudAccount.find(:first, :conditions => ['id = ?', @cloud_account.id]).should be_nil
end
+
+ it "should check the validitiy of the cloud account login credentials" do
+ mock_provider = Factory :mock_provider
+
+ invalid_cloud_account = Factory.build(:cloud_account, :username => "wrong_username", :password => "wrong_password", :provider => mock_provider)
+ invalid_cloud_account.should_not be_valid
+
+ valid_cloud_account = Factory.build(:mock_cloud_account, :provider => mock_provider)
+ valid_cloud_account.should be_valid
+ end
+
+ it "should fail to create a cloud account if the provider credentials are invalid" do
+ cloud_account = Factory.build(:mock_cloud_account, :password => "wrong_password")
+ cloud_account.save.should == false
+ end
+
end
diff --git a/src/spec/models/instance_spec.rb b/src/spec/models/instance_spec.rb
index 84cd234..afdc0e0 100644
--- a/src/spec/models/instance_spec.rb
+++ b/src/spec/models/instance_spec.rb
@@ -90,12 +90,14 @@ describe Instance do
provider = Factory.build(:mock_provider2)
provider.stub!(:connect).and_return(mock('DeltaCloud'))
provider.save!
- cloud_account = CloudAccount.new(:provider_id => provider.id,
- :username => 'john doe',
- :password => 'asdf')
+
+ cloud_account = Factory.build(:cloud_account, :provider => provider,
+ :username => 'john doe',
+ :password => 'asdf')
+ cloud_account.stub!(:valid_credentials?).and_return(true)
cloud_account.save!
- @instance = Factory.create(:instance,
- :cloud_account_id => cloud_account.id)
+
+ @instance = Factory.create(:instance, :cloud_account => cloud_account)
@instance.front_end_realm.should eql('mock2:john doe')
realm = Factory.create(:realm, :name => 'a realm',
--
1.6.6.1
14 years, 1 month
[PATCH aggregator] Updated Auditing for Instance/Task
by Martyn Taylor
From: martyntaylor <mtaylor(a)redhat.com>
---
src/app/models/instance_observer.rb | 2 +-
src/app/models/task_observer.rb | 2 +-
src/app/util/taskomatic.rb | 16 +++++++++++-----
src/config/environment.rb | 4 +++-
4 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/src/app/models/instance_observer.rb b/src/app/models/instance_observer.rb
index 283991d..fa5b3d2 100644
--- a/src/app/models/instance_observer.rb
+++ b/src/app/models/instance_observer.rb
@@ -1,6 +1,6 @@
class InstanceObserver < ActiveRecord::Observer
- def after_save(an_instance)
+ def before_save(an_instance)
if an_instance.changed?
change = an_instance.changes['state']
if change
diff --git a/src/app/models/task_observer.rb b/src/app/models/task_observer.rb
index d1834c4..98252b0 100644
--- a/src/app/models/task_observer.rb
+++ b/src/app/models/task_observer.rb
@@ -2,7 +2,7 @@ class TaskObserver < ActiveRecord::Observer
END_STATES = [ Task::STATE_CANCELED, Task::STATE_FAILED, Task::STATE_FINISHED ]
- def after_save(a_task)
+ def before_save(a_task)
if a_task.changed?
change = a_task.changes['state']
if change
diff --git a/src/app/util/taskomatic.rb b/src/app/util/taskomatic.rb
index e66bb62..22328dc 100644
--- a/src/app/util/taskomatic.rb
+++ b/src/app/util/taskomatic.rb
@@ -45,8 +45,6 @@ class Taskomatic
def instance_create
- @task.time_started = Time.now
-
begin
client = @task.instance.cloud_account.connect
realm = @task.instance.realm.external_key rescue nil
@@ -55,9 +53,13 @@ class Taskomatic
unless @task.instance.image.provider_image?
@task.instance.image = @task.instance.image.provider_images[0]
end
+
unless @task.instance.hardware_profile.provider_hardware_profile?
@task.instance.hardware_profile = @task.instance.hardware_profile.provider_hardware_profiles[0]
end
+
+ @task.state = Task::STATE_PENDING
+ @task.save!
dcloud_instance = client.create_instance((a)task.instance.image.external_key,
:flavor => @task.instance.hardware_profile.external_key,
:realm => realm,
@@ -65,6 +67,11 @@ class Taskomatic
if dcloud_instance.class == Net::HTTPInternalServerError
@task.instance.state = Instance::STATE_CREATE_FAILED
raise "Error creating dcloud instance, returned internal server error."
+ @task.state = TASK::STATE_FAILED
+ @task.failure_code = Task::FAILURE_PROVIDER_CONTACT_FAILED
+ else
+ @task.state = Task::STATE_RUNNING
+ @task.save!
end
@logger.info "Task instance create completed with key #{dcloud_instance.id} and state #{dcloud_instance.state}"
@@ -77,7 +84,7 @@ class Taskomatic
else
@task.state = Task::STATE_FINISHED
end
- @task.time_ended = Time.now
+
@task.save!
end
@@ -153,5 +160,4 @@ class Taskomatic
end
end
end
-end
-
+end
\ No newline at end of file
diff --git a/src/config/environment.rb b/src/config/environment.rb
index eb12f46..6547d1f 100644
--- a/src/config/environment.rb
+++ b/src/config/environment.rb
@@ -40,12 +40,13 @@ Rails::Initializer.run do |config|
# config.gem "bj"
# config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
# config.gem "aws-s3", :lib => "aws/s3"
- config.gem "gettext", :lib => "gettext_rails"
+ config.gem "gettext", :lib => "gettext_rails"
config.gem "gettext", :lib => "gettext_activerecord"
config.gem "authlogic"
config.gem "deltacloud-client", :lib => "deltacloud"
config.gem "haml"
+ config.active_record.observers = :instance_observer, :task_observer
# Only load the plugins named here, in the order given. By default, all plugins
# in vendor/plugins are loaded in alphabetical order.
# :all can be used as a placeholder for all plugins not explicitly named
@@ -74,4 +75,5 @@ Rails::Initializer.run do |config|
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')]
# config.i18n.default_locale = :de
+
end
--
1.6.6.1
14 years, 1 month
Terremark driver question
by Sayli Karmarkar
Hi,
I was able to create an instance successfully using Terremark driver.
However, I was not able to ssh into it as I did not get password as part
of instance creation process (like in webUI). How do I create an
instance that I can access?
Thanks,
--
Sayli Karmarkar
skarmark(a)redhat.com
Systems Management
http://www.redhat.com
14 years, 1 month
[PATCH aggregator 2/4] 'getting started' dashboard portlet
by Mo Morsi
---
src/app/controllers/dashboard_controller.rb | 7 +
src/app/views/dashboard/summary.haml | 35 ++-
src/public/images/getting_started_accounts.png | Bin 0 -> 4884 bytes
src/public/images/getting_started_check.png | Bin 0 -> 2551 bytes
.../images/getting_started_pool_permissions.png | Bin 0 -> 3958 bytes
src/public/images/getting_started_pools.png | Bin 0 -> 4864 bytes
src/public/stylesheets/components.css | 342 ++------------------
src/public/stylesheets/dcloud.css | 15 +-
8 files changed, 80 insertions(+), 319 deletions(-)
create mode 100644 src/public/images/getting_started_accounts.png
create mode 100644 src/public/images/getting_started_check.png
create mode 100644 src/public/images/getting_started_pool_permissions.png
create mode 100644 src/public/images/getting_started_pools.png
diff --git a/src/app/controllers/dashboard_controller.rb b/src/app/controllers/dashboard_controller.rb
index eca0013..c1dbb8f 100644
--- a/src/app/controllers/dashboard_controller.rb
+++ b/src/app/controllers/dashboard_controller.rb
@@ -24,7 +24,14 @@ class DashboardController < ApplicationController
before_filter :require_user
def index
+ @hide_getting_started = cookies["#{(a)current_user.login}_hide_getting_started"]
+ @current_users_pool = Pool.find(:first, :conditions => ['name = ?', @current_user.login])
render :action => :summary
end
+ def hide_getting_started
+ cookies["#{(a)current_user.login}_hide_getting_started"] = { :value => true, :expires => 1.year.from_now }
+ redirect_to :action => 'show'
+ end
+
end
diff --git a/src/app/views/dashboard/summary.haml b/src/app/views/dashboard/summary.haml
index 5043659..029b964 100644
--- a/src/app/views/dashboard/summary.haml
+++ b/src/app/views/dashboard/summary.haml
@@ -1,2 +1,33 @@
-%h1 Summary
-%p located in app/views/dashboard/summary.haml
+- unless @hide_getting_started
+ #getting_started_dashboard_section
+ %p
+ Welcome to your Deltacloud dashboard where you can track your cloud resource
+ usage. Here's what you need to know to get started
+ %ul
+ %li
+ %img{:src => "images/getting_started_pools.png"}
+ Deltacloud organizes your cloud machines in collections called pools
+ %li
+ %img{:src => "images/getting_started_accounts.png"}
+ A pool can be connected to multiple <b>cloud provider accounts</b>
+ %li
+ %img{:src => "images/getting_started_pool_permissions.png"}
+ You have one personal pool and you may have access to more shared pools
+ %li
+ %img{:src => "images/getting_started_check.png"}
+ %p
+ Ready to work in the cloud?</p>
+ #getting_started_links
+ %a{:class => "button_link", :href => url_for(:controller => :pool, :action => :show, :id => @current_users_pool.id)}
+ Go to my personal pool
+ %a{:href => url_for(:controller => :user, :action => :pools, :id => @current_user.id)}
+ Show all my pools
+ %p
+ %input{ :id => "hide_getting_started", :type => "checkbox" }
+ Thanks, don't show this again
+
+:javascript
+ $("#hide_getting_started").click(function(){
+ $('#getting_started_dashboard_section').hide();
+ $.post("#{url_for(:action => 'hide_getting_started')}");
+ });
diff --git a/src/public/images/getting_started_accounts.png b/src/public/images/getting_started_accounts.png
new file mode 100644
index 0000000000000000000000000000000000000000..86ca419b8a0ebe3fdcf1cc75e84f1177016dc307
GIT binary patch
literal 4884
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
literal 0
HcmV?d00001
diff --git a/src/public/images/getting_started_check.png b/src/public/images/getting_started_check.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9264f5d7dd7d13ac8b1a5a6d2684eadcded295f
GIT binary patch
literal 2551
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
N002ovPDHLkV1kY!+#>)0
literal 0
HcmV?d00001
diff --git a/src/public/images/getting_started_pool_permissions.png b/src/public/images/getting_started_pool_permissions.png
new file mode 100644
index 0000000000000000000000000000000000000000..1cea73fce74e34a7726f390810ca666b896fe546
GIT binary patch
literal 3958
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
Q`Tzg`07*qoM6N<$g52t+TL1t6
literal 0
HcmV?d00001
diff --git a/src/public/images/getting_started_pools.png b/src/public/images/getting_started_pools.png
new file mode 100644
index 0000000000000000000000000000000000000000..7bf2ee9091110834aababd06e9cf050747835f64
GIT binary patch
literal 4864
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
literal 0
HcmV?d00001
diff --git a/src/public/stylesheets/components.css b/src/public/stylesheets/components.css
index 61b127d..2479133 100644
--- a/src/public/stylesheets/components.css
+++ b/src/public/stylesheets/components.css
@@ -1,6 +1,4 @@
-/****************
- header style
-**/
+/* header style */
.header_logo {
position:absolute;
@@ -68,332 +66,44 @@ ul.nav li {
#help-link {
}
-/* ----- Toolbar Navigation -------- */
-#toolbar_nav {
- background: #E5E5E5;
- float: left;
-}
-#toolbar_nav img{
- vertical-align: middle;
-}
-#toolbar_nav ul{
- list-style-type: none;
- margin:0;
- padding: 0;
-}
-#toolbar_nav li {
- margin: 0;
- padding: 0 10px 0 10px;
- position: relative;
- float: left;
- line-height: 2.3;
- height: 28px;
- border-right: 1px solid #5A7A8E;
- border-left: 1px solid #93B2C4;
- background: #000000 url(../images/bg_toolbarheader.png) repeat-x top;
-}
-#toolbar_nav li:hover {
- background: #4B95B8;
- color: #FFFFFF;
-}
-#toolbar_nav li.current {
- background: #4B95B8;
-}
-#toolbar_nav li, #toolbar_nav li a {
- text-decoration: none;
- text-align: center;
- color: #FFFFFF;
-}
-#toolbar_nav ul ul {
- position: absolute;
- top: 28px;
- left: 0;
- width: 100%;
- display: none;
-}
-#toolbar_nav ul li:hover ul{
- display: block;
- z-index: 1;
- background: #D1DDE8;
-}
-#toolbar_nav ul ul li{
- width: 200px;
- background: #DEE7EB;
- color: #000000;
- text-align: left;
- cursor: pointer;
-}
-#toolbar_nav ul ul li a{
- width: 200px;
- background: #DEE7EB;
- color: #000000;
- text-align: left;
- cursor: pointer;
-}
-#toolbar_nav ul ul li:hover a {
- background: #D1DDE8;
-}
-
-/*** the no grid items block ***/
-.no-grid-items {
- padding: 45px;
- margin: 50px;
- height: 150px;
- border: 1px solid #c9e7f7;
- vertical-align: middle;
-}
-
-.no-grid-items img{
- float:left;
-}
-
-.no-grid-items-text{
- float: left;
- padding-left: 20px;
-}
-
-.no-grid-items-text h2{
- margin: 0.8em 0 0;
- font-family: Arial, sans-serif;
-}
-
-.no-grid-items-text p{
- color:#999999;
-}
-
-.no-grid-items-button{
- margin: 2.5em 0 0 0;
-}
-
-
-
-/***************************
- * Graphing Style
- **************************/
-/* availability graphs on hardware resource summary tab */
-#availability_graphs{ }
-.availability_graph { float: left;padding: 0 0 20px 0;}
-.availability_graph_left { float: left; width: 50px;}
-.availability_graph_right { float: left; margin-top: 7px; margin-left: 30px; margin-right: 75px; min-width: 100px; color:#666666;}
-#available_cpu, #available_memory, #available_vms,
-#available_vcpu, #available_vram, #available_vm_quotas {margin-left:0;width:100px;height:70px}
-.availability_total{ font-size: 130%; padding: 10px 0 0 0; color:#000000;}
-
-/* history graphs on hardware / resource summary tab */
-#history_graphs { position: relative; height: 315px; overflow: hidden; margin-left: 0; margin-top: 0; }
-#history_graphs_control { position: absolute; z-index: 1; height: 20px; width: 98%; border: 1px solid #CCCCCC; background: #EEEEEE; }
-.history_graphs_menu { float: left; width: 118px; }
-.history_graphs_legend { float: right; height: 20px; width: 45%; }
-.history_graphs_legend font { float: right; padding-top: 3px; }
-#history_graphs_graphs { position: absolute; overflow: hidden; height: 260px; width: 98%; border: 1px solid #CCCCCC; }
-#history_graph_menu_header img{ vertical-align: middle; }
-.history_graphs_menu ul {
- padding: 0 0 0 0;
- margin: 0 0 0 0;
- list-style-type: none;
- border-right: 1px solid #CCCCCC;
-}
-.history_graphs_menu ul li {
- height: 17px;
- background: #EEEEEE;
- text-align: justify;
- padding-left: 7px;
- padding-top: 3px;
- cursor: pointer;
- width: 110px;
-}
-.history_graphs_menu .history_graph_menu_item{
- display: none;
- border-right: 1px solid #CCCCCC;
- width: 120px;
-}
-.history_graphs_menu .history_graph_menu_item a{
- text-decoration: none;
- color: black;
-}
-.history_graphs_menu .history_graph_menu_fitem {
- border-top: 1px solid #CCCCCC;
-}
-.history_graphs_menu .history_graph_menu_litem {
- border-bottom: 1px solid #CCCCCC;
-}
-.history_graphs_menu:hover ul li {
- background: #CCCCCC;
-}
-.history_graphs_menu:hover .history_graph_menu_item {
- display: block;
- background: #CCFFFF;
-}
-.history_graph{
- height: 210px;
- position: relative;
- float: left;
-}
-#cpu_history_1, #load_history_1, #memory_history_1,
-#cpu_history_7, #load_history_7, #memory_history_7,
-#cpu_history_30, #load_history_30, #memory_history_30
-{
- height: 250px; width: 1200px; position: absolute; left: -70px;
-}
-
-/* snapshot graphs on hardware / resource summary tab */
-#snapshot_graphs th { background: #EEEEEE; text-align: left; padding-left: 10px;border:1px solid #CCCCCC;}
-#snapshot_graphs td {
- padding-left: 10px;
- padding-right: 10px;
- white-space: nowrap;
- background: #FFFFFF;
- border:1px solid #CCCCCC;
-}
-.snapshot_graph_container{
- width: 180px;
- height: 10px;
- border:#666666 solid 1px;
-}
-.snapshot_graph{
- height: 10px;
+/* dashboard style */
+#getting_started_dashboard_section {
+ background: #F2F2F2;
+ width: 850px;
+ font-size: .9em;
+ padding: 10px;
+ border: 1px solid black;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
}
-/* load graphs in flexigrid */
-.load_graph {
- padding: 0px !important;
- height: 10px;
- border:#666666 solid 1px;
- width: 100px;
-}
-
-.load_graph_low {background: url(../images/chart_horiz_blue.png) repeat-x;}
-.load_graph_high {background: url(../images/chart_horiz_orange.png) repeat-x;}
-
-/*************************
- * details pane style *
- *************************/
-.detail-pane-chart {
- height: 50px;
- width: 375px;
-}
-
-
-/*************************
- * new popup components
- *************************/
-.popup-content-selection {
- float: left;
- width: 45%;
- padding-left: 20px;
- padding-top: 10px;
-}
-
-.popup-content-selection select{
- min-width: 200px;
-}
-
-.popup-content-footer{
- width: 99%;
- float: left;
-}
-
-.selected_popup_content {
- padding-left: 20px;
- min-height: 50px;
- float: left;
- width: 96%;
-}
-
-#selected_popup_content_header {
+#getting_started_dashboard_section p {
padding-bottom: 5px;
- font-weight: bold;
-}
-
-#selected_popup_content_expanded{
- padding-bottom: 50px;
-}
-
-.selected_popup_content_left {
- float: left;
- width: 40%;
- padding-bottom: 15px;
-}
-
-.selected_popup_content_right {
- float: left;
- width: 40%;
- padding-bottom: 15px;
-}
-
-/* classes for task state icons */
-.state-canceled {
- background:url(../images/icon-canceled-11px.png) top center no-repeat;
- height: 11px;
-}
-.state-failed {
- background:url(../images/icon-failed-11px.png) top center no-repeat;
- height: 11px;
-}
-.state-finished {
- background:url(../images/icon-finished-11px.png) top center no-repeat;
- height: 11px;
-}
-.state-paused {
- background:url(../images/icon-paused-11px.png) top center no-repeat;
- height: 11px;
-}
-.state-queued {
- background:url(../images/icon-queued-11px.png) top center no-repeat;
- height: 11px;
-}
-.state-running {
- background:url(../images/icon-running-11px.png) top center no-repeat;
- height: 11px;
-}
-
-.vm_form_section {padding-left: 2em;}
-
-#vm_network_config .i {
- float: left;
}
-.vm_network_config_row {
- min-width: 500px;
+#getting_started_dashboard_section ul {
+ width: 100%;
+ height: 120px;
+ padding-left: 7px;
}
-#vm_network_config_header_network,
-#vm_network_config_header_mac,
-#vm_network_config_header_ip{
+#getting_started_dashboard_section ul li{
+ display: inline;
float: left;
- width: 150px;
+ width: 205px;
+ padding: 0 7px 0 10px;
+ border-right: 1px solid black;
}
-.vm_network_config_net,
-.vm_network_config_mac{
- float: left;
+#getting_started_dashboard_section ul li:last-child {
+ border-right: none;
width: 150px;
}
-.vm_network_config_ip{
- float: left;
- max-width: 150px;
-}
-
-.vm_network_config_net select,
-.vm_network_config_mac input,
-.vm_network_config_ip input {
- width: 130px;
+#getting_started_dashboard_section img {
+ height: 91px;
}
-.vm_network_config_remove {
- float: left;
- color: #0033CC;
- padding-top: 5px;
- padding-left: 5px;
-}
-.vm_network_config_remove:hover {
- cursor: pointer;
-}
-
-#vm_network_config_add {
- color: #0033CC;
-}
-#vm_network_config_add:hover {
- cursor: pointer;
+#getting_started_links a {
+ float: right;
}
diff --git a/src/public/stylesheets/dcloud.css b/src/public/stylesheets/dcloud.css
index d67a971..9c18a50 100644
--- a/src/public/stylesheets/dcloud.css
+++ b/src/public/stylesheets/dcloud.css
@@ -263,4 +263,17 @@ ul#pools li a:hover {
.instance_action_list li.first {
border-left: none;
-}
\ No newline at end of file
+}
+
+/* Style for button links */
+a.button_link {
+ border: 1px solid black;
+ text-decoration : none;
+ padding : 4px;
+ margin-bottom: 3px;
+ display: block;
+ background: #666666;
+ color: white;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
--
1.6.2.5
14 years, 1 month
initial dashboard implementation
by Mo Morsi
The following patchset contains the implementation of the
dashboard container, as well as the 'getting started' and 'actions'
portlets. Also included is the initial dashboard spec suite
and a changed login process that redirects the user to the dashboard
upon successful login.
14 years, 1 month
Re: [deltacloud-devel] [PATCH aggregator 4/4] initial dashboard specs
by Tomas Sedovic
ACK
----- Original Message -----
From: "Mohammed Morsi" <mmorsi(a)redhat.com>
To: deltacloud-devel(a)lists.fedorahosted.org
Sent: Wednesday, May 19, 2010 8:04:08 PM GMT +01:00 Amsterdam / Berlin / Bern / Rome / Stockholm / Vienna
Subject: [deltacloud-devel] [PATCH aggregator 4/4] initial dashboard specs
---
src/spec/controllers/dashboard_controller_spec.rb | 19 +++++++++++++++++++
.../controllers/user_sessions_controller_spec.rb | 2 +-
2 files changed, 20 insertions(+), 1 deletions(-)
create mode 100644 src/spec/controllers/dashboard_controller_spec.rb
diff --git a/src/spec/controllers/dashboard_controller_spec.rb b/src/spec/controllers/dashboard_controller_spec.rb
new file mode 100644
index 0000000..d6b6b2e
--- /dev/null
+++ b/src/spec/controllers/dashboard_controller_spec.rb
@@ -0,0 +1,19 @@
+require 'spec_helper'
+
+describe DashboardController do
+
+ fixtures :all
+ before(:each) do
+ @admin_permission = Factory :admin_permission
+ @admin = @admin_permission.user
+ activate_authlogic
+ end
+
+ it "should provide access to the dashboard" do
+ UserSession.create(@admin)
+ get :index
+ response.should be_success
+ response.should render_template("summary")
+ end
+
+end
diff --git a/src/spec/controllers/user_sessions_controller_spec.rb b/src/spec/controllers/user_sessions_controller_spec.rb
index 5240770..b873fa6 100644
--- a/src/spec/controllers/user_sessions_controller_spec.rb
+++ b/src/spec/controllers/user_sessions_controller_spec.rb
@@ -19,7 +19,7 @@ describe UserSessionsController do
post :create, :user_session => { :login => @tuser.login, :password => "secret" }
UserSession.find.should_not == nil
@tuser.should == UserSession.find.user
- response.should redirect_to(account_path)
+ response.should redirect_to("http://test.host/dashboard")
end
it "should destroy user session" do
--
1.6.2.5
_______________________________________________
deltacloud-devel mailing list
deltacloud-devel(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/deltacloud-devel
14 years, 1 month
Re: [deltacloud-devel] [PATCH aggregator 3/4] 'actions' dashboard portlet
by Tomas Sedovic
The "Create a Template", "Launch Instances" and "Enter a help ticket" links are empty but they're just placeholders and will be fixed later, right?
If so, ACK.
----- Original Message -----
From: "Mohammed Morsi" <mmorsi(a)redhat.com>
To: deltacloud-devel(a)lists.fedorahosted.org
Sent: Wednesday, May 19, 2010 8:04:07 PM GMT +01:00 Amsterdam / Berlin / Bern / Rome / Stockholm / Vienna
Subject: [deltacloud-devel] [PATCH aggregator 3/4] 'actions' dashboard portlet
---
src/app/views/dashboard/summary.haml | 18 ++++++++++++++++++
src/public/stylesheets/components.css | 24 ++++++++++++++++++++++++
2 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/src/app/views/dashboard/summary.haml b/src/app/views/dashboard/summary.haml
index 029b964..4eeb58b 100644
--- a/src/app/views/dashboard/summary.haml
+++ b/src/app/views/dashboard/summary.haml
@@ -26,6 +26,24 @@
%input{ :id => "hide_getting_started", :type => "checkbox" }
Thanks, don't show this again
+#actions_dashboard_section
+ %h2
+ Actions
+ - if @current_user.permissions.collect { |p| p.role }.find { |r| r.name == "Administrator" }
+ %a{:href => url_for(:controller => "cloud_accounts", :action => "new")}
+ Add a Provider Account
+ %a{:href => url_for(:controller => "provider", :action => "new")}
+ Add a Provider
+ %a{:href => url_for(:controller => "", :action => "")}
+ Create a Template
+ %a{:href => url_for(:controller => "users", :action => "new")}
+ Create a User
+ - else
+ %a{:href => url_for(:controller => "", :action => "")}
+ Launch Instances
+ %a{:href => url_for(:controller => "", :action => "")}
+ Enter a help ticket
+
:javascript
$("#hide_getting_started").click(function(){
$('#getting_started_dashboard_section').hide();
diff --git a/src/public/stylesheets/components.css b/src/public/stylesheets/components.css
index 2479133..0e80a39 100644
--- a/src/public/stylesheets/components.css
+++ b/src/public/stylesheets/components.css
@@ -72,6 +72,7 @@ ul.nav li {
width: 850px;
font-size: .9em;
padding: 10px;
+ margin: 10px 0px 10px 5px;
border: 1px solid black;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
@@ -107,3 +108,26 @@ ul.nav li {
#getting_started_links a {
float: right;
}
+
+#actions_dashboard_section {
+ width: 390px;
+ height: 100px;
+ border: 1px solid black;
+ background: #F2F2F2;
+ padding: 5px 0 5px 15px;
+ margin: 10px 0px 10px 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+#actions_dashboard_section h2 {
+ padding: 0;
+}
+
+#actions_dashboard_section a {
+ display: block;
+ float: left;
+ margin: 0px 15px 5px 0px;
+ color: blue;
+ text-decoration: underline;
+}
--
1.6.2.5
_______________________________________________
deltacloud-devel mailing list
deltacloud-devel(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/deltacloud-devel
14 years, 1 month
Re: [deltacloud-devel] [PATCH aggregator 2/4] 'getting started' dashboard portlet
by Tomas Sedovic
One thing about the "getting started" portlet behaviour:
Whether it's displayed or not depends on the browser session rather than on the logged-in user.
Steps:
1. Create an admin user "admin" and a normal user "jdoe"
2. Log in as "admin"
3. Click "Dashboard" (the "Getting Started" is displayed)
4. Click "Don't show it again"
5. Log out
6. Log in as "jdoe"
7. Click "Dashboard"
Expected: the "Getting Started" portlet is displayed (jdoe never logged in before)
Actual: the "Getting Started" is not shown.
8. Open another browser (or a different session -- for example the private browsing mode in Google Chrome)
9. Login as "admin"
Expected: the "Getting Started" portlet is *not* displayed (the admin has seen it before and said "don't show it to me"
Actual: it's displayed again.
I think we should remember this setting per-user rather than per-browser. Otherwise the patch is great (did I mention I like deleting old code?) and applies no pro.
ACK, but we should fix this in the future (or you *could* beat me into accepting the way it works now).
----- Original Message -----
From: "Mohammed Morsi" <mmorsi(a)redhat.com>
To: deltacloud-devel(a)lists.fedorahosted.org
Sent: Wednesday, May 19, 2010 8:04:06 PM GMT +01:00 Amsterdam / Berlin / Bern / Rome / Stockholm / Vienna
Subject: [deltacloud-devel] [PATCH aggregator 2/4] 'getting started' dashboard portlet
---
src/app/controllers/dashboard_controller.rb | 7 +
src/app/views/dashboard/summary.haml | 35 ++-
src/public/images/getting_started_accounts.png | Bin 0 -> 4884 bytes
src/public/images/getting_started_check.png | Bin 0 -> 2551 bytes
.../images/getting_started_pool_permissions.png | Bin 0 -> 3958 bytes
src/public/images/getting_started_pools.png | Bin 0 -> 4864 bytes
src/public/stylesheets/components.css | 342 ++------------------
src/public/stylesheets/dcloud.css | 15 +-
8 files changed, 80 insertions(+), 319 deletions(-)
create mode 100644 src/public/images/getting_started_accounts.png
create mode 100644 src/public/images/getting_started_check.png
create mode 100644 src/public/images/getting_started_pool_permissions.png
create mode 100644 src/public/images/getting_started_pools.png
diff --git a/src/app/controllers/dashboard_controller.rb b/src/app/controllers/dashboard_controller.rb
index eca0013..e8afcbf 100644
--- a/src/app/controllers/dashboard_controller.rb
+++ b/src/app/controllers/dashboard_controller.rb
@@ -24,7 +24,14 @@ class DashboardController < ApplicationController
before_filter :require_user
def index
+ @hide_getting_started = cookies[:hide_getting_started]
+ @current_users_pool = Pool.find(:first, :conditions => ['name = ?', @current_user.login])
render :action => :summary
end
+ def hide_getting_started
+ cookies[:hide_getting_started] = true
+ redirect_to :action => 'show'
+ end
+
end
diff --git a/src/app/views/dashboard/summary.haml b/src/app/views/dashboard/summary.haml
index 5043659..029b964 100644
--- a/src/app/views/dashboard/summary.haml
+++ b/src/app/views/dashboard/summary.haml
@@ -1,2 +1,33 @@
-%h1 Summary
-%p located in app/views/dashboard/summary.haml
+- unless @hide_getting_started
+ #getting_started_dashboard_section
+ %p
+ Welcome to your Deltacloud dashboard where you can track your cloud resource
+ usage. Here's what you need to know to get started
+ %ul
+ %li
+ %img{:src => "images/getting_started_pools.png"}
+ Deltacloud organizes your cloud machines in collections called pools
+ %li
+ %img{:src => "images/getting_started_accounts.png"}
+ A pool can be connected to multiple <b>cloud provider accounts</b>
+ %li
+ %img{:src => "images/getting_started_pool_permissions.png"}
+ You have one personal pool and you may have access to more shared pools
+ %li
+ %img{:src => "images/getting_started_check.png"}
+ %p
+ Ready to work in the cloud?</p>
+ #getting_started_links
+ %a{:class => "button_link", :href => url_for(:controller => :pool, :action => :show, :id => @current_users_pool.id)}
+ Go to my personal pool
+ %a{:href => url_for(:controller => :user, :action => :pools, :id => @current_user.id)}
+ Show all my pools
+ %p
+ %input{ :id => "hide_getting_started", :type => "checkbox" }
+ Thanks, don't show this again
+
+:javascript
+ $("#hide_getting_started").click(function(){
+ $('#getting_started_dashboard_section').hide();
+ $.post("#{url_for(:action => 'hide_getting_started')}");
+ });
diff --git a/src/public/images/getting_started_accounts.png b/src/public/images/getting_started_accounts.png
new file mode 100644
index 0000000000000000000000000000000000000000..86ca419b8a0ebe3fdcf1cc75e84f1177016dc307
GIT binary patch
literal 4884
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
literal 0
HcmV?d00001
diff --git a/src/public/images/getting_started_check.png b/src/public/images/getting_started_check.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9264f5d7dd7d13ac8b1a5a6d2684eadcded295f
GIT binary patch
literal 2551
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
N002ovPDHLkV1kY!+#>)0
literal 0
HcmV?d00001
diff --git a/src/public/images/getting_started_pool_permissions.png b/src/public/images/getting_started_pool_permissions.png
new file mode 100644
index 0000000000000000000000000000000000000000..1cea73fce74e34a7726f390810ca666b896fe546
GIT binary patch
literal 3958
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
Q`Tzg`07*qoM6N<$g52t+TL1t6
literal 0
HcmV?d00001
diff --git a/src/public/images/getting_started_pools.png b/src/public/images/getting_started_pools.png
new file mode 100644
index 0000000000000000000000000000000000000000..7bf2ee9091110834aababd06e9cf050747835f64
GIT binary patch
literal 4864
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
literal 0
HcmV?d00001
diff --git a/src/public/stylesheets/components.css b/src/public/stylesheets/components.css
index 61b127d..2479133 100644
--- a/src/public/stylesheets/components.css
+++ b/src/public/stylesheets/components.css
@@ -1,6 +1,4 @@
-/****************
- header style
-**/
+/* header style */
.header_logo {
position:absolute;
@@ -68,332 +66,44 @@ ul.nav li {
#help-link {
}
-/* ----- Toolbar Navigation -------- */
-#toolbar_nav {
- background: #E5E5E5;
- float: left;
-}
-#toolbar_nav img{
- vertical-align: middle;
-}
-#toolbar_nav ul{
- list-style-type: none;
- margin:0;
- padding: 0;
-}
-#toolbar_nav li {
- margin: 0;
- padding: 0 10px 0 10px;
- position: relative;
- float: left;
- line-height: 2.3;
- height: 28px;
- border-right: 1px solid #5A7A8E;
- border-left: 1px solid #93B2C4;
- background: #000000 url(../images/bg_toolbarheader.png) repeat-x top;
-}
-#toolbar_nav li:hover {
- background: #4B95B8;
- color: #FFFFFF;
-}
-#toolbar_nav li.current {
- background: #4B95B8;
-}
-#toolbar_nav li, #toolbar_nav li a {
- text-decoration: none;
- text-align: center;
- color: #FFFFFF;
-}
-#toolbar_nav ul ul {
- position: absolute;
- top: 28px;
- left: 0;
- width: 100%;
- display: none;
-}
-#toolbar_nav ul li:hover ul{
- display: block;
- z-index: 1;
- background: #D1DDE8;
-}
-#toolbar_nav ul ul li{
- width: 200px;
- background: #DEE7EB;
- color: #000000;
- text-align: left;
- cursor: pointer;
-}
-#toolbar_nav ul ul li a{
- width: 200px;
- background: #DEE7EB;
- color: #000000;
- text-align: left;
- cursor: pointer;
-}
-#toolbar_nav ul ul li:hover a {
- background: #D1DDE8;
-}
-
-/*** the no grid items block ***/
-.no-grid-items {
- padding: 45px;
- margin: 50px;
- height: 150px;
- border: 1px solid #c9e7f7;
- vertical-align: middle;
-}
-
-.no-grid-items img{
- float:left;
-}
-
-.no-grid-items-text{
- float: left;
- padding-left: 20px;
-}
-
-.no-grid-items-text h2{
- margin: 0.8em 0 0;
- font-family: Arial, sans-serif;
-}
-
-.no-grid-items-text p{
- color:#999999;
-}
-
-.no-grid-items-button{
- margin: 2.5em 0 0 0;
-}
-
-
-
-/***************************
- * Graphing Style
- **************************/
-/* availability graphs on hardware resource summary tab */
-#availability_graphs{ }
-.availability_graph { float: left;padding: 0 0 20px 0;}
-.availability_graph_left { float: left; width: 50px;}
-.availability_graph_right { float: left; margin-top: 7px; margin-left: 30px; margin-right: 75px; min-width: 100px; color:#666666;}
-#available_cpu, #available_memory, #available_vms,
-#available_vcpu, #available_vram, #available_vm_quotas {margin-left:0;width:100px;height:70px}
-.availability_total{ font-size: 130%; padding: 10px 0 0 0; color:#000000;}
-
-/* history graphs on hardware / resource summary tab */
-#history_graphs { position: relative; height: 315px; overflow: hidden; margin-left: 0; margin-top: 0; }
-#history_graphs_control { position: absolute; z-index: 1; height: 20px; width: 98%; border: 1px solid #CCCCCC; background: #EEEEEE; }
-.history_graphs_menu { float: left; width: 118px; }
-.history_graphs_legend { float: right; height: 20px; width: 45%; }
-.history_graphs_legend font { float: right; padding-top: 3px; }
-#history_graphs_graphs { position: absolute; overflow: hidden; height: 260px; width: 98%; border: 1px solid #CCCCCC; }
-#history_graph_menu_header img{ vertical-align: middle; }
-.history_graphs_menu ul {
- padding: 0 0 0 0;
- margin: 0 0 0 0;
- list-style-type: none;
- border-right: 1px solid #CCCCCC;
-}
-.history_graphs_menu ul li {
- height: 17px;
- background: #EEEEEE;
- text-align: justify;
- padding-left: 7px;
- padding-top: 3px;
- cursor: pointer;
- width: 110px;
-}
-.history_graphs_menu .history_graph_menu_item{
- display: none;
- border-right: 1px solid #CCCCCC;
- width: 120px;
-}
-.history_graphs_menu .history_graph_menu_item a{
- text-decoration: none;
- color: black;
-}
-.history_graphs_menu .history_graph_menu_fitem {
- border-top: 1px solid #CCCCCC;
-}
-.history_graphs_menu .history_graph_menu_litem {
- border-bottom: 1px solid #CCCCCC;
-}
-.history_graphs_menu:hover ul li {
- background: #CCCCCC;
-}
-.history_graphs_menu:hover .history_graph_menu_item {
- display: block;
- background: #CCFFFF;
-}
-.history_graph{
- height: 210px;
- position: relative;
- float: left;
-}
-#cpu_history_1, #load_history_1, #memory_history_1,
-#cpu_history_7, #load_history_7, #memory_history_7,
-#cpu_history_30, #load_history_30, #memory_history_30
-{
- height: 250px; width: 1200px; position: absolute; left: -70px;
-}
-
-/* snapshot graphs on hardware / resource summary tab */
-#snapshot_graphs th { background: #EEEEEE; text-align: left; padding-left: 10px;border:1px solid #CCCCCC;}
-#snapshot_graphs td {
- padding-left: 10px;
- padding-right: 10px;
- white-space: nowrap;
- background: #FFFFFF;
- border:1px solid #CCCCCC;
-}
-.snapshot_graph_container{
- width: 180px;
- height: 10px;
- border:#666666 solid 1px;
-}
-.snapshot_graph{
- height: 10px;
+/* dashboard style */
+#getting_started_dashboard_section {
+ background: #F2F2F2;
+ width: 850px;
+ font-size: .9em;
+ padding: 10px;
+ border: 1px solid black;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
}
-/* load graphs in flexigrid */
-.load_graph {
- padding: 0px !important;
- height: 10px;
- border:#666666 solid 1px;
- width: 100px;
-}
-
-.load_graph_low {background: url(../images/chart_horiz_blue.png) repeat-x;}
-.load_graph_high {background: url(../images/chart_horiz_orange.png) repeat-x;}
-
-/*************************
- * details pane style *
- *************************/
-.detail-pane-chart {
- height: 50px;
- width: 375px;
-}
-
-
-/*************************
- * new popup components
- *************************/
-.popup-content-selection {
- float: left;
- width: 45%;
- padding-left: 20px;
- padding-top: 10px;
-}
-
-.popup-content-selection select{
- min-width: 200px;
-}
-
-.popup-content-footer{
- width: 99%;
- float: left;
-}
-
-.selected_popup_content {
- padding-left: 20px;
- min-height: 50px;
- float: left;
- width: 96%;
-}
-
-#selected_popup_content_header {
+#getting_started_dashboard_section p {
padding-bottom: 5px;
- font-weight: bold;
-}
-
-#selected_popup_content_expanded{
- padding-bottom: 50px;
-}
-
-.selected_popup_content_left {
- float: left;
- width: 40%;
- padding-bottom: 15px;
-}
-
-.selected_popup_content_right {
- float: left;
- width: 40%;
- padding-bottom: 15px;
-}
-
-/* classes for task state icons */
-.state-canceled {
- background:url(../images/icon-canceled-11px.png) top center no-repeat;
- height: 11px;
-}
-.state-failed {
- background:url(../images/icon-failed-11px.png) top center no-repeat;
- height: 11px;
-}
-.state-finished {
- background:url(../images/icon-finished-11px.png) top center no-repeat;
- height: 11px;
-}
-.state-paused {
- background:url(../images/icon-paused-11px.png) top center no-repeat;
- height: 11px;
-}
-.state-queued {
- background:url(../images/icon-queued-11px.png) top center no-repeat;
- height: 11px;
-}
-.state-running {
- background:url(../images/icon-running-11px.png) top center no-repeat;
- height: 11px;
-}
-
-.vm_form_section {padding-left: 2em;}
-
-#vm_network_config .i {
- float: left;
}
-.vm_network_config_row {
- min-width: 500px;
+#getting_started_dashboard_section ul {
+ width: 100%;
+ height: 120px;
+ padding-left: 7px;
}
-#vm_network_config_header_network,
-#vm_network_config_header_mac,
-#vm_network_config_header_ip{
+#getting_started_dashboard_section ul li{
+ display: inline;
float: left;
- width: 150px;
+ width: 205px;
+ padding: 0 7px 0 10px;
+ border-right: 1px solid black;
}
-.vm_network_config_net,
-.vm_network_config_mac{
- float: left;
+#getting_started_dashboard_section ul li:last-child {
+ border-right: none;
width: 150px;
}
-.vm_network_config_ip{
- float: left;
- max-width: 150px;
-}
-
-.vm_network_config_net select,
-.vm_network_config_mac input,
-.vm_network_config_ip input {
- width: 130px;
+#getting_started_dashboard_section img {
+ height: 91px;
}
-.vm_network_config_remove {
- float: left;
- color: #0033CC;
- padding-top: 5px;
- padding-left: 5px;
-}
-.vm_network_config_remove:hover {
- cursor: pointer;
-}
-
-#vm_network_config_add {
- color: #0033CC;
-}
-#vm_network_config_add:hover {
- cursor: pointer;
+#getting_started_links a {
+ float: right;
}
diff --git a/src/public/stylesheets/dcloud.css b/src/public/stylesheets/dcloud.css
index d67a971..9c18a50 100644
--- a/src/public/stylesheets/dcloud.css
+++ b/src/public/stylesheets/dcloud.css
@@ -263,4 +263,17 @@ ul#pools li a:hover {
.instance_action_list li.first {
border-left: none;
-}
\ No newline at end of file
+}
+
+/* Style for button links */
+a.button_link {
+ border: 1px solid black;
+ text-decoration : none;
+ padding : 4px;
+ margin-bottom: 3px;
+ display: block;
+ background: #666666;
+ color: white;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
--
1.6.2.5
_______________________________________________
deltacloud-devel mailing list
deltacloud-devel(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/deltacloud-devel
14 years, 1 month
Re: [deltacloud-devel] [PATCH aggregator 1/4] initial dashboard changes
by Tomas Sedovic
ACK
----- Original Message -----
From: "Mohammed Morsi" <mmorsi(a)redhat.com>
To: deltacloud-devel(a)lists.fedorahosted.org
Sent: Wednesday, May 19, 2010 8:04:05 PM GMT +01:00 Amsterdam / Berlin / Bern / Rome / Stockholm / Vienna
Subject: [deltacloud-devel] [PATCH aggregator 1/4] initial dashboard changes
- require user to be logged in to view dashboard
- redirect user to dashboard on login instead of accounts page
- added dashboard helper shell
---
src/app/controllers/dashboard_controller.rb | 1 +
src/app/controllers/user_sessions_controller.rb | 2 +-
src/app/helpers/dashboard_helper.rb | 22 ++++++++++++++++++++++
3 files changed, 24 insertions(+), 1 deletions(-)
create mode 100644 src/app/helpers/dashboard_helper.rb
diff --git a/src/app/controllers/dashboard_controller.rb b/src/app/controllers/dashboard_controller.rb
index afb88d1..eca0013 100644
--- a/src/app/controllers/dashboard_controller.rb
+++ b/src/app/controllers/dashboard_controller.rb
@@ -21,6 +21,7 @@
class DashboardController < ApplicationController
layout "dashboard"
+ before_filter :require_user
def index
render :action => :summary
diff --git a/src/app/controllers/user_sessions_controller.rb b/src/app/controllers/user_sessions_controller.rb
index d5dcfd2..e67cc1d 100644
--- a/src/app/controllers/user_sessions_controller.rb
+++ b/src/app/controllers/user_sessions_controller.rb
@@ -31,7 +31,7 @@ class UserSessionsController < ApplicationController
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = "Login successful!"
- redirect_back_or_default account_url
+ redirect_back_or_default :controller => 'dashboard'
else
render :action => :new
end
diff --git a/src/app/helpers/dashboard_helper.rb b/src/app/helpers/dashboard_helper.rb
new file mode 100644
index 0000000..a56bad4
--- /dev/null
+++ b/src/app/helpers/dashboard_helper.rb
@@ -0,0 +1,22 @@
+# 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.
+
+module DashboardHelper
+end
--
1.6.2.5
_______________________________________________
deltacloud-devel mailing list
deltacloud-devel(a)lists.fedorahosted.org
https://fedorahosted.org/mailman/listinfo/deltacloud-devel
14 years, 1 month