[PATCH configure 1/2] Redmine 2170 - Configure changes to move to single deltacloud-core instance
by Richard Su
Changed providers to use same deltacloud-core instance at port 3002.
New deltacloud classes added to default_configure. Replaced
conductor::removed_seed_data class in default_cleanup with deltacloud::disable.
Removed unused provider-specific parameters from deltacloud-core init script.
Incorporated deltacloud_provider param when adding new providers to conductor.
Requires Scott conductor patch to expose deltacloud_provider in the add provider
form.
Original patchset from morazi.
---
conf/default_cleanup | 2 +-
conf/default_configure | 6 ++-
recipes/aeolus/manifests/conductor.pp | 15 ++------
recipes/aeolus/manifests/deltacloud.pp | 48 +++++++++----------------
recipes/aeolus/manifests/init.pp | 9 -----
recipes/aeolus/manifests/profiles/default.pp | 34 +++++++++---------
recipes/aeolus/manifests/rhevm.pp | 12 ++-----
recipes/aeolus/manifests/vmware.pp | 16 ++------
recipes/aeolus/templates/deltacloud-core | 22 ++++++------
9 files changed, 61 insertions(+), 103 deletions(-)
diff --git a/conf/default_cleanup b/conf/default_cleanup
index d43e906..c17134e 100644
--- a/conf/default_cleanup
+++ b/conf/default_cleanup
@@ -17,7 +17,7 @@ classes:
- aeolus::conductor::disabled
- aeolus::iwhd::disabled
- aeolus::image-factory::disabled
-- aeolus::conductor::remove_seed_data
+- aeolus::deltacloud::disabled
# Uncomment this to clean up RHEV details
#- aeolus::rhevm::disabled
# Uncomment to remove vmware
diff --git a/conf/default_configure b/conf/default_configure
index ce79878..9b570a8 100644
--- a/conf/default_configure
+++ b/conf/default_configure
@@ -22,7 +22,7 @@ parameters:
# rhevm_nfs_server: nfs.server.com
# rhevm_nfs_export: /export/export_domain
# rhevm_nfs_mount_point: /mnt/rhevm-nfs
-# rhevm_deltacloud_port: 3005
+# rhevm_deltacloud_port: 3002
# rhevm_deltacloud_username: username@fqdn
# rhevm_deltacloud_password: password
# rhevm_deltacloud_powershell_url: https://rhevm.server.com:8543/rhevm-api-powershell
@@ -33,12 +33,14 @@ parameters:
# vmware_password: password
# vmware_datastore: datastore
# vmware_network_name: network_name
-# vmware_deltacloud_port: 3006
+# vmware_deltacloud_port: 3002
classes:
- aeolus::conductor
- aeolus::image-factory
- aeolus::iwhd
- aeolus::profiles::default
+- aeolus::deltacloud::core
+- aeolus::deltacloud::ec2
# Uncomment this section to include rhev setup
#- aeolus::rhevm
#
diff --git a/recipes/aeolus/manifests/conductor.pp b/recipes/aeolus/manifests/conductor.pp
index aded6b3..aeaac87 100644
--- a/recipes/aeolus/manifests/conductor.pp
+++ b/recipes/aeolus/manifests/conductor.pp
@@ -42,7 +42,6 @@ class aeolus::conductor inherits aeolus {
} else{
apache::site{"aeolus-conductor": source => 'puppet:///modules/aeolus/aggregator-httpd.conf'}
}
-
service { ['aeolus-conductor',
'conductor-dbomatic' ]:
ensure => 'running',
@@ -116,13 +115,6 @@ class aeolus::conductor inherits aeolus {
enable => 'true' }
}
-
-class aeolus::conductor::remove_seed_data {
- aeolus::deltacloud::disabled{"mock": }
- aeolus::deltacloud::disabled{"ec2-us-east-1": }
- aeolus::deltacloud::disabled{"ec2-us-west-1": }
-}
-
class aeolus::conductor::disabled {
file {"/var/lib/aeolus-conductor":
ensure => absent,
@@ -197,18 +189,19 @@ define aeolus::conductor::logout(){
}
# Create a new provider via the conductor
-define aeolus::conductor::provider($type="",$url=""){
+define aeolus::conductor::provider($type_id="",$url="", $deltacloud_provider=""){
web_request{ "provider-$name":
post => "https://localhost/conductor/providers",
parameters => { 'provider[name]' => $name, 'provider[url]' => $url,
- 'provider[provider_type_codename]' => $type },
+ 'provider[provider_type_id]' => $type_id,
+ 'provider[deltacloud_provider]' => $deltacloud_provider },
returns => '200',
follow => true,
contains => "//html/body//li[text() = 'Provider added.']",
use_cookies_at => '/tmp/aeolus-admin',
unless => { 'get' => 'https://localhost/conductor/providers',
'contains' => "//html/body//a[text() = '$name']" },
- require => [Service['aeolus-conductor'], Exec['grant_site_admin_privs']]
+ require => [Service['aeolus-conductor'],Exec['grant_site_admin_privs']]
}
}
diff --git a/recipes/aeolus/manifests/deltacloud.pp b/recipes/aeolus/manifests/deltacloud.pp
index df01d5a..ce9ad05 100644
--- a/recipes/aeolus/manifests/deltacloud.pp
+++ b/recipes/aeolus/manifests/deltacloud.pp
@@ -7,6 +7,21 @@ class aeolus::deltacloud::core {
package { 'deltacloud-core':
ensure => 'installed',
provider => $package_provider }
+
+ ### we need to sync time to communicate w/ cloud providers
+ include ntp::client
+
+ ### Start the aeolus services
+ file { "/var/log/deltacloud-core": ensure => 'directory' }
+ file {"/etc/init.d/deltacloud-core":
+ content => template("aeolus/deltacloud-core"),
+ mode => 755 }
+
+ service { 'deltacloud-core':
+ ensure => 'running',
+ enable => true,
+ hasstatus => true,
+ require => [Package['deltacloud-core'], File["/etc/init.d/deltacloud-core", "/var/log/deltacloud-core"]]}
}
class aeolus::deltacloud::ec2 {
@@ -17,39 +32,10 @@ class aeolus::deltacloud::ec2 {
provider => $package_provider }
}
-
-# install the deltacloud component w/ the specified driver
-define aeolus::deltacloud($provider_type="", $endpoint='', $port="3002") {
- include aeolus::deltacloud::core
-
- if $provider_type == "ec2" {
- include aeolus::deltacloud::ec2
- }
-
- ### we need to sync time to communicate w/ cloud providers
- include ntp::client
-
- ### Start the aeolus services
- file { "/var/log/deltacloud-${name}": ensure => 'directory' }
- file {"/etc/init.d/deltacloud-${name}":
- content => template("aeolus/deltacloud-core"),
- mode => 755 }
- service { "deltacloud-${name}":
- ensure => 'running',
- enable => true,
- require => [Package['deltacloud-core'],
- $provider_type ? { "ec2" => Package['rubygem-aws'], default => Package['deltacloud-core'] },
- File["/etc/init.d/deltacloud-${name}", "/var/log/deltacloud-${name}"]] }
-}
-
-define aeolus::deltacloud::disabled() {
+class aeolus::deltacloud::disabled {
### Stop the aeolus services
- service { "deltacloud-${name}":
+ service { 'deltacloud-core':
ensure => 'stopped',
enable => false,
hasstatus => true}
- file {"/etc/init.d/deltacloud-${name}":
- ensure => absent,
- require => Service["deltacloud-${name}"]}
}
-
diff --git a/recipes/aeolus/manifests/init.pp b/recipes/aeolus/manifests/init.pp
index 4376838..ae0f0c2 100644
--- a/recipes/aeolus/manifests/init.pp
+++ b/recipes/aeolus/manifests/init.pp
@@ -38,12 +38,3 @@ class aeolus {
source => $package_provider
}
}
-
-# Create a new provider in aeolus
-define aeolus::provider($type, $port, $endpoint=""){
- aeolus::deltacloud{$name: provider_type => $type, endpoint => $endpoint, port => $port}
- aeolus::conductor::provider{$name:
- type => $type,
- url => "http://localhost:${port}/api",
- require => Aeolus::Deltacloud[$name] }
-}
diff --git a/recipes/aeolus/manifests/profiles/default.pp b/recipes/aeolus/manifests/profiles/default.pp
index 0021bbf..09e27c7 100644
--- a/recipes/aeolus/manifests/profiles/default.pp
+++ b/recipes/aeolus/manifests/profiles/default.pp
@@ -11,33 +11,34 @@ class aeolus::profiles::default {
aeolus::conductor::login{"admin": password => "password",
require => Aeolus::Conductor::Site_admin['admin']}
- aeolus::provider{"mock":
- type => 'mock',
- port => 3002,
+ aeolus::conductor::provider{"mock":
+ type_id => '1',
+ url => 'http://localhost:3002/api',
require => Aeolus::Conductor::Login["admin"] }
+
aeolus::conductor::provider::account{"mockuser":
provider => 'mock',
type => 'mock',
username => 'mockuser',
password => 'mockpassword',
- require => Aeolus::Provider["mock"] }
+ require => Aeolus::Conductor::Provider["mock"] }
- aeolus::provider{"ec2-us-east-1":
- type => 'ec2',
- endpoint => 'us-east-1',
- port => 3003,
+ aeolus::conductor::provider{"ec2-us-east-1":
+ type_id => '2',
+ deltacloud_provider => 'us-east-1',
+ url => 'http://localhost:3002/api',
require => Aeolus::Conductor::Login["admin"] }
- aeolus::provider{"ec2-us-west-1":
- type => 'ec2',
- endpoint => 'us-west-1',
- port => 3004,
+ aeolus::conductor::provider{"ec2-us-west-1":
+ type_id => '2',
+ deltacloud_provider => 'us-west-1',
+ url => 'http://localhost:3002/api',
require => Aeolus::Conductor::Login["admin"] }
aeolus::conductor::hwp{"hwp1":
memory => "512",
cpu => "1",
- storage => "1",
+ storage => "",
architecture => "x86_64",
require => Aeolus::Conductor::Login["admin"] }
@@ -49,10 +50,9 @@ class aeolus::profiles::default {
require => Aeolus::Conductor::Login["admin"] }
aeolus::conductor::logout{"admin":
- require => [Aeolus::Provider['mock'],
+ require => [Aeolus::Conductor::Provider['mock'],
Aeolus::Conductor::Provider::Account['mockuser'],
- Aeolus::Provider['ec2-us-east-1'],
- Aeolus::Provider['ec2-us-west-1'],
+ Aeolus::Conductor::Provider['ec2-us-east-1'],
+ Aeolus::Conductor::Provider['ec2-us-west-1'],
Aeolus::Conductor::Hwp['hwp1']] }
-
}
diff --git a/recipes/aeolus/manifests/rhevm.pp b/recipes/aeolus/manifests/rhevm.pp
index daa84d2..cc1d051 100644
--- a/recipes/aeolus/manifests/rhevm.pp
+++ b/recipes/aeolus/manifests/rhevm.pp
@@ -27,15 +27,10 @@ class aeolus::rhevm inherits aeolus {
File["/etc/rhevm.json"],
File["/etc/iwhd/conf.js"]]}
- aeolus::deltacloud{"rhevm":
- provider_type => 'rhevm',
- endpoint => "$rhevm_deltacloud_powershell_url",
- port => $rhevm_deltacloud_port}
-
- aeolus::conductor::provider{"rhevm":
+ aeolus::provider{"rhevm":
type => "rhevm",
- url => "http://localhost:${rhevm_deltacloud_port}/api",
- require => Aeolus::Deltacloud["rhevm"]}
+ port => 3002,
+ require => Aeolus::Conductor::Login["admin"] }
# TODO:
# 1. since we have credentials, create provider account
@@ -43,7 +38,6 @@ class aeolus::rhevm inherits aeolus {
}
class aeolus::rhevm::disabled {
- aeolus::deltacloud::disabled{"rhevm": }
mount {"$rhevm_nfs_mount_point":
ensure => unmounted,
diff --git a/recipes/aeolus/manifests/vmware.pp b/recipes/aeolus/manifests/vmware.pp
index 4772b15..cafb015 100644
--- a/recipes/aeolus/manifests/vmware.pp
+++ b/recipes/aeolus/manifests/vmware.pp
@@ -4,19 +4,11 @@ class aeolus::vmware inherits aeolus {
mode => 755,
require => Package['aeolus-conductor-daemons'] }
- aeolus::deltacloud{"vsphere":
- provider_type => 'vsphere',
- endpoint => "$vmware_api_endpoint",
- port => $vmware_deltacloud_port}
-
- aeolus::conductor::provider{"vsphere":
- type => "vsphere",
- url => "http://localhost:${vmware_deltacloud_port}/api",
- require => [Aeolus::Deltacloud["vsphere"]]}
-
+ aeolus::provider{"vsphere":
+ type => "vsphere",
+ port => 3002,
+ require => [Aeolus::Conductor::Login["admin"]] }
}
class aeolus::vmware::disabled {
- aeolus::deltacloud::disabled{"vsphere": }
-
}
diff --git a/recipes/aeolus/templates/deltacloud-core b/recipes/aeolus/templates/deltacloud-core
index 0f52b65..5f1f888 100644
--- a/recipes/aeolus/templates/deltacloud-core
+++ b/recipes/aeolus/templates/deltacloud-core
@@ -8,15 +8,15 @@
# Deltacloud Core component.
#
-[ -r /etc/sysconfig/deltacloud-<%= name %> ] && . /etc/sysconfig/deltacloud-<%= name %>
+[ -r /etc/sysconfig/deltacloud-core ] && . /etc/sysconfig/deltacloud-core
ENV="${ENV:-production}"
-DRIVER="${DRIVER:-<%= provider_type %>}"
-PORT="${PORT:-<%= port %>}"
-LOCKFILE="${LOCKFILE:-/var/lock/subsys/deltacloud-<%= name %> }"
-LOGFILE="${LOGFILE:-/var/log/deltacloud-<%= name %>/$DRIVER.log}"
-PIDFILE="${THIN_PID:-/var/run/deltacloud-<%= name %>.pid}"
-export DELTACLOUD_MOCK_STORAGE=/usr/lib/ruby/gems/1.8/gems/deltacloud-<%= name %>-0.3.0/lib/deltacloud/drivers/mock/data/
+DRIVER="${DRIVER:-ec2}"
+PORT="${PORT:-3002}"
+LOCKFILE="${LOCKFILE:-/var/lock/subsys/deltacloud-core}"
+LOGFILE="${LOGFILE:-/var/log/deltacloud-core/$DRIVER.log}"
+PIDFILE="${THIN_PID:-/var/run/deltacloud-core.pid}"
+export DELTACLOUD_MOCK_STORAGE=/usr/lib/ruby/gems/1.8/gems/deltacloud-core-0.3.0/lib/deltacloud/drivers/mock/data/
PROG=/usr/bin/deltacloudd
@@ -25,7 +25,7 @@ STARTTIMEOUT=20
. /etc/init.d/functions
start() {
- echo -n "Starting deltacloud-<%= name %>: "
+ echo -n "Starting deltacloud-core: "
if [ -f $LOCKFILE ] || [ -f $PIDFILE ] && checkpid `cat $PIDFILE` ; then
echo_success
@@ -34,7 +34,7 @@ start() {
exit 0
fi
- $PROG -i $DRIVER -e $ENV -p $PORT <%= "--provider #{endpoint}" unless endpoint == "" %> >> $LOGFILE 2>&1 &
+ $PROG -i $DRIVER -e $ENV -p $PORT >> $LOGFILE 2>&1 &
RETVAL=$?
echo $! > $PIDFILE
if [ $RETVAL -eq 0 ] ; then
@@ -59,7 +59,7 @@ start() {
}
stop() {
- echo -n "Shutting down deltacloud-<%= name %>: "
+ echo -n "Shutting down deltacloud-core: "
# FIXME! we need to do a killproc -p <pidfile> here to ensure other deltacloud
# daemons are not killed as well
@@ -95,7 +95,7 @@ case "$1" in
RETVAL=$?
;;
*)
- echo "Usage: deltacloud-<%= name %> {start|stop|restart|status}"
+ echo "Usage: deltacloud-core {start|stop|restart|status}"
exit 1
;;
esac
--
1.7.6
12 years, 8 months
[PATCH 0/1 conductor] Fixes CatalogEntry migration
by Matt Wagner
Slow discovered that the migration that creates CatalogEntries blows up if you had existing SuggestedDeployables. We had talked about not doing the whole dance to port everything forward, but didn't intend for it to blow up where it did.
If you are migrating a database with SuggestedDeployables, we will create a default catalog (if no catalogs exist) and assign them to that catalog. Otherwise the migration fails because we try to save nil values to a column that can't be nil.
I also got sick of trying to remember how to look up the 'default pool' metadata object, so I added a Pool.default method to do so.
-- Matt
12 years, 8 months
Rework oz.git unittests
by James Laska
Greetings,
I've been looking into integrating existing oz unittests with jenkins. It
wasn't hard to have them run in jenkins as is, but I was looking give jenkins a
better idea for pass/fail data over time. One way to do this was to convert
the tests to use py.test (or unittest -- but that's a little crusty). Py.test
can emit junit XML test output, which is jenkins friendly, and has much less
stock test class/method bloat. I've modified the existing oz unittests to be
py.test friendly.
Another annoyance with running tests in jenkins is that the nodes need to be
manually setup with appropriate dependencies ahead of time. While this isn't
hard, it's maintenance and one more thing to forget/fail when testing. The new
test driver (runtests.sh) will setup a python virtualenv and install required
dependencies there. This is intended to handle deps installation during
unittest execution.
> .gitignore | 6 +
> Makefile | 6 +-
> tests/dependencies.txt | 2 +
> tests/factory/run.sh | 5 -
> tests/factory/test_factory.py | 311 +++++++++++++++++++++--------------------
> tests/runtests.sh | 90 ++++++++++++
> tests/tdl/run.sh | 128 -----------------
> tests/tdl/test.cfg | 135 ++++++++++++++++++
> tests/tdl/test_tdl.py | 131 +++++++++++++++++-
> 9 files changed, 524 insertions(+), 290 deletions(-)
Comments appreciated.
Thanks,
James
12 years, 8 months
[PATCH 0/4] Layout changes and new administer section
by Jirka Tomasek
Redmine #2218, #2228, #2219
Folowing patches implement new administer section navigation and bring
some changes and polishing to layout.scss and makes primary tab
navigation to use simple navigation gem
These patches should be pushed to separate branch in conductor repo
12 years, 8 months
Warden auth
by Jan Provazník
https://www.aeolusproject.org/redmine/issues/2118
This patchset replaces authlogic with warden which is used
also in katello. This is first step which allows us to
add more auth strategies (ldap, oauth) or use devise on top
of warden, this also synchronizes us with katello auth.
What's not very good in this solution is lack of password
handling/validations, which authlogic handled so now we have
to handle this ourselves. This can be solved in some next
step by using devise which is based on warden.
Password reset (or db recreation) is required with this patch
because encrypted password has different format.
12 years, 8 months
[PATCH aeolus-image 1/2] Updated Rake and Spec files to use updated libs in Rails3
by Martyn Taylor
From: Martyn <martyn(a)martyn-laptop.(none)>
---
.rspec | 2 ++
Rakefile | 16 +++++++---------
spec/spec.opts | 3 ---
spec/spec_helper.rb | 4 ++--
4 files changed, 11 insertions(+), 14 deletions(-)
create mode 100644 .rspec
delete mode 100644 spec/spec.opts
diff --git a/.rspec b/.rspec
new file mode 100644
index 0000000..0d9a0dd
--- /dev/null
+++ b/.rspec
@@ -0,0 +1,2 @@
+--colour
+--format nested
diff --git a/Rakefile b/Rakefile
index 0ef1a90..95705ee 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,10 +1,10 @@
require 'rubygems'
require 'rake'
require 'rake/clean'
-require 'rake/gempackagetask'
-require 'rake/rdoctask'
+require 'rubygems/package_task'
+require 'rdoc/task'
require 'rake/testtask'
-require 'spec/rake/spectask'
+require 'rspec/core/rake_task'
require 'rake/rpmtask'
RPMBUILD_DIR = "#{File.expand_path('~')}/rpmbuild"
@@ -13,7 +13,6 @@ RPM_SPEC = "rubygem-aeolus-image.spec"
spec = Gem::Specification.new do |s|
s.name = 'aeolus-image'
s.version = '0.1.0'
- s.has_rdoc = true
s.summary= 'cli for aeolus cloud suite'
s.description = 'Commandline interface for working with the aeolus cloud management suite'
s.author = 'Jason Guiditta, Martyn Taylor'
@@ -31,7 +30,7 @@ spec = Gem::Specification.new do |s|
s.add_development_dependency('rspec', '~>1.3.0')
end
-Rake::GemPackageTask.new(spec) do |p|
+Gem::PackageTask.new(spec) do |p|
p.gem_spec = spec
p.need_tar = true
p.need_zip = true
@@ -50,13 +49,12 @@ Rake::TestTask.new do |t|
t.test_files = FileList['test/**/*.rb']
end
-Spec::Rake::SpecTask.new do |t|
- t.spec_files = FileList['spec/**/*.rb']
- t.libs << Dir["lib"]
+RSpec::Core::RakeTask.new do |t|
+ t.pattern = FileList['spec/**/*.rb']
end
Rake::RpmTask.new(RPM_SPEC) do |rpm|
rpm.need_tar = true
rpm.package_files.include("lib/*")
rpm.topdir = "#{RPMBUILD_DIR}"
-end
+end
\ No newline at end of file
diff --git a/spec/spec.opts b/spec/spec.opts
deleted file mode 100644
index 4154052..0000000
--- a/spec/spec.opts
+++ /dev/null
@@ -1,3 +0,0 @@
---color
---format specdoc
---diff
\ No newline at end of file
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 013fbd3..135f090 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,4 +1,4 @@
-$: << File.expand_path(File.join(File.dirname(__FILE__), "../lib"))
+$: << File.expand_path(File.join(File.dirname(__FILE__), "../lib/aeolus_image"))
$: << File.expand_path(File.join(File.dirname(__FILE__), "."))
require 'rubygems'
require 'config_parser'
@@ -31,7 +31,7 @@ module Helpers
end
end
-Spec::Runner.configure do |config|
+RSpec.configure do |config|
config.include Helpers
config.before(:all) do
Aeolus::Image::BaseCommand.class_eval do
--
1.7.6
12 years, 8 months
Tests failing on f15, help!
by steve linabery
I'm unable to run 'cucumber' or 'rake spec' against conductor using f15.
1) Running 'cucumber' in the src directory gives me this:
no such file to load -- cucumber/rails (LoadError)
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
/home/hudson/workspace/cloudEngine-conductor-westford-next/src/features/support/env.rb:7
[snip]
Before you send me to lmgtfy.com, I'm wanting to know if any other aeolus developers have hit this same error, and if so what was the workaround specific to our codebase. Is this an error in conductor code itself or a problem with my environment?
2) Running 'rake spec' in the src directory results in no output to stdout from the command, which exits immediately and with a clean exit status. Same if I run it as 'rake --verbose spec'...no output whatsoever.
Thank you, I now return to slowly hitting my head against my desk.
s|e
12 years, 8 months