to be replaced w/ aeolus-connector
---
aeolus-conductor.spec.in | 12 +-
conf/conductor-image_builder_service | 78 --------
src/image_builder_service/image_builder_service | 234 -----------------------
3 files changed, 6 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..e020e05 100644
--- a/aeolus-conductor.spec.in
+++ b/aeolus-conductor.spec.in
@@ -126,8 +126,8 @@ 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-connector %{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
%{__cp} conf/aeolus-conductor.sysconf
%{buildroot}%{_sysconfdir}/sysconfig/aeolus-conductor
@@ -157,7 +157,7 @@ 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
+touch %{buildroot}%{_localstatedir}/log/%{name}/connector.log
[ -e %{buildroot}%{app_root}/log ] || %{__mkdir} -p %{buildroot}%{app_root}/log
touch %{buildroot}%{app_root}/log/delayed_job.log
@@ -193,8 +193,8 @@ 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
+/sbin/chkconfig --add aeolus-connector
%preun daemons
if [ $1 = 0 ]; then
@@ -204,10 +204,10 @@ 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
+/sbin/service aeolus-connector stop > /dev/null 2>&1
+/sbin/chkconfig --del aeolus-connector
fi
%files
@@ -227,8 +227,8 @@ fi
%{_initrddir}/aeolus-conductor
%{_initrddir}/conductor-dbomatic
%{_initrddir}/conductor-condor_refreshd
-%{_initrddir}/conductor-image_builder_service
%{_initrddir}/conductor-delayed_job
+%{_initrddir}/aeolus-connector
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%config(noreplace) %{_sysconfdir}/sysconfig/aeolus-conductor
%config(noreplace) %{_sysconfdir}/sysconfig/conductor-rails
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
--
1.7.2.3