[PATCH conductor] Fix the repo urls for Fedora
by Tomas Sedovic
From: Tomas Sedovic <tsedovic(a)redhat.com>
With the previous URL, building images via Oz was failing, because version
with "Everything" in them don't provide the boot image.
---
.../image_descriptor_package_repositories.yml | 2 +-
src/script/use-existing-ec2-templates | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/config/image_descriptor_package_repositories.yml b/src/config/image_descriptor_package_repositories.yml
index c600ccc..12a15d1 100644
--- a/src/config/image_descriptor_package_repositories.yml
+++ b/src/config/image_descriptor_package_repositories.yml
@@ -1,6 +1,6 @@
id: fedora
name: Fedora
-baseurl: http://download.fedoraproject.org/pub/fedora/linux/releases/13/Everything...
+baseurl: http://download.fedoraproject.org/pub/fedora/linux/releases/13/Fedora/x86...
type: xml
# you can define multiple repositories, as array, for example:
diff --git a/src/script/use-existing-ec2-templates b/src/script/use-existing-ec2-templates
index 9b6f51b..3eb5541 100755
--- a/src/script/use-existing-ec2-templates
+++ b/src/script/use-existing-ec2-templates
@@ -52,7 +52,7 @@ add_ec2_template("
<image>
<name>Amazon public fedora 8 image</name>
<repos>
- <repo>http://download.fedoraproject.org/pub/fedora/linux/releases/8/Everything/...</repo>
+ <repo>http://download.fedoraproject.org/pub/fedora/linux/releases/8/Fedora/i386...</repo>
</repos>
<os name=\"fedora\" version=\"8\" architecture=\"32-bit\"/>",
"Amazon public fedora 8 image",
@@ -63,7 +63,7 @@ add_ec2_template("
<image>
<name>Amazon public fedora 8 64 bit image</name>
<repos>
- <repo>http://download.fedoraproject.org/pub/fedora/linux/releases/8/Everything/...</repo>
+ <repo>http://download.fedoraproject.org/pub/fedora/linux/releases/8/Fedora/x86_...</repo>
</repos>
<os name=\"fedora\" version=\"8\" architecture=\"64-bit\"/>",
"Amazon public fedora 8 64 bit image",
@@ -74,7 +74,7 @@ add_ec2_template("
<image>
<name>Aeolus Conductor demo Fedora 13 64 bit image</name>
<repos>
- <repo>http://download.fedoraproject.org/pub/fedora/linux/releases/13/Everything...</repo>
+ <repo>http://download.fedoraproject.org/pub/fedora/linux/releases/13/Fedora/x86...</repo>
</repos>
<os name=\"fedora\" version=\"13\" architecture=\"64-bit\"/>",
"Aeolus Conductor Fedora 13 64 bit image",
--
1.7.4
13 years, 3 months
[PATCH aeolus] aeolus-connector init - clean start with defunct lock file
by Angus Thomas
From: Angus Thomas <athomas(a)redhat.com>
---
.../image_factory_connector/aeolus-connector.init | 10 ++++++++--
1 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/services/image_factory/image_factory_connector/aeolus-connector.init b/services/image_factory/image_factory_connector/aeolus-connector.init
index a9dd579..6e389bf 100755
--- a/services/image_factory/image_factory_connector/aeolus-connector.init
+++ b/services/image_factory/image_factory_connector/aeolus-connector.init
@@ -20,8 +20,14 @@ logfile=/var/log/aeolus-conductor/aeolus-connector.log
start() {
if [ -e $lockfile ] ; then
- echo "$prog subsystem locked"
- exit 1
+ status image_factory_connector > /dev/null 2>&1
+ retval=$?
+ if [ $retval == 0 ] ; then
+ echo $prog is currently running
+ exit 1
+ else
+ rm -f $lockfile
+ fi
fi
if [ $UID -ne 0 ] ; then
echo "User has insufficient privilege."
--
1.7.4
13 years, 3 months
[PATCH conductor] Fix BZ 679147
by Tomas Sedovic
From: Tomas Sedovic <tsedovic(a)redhat.com>
https://bugzilla.redhat.com/show_bug.cgi?id=679147
In a JS-enabled browser, we use jQuery UI Tabs to display the contents of the
details pane. The content is loaded using ajax whenever the user switches a
tab.
The bug was that the first tab never got reloaded. That caused
inconsistencies in the UI.
As a part of the fix, the text in the tab headers is now enclosed in <span>
tags which allows us to show a message notifying the user that the tab is
being loaded.
For whatever reason, jQuery UI requires that <span> tag for this to work.
---
src/app/views/layouts/_details_pane.haml | 4 +++-
src/public/javascripts/application.js | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/app/views/layouts/_details_pane.haml b/src/app/views/layouts/_details_pane.haml
index 89ea471..c38bff4 100644
--- a/src/app/views/layouts/_details_pane.haml
+++ b/src/app/views/layouts/_details_pane.haml
@@ -1,6 +1,8 @@
%ul.ui-tabs-nav.ui-helper-reset.ui-helper-clearfix.ui-widget-header.ui-corner-all
- @tab_captions.each do |tab|
%li.ui-state-default.ui-corner-top{ :class => "#{'ui-tabs-selected ui-state-active' if @details_tab == slug(tab)}"}
- = link_to tab, @url_params.merge(:details_tab => slug(tab))
+ %a{ :href => url_for(@url_params.merge(:details_tab => slug(tab)))}
+ %span
+ = tab
#details-selected
= render :partial => @details_tab
diff --git a/src/public/javascripts/application.js b/src/public/javascripts/application.js
index ef3b1d5..af29bd6 100644
--- a/src/public/javascripts/application.js
+++ b/src/public/javascripts/application.js
@@ -75,7 +75,7 @@ var Conductor = {
},
enhanceDetailsTabs: function () {
- $('#details-view ul li a').first().attr('href', '#details-selected');
+ $('#details-selected').hide();
$('#details-view').tabs('destroy').tabs();
}
};
--
1.7.4
13 years, 3 months
[PATCH configure] ensure latest versions of aeolus packages are installed
by Mo Morsi
---
recipes/aeolus_recipe/manifests/conductor.pp | 4 ++--
recipes/aeolus_recipe/manifests/deltacloud.pp | 2 +-
recipes/aeolus_recipe/manifests/image-factory.pp | 2 +-
recipes/aeolus_recipe/manifests/iwhd.pp | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/recipes/aeolus_recipe/manifests/conductor.pp b/recipes/aeolus_recipe/manifests/conductor.pp
index b6c4c67..bc4d434 100644
--- a/recipes/aeolus_recipe/manifests/conductor.pp
+++ b/recipes/aeolus_recipe/manifests/conductor.pp
@@ -7,11 +7,11 @@ class aeolus::conductor inherits aeolus {
package {['aeolus-conductor',
'aeolus-conductor-daemons',
'aeolus-conductor-doc']:
- provider => 'yum', ensure => 'installed'}
+ provider => 'yum', ensure => 'latest'}
# to be renamed to aeolus-connector
package {'rubygem-image_factory_connector':
- provider => 'yum', ensure => 'installed'}
+ provider => 'yum', ensure => 'latest'}
}
file {"/var/lib/aeolus-conductor":
diff --git a/recipes/aeolus_recipe/manifests/deltacloud.pp b/recipes/aeolus_recipe/manifests/deltacloud.pp
index f4e1802..1a14085 100644
--- a/recipes/aeolus_recipe/manifests/deltacloud.pp
+++ b/recipes/aeolus_recipe/manifests/deltacloud.pp
@@ -4,7 +4,7 @@ class aeolus::deltacloud inherits aeolus {
### Install the aeolus components
if $enable_packages {
package { 'rubygem-deltacloud-core':
- provider => 'yum', ensure => 'installed', require => Yumrepo['aeolus_arch', 'aeolus_noarch']}
+ provider => 'yum', ensure => 'latest', require => Yumrepo['aeolus_arch', 'aeolus_noarch']}
# install ec2 support,
diff --git a/recipes/aeolus_recipe/manifests/image-factory.pp b/recipes/aeolus_recipe/manifests/image-factory.pp
index 5ff7b3e..67c55b5 100644
--- a/recipes/aeolus_recipe/manifests/image-factory.pp
+++ b/recipes/aeolus_recipe/manifests/image-factory.pp
@@ -3,7 +3,7 @@
class aeolus::image-factory inherits aeolus {
if $enable_packages {
package { 'imagefactory':
- provider => 'yum', ensure => 'installed',
+ provider => 'yum', ensure => 'latest',
require => [Yumrepo['aeolus_arch', 'aeolus_noarch']]
}
package { 'qpid-cpp-server':
diff --git a/recipes/aeolus_recipe/manifests/iwhd.pp b/recipes/aeolus_recipe/manifests/iwhd.pp
index 2db8e14..9ba6c04 100644
--- a/recipes/aeolus_recipe/manifests/iwhd.pp
+++ b/recipes/aeolus_recipe/manifests/iwhd.pp
@@ -4,7 +4,7 @@ class aeolus::iwhd inherits aeolus {
### Install the deltacloud components
if $enable_packages{
package { 'iwhd':
- provider => 'yum', ensure => 'installed',
+ provider => 'yum', ensure => 'latest',
require => Yumrepo['aeolus_arch', 'aeolus_noarch'] }
package { 'mongodb-server':
--
1.7.2.3
13 years, 3 months
[PATCH configure 2/2] Leave selinux alone if it is disabled
by Mike Orazi
---
recipes/aeolus_recipe/manifests/selinux.pp | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/recipes/aeolus_recipe/manifests/selinux.pp b/recipes/aeolus_recipe/manifests/selinux.pp
index 05a3174..aa6e401 100644
--- a/recipes/aeolus_recipe/manifests/selinux.pp
+++ b/recipes/aeolus_recipe/manifests/selinux.pp
@@ -7,5 +7,7 @@ define selinux::mode(){
}
exec{"set_selinux_${name}":
command => "/usr/sbin/setenforce ${mode}"
+ unless => "/usr/bin/test 'Disabled' = `/usr/sbin/getenforce`"
}
}
+
--
1.7.4
13 years, 3 months
[PATCH configure 1/2] Rename imagefactoryd to imagefactory
by Mike Orazi
---
recipes/aeolus_recipe/manifests/image-factory.pp | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/recipes/aeolus_recipe/manifests/image-factory.pp b/recipes/aeolus_recipe/manifests/image-factory.pp
index 5ff7b3e..cb05c59 100644
--- a/recipes/aeolus_recipe/manifests/image-factory.pp
+++ b/recipes/aeolus_recipe/manifests/image-factory.pp
@@ -32,7 +32,7 @@ class aeolus::image-factory inherits aeolus {
File['/var/tmp/imagefactory-mock'],
Service[qpidd],
Rails::Seed::Db[seed_aeolus_database]]
- service { 'imagefactoryd':
+ service { 'imagefactory':
ensure => 'running',
enable => true,
require => $requires}
@@ -43,9 +43,9 @@ class aeolus::image-factory::disabled {
service {'qpidd':
ensure => 'stopped',
enable => false,
- require => Service['imagefactoryd']}
+ require => Service['imagefactory']}
- service { 'imagefactoryd':
+ service { 'imagefactory':
ensure => 'stopped',
enable => false}
@@ -53,7 +53,7 @@ class aeolus::image-factory::disabled {
if $enable_packages {
package { 'imagefactory':
provider => 'yum', ensure => 'absent',
- require => Service['imagefactoryd']}
+ require => Service['imagefactory']}
}
--
1.7.4
13 years, 3 months
Condor Cloud Provider Project
by Ian Main
Condor Cloud for Aeolus
-----------------------
I wrote up a quick summary of the current issues/ideas around this
project so we can get things rolling. If you don't want to read
the whole document please at least look at the section you are
interested in. :) I CC'd a few condor guys as well.
Goal
----
The idea here is to create a simple cloud provider driven through
deltacloud that we can use in Aeolus. The first iteration will be
extremely simple indeed and basically just make use of the facilities
offered by condor with some glue to make things work.
- VMs will use KVM via Condor.
- Condor will keep track of all instances for us and offer scalability.
- Instances will be stateless. Condor will copy VM images before running
them and NOT save state when done.
- Simple mechanism for uploading images to machine running condor.
- Deltacloud driver to interface directly with condor or through simple
agent (to handle MAC/IP mappings, authentication etc).
Image Wharehouse Integration
----------------------------
So far the general consensus is to use something simple like NFS or scp
to copy images to the Condor central manager server. This will consist
of an upload directory and then a staging directory. While uploading
files go into the uploading directory and then are moved to staging once
upload is complete. This prevents trying to start a half-copied image,
although that is generally not possible from the aeolus UI.
Only question here is that we may need some info on what OS this is
targeting so we can do the drive mapping correctly etc. The iwhd guys
may know more issues as well.
Deltacloud Driver
-----------------
The deltacloud driver can interact directly with condor commands
to start, stop, and query the state of instances running in condor.
Ruby code to do everything but the query is already in conductor, but
generally we use condor_submit to start a new job/instance, condor_q -xml
to get the state of jobs on the system (parsing xml output), and
condor_rm to stop an instance.
Now, the difficulty comes in when we start looking at doing things like
mapping MACs to IPs, authentication etc. If we do the condor commands
directly in the driver then the driver would have to handle these tasks
as well. I'm not sure if that is desirable.
The other idea is to put some kind of agent in between the driver and
condor which can handle MAC/IP translation, authentication, perhaps
image registration etc. The benefit of this is that then we can work
on adding features to the 'cloud' without having to change the deltacloud
driver itself as often. I'm starting to think this is the way to go
even tho it may be slightly more work up front.
I also looked into having the IP address set in the job via condor but
I do not see a clean/easy way to do this.
IP Discovery
------------
There are many possible solutions to this problem but none of them are
obviously better than any other. The three that seem the most promising
are:
1) Using an agent in the VMs to register with a central server thereby
letting us know its IP.
2) Having control of the DHCP server so we can see which leases are out
for which MACs.
3) Using a config file which maps MACs to IPs and then configuring dhcpd
with the same mapping.
Of these I'm thinking we should implement #3 first. I think this should
get us up and running quickly and it can be configured in almost any
environment. Second option would be #1. I think in the end we will
need to implement all of these and have it be configurable by the admin.
Using the config file to map MACs to IPs means having to keep track of
which macs are in use. We can do this easily by querying the jobs which
contain this information. However this lookup would have to be done before
the job is submitted to condor and so this duty would fall on either
the deltacloud driver itself or the condor cloud agent.
Installation/Configuration
--------------------------
I'm hoping I can get some help on using a puppet script to ease installation
similar to what we are doing with Aeolus Conductor now. While I don't have
all the details yet, in general we will need it to:
- Configure condor.
- Set up deltacloud correctly with the right driver etc.
- Set up a network bridge for VMs.
- Set up the MAC/IP address table for admins to edit.
Other Docs
----------
Please also see Mathews document on Condor as a cloud provider:
http://spinningmatt.files.wordpress.com/2010/04/matthewfarrelleeopensourc...
Summary
-------
I think I've touched on the major issues/talking points here. Hopefully we
can come up with the best solutions quickly and get to writing the parts
soon.
Really the only parts that are still up in the air are the IP/MAC mapping
(possibly tho I'm fine with the config file thing for now), and how to
architect the driver - eg whether we need an agent in between the driver
and condor. I think the rest we can work out as we go.
Ian
13 years, 3 months
[PATCH configure] image factory dependency fixes
by Mo Morsi
- no longer ship image builder agent (has since been replaced w/ imagefactory)
- no longer depend on conductor packages
- make sure qpid server is pulled in to run that service
---
recipes/aeolus_recipe/manifests/image-factory.pp | 16 ++++++----------
1 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/recipes/aeolus_recipe/manifests/image-factory.pp b/recipes/aeolus_recipe/manifests/image-factory.pp
index dd11b3f..5ff7b3e 100644
--- a/recipes/aeolus_recipe/manifests/image-factory.pp
+++ b/recipes/aeolus_recipe/manifests/image-factory.pp
@@ -2,14 +2,12 @@
class aeolus::image-factory inherits aeolus {
if $enable_packages {
- package { 'rubygem-deltacloud-image-builder-agent':
- provider => 'yum', ensure => 'installed',
- require => [Yumrepo['aeolus_arch', 'aeolus_noarch']]}
-
package { 'imagefactory':
provider => 'yum', ensure => 'installed',
require => [Yumrepo['aeolus_arch', 'aeolus_noarch']]
}
+ package { 'qpid-cpp-server':
+ provider => 'yum', ensure => 'installed' }
}
### Configure pulp to fetch from Fedora
@@ -26,13 +24,11 @@ class aeolus::image-factory inherits aeolus {
ensure => 'running',
enable => true,
require => [File['/etc/qpidd.conf'],
- return_if($enable_packages, Package['aeolus-conductor-daemons'])]}
+ return_if($enable_packages, Package['qpid-cpp-server'])]}
file { "/var/tmp/imagefactory-mock":
ensure => "directory",
mode => 755 }
- $requires = [return_if($enable_packages, Package['rubygem-deltacloud-image-builder-agent']),
- return_if($enable_packages, Package['aeolus-conductor-daemons']),
- return_if($enable_packages, Package['imagefactory']),
+ $requires = [return_if($enable_packages, Package['imagefactory']),
File['/var/tmp/imagefactory-mock'],
Service[qpidd],
Rails::Seed::Db[seed_aeolus_database]]
@@ -55,9 +51,9 @@ class aeolus::image-factory::disabled {
### Uninstall the deltacloud components
if $enable_packages {
- package { 'rubygem-deltacloud-image-builder-agent':
+ package { 'imagefactory':
provider => 'yum', ensure => 'absent',
- require => Package['aeolus-conductor']}
+ require => Service['imagefactoryd']}
}
--
1.7.2.3
13 years, 3 months
ANNOUNCE: oz 0.2.0 release
by Chris Lalancette
All,
I'm pleased to announce release 0.2.0 of Oz. Oz is a program for doing
automated installation of guest operating systems with limited input from the
user.
There are quite a bit of bugfixes, features, and updates to Oz between
0.1.0 and 0.2.0. Some of them are:
- The ability to upload individual files into a guest
- The ability to specify extra repositories to install packages on the guest
from
- Updated documentation
- More control over Oz's caching behavior. You can now specify whether you
want Oz to cache the original ISO, the modified ISO, the resulting JEOS image,
or any combination of the above
- Support for installing Ubuntu 10.04 and 10.10 guests
- Support for installing CentOS 3, 4, and 5 guests
- Support for OpenSUSE 11.0
- Faster ISO extraction/generation
- A user-configurable timeout for installation
More documentation on Oz is available here: http://aeolusproject.org/oz.html
If you have any questions or comments about oz, please feel free to contact
aeolus-devel(a)fedorahosted.org or me (clalance(a)redhat.com) directly.
Thanks,
--
Chris Lalancette
13 years, 3 months
Final functional patchset for factory
by Jason Guiditta
This should get the last bits of end to end building working (minus config stuff).
It needs to be applied on top of rwsu's 2-patch series if that is not already pushed.
[PATCH conductor 1/5] BUGFIX: Fix typo where we were looking for wrong parameter.
[PATCH conductor 2/5] Send status updates back to conductor from factory.
[PATCH conductor 3/5] BUGFIX: this fix a couple minor issues with status api calls.
[PATCH conductor 4/5] BUGFIX: our complete state did not match the factory.
[PATCH conductor 5/5] add gitignore for services.
13 years, 3 months