Brainstorming tasks for next sprint
by Matt Wagner
Hi all,
As we start to wrap up bug-fixing, I was hoping to get a conversation
going about what we need to tackle in upcoming sprints.
Two things I think would be well-worth pursuing:
a.) Actual OpenStack support. We (ostensibly) support Rackspace today,
so this may be relatively straightforward. (Or those could be famous
last words.) I think this is important for two reasons. The first is
that OpenStack is a popular private-cloud offering, so we should support
it alongside vSphere and RHEV. (It might also help those who keep trying
to compare us *to* OpenStack understand that we occupy different
spaces.)
The second is that OpenStack powers several public clouds, and it would
be fantastic if EC2 wasn't the only public cloud we supported. Obviously
Rackspace's offering is using OpenStack or something extremely close.
But Internap's Open Public Cloud[1] and HP's new HP Cloud are powered by
OpenStack, so OpenStack support would get us compatibility with multiple
public cloud providers.
b.) Smarter matching of where we launch instances. I don't think this
will be something we get right the first time -- it seems like there are
a bunch of criteria that different people will weigh differently. But I
think that's all the more reason to start out with something now and
iterate over it. Our 'priority' concept helps somewhat, but it still
feels pretty constrained. It feels like we've worked to make it easy to
launch an instance in the cloud of your choosing (a noble enough goal, I
admit), as opposed to allowing you to launch an instance and let
Conductor do something intelligent on its own.
What else do you think we should try to focus on?
-- Matt
[1]
http://www.internap.com/flexible-cloud-hosting-solutions/enterprise-publi...
[2] http://www.hpcloud.com/http://www.hpcloud.com/
12 years, 1 month
[PATCH conductor] BZ#798287 remove unused Settings pages
by Tomas Sedovic
From: Tomas Sedovic <tomas(a)sedovic.cz>
---
src/app/views/settings/general_settings.html.haml | 50 ----------
src/app/views/settings/index.html.haml | 34 -------
src/app/views/settings/self_service.html.haml | 108 +--------------------
src/config/locales/en.yml | 27 +-----
src/config/routes.rb | 7 --
5 files changed, 2 insertions(+), 224 deletions(-)
delete mode 100644 src/app/views/settings/general_settings.html.haml
diff --git a/src/app/views/settings/general_settings.html.haml b/src/app/views/settings/general_settings.html.haml
deleted file mode 100644
index 5ed6e87..0000000
--- a/src/app/views/settings/general_settings.html.haml
+++ /dev/null
@@ -1,50 +0,0 @@
-%header.admin-page-header
- %h1{:class => controller.controller_name}= t'settings.general_settings.general_settings'
- #obj_actions.button-group
-
-%section.admin-content-section.settings
- %header
- %h2= t'settings.settings'
-
- .content
- %form{:class => 'container_16'}
- .grid_16
- %h1= t'settings.general_settings.portal'
- %fieldset.clearfix
- %label.grid_5.alpha= t 'settings.general_settings.brand_icon'
- .grid_6
- %input{:type => "file", :disabled => true}
- %fieldset.clearfix
- %label.grid_5.alpha= t 'settings.general_settings.tag_line'
- %textarea.grid_6.disabled{:disabled => true}
- %fieldset.clearfix
- .grid_5.alpha.disabled.ra
- %input{:type => "checkbox", :disabled => true}
- %label= t 'settings.general_settings.allow_self_service'
- .grid_6.disabled
- %select{:disabled => true}
- %option= t'settings.general_settings.select_treatment'
- %fieldset.clearfix
- %label.alpha.grid_5= t'settings.general_settings.primary_url_port'
- %input.grid_6{:value => "3000", :disabled => true}
- %h1=t 'settings.general_settings.content'
- %fieldset.clearfix
- %label.grid_5.alpha=t 'settings.general_settings.entitlement_mode'
- .grid_5
- %ul.block
- %li
- %input{:type => "radio", :name => "entitlement", :disabled => true}
- %label.disabled=t 'settings.general_settings.user_brings_subscriptions'
- %li
- %input{:type => "radio", :name => "entitlement", :disabled => true}
- %label.disabled= t'settings.general_settings.system_subscription'
- %fieldset.clearfix
- %label.grid_5.alpha= t'settings.general_settings.certificate'
- .grid_6
- %input{:type => "file", :disabled => true}
- %fieldset.clearfix
- %label.alpha.grid_5=t 'settings.general_settings.content_manager_url'
- %input.grid_6{:disabled => true}
- %fieldset.clearfix
- %button.formbutton{:disabled => true}=t 'reset'
- %button.formbutton{:disabled => true}=t 'save'
diff --git a/src/app/views/settings/index.html.haml b/src/app/views/settings/index.html.haml
index bf94499..7facec7 100644
--- a/src/app/views/settings/index.html.haml
+++ b/src/app/views/settings/index.html.haml
@@ -4,14 +4,6 @@
%section.admin-content-section.settings
.content
%ul.tiles{:class => 'container_16'}
- -#%li#services.grid_8.disabled
- = image_tag "blnk.png", :class => "icon", :alt => ""
- %h2
- = t('.define_services')
- %p
- = t('.define_services_desc')
- %button{:disabled => "disabled"}
- = t(:continue)
- if check_privilege(Privilege::MODIFY)
%li#permissions.grid_8
= image_tag "blnk.png", :class => "icon", :alt => ""
@@ -20,30 +12,4 @@
%p
= t('.permissions_desc')
= link_to t(:continue), self_service_settings_path, :class => 'button'
- -#%li#settings.grid_8
- = image_tag "blnk.png", :class => "icon", :alt => ""
- %h2
- = t('.general_settings')
- %p
- = t('.general_settings_desc')
- = link_to t(:continue), general_settings_settings_path, :class => 'button'
- -#%li#locales.grid_8.disabled
- = image_tag "blnk.png", :class => "icon", :alt => ""
- %h2
- = t('.define_locales')
- %p
- = t('.define_locales_desc')
- %button{:disabled => "disabled"}
- = t(:continue)
.clear
-
- :javascript
- $(document).ready(function () {
- var $tiles = $(".tiles li:not(.disabled)").addClass('pointercursor');
- $tiles.click(function (e) {
- $e = $(e.target);
- if (!$e.is('.button')) {
- window.location = $('.button',this).attr('href');
- }
- });
- });
diff --git a/src/app/views/settings/self_service.html.haml b/src/app/views/settings/self_service.html.haml
index 2dedda4..5cd97ef 100644
--- a/src/app/views/settings/self_service.html.haml
+++ b/src/app/views/settings/self_service.html.haml
@@ -17,115 +17,9 @@
%fieldset
= hidden_field :self_service_default_quota, :id
%p
- %label
- =t 'instances.instances.other'
- = t('.quota') + ":"
+ %label= t('.instances_quota')
= text_field :self_service_default_quota, :maximum_running_instances, :class => 'grid_5'
%fieldset.options
#obj_actions.button-group
= link_to t('reset'), self_service_settings_path, :class => 'button pill'
= submit_tag t(:save), :class => "button pill"
- -#%fieldset.clearfix
- %label.grid_2.alpha Permissions:
- .grid_4 My personal Instances
- .grid_4 Full Instance Permission
- .grid_3.omega
- (
- %a{:href=>'#'}> Edit
- )
- (
- %a{:href=>'#'}> Remove
- )
- -#%fieldset.clearfix.gap
- .grid_4.prefix_2.alpha
- %select.disabled{:disabled => true}
- %option
- Category of Instances
- .grid_4
- %ul.block
- %li
- %input{ :type => "radio", :name => "permission", :disabled => true}
- %label.disabled Control Instance - Can't Share
- %li
- %input{ :type => "radio", :name => "permission", :disabled => true}
- %label.disabled Control Instance - Can Share
- %li
- %input{ :type => "radio", :name => "permission", :disabled => true}
- %label.disabled Full Instance Permission
- %li
- %input{ :type => "radio", :name => "permission", :disabled => true}
- %label.disabled Custom ...
- .grid_3.omega
- (
- %a{:href=>'#'}> Add
- )
- -#%h3 POOLS
- -#%fieldset.clearfix
- %label.grid_2.alpha Permissions:
- .grid_4 General Usage
- .grid_4 Regular Pool User
- .grid_3.omega
- (
- %a{:href=>'#'}> Edit
- )
- (
- %a{:href=>'#'}> Remove
- )
- -#%fieldset.clearfix.gap
- .grid_4.prefix_2.alpha
- %select.disabled{:disabled => true}
- %option
- Category of Pools
- .grid_4
- %ul.block
- %li
- %input{ :type => "radio", :name => "pooltype", :disabled => true}
- %label.disabled Limited Pool User
- %li
- %input{ :type => "radio", :name => "pooltype", :disabled => true}
- %label.disabled Regular Pool User
- %li
- %input{ :type => "radio", :name => "pooltype", :disabled => true}
- %label.disabled Advanced Pool User
- %li
- %input{ :type => "radio", :name => "pooltype", :disabled => true}
- %label.disabled Custom ...
- .grid_3.omega
- (
- %a{:href=>'#'}> Add
- )
- -#%h3 TEMPLATES
- -#%fieldset.clearfix
- %label.grid_2.alpha Permissions:
- .grid_4 General Usage
- .grid_4 Basic Template User
- .grid_3.omega
- (
- %a{:href=>'#'}> Edit
- )
- (
- %a{:href=>'#'}> Remove
- )
- -#%fieldset.clearfix.gap
- .grid_4.prefix_2.alpha
- %select.disabled{:disabled => true}
- %option
- Category of Templates
- .grid_4
- %ul.block
- %li
- %input{ :type => "radio", :name => "pooltype", :disabled => true}
- %label.disabled Basic Template User
- %li
- %input{ :type => "radio", :name => "pooltype", :disabled => true}
- %label.disabled General Template User
- %li
- %input{ :type => "radio", :name => "pooltype", :disabled => true}
- %label.disabled Advanced Template User
- %li
- %input{ :type => "radio", :name => "pooltype", :disabled => true}
- %label.disabled Custom ...
- .grid_3.omega
- (
- %a{:href=>'#'}> Add
- )
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index c6129ad..ae1738b 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -940,38 +940,13 @@ en:
settings:
settings: Settings
index:
- general_settings: General Settings
- general_settings_desc: Enable Self-service Account Registration, Setup Custom Branding, Manage Content Sources
- define_locales: Define Locales
- define_locales_desc: View, edit and define the names of locales that Aeolus Conductor will expose to its users. The meaning of the names will be defined by being mapped to the geographical locations offered by individual providers.
- manage_users: Manage Users
- manage_users_desc: View, edit, create and delete user accounts on Aeolus Conductor. Adjust quotas and privileges for users.
- define_hardware_profiles: Define Hardware Profiles
- define_hardware_profiles_desc: View, edit and define the names of the hardware profiles that Aeolus Conductor will expose to its users. The meaning of the names will be defined by being mapped to capabilities offered by individual providers.
- manage_providers: Manage Providers
- manage_providers_desc: View, edit and add providers of virtual compute resources to Aeolus Conductor. View, edit and add Aeolus Conductor accounts for these providers. Map provider-specific concepts to Aeolus Conductor.
- define_services: Define Services
- define_services_desc: View, edit and define services that Aeolus Conductor will offer. These services will be mapped to individual providers based on their capabilities.
permissions: Permissions
permissions_desc: Modify self-service default quota.
self_service:
self_service_default: 'User Treatment: Self-service default'
account: Account
+ instances_quota: "Instances Quota:"
self_service_settings: "Self-service Settings"
- general_settings:
- general_settings: General Settings
- portal: Portal
- brand_icon: "Brand Icon:"
- tag_line: "Tag Line:"
- allow_self_service: "Allow Self Service Account Creation:"
- select_treatment: Select User Treatment
- primary_url_port: "Primary URL Port:"
- content: Content
- entitlement_mode: "Entitlement Mode:"
- user_brings_subscriptions: User Brings Subscriptions
- system_subscription: System Provides Subscription
- certificate: "Certitifcate:"
- content_manager_url: "Content Manager URL:"
flash:
warning:
not_updated_quota: "Could not update the default quota"
diff --git a/src/config/routes.rb b/src/config/routes.rb
index d24f039..7cef94d 100644
--- a/src/config/routes.rb
+++ b/src/config/routes.rb
@@ -170,13 +170,6 @@ Conductor::Application.routes.draw do
delete 'multi_destroy', :on => :collection
end
- resources :settings do
- collection do
- get 'self_service'
- get 'general_settings'
- end
- end
-
resources :pool_families do
collection do
delete 'multi_destroy'
--
1.7.6.5
12 years, 1 month
[PATCH conductor] BZ790026-Deleting a provider with running instances does not show any message
by Tomas Hrcka
https://bugzilla.redhat.com/show_bug.cgi?id=790026
---
src/app/controllers/providers_controller.rb | 3 ++-
src/app/views/layouts/_new_notification.html.haml | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/app/controllers/providers_controller.rb b/src/app/controllers/providers_controller.rb
index 0819b99..f57c243 100644
--- a/src/app/controllers/providers_controller.rb
+++ b/src/app/controllers/providers_controller.rb
@@ -32,7 +32,8 @@ class ProvidersController < ApplicationController
respond_to do |format|
format.html do
if @providers.present?
- redirect_to edit_provider_path(@provider), :notice => flash[:notice], :error => flash[:error]
+ flash.keep
+ redirect_to edit_provider_path(@provider)
else
render :action => :index
end
diff --git a/src/app/views/layouts/_new_notification.html.haml b/src/app/views/layouts/_new_notification.html.haml
index 54ed324..e7a38b4 100644
--- a/src/app/views/layouts/_new_notification.html.haml
+++ b/src/app/views/layouts/_new_notification.html.haml
@@ -62,7 +62,7 @@
%li= [k, v.present? ? ": #{v}" : '']
-else
-flash[:error][:failures].each do |k, v|
- %li= [v]
+ %li= [k,v]
-else
-flash[:error].each do |e|
%li= e
--
1.7.1
12 years, 1 month
[PATCH conductor] BZ#790250 Check Build Status on Show Image - jQuery template
by Imre Farkas
From: Imre Farkas <ifarkas(a)redhat.com>
---
src/app/controllers/images_controller.rb | 9 +++++++++
src/app/views/images/show.html.haml | 2 ++
2 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/src/app/controllers/images_controller.rb b/src/app/controllers/images_controller.rb
index dcca913..26f12df 100644
--- a/src/app/controllers/images_controller.rb
+++ b/src/app/controllers/images_controller.rb
@@ -75,6 +75,14 @@ class ImagesController < ApplicationController
result
end
+ active_builds_by_image_id = @account_groups.keys.inject(Hash.new({})) do |result, driver|
+ result[(a)image.id] = {} unless result.has_key?((a)image.id)
+ result[(a)image.id][driver] = @builder.find_active_build_by_imageid((a)image.id, driver)
+ result[(a)image.id][driver].attributes['status'].capitalize! if result[(a)image.id][driver]
+
+ result
+ end
+
active_pushes = @account_groups.inject({}) do |result, (driver, group)|
timg = @target_images_by_target[driver]
group[:accounts].each do |account|
@@ -114,6 +122,7 @@ class ImagesController < ApplicationController
:provider_images => provider_images,
:target_images_by_target => @target_images_by_target,
:active_builds => active_builds,
+ :active_builds_by_image_id => active_builds_by_image_id,
:active_pushes => active_pushes,
:failed_build_counts => failed_build_counts,
:failed_push_counts => failed_push_counts,
diff --git a/src/app/views/images/show.html.haml b/src/app/views/images/show.html.haml
index 1d31d36..e784707 100644
--- a/src/app/views/images/show.html.haml
+++ b/src/app/views/images/show.html.haml
@@ -134,6 +134,8 @@
<h3>${group['type']['name']}</h3>
{{if build && active_builds[driver]}}
<label>${active_builds[driver]['builder']['status']}</label>
+ {{else !build && active_builds_by_image_id[image['uuid']][driver]}}
+ <label>${active_builds_by_image_id[image['uuid']][driver]['builder']['status']}</label>
{{else target_images_by_target[driver]}}
#{path = image_target_image_path('replace_image_id', 'replace_target_image_id')
path = path.sub('replace_image_id', '${image[\'uuid\']}')
--
1.7.6.5
12 years, 1 month
[PATCH conductor] BZ 788558 - instance termination for single instance
by Jan Provazník
From: Jan Provaznik <jprovazn(a)redhat.com>
This patch extends previous patch for 788558 to cover also single
instance stop which is available on deployments show pretty view.
---
src/app/controllers/deployments_controller.rb | 2 +-
src/app/controllers/instances_controller.rb | 13 +++++++++----
src/app/models/instance.rb | 4 ++--
.../views/instances/confirm_terminate.html.haml | 8 ++++++--
4 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/src/app/controllers/deployments_controller.rb b/src/app/controllers/deployments_controller.rb
index 7b5e4c0..d65dea3 100644
--- a/src/app/controllers/deployments_controller.rb
+++ b/src/app/controllers/deployments_controller.rb
@@ -305,7 +305,7 @@ class DeploymentsController < ApplicationController
begin
require_privilege(Privilege::USE, instance)
if @inaccessible_instances.include?(instance)
- instance.force_stop(current_user)
+ instance.forced_stop(current_user)
notices << "#{log_prefix}: #{t('instances.flash.notice.forced_stop')}"
else
instance.stop(current_user)
diff --git a/src/app/controllers/instances_controller.rb b/src/app/controllers/instances_controller.rb
index ef04cd7..eb696e2 100644
--- a/src/app/controllers/instances_controller.rb
+++ b/src/app/controllers/instances_controller.rb
@@ -18,7 +18,7 @@ class InstancesController < ApplicationController
before_filter :require_user
before_filter :load_instance, :only => [:show, :key, :edit, :update, :stop, :reboot]
before_filter :set_view_vars, :only => [:show, :index, :export_events]
- before_filter :check_inaccessible_instances, :only => :multi_stop
+ before_filter :check_inaccessible_instances, :only => [:stop, :multi_stop]
def index
@params = params
@@ -148,7 +148,7 @@ class InstancesController < ApplicationController
require_privilege(Privilege::USE,instance)
if @inaccessible_instances.include?(instance)
- instance.force_stop(current_user)
+ instance.forced_stop(current_user)
notices << "#{instance.name}: #{t('instances.flash.notice.forced_stop')}"
else
instance.stop(current_user)
@@ -176,7 +176,11 @@ class InstancesController < ApplicationController
end
def stop
- do_operation(:stop)
+ if @inaccessible_instances.include?(@instance)
+ do_operation(:forced_stop)
+ else
+ do_operation(:stop)
+ end
end
def reboot
@@ -251,7 +255,8 @@ class InstancesController < ApplicationController
end
def check_inaccessible_instances
- @instances_to_stop = Instance.find(params[:instance_selected] || [])
+ # @instance is set only on stop action
+ @instances_to_stop = @instance ? @instance.to_a : Instance.find(params[:instance_selected].to_a)
@inaccessible_instances = Instance.stoppable_inaccessible_instances(@instances_to_stop)
if params[:terminate].blank? and @inaccessible_instances.any?
respond_to do |format|
diff --git a/src/app/models/instance.rb b/src/app/models/instance.rb
index 9027e24..21739f9 100644
--- a/src/app/models/instance.rb
+++ b/src/app/models/instance.rb
@@ -447,12 +447,12 @@ class Instance < ActiveRecord::Base
do_operation(user, 'reboot')
end
- def force_stop(user)
+ def forced_stop(user)
self.state = STATE_STOPPED
save!
event = Event.create!(:source => self, :event_time => Time.now,
:summary => "Instance is not accessible, state changed to stopped",
- :status_code => "force_stop")
+ :status_code => "forced_stop")
end
def deployed?
diff --git a/src/app/views/instances/confirm_terminate.html.haml b/src/app/views/instances/confirm_terminate.html.haml
index ea680f2..64709eb 100644
--- a/src/app/views/instances/confirm_terminate.html.haml
+++ b/src/app/views/instances/confirm_terminate.html.haml
@@ -6,11 +6,15 @@
.content.confirm_instances_termination
.align-center
%strong= t('.terminate_instances_description')
- = form_tag multi_stop_instances_path, :method => :post do
+ - url = @instance ? stop_instance_path(@instance) : multi_stop_instances_path
+ = form_tag url, :method => :post do
- @instances_to_stop.each do |i|
= hidden_field_tag 'instance_selected[]', i.id
%ul
- @inaccessible_instances.each do |i|
%li= i.name
- = link_to t('cancel'), pools_path(:view => 'filter', :details_tab => 'instances'), :class => 'button'
+ - if @instance
+ = link_to t('cancel'), deployment_path((a)instance.deployment, :details_tab => 'instances'), :class => 'button'
+ - else
+ = link_to t('cancel'), pools_path(:view => 'filter', :details_tab => 'instances'), :class => 'button'
= submit_tag t('.terminate'), :name => 'terminate', :class => 'button', :id => 'terminate_button'
--
1.7.7.6
12 years, 1 month
[PATCH multi 0/2] BZ #761279 - Better handling of import errors
by Matt Wagner
This is really a speculative fix, as I could not reproduce the described issue. It appears that the most likely explanation is an image which failed to import fully, so I modified the code slightly to clean up better in that case.
I get 3 failing Cucumber tests with or without this patch.
-- Matt
12 years, 1 month