--- aeolus-conductor.spec.in | 6 - conf/conductor-image_builder_service | 78 -------- src/image_builder_service/image_builder_service | 234 ----------------------- 3 files changed, 0 insertions(+), 318 deletions(-) delete mode 100755 conf/conductor-image_builder_service delete mode 100755 src/image_builder_service/image_builder_service
diff --git a/aeolus-conductor.spec.in b/aeolus-conductor.spec.in index 6e44e8b..4b77b37 100644 --- a/aeolus-conductor.spec.in +++ b/aeolus-conductor.spec.in @@ -126,7 +126,6 @@ mv %{buildroot}/%{app_root}/doc %{buildroot}/%{app_root}/test %{buildroot}/%{doc %{__cp} conf/aeolus-conductor %{buildroot}%{_initrddir} %{__cp} conf/conductor-dbomatic %{buildroot}%{_initrddir} %{__cp} conf/conductor-condor_refreshd %{buildroot}%{_initrddir} -%{__cp} conf/conductor-image_builder_service %{buildroot}%{_initrddir} %{__cp} conf/conductor-delayed_job %{buildroot}%{_initrddir} %{__cp} conf/aeolus-conductor-httpd.conf %{buildroot}%{_sysconfdir}/httpd/conf.d/aeolus-conductor.conf %{__cp} conf/aeolus-conductor.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/aeolus-conductor @@ -157,7 +156,6 @@ touch %{buildroot}%{_localstatedir}/log/%{name}/rails.log touch %{buildroot}%{_localstatedir}/log/%{name}/dbomatic.log touch %{buildroot}%{_localstatedir}/run/%{name}/event_log_position touch %{buildroot}%{_localstatedir}/log/%{name}/condor_refreshd.log -touch %{buildroot}%{_localstatedir}/log/%{name}/image_builder_service.log
[ -e %{buildroot}%{app_root}/log ] || %{__mkdir} -p %{buildroot}%{app_root}/log touch %{buildroot}%{app_root}/log/delayed_job.log @@ -193,7 +191,6 @@ getent passwd aeolus >/dev/null || \ /sbin/chkconfig --add aeolus-conductor /sbin/chkconfig --add conductor-dbomatic /sbin/chkconfig --add conductor-condor_refreshd -/sbin/chkconfig --add conductor-image_builder_service /sbin/chkconfig --add conductor-delayed_job
%preun daemons @@ -204,8 +201,6 @@ if [ $1 = 0 ]; then /sbin/chkconfig --del conductor-dbomatic /sbin/service conductor-condor_refreshd stop > /dev/null 2>&1 /sbin/chkconfig --del conductor-condor_refreshd -/sbin/service conductor-image_builder_service stop > /dev/null 2>&1 -/sbin/chkconfig --del conductor-image_builder_service /sbin/service conductor-delayed_job stop > /dev/null 2>&1 /sbin/chkconfig --del conductor-delayed_job fi @@ -227,7 +222,6 @@ fi %{_initrddir}/aeolus-conductor %{_initrddir}/conductor-dbomatic %{_initrddir}/conductor-condor_refreshd -%{_initrddir}/conductor-image_builder_service %{_initrddir}/conductor-delayed_job %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %config(noreplace) %{_sysconfdir}/sysconfig/aeolus-conductor diff --git a/conf/conductor-image_builder_service b/conf/conductor-image_builder_service deleted file mode 100755 index 947b0ac..0000000 --- a/conf/conductor-image_builder_service +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/bash -# -# -# conductor-image_builder_service startup script for conductor-image_builder_service -# -# chkconfig: - 93 07 -# description: conductor-image_builder_service builds cloud images -# from the Aeolus Conductor db - -[ -r /etc/sysconfig/conductor-rails ] && . /etc/sysconfig/conductor-rails - -[ -r /etc/sysconfig/aeolus-conductor ] && . /etc/sysconfig/aeolus-conductor - -CONDUCTOR_DIR="${CONDUCTOR_DIR:-/usr/share/aeolus-conductor}" -BUILDER_LOG="${BUILDER_LOG:-/var/log/aeolus-conductor/image_builder_service.log}" -BUILDER_PID="${BUILDER_PID:-/var/run/aeolus-conductor/image_builder_service.pid}" -BUILDER_LOCKFILE="${BUILDER_LOCKFILE:-/var/lock/subsys/conductor-image_builder_service}" -AEOLUS_USER="${AEOLUS_USER:-aeolus}" - -BUILDER_PATH=$CONDUCTOR_DIR/image_builder_service -BUILDER_PROG=image_builder_service - -. /etc/init.d/functions - -start() { - echo -n "Starting conductor-image_builder_service: " - - daemon --user=$AEOLUS_USER $BUILDER_PATH/$BUILDER_PROG - RETVAL=$? - if [ $RETVAL -eq 0 ] && touch $BUILDER_LOCKFILE ; then - echo_success - echo - else - echo_failure - echo - fi -} - -stop() { - echo -n "Shutting down conductor-image_builder_service: " - killproc -p $BUILDER_PID $BUILDER_PROG - RETVAL=$? - if [ $RETVAL -eq 0 ] && rm -f $BUILDER_LOCKFILE ; then - echo_success - echo - else - echo_failure - echo - fi -} - -case "$1" in - start) - start - ;; - stop) - stop - ;; - restart) - stop - start - ;; - reload) - ;; - force-reload) - restart - ;; - status) - status -p $BUILDER_PID $BUILDER_PROG - RETVAL=$? - ;; - *) - echo "Usage: conductor-image_builder_service {start|stop|restart|status}" - exit 1 - ;; -esac - -exit $RETVAL diff --git a/src/image_builder_service/image_builder_service b/src/image_builder_service/image_builder_service deleted file mode 100755 index 19ea709..0000000 --- a/src/image_builder_service/image_builder_service +++ /dev/null @@ -1,234 +0,0 @@ -#!/usr/bin/env ruby -# -# 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. - -$: << File.join(File.dirname(__FILE__), "../dutils") -require 'dutils' -require "image_builder_console" -require 'logger' -require 'optparse' - -help = false -daemon = true -builder_pid_dir = "/var/run/aeolus-conductor" -builder_log_dir = "/var/log/aeolus-conductor" -timeout = 8 - -optparse = OptionParser.new do |opts| - - opts.banner = <<BANNER -Usage: -image_builder_service [options] - -Options: -BANNER - opts.on( '-f', '--pid-file PATH', "Use PATH to the image_builder_service pid directory (defaults to #{builder_pid_dir})") do |newpath| - builder_pid_dir = newpath - end - opts.on( '-h', '--help', '') { help = true } - opts.on( '-l', '--log PATH', "Use PATH to the image_builder_service log directory (defaults to #{builder_log_dir}). Use '-' for stdout") do |newpath| - builder_log_dir = newpath - end - opts.on( '-n', '--nodaemon', 'Do not daemonize (useful in combination with -l for debugging)') { daemon = false } - opts.on( '-t', '--timeout SEC', 'Sleep for SEC between each poll for a new job (default is #{timeout})') do |newtime| - timeout = newtime - end -end - -begin - optparse.parse! -rescue OptionParser::InvalidOption => e - puts "Invalid option #{e.args}" - puts - puts optparse - exit(1) -end - -if help - puts optparse - exit(0) -end - -# setup the logger -if builder_log_dir == '-' - BUILDER_LOG_FILE = STDOUT -else - BUILDER_LOG_FILE = "#{builder_log_dir}/image_builder_service.log" -end -logger = Logger.new(BUILDER_LOG_FILE) -logger.level = Logger::DEBUG - -# daemonize -if daemon - # note that this requires 'active_support', which we get for free from dutils - Process.daemon -end - -#TODO: Make this whole thing less fragile -class ImageBuilderService - def initialize(logger, timeout) - @log = logger - @timeout = timeout.to_i - @console ||= ImageBuilderConsole.new(:logger=>@log) - @activebuilds ||= [] - @log.info "Image Builder Service initialized..." - poll - end - - def check_for_queued - queue = Image.find(:all, :conditions => {:status => Image::STATE_QUEUED}) - cur_builds = Image.find(:all, :conditions => {:status => Image::ACTIVE_STATES}) - if queue.size > 0 || cur_builds.size > 0 - @log.debug "========================================" - @log.debug "Queued Builds: " + queue.size.to_s - @log.debug "All Incomplete Builds: " + cur_builds.size.to_s - @log.debug "========================================" - end - find_orphaned(cur_builds) if cur_builds.size > queue.size - queue.each {|t| - build(t) - } - end - - def build(image) - #targets.each do |t| - @log.debug "========================================" - @log.debug "target: " + image.provider_type.codename + ", status: " + image.status - @log.debug "========================================" - # FIXME: this should be contained elsewhere (probably Image model) so we - # can keep logic out of here. Also, this currently only handles one - # account, we will need to be able to specify at some point. - creds = nil - image.provider_type.providers.each do |p| - unless p.provider_accounts.empty? - creds = p.provider_accounts.first.build_credentials - break - end - end - #TODO: switch this back to uri once ActiveBuild retrieves it properly - ab = @console.build_image(image.template.xml.to_xml, image.provider_type.codename, image.uuid, creds) - if ab - update_build_list(ab, image) - image.build_id = ab.object_id.to_s - image.save! - @log.debug "========================================" - @log.debug "Build id saved as: " + image.build_id - @log.debug "========================================" - end - #end - end - - def check_build_num - @activebuilds.size - end - - def find_orphaned(cur_builds) - cur_builds.delete_if do |b| - break if @activebuilds.size == 0 - @activebuilds.each do |ab| - b.build_id.eql?(ab[:build_id]) - end - end - if cur_builds.size > 0 - @log.debug "========================================" - @log.debug "There appear to be " + cur_builds.size.to_s + " untracked builds." - @log.debug "Attempting to get status updates...." - @log.debug "========================================" - found = [] - cur_builds.each do |t| - found << {:ab => @console.find_build(t.build_id), - :target => t } - end - @log.debug "========================================" - @log.debug "Retrieved " + found.size.to_s + " builds to update." - @log.debug "========================================" - found.each do |f| - update_build_list(f[:ab], f[:target]) - end - end - end - - def update_agg(obj,new_status) - @log.debug "========================================" - @log.debug "Getting ar object to update using " + obj[:build].target.inspect + " and " + obj[:ar_id].inspect + " ..." - @log.debug "========================================" - image = Image.find(:first, :conditions => { :provider_type_id => ProviderType.find_by_codename(obj[:build].target.to_s).id, - :template_id => obj[:ar_id].to_i }) - @log.debug "========================================" - @log.debug "Updating with status: " + new_status - @log.debug "========================================" - image.status = new_status - image.save! - if new_status == 'complete' - ri = image.provider_images.first - ri.provider_image_key = obj[:build].finished_image - ri.status = ProviderImage::STATE_COMPLETE - ri.save! - - # FIXME: Might be cleaner to do this in an active record observer instead. - @log.debug "========================================" - @log.debug "calling condor classad sync." - @log.debug "========================================" - kick_condor - end - @log.debug "========================================" - @log.debug "database updated!" - @log.debug "========================================" - end - - private - def poll() - loop do - check_for_queued - @activebuilds.delete_if do |ab| - cur_status = @console.check_status(ab[:build]) - update_agg(ab, cur_status) unless cur_status.eql?(ab[:status]) - @log.debug "========================================" - @log.debug "Status for target #{ab[:build].target}: #{cur_status}" - @log.debug "Builds in array: " + check_build_num.to_s - @log.debug "========================================" - Image::INACTIVE_STATES.include?(cur_status) - end - sleep @timeout - - end - end - - def update_build_list(ab, target) - @activebuilds << - { :ar_id => target.template.id, - :build => ab, - :status => target.status, - :build_id => ab.object_id.to_s - } - end -end - -begin - BUILDER_PID_FILE = "#{builder_pid_dir}/image_builder_service.pid" - FileUtils.mkdir_p File.dirname(BUILDER_PID_FILE) - open(BUILDER_PID_FILE, "w") {|f| f.write(Process.pid) } - File.chmod(0644, BUILDER_PID_FILE) - - ImageBuilderService.new(logger, timeout) -rescue => e - logger.error "#{e.backtrace.shift}: #{e.message}" - e.backtrace.each do |step| - logger.error "\tfrom #{step}" - end -end
On Tue, 2011-03-15 at 17:22 -0400, Mohammed Morsi wrote:
aeolus-conductor.spec.in | 6 - conf/conductor-image_builder_service | 78 -------- src/image_builder_service/image_builder_service | 234 ----------------------- 3 files changed, 0 insertions(+), 318 deletions(-) delete mode 100755 conf/conductor-image_builder_service delete mode 100755 src/image_builder_service/image_builder_service
Just a quick note for anyone looking to test this. Angus is finishing up the rpm spec for connector, and this (and the configure patches) from Mo assume that is in place. This means this cannot be fully tested until the connector spec is in, so anyone looking to try this out should ping Angus first to avoid confusion.
-j
I think you missed removing the following 2 lines from aeolus-conductor.spec.in:
-Requires: rubygem(deltacloud-image-builder-agent) -Requires: rubygem(imagebuilder-console)
Other than that, ACK. If those two requires aren't removed, we'll have colliding qpid requirements.
Mike
On 03/15/2011 05:22 PM, Mohammed Morsi wrote:
aeolus-conductor.spec.in | 6 - conf/conductor-image_builder_service | 78 -------- src/image_builder_service/image_builder_service | 234 ----------------------- 3 files changed, 0 insertions(+), 318 deletions(-) delete mode 100755 conf/conductor-image_builder_service delete mode 100755 src/image_builder_service/image_builder_service
diff --git a/aeolus-conductor.spec.in b/aeolus-conductor.spec.in index 6e44e8b..4b77b37 100644 --- a/aeolus-conductor.spec.in +++ b/aeolus-conductor.spec.in @@ -126,7 +126,6 @@ mv %{buildroot}/%{app_root}/doc %{buildroot}/%{app_root}/test %{buildroot}/%{doc %{__cp} conf/aeolus-conductor %{buildroot}%{_initrddir} %{__cp} conf/conductor-dbomatic %{buildroot}%{_initrddir} %{__cp} conf/conductor-condor_refreshd %{buildroot}%{_initrddir} -%{__cp} conf/conductor-image_builder_service %{buildroot}%{_initrddir} %{__cp} conf/conductor-delayed_job %{buildroot}%{_initrddir} %{__cp} conf/aeolus-conductor-httpd.conf %{buildroot}%{_sysconfdir}/httpd/conf.d/aeolus-conductor.conf %{__cp} conf/aeolus-conductor.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/aeolus-conductor @@ -157,7 +156,6 @@ touch %{buildroot}%{_localstatedir}/log/%{name}/rails.log touch %{buildroot}%{_localstatedir}/log/%{name}/dbomatic.log touch %{buildroot}%{_localstatedir}/run/%{name}/event_log_position touch %{buildroot}%{_localstatedir}/log/%{name}/condor_refreshd.log -touch %{buildroot}%{_localstatedir}/log/%{name}/image_builder_service.log
[ -e %{buildroot}%{app_root}/log ] || %{__mkdir} -p %{buildroot}%{app_root}/log touch %{buildroot}%{app_root}/log/delayed_job.log @@ -193,7 +191,6 @@ getent passwd aeolus>/dev/null || \ /sbin/chkconfig --add aeolus-conductor /sbin/chkconfig --add conductor-dbomatic /sbin/chkconfig --add conductor-condor_refreshd -/sbin/chkconfig --add conductor-image_builder_service /sbin/chkconfig --add conductor-delayed_job
%preun daemons @@ -204,8 +201,6 @@ if [ $1 = 0 ]; then /sbin/chkconfig --del conductor-dbomatic /sbin/service conductor-condor_refreshd stop> /dev/null 2>&1 /sbin/chkconfig --del conductor-condor_refreshd -/sbin/service conductor-image_builder_service stop> /dev/null 2>&1 -/sbin/chkconfig --del conductor-image_builder_service /sbin/service conductor-delayed_job stop> /dev/null 2>&1 /sbin/chkconfig --del conductor-delayed_job fi @@ -227,7 +222,6 @@ fi %{_initrddir}/aeolus-conductor %{_initrddir}/conductor-dbomatic %{_initrddir}/conductor-condor_refreshd -%{_initrddir}/conductor-image_builder_service %{_initrddir}/conductor-delayed_job %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %config(noreplace) %{_sysconfdir}/sysconfig/aeolus-conductor diff --git a/conf/conductor-image_builder_service b/conf/conductor-image_builder_service deleted file mode 100755 index 947b0ac..0000000 --- a/conf/conductor-image_builder_service +++ /dev/null @@ -1,78 +0,0 @@ -#!/bin/bash -# -# -# conductor-image_builder_service startup script for conductor-image_builder_service -# -# chkconfig: - 93 07 -# description: conductor-image_builder_service builds cloud images -# from the Aeolus Conductor db
-[ -r /etc/sysconfig/conductor-rails ]&& . /etc/sysconfig/conductor-rails
-[ -r /etc/sysconfig/aeolus-conductor ]&& . /etc/sysconfig/aeolus-conductor
-CONDUCTOR_DIR="${CONDUCTOR_DIR:-/usr/share/aeolus-conductor}" -BUILDER_LOG="${BUILDER_LOG:-/var/log/aeolus-conductor/image_builder_service.log}" -BUILDER_PID="${BUILDER_PID:-/var/run/aeolus-conductor/image_builder_service.pid}" -BUILDER_LOCKFILE="${BUILDER_LOCKFILE:-/var/lock/subsys/conductor-image_builder_service}" -AEOLUS_USER="${AEOLUS_USER:-aeolus}"
-BUILDER_PATH=$CONDUCTOR_DIR/image_builder_service -BUILDER_PROG=image_builder_service
-. /etc/init.d/functions
-start() {
- echo -n "Starting conductor-image_builder_service: "
- daemon --user=$AEOLUS_USER $BUILDER_PATH/$BUILDER_PROG
- RETVAL=$?
- if [ $RETVAL -eq 0 ]&& touch $BUILDER_LOCKFILE ; then
echo_success
echo
- else
echo_failure
echo
- fi
-}
-stop() {
- echo -n "Shutting down conductor-image_builder_service: "
- killproc -p $BUILDER_PID $BUILDER_PROG
- RETVAL=$?
- if [ $RETVAL -eq 0 ]&& rm -f $BUILDER_LOCKFILE ; then
echo_success
echo
- else
echo_failure
echo
- fi
-}
-case "$1" in
- start)
start
;;
- stop)
stop
;;
- restart)
stop
start
;;
- reload)
;;
- force-reload)
restart
;;
- status)
status -p $BUILDER_PID $BUILDER_PROG
RETVAL=$?
;;
- *)
echo "Usage: conductor-image_builder_service {start|stop|restart|status}"
exit 1
- ;;
-esac
-exit $RETVAL diff --git a/src/image_builder_service/image_builder_service b/src/image_builder_service/image_builder_service deleted file mode 100755 index 19ea709..0000000 --- a/src/image_builder_service/image_builder_service +++ /dev/null @@ -1,234 +0,0 @@ -#!/usr/bin/env ruby -# -# 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.
-$:<< File.join(File.dirname(__FILE__), "../dutils") -require 'dutils' -require "image_builder_console" -require 'logger' -require 'optparse'
-help = false -daemon = true -builder_pid_dir = "/var/run/aeolus-conductor" -builder_log_dir = "/var/log/aeolus-conductor" -timeout = 8
-optparse = OptionParser.new do |opts|
- opts.banner =<<BANNER
-Usage: -image_builder_service [options]
-Options: -BANNER
- opts.on( '-f', '--pid-file PATH', "Use PATH to the image_builder_service pid directory (defaults to #{builder_pid_dir})") do |newpath|
- builder_pid_dir = newpath
- end
- opts.on( '-h', '--help', '') { help = true }
- opts.on( '-l', '--log PATH', "Use PATH to the image_builder_service log directory (defaults to #{builder_log_dir}). Use '-' for stdout") do |newpath|
- builder_log_dir = newpath
- end
- opts.on( '-n', '--nodaemon', 'Do not daemonize (useful in combination with -l for debugging)') { daemon = false }
- opts.on( '-t', '--timeout SEC', 'Sleep for SEC between each poll for a new job (default is #{timeout})') do |newtime|
- timeout = newtime
- end
-end
-begin
- optparse.parse!
-rescue OptionParser::InvalidOption => e
- puts "Invalid option #{e.args}"
- puts
- puts optparse
- exit(1)
-end
-if help
- puts optparse
- exit(0)
-end
-# setup the logger -if builder_log_dir == '-'
- BUILDER_LOG_FILE = STDOUT
-else
- BUILDER_LOG_FILE = "#{builder_log_dir}/image_builder_service.log"
-end -logger = Logger.new(BUILDER_LOG_FILE) -logger.level = Logger::DEBUG
-# daemonize -if daemon
- # note that this requires 'active_support', which we get for free from dutils
- Process.daemon
-end
-#TODO: Make this whole thing less fragile -class ImageBuilderService
- def initialize(logger, timeout)
- @log = logger
- @timeout = timeout.to_i
- @console ||= ImageBuilderConsole.new(:logger=>@log)
- @activebuilds ||= []
- @log.info "Image Builder Service initialized..."
- poll
- end
- def check_for_queued
- queue = Image.find(:all, :conditions => {:status => Image::STATE_QUEUED})
- cur_builds = Image.find(:all, :conditions => {:status => Image::ACTIVE_STATES})
- if queue.size> 0 || cur_builds.size> 0
@log.debug "========================================"
@log.debug "Queued Builds: " + queue.size.to_s
@log.debug "All Incomplete Builds: " + cur_builds.size.to_s
@log.debug "========================================"
- end
- find_orphaned(cur_builds) if cur_builds.size> queue.size
- queue.each {|t|
build(t)
- }
- end
- def build(image)
- #targets.each do |t|
@log.debug "========================================"
@log.debug "target: " + image.provider_type.codename + ", status: " + image.status
@log.debug "========================================"
# FIXME: this should be contained elsewhere (probably Image model) so we
# can keep logic out of here. Also, this currently only handles one
# account, we will need to be able to specify at some point.
creds = nil
image.provider_type.providers.each do |p|
unless p.provider_accounts.empty?
creds = p.provider_accounts.first.build_credentials
break
end
end
#TODO: switch this back to uri once ActiveBuild retrieves it properly
ab = @console.build_image(image.template.xml.to_xml, image.provider_type.codename, image.uuid, creds)
if ab
update_build_list(ab, image)
image.build_id = ab.object_id.to_s
image.save!
@log.debug "========================================"
@log.debug "Build id saved as: " + image.build_id
@log.debug "========================================"
end
- #end
- end
- def check_build_num
- @activebuilds.size
- end
- def find_orphaned(cur_builds)
- cur_builds.delete_if do |b|
break if @activebuilds.size == 0
@activebuilds.each do |ab|
b.build_id.eql?(ab[:build_id])
end
- end
- if cur_builds.size> 0
@log.debug "========================================"
@log.debug "There appear to be " + cur_builds.size.to_s + " untracked builds."
@log.debug "Attempting to get status updates...."
@log.debug "========================================"
found = []
cur_builds.each do |t|
found<< {:ab => @console.find_build(t.build_id),
:target => t }
end
@log.debug "========================================"
@log.debug "Retrieved " + found.size.to_s + " builds to update."
@log.debug "========================================"
found.each do |f|
update_build_list(f[:ab], f[:target])
end
- end
- end
- def update_agg(obj,new_status)
- @log.debug "========================================"
- @log.debug "Getting ar object to update using " + obj[:build].target.inspect + " and " + obj[:ar_id].inspect + " ..."
- @log.debug "========================================"
- image = Image.find(:first, :conditions => { :provider_type_id => ProviderType.find_by_codename(obj[:build].target.to_s).id,
:template_id => obj[:ar_id].to_i })
- @log.debug "========================================"
- @log.debug "Updating with status: " + new_status
- @log.debug "========================================"
- image.status = new_status
- image.save!
- if new_status == 'complete'
ri = image.provider_images.first
ri.provider_image_key = obj[:build].finished_image
ri.status = ProviderImage::STATE_COMPLETE
ri.save!
# FIXME: Might be cleaner to do this in an active record observer instead.
@log.debug "========================================"
@log.debug "calling condor classad sync."
@log.debug "========================================"
kick_condor
- end
- @log.debug "========================================"
- @log.debug "database updated!"
- @log.debug "========================================"
- end
- private
- def poll()
- loop do
check_for_queued
@activebuilds.delete_if do |ab|
cur_status = @console.check_status(ab[:build])
update_agg(ab, cur_status) unless cur_status.eql?(ab[:status])
@log.debug "========================================"
@log.debug "Status for target #{ab[:build].target}: #{cur_status}"
@log.debug "Builds in array: " + check_build_num.to_s
@log.debug "========================================"
Image::INACTIVE_STATES.include?(cur_status)
end
sleep @timeout
end
- end
- def update_build_list(ab, target)
- @activebuilds<<
{ :ar_id => target.template.id,
:build => ab,
:status => target.status,
:build_id => ab.object_id.to_s
}
- end
-end
-begin
- BUILDER_PID_FILE = "#{builder_pid_dir}/image_builder_service.pid"
- FileUtils.mkdir_p File.dirname(BUILDER_PID_FILE)
- open(BUILDER_PID_FILE, "w") {|f| f.write(Process.pid) }
- File.chmod(0644, BUILDER_PID_FILE)
- ImageBuilderService.new(logger, timeout)
-rescue => e
- logger.error "#{e.backtrace.shift}: #{e.message}"
- e.backtrace.each do |step|
- logger.error "\tfrom #{step}"
- end
-end
On 03/16/2011 03:57 PM, Mike Orazi wrote:
I think you missed removing the following 2 lines from aeolus-conductor.spec.in:
-Requires: rubygem(deltacloud-image-builder-agent) -Requires: rubygem(imagebuilder-console)
Other than that, ACK. If those two requires aren't removed, we'll have colliding qpid requirements.
Mike
OK pushed with a followup removing these bits.
-Mo
aeolus-devel@lists.fedorahosted.org