Feature discussion: Redmine on OpenShift
by Matt Wagner
Howdy teammates,
One of the features to consider during our planning sprint was #3106,
investigating moving our Redmine install to OpenShift, Red Hat's PaaS
offering. The Express tier is free, and would free us from having to
maintain the dedicated VM we run right now for Redmine. The real
motivation for this task is that Redmine is sometimes _excruciatingly_
slow, with responses sometimes exceeding ~35 seconds, at which point
Apache times out the connection.
https://www.aeolusproject.org/redmine/projects/aeolus/wiki/Moving_Redmine...
is the wiki page for this feature. (The page might be slow...)
I set up a demo instance[1] of Redmine on OpenShift. After a quick bit
of experimentation, I found a handful of pros, and one con that I think
may be a deal-breaker. I wanted to get some more input from the team.
The Pros:
+ It's much faster. If you hit it after prolonged inactivity, it may
take ~10 seconds; I presume this is the time for Passenger to spin the
app back up. I've only had that happen once; otherwise, it's been quite
responsive, with average page loads taking under a second. For me, this
is the biggest win: it's fast!
+ It's pretty easy to use. To apply updates, you push to the repo on
OpenShift and it restarts the app. This contrasts with the current
setup, where I guess a couple of people have ssh access to some random
VM where it's running.
+ I haven't actually tried it, but it appears that there's an easy way
to do backups/snapshots, so we don't have to worry about a catastrophic
database failure. I don't know if anything is in place now.
The Cons:
- Although HTTPS works out of the box, you cannot currently upload
custom certificates. This means that, although we can easily run the
site on a CNAME (e.g., redmine.aeolusproject.org), we cannot have
SSL work that way. There is an open feature request for this, but it's
not currently available. Therefore, we would either need to (a) not
use SSL at all, or (b) use the default .rhcloud.com domain.
There are some various, unrelated things I'd like to continue exploring,
such as the persistence of file uploads, how database backups work,
etc., but I'm wondering if the current SSL limitations should be
considered a deal-breaker for our needs right now. Please let me know
what you think.
-- Matt
[1] https://redminetest-mattydubs.rhcloud.com
12 years
RHEVM Provider
by Isaac Christoffersen
I have a new RHEL 6.2 install with the latest Aeolus install from the
repo. I also have a RHEV 3.0.3 install. I am following the RHEVM
provider setup here -
https://www.aeolusproject.org/redmine/projects/aeolus/wiki/RHEV-M_Setup
However, a couple of differences, the
/etc/aeolus-configure/nodes/rhevm_configure is slightly different from
what's in the mailing list and suggested on the wiki. Mine is this:
parameters:
enable_https: true
enable_security: false
package_provider: rpm
rhevm_nfs_server: virtserv13.rhev
rhevm_nfs_export: /mnt/sdb1
rhevm_nfs_mount_point: /mnt/rhevm-nfs
rhevm_deltacloud_username: admin@internal
rhevm_deltacloud_password: th3M@g1cW0rd
rhevm_deltacloud_api: https://192.168.1.99:8443/api
rhevm_deltacloud_data_center: 00a90d82-444f-11e1-b32b-52540066c75a
rhevm_push_timeout: 1800
classes:
- aeolus::conductor
- aeolus::image-factory
- aeolus::iwhd
- aeolus::deltacloud::core
- aeolus::profiles::rhevm
After setting these, I run 'aeolus-configure -p mock,ec2, rhevm' and
everything appears to be successful. However then I go to
https://localhost/conductor/providers and create a new RHEV provider
and click save, I keep getting an error 'Failed to connect to
Provider!'
What am I missing? Are there some logs or debug output that I can look at?
12 years
RFC Feature: Add New Provider Types
by Jason Guiditta
Copy of wiki page below, actual page here:
https://www.aeolusproject.org/redmine/projects/aeolus/wiki/Feature_Add_Ne...
== Summary ==
Provide a simpler way for the community/sysadmins to add and test new
provider types.
== Owner ==
TBD, initial write-up by jayg
== Current status ==
* Targeted release: TBD
* Last update: See wiki history
== Screencast Demo ==
None at this time
== Implementation tasks ==
TBD
== Detailed description ==
The first example of this is openstack, which may already be
integrated by the time this feature is done. Deltacloud already has
(theoretical) openstack/rackspace support. Factory can build for
Rackspace, and Openstack will require some tweaks/testing to get it
working correctly (see [[Implementing_OpenStack_support|here]] for
detail). In order for a community member to attempt to contribute
support for Openstack in Aeolus, they currently need to jump through a
number of hoops to even see if deltacloud and factory will 'just work'
for this case. At a minimum, a contributor would need to edit:
* src/app/controllers/providers_controller.rb
* src/config/locales/en.yml
* src/db/seeds.rb
In addition, they need to install the proper deltacloud driver and
make any config needed for factory. These latter 2 are not in scope
for this feature, other than as cross-project documentation efforts
== High-level implementation details ==
I propose we add an API for adding provider types. This would entail:
* New controller and/or actions to add provider type CRUD support
* Changes to model to support any dynamic fields needed for a user of
* the conductor to be able to properly add a new provider of this type
* (perhaps this already exists as part of the add provider/account api
* feature
* changes to UI to allow a new provider to be added based on any that
* have provider types in the db
** TBD - keep/enhance the current 'enable/disable' concept? If so, we
would need UI at some point to enable any preseeded providers that are
not fully tested/supported. First pass might just allow this to be
done via API.
** X-deltacloud-provider field (and we'll want more customization on
the way -- dropdown for ec2 regions with stuff pulled from deltacloud;
2-step entry for RHEV with "datacenter-free" top level provider URL
provided; then deltacloud ives us a list of provider URLs including
cluster UUID, etc.) -suggested by sseago
== Future plan ==
* Add cli support to call this api
* Add rake task to prepopulate from a list(?). Maybe something like a
* yml file with details, that calls api for all those provider types
* Add/change calls in configure to use this new api
* Query factory to see if a given provider type is supported for
* building. If not, we can still allow importing of existing images
* in conductor. This would depend on v2.x of the factory api
12 years
[PATCH] Adding in rackspace and openstack support
by David Busby
>From 911869d69e3a1e24cf5232803b5e073c49adfbb9 Mon Sep 17 00:00:00 2001
From: David Busby <david.busby(a)psycle.com>
Date: Fri, 30 Mar 2012 18:54:59 +0100
Subject: [PATCH] Adding in rackspace and openstack support
---
AUTHORS | 1 +
src/app/controllers/providers_controller.rb | 2 +-
src/config/locales/en.yml | 2 ++
src/db/seeds.rb | 2 ++
4 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/AUTHORS b/AUTHORS
index b8b68dc..fa7a78f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -31,5 +31,6 @@ People who have contributed to aeolus-conductor:
Mike Orazi <morazi(a)redhat.com>
Simon Harris <sharris(a)redhat.com>
Tomas Hrcka <thrcka(a)redhat.com>
+ David Busby <oneiroi(a)fedoraproject.org>
[....send patches to get your name here....]
diff --git a/src/app/controllers/providers_controller.rb
b/src/app/controllers/providers_controller.rb
index e276813..ea22fdf 100644
--- a/src/app/controllers/providers_controller.rb
+++ b/src/app/controllers/providers_controller.rb
@@ -240,7 +240,7 @@ class ProvidersController < ApplicationController
end
def load_providers_types
- available_providers = ["Mock","Amazon EC2","RHEV-M","VMware vSphere"]
+ available_providers = ["Mock","Amazon EC2","RHEV-M","VMware
vSphere","Rackspace","Openstack"]
provider_types = ProviderType.where(:name => available_providers).map
do |type|
begin
label =
I18n.translate!("providers.form.x_deltacloud_provider.#{type.deltacloud_driver}")
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index 4050e0b..956e754 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -993,6 +993,8 @@ en:
ec2: EC2 Region
rhevm: RHEV-M API_PROVIDER
vsphere: vSphere API hostname
+ rackspace: Rackspace API_PROVIDER
+ openstack: Openstack API_ENTRYPOINT
select_type_of_provider: Select type of provider
caution_alt_text: Caution
enter_correct_url_msg: Please enter a correct URL format.
diff --git a/src/db/seeds.rb b/src/db/seeds.rb
index 03aff0e..5347820 100644
--- a/src/db/seeds.rb
+++ b/src/db/seeds.rb
@@ -175,6 +175,8 @@ if ProviderType.all.empty?
ProviderType.create!(:name => "Amazon EC2", :deltacloud_driver =>"ec2",
:ssh_user => "root", :home_dir => "/root")
ProviderType.create!(:name => "RHEV-M", :deltacloud_driver =>"rhevm")
ProviderType.create!(:name => "VMware vSphere", :deltacloud_driver
=>"vsphere")
+ ProviderType.create!(:name => "Rackspace", :deltacloud_driver =>
"rackspace")
+ ProviderType.create!(:name => "Openstack", :deltacloud_driver =>
"openstack")
end
# fill table CredentialDefinitions by default values
--
1.7.8.2
12 years
TEST
by Jason Guiditta
disregard
12 years
[PATCH conductor] BZ 803948 Fix of filters options in filter tables
by jzigmund@redhat.com
From: Jozef Zigmund <jzigmund(a)redhat.com>
---
src/app/helpers/application_helper.rb | 2 +-
src/app/models/catalog.rb | 2 +-
src/app/models/hardware_profile.rb | 4 ++--
src/app/models/instance.rb | 10 +++++-----
src/app/models/pool.rb | 10 +++++-----
5 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/app/helpers/application_helper.rb b/src/app/helpers/application_helper.rb
index 8cb9c05..3443038 100644
--- a/src/app/helpers/application_helper.rb
+++ b/src/app/helpers/application_helper.rb
@@ -88,7 +88,7 @@ module ApplicationHelper
else
preset_filters_options = all_preset_filters_options
end
- options_for_select(preset_filters_options.collect{|x| [x[:title], x[:id]]}, :selected => selected)
+ options_for_select(preset_filters_options.collect{|x| [I18n.t(x[:title]), x[:id]]}, :selected => selected)
end
# Integration of rack-restful_submit convention to be able to call
diff --git a/src/app/models/catalog.rb b/src/app/models/catalog.rb
index 307c4dd..1f3ac9a 100644
--- a/src/app/models/catalog.rb
+++ b/src/app/models/catalog.rb
@@ -69,7 +69,7 @@ class Catalog < ActiveRecord::Base
end
PRESET_FILTERS_OPTIONS = [
- {:title => I18n.t("catalogs.preset_filters.belongs_to_default_pool"), :id => "belongs_to_default_pool", :query => includes(:pool).where("pools.name" => "Default")}
+ {:title => "catalogs.preset_filters.belongs_to_default_pool", :id => "belongs_to_default_pool", :query => includes(:pool).where("pools.name" => "Default")}
]
def destroy_deployables_related_only_to_self
diff --git a/src/app/models/hardware_profile.rb b/src/app/models/hardware_profile.rb
index befa1a9..9c325c1 100644
--- a/src/app/models/hardware_profile.rb
+++ b/src/app/models/hardware_profile.rb
@@ -157,8 +157,8 @@ class HardwareProfile < ActiveRecord::Base
end
PRESET_FILTERS_OPTIONS = [
- #{:title => I18n.t("hardware_profiles.preset_filters.i386architecture"), :id => "i386architecture", :query => includes(:architecture).where('architecture.value' => "i386")},
- #{:title => I18n.t("hardware_profiles.preset_filters.x86_64architecture"), :id => "x86_64architecture", :query => includes(:architecture).where('architecture.value' => "x86_64")}
+ #{:title => "hardware_profiles.preset_filters.i386architecture", :id => "i386architecture", :query => includes(:architecture).where('architecture.value' => "i386")},
+ #{:title => "hardware_profiles.preset_filters.x86_64architecture", :id => "x86_64architecture", :query => includes(:architecture).where('architecture.value' => "x86_64")}
]
private
diff --git a/src/app/models/instance.rb b/src/app/models/instance.rb
index 95e2717..1b18d6e 100644
--- a/src/app/models/instance.rb
+++ b/src/app/models/instance.rb
@@ -492,11 +492,11 @@ class Instance < ActiveRecord::Base
end
PRESET_FILTERS_OPTIONS = [
- {:title => I18n.t("instances.preset_filters.other_than_stopped"), :id => "other_than_stopped", :query => where("instances.state != ?", "stopped")},
- {:title => I18n.t("instances.preset_filters.create_failed"), :id => "create_failed", :query => where("instances.state" => "create_failed")},
- {:title => I18n.t("instances.preset_filters.stopped"), :id => "stopped", :query => where("instances.state" => "stopped")},
- {:title => I18n.t("instances.preset_filters.running"), :id => "running", :query => where("instances.state" => "running")},
- {:title => I18n.t("instances.preset_filters.pending"), :id => "pending", :query => where("instances.state" => "pending")}
+ {:title => "instances.preset_filters.other_than_stopped", :id => "other_than_stopped", :query => where("instances.state != ?", "stopped")},
+ {:title => "instances.preset_filters.create_failed", :id => "create_failed", :query => where("instances.state" => "create_failed")},
+ {:title => "instances.preset_filters.stopped", :id => "stopped", :query => where("instances.state" => "stopped")},
+ {:title => "instances.preset_filters.running", :id => "running", :query => where("instances.state" => "running")},
+ {:title => "instances.preset_filters.pending", :id => "pending", :query => where("instances.state" => "pending")}
]
def destroy_on_provider
diff --git a/src/app/models/pool.rb b/src/app/models/pool.rb
index e568599..9556dee 100644
--- a/src/app/models/pool.rb
+++ b/src/app/models/pool.rb
@@ -147,11 +147,11 @@ class Pool < ActiveRecord::Base
end
PRESET_FILTERS_OPTIONS = [
- {:title => I18n.t("pools.preset_filters.enabled_pools"), :id => "enabled_pools", :query => where("pools.enabled" => true)},
- {:title => I18n.t("pools.preset_filters.with_pending_instances"), :id => "with_pending_instances", :query => includes(:deployments => :instances).where("instances.state" => "pending")},
- {:title => I18n.t("pools.preset_filters.with_running_instances"), :id => "with_running_instances", :query => includes(:deployments => :instances).where("instances.state" => "running")},
- {:title => I18n.t("pools.preset_filters.with_create_failed_instances"), :id => "with_create_failed_instances", :query => includes(:deployments => :instances).where("instances.state" => "create_failed")},
- {:title => I18n.t("pools.preset_filters.with_stopped_instances"), :id => "with_stopped_instances", :query => includes(:deployments => :instances).where("instances.state" => "stopped")}
+ {:title => "pools.preset_filters.enabled_pools", :id => "enabled_pools", :query => where("pools.enabled" => true)},
+ {:title => "pools.preset_filters.with_pending_instances", :id => "with_pending_instances", :query => includes(:deployments => :instances).where("instances.state" => "pending")},
+ {:title => "pools.preset_filters.with_running_instances", :id => "with_running_instances", :query => includes(:deployments => :instances).where("instances.state" => "running")},
+ {:title => "pools.preset_filters.with_create_failed_instances", :id => "with_create_failed_instances", :query => includes(:deployments => :instances).where("instances.state" => "create_failed")},
+ {:title => "pools.preset_filters.with_stopped_instances", :id => "with_stopped_instances", :query => includes(:deployments => :instances).where("instances.state" => "stopped")}
]
def object_list
--
1.7.7.6
12 years
[PATCH conductor 0/1] #805586 - Bugfix for HWP match checking
by Matt Wagner
This was a moderately challenging bug to track down, and Imre deserves heaps of credit for tracking it down. The problem is that rack-restful_submit was not rewriting the request on the Edit page, because it was a PUT and restful_submit only works with POSTs.
The fix here is a simple one -- we don't use restful_submit for this form, and instead fall back to the more traditional pattern of submitting the form and checking the button's value. This fixes the issue and avoids any larger changes late in the game.
Imre also reports success by removing "config.middleware.use Rack::RestfulSubmit" in application.rb, and replacing it with "config.middleware.swap Rack::MethodOverride, 'Rack::RestfulSubmit'". I don't fully understand the impact of that change just yet, so I'm reluctant to propose that in a bugfix phase, but it deserves a look longer-term.
-- Matt
12 years