Skip to content

Commit

Permalink
base image consumer cleaning
Browse files Browse the repository at this point in the history
  • Loading branch information
goldmann committed May 7, 2010
1 parent 0cbee85 commit 89a11fe
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 58 deletions.
27 changes: 17 additions & 10 deletions lib/boxgrinder-node/consumers/base-image-consumer.rb
Expand Up @@ -27,29 +27,31 @@ module BoxGrinder
module Node
class BaseImageConsumer
def build( definition_file, platform = nil )
@log.info "Building#{platform.nil? ? "" : " #{platform}"} image for #{@appliance_config.name} appliance, #{@appliance_config.hardware.arch} arch..."
appliance_config = YAML.load_file( definition_file ).init_arch

@log.info "Building#{platform.nil? ? "" : " #{platform}"} image for #{appliance_config.name} appliance, #{appliance_config.hardware.arch} arch..."

platform_cmd = platform.nil? ? "" : "-p #{platform}"

begin
@queue_helper.client { |client| client.send(IMAGE_MANAGEMENT_QUEUE, :object => {:id => @image_id, :status => :building, :node => @node_config.name} ) }
@exec_helper.execute "cd #{@node_config.build_location} && boxgrinder-build --trace build #{definition_file} #{platform_cmd}"
@log.info "Image for#{platform.nil? ? "" : " #{platform}"} #{@appliance_config.name} appliance, #{@appliance_config.hardware.arch} arch was built successfully."
@queue_helper.client { |client| client.send(IMAGE_MANAGEMENT_QUEUE, :object => {:id => @image_id, :status => :built } ) }
@log.info "Image for#{platform.nil? ? "" : " #{platform}"} #{appliance_config.name} appliance, #{appliance_config.hardware.arch} arch was built successfully."
return true
rescue
@log.error "An error occurred while building image for '#{@appliance_config.name}' appliance and '#{@platform}' format. Check logs for more info."
@queue_helper.client { |client| client.send(IMAGE_MANAGEMENT_QUEUE, :object => {:id => @image_id, :status => :error} ) }
@log.error "An error occurred while building image for#{platform.nil? ? "" : " #{platform}"} '#{appliance_config.name}' appliance. Check logs for more info."
return false
end
end

def store_definition
@log.debug "Storing definition file for '#{@appliance_config.name}' appliance..."
def store_definition( appliance_config )
@log.debug "Storing definition file for '#{appliance_config.name}' appliance..."
@log.trace appliance_config.to_yaml

appliances_dir = "#{@node_config.build_location}/appliances"
file = "#{appliances_dir}/#{@appliance_config.name}.appl"
file = "#{appliances_dir}/#{appliance_config.name}.appl"

FileUtils.mkdir_p(appliances_dir)
File.open(file, 'w') { |f| f.write(@appliance_config.to_yaml) }
File.open(file, 'w') { |f| f.write(appliance_config.to_yaml) }

@log.debug "Definition stored in '#{file}' file."

Expand All @@ -59,6 +61,11 @@ def store_definition
def definition_location( appliance_name )
"#{@node_config.build_location}/appliances/#{appliance_name}.appl"
end

def task_received( payload )
@log.info "Received new image task."
@log.trace "Message:\n#{payload.to_yaml}"
end
end
end
end
33 changes: 11 additions & 22 deletions lib/boxgrinder-node/consumers/convert-image-consumer.rb
Expand Up @@ -26,37 +26,26 @@ class ConvertImageConsumer < BaseImageConsumer
def init( options = {} )
@log = options[:log] || Node.log
@node_config = options[:node_config] || Node.config
@queue_helper = options[:queue_helper] || QueueHelper.new( :host => @node_config.rest_server_address, :port => 1099, :log => @log )
@queue_helper = options[:queue_helper] || QueueHelper.new( :log => @log )
@exec_helper = options[:exec_helper] || ExecHelper.new( :log => @log )
end

def on_object(payload)
@task = payload

init

@appliance_config = @task.data[:appliance_config].init_arch
@platform = @task.data[:platform]
@image_id = @task.data[:image_id]

@log.info "Received new task."
@log.trace "Message:\n#{@task.to_yaml}"

build( definition_location( @appliance_config.name ), @platform )
end

def store_definition
@log.debug "Storing definition file for '#{@appliance_config.name}' appliance..."

appliances_dir = "#{@node_config.build_location}/appliances"
file = "#{appliances_dir}/#{@appliance_config.name}.appl"
task_received( payload )

FileUtils.mkdir_p(appliances_dir)
File.open(file, 'w') { |f| f.write(@appliance_config.to_yaml) }
name = payload.data[:name]
platform = payload.data[:platform]
image_id = payload.data[:image_id]

@log.debug "Definition stored in '#{file}' file."
@queue_helper.client( :host => @node_config.rest_server_address ) { |client| client.send(IMAGE_MANAGEMENT_QUEUE, :object => {:id => image_id, :status => :converting } ) }

file
if build( definition_location( name ), platform )
@queue_helper.client( :host => @node_config.rest_server_address ) { |client| client.send(IMAGE_MANAGEMENT_QUEUE, :object => {:id => image_id, :status => :converted } ) }
else
@queue_helper.client( :host => @node_config.rest_server_address ) { |client| client.send(IMAGE_MANAGEMENT_QUEUE, :object => {:id => image_id, :status => :error} ) }
end
end
end
end
Expand Down
37 changes: 11 additions & 26 deletions lib/boxgrinder-node/consumers/create-image-consumer.rb
Expand Up @@ -26,40 +26,25 @@ class CreateImageConsumer < BaseImageConsumer
def init( options = {} )
@log = options[:log] || Node.log
@node_config = options[:node_config] || Node.config
@queue_helper = options[:queue_helper] || QueueHelper.new( :host => @node_config.rest_server_address, :port => 1099, :log => @log )
@queue_helper = options[:queue_helper] || QueueHelper.new( :log => @log )
@exec_helper = options[:exec_helper] || ExecHelper.new( :log => @log )
end

def on_object(payload)
@task = payload

def on_object( payload )
init

@appliance_config = @task.data[:appliance_config].init_arch
@image_id = @task.data[:image_id]

@log.info "Received new task."
@log.trace "Message:\n#{@task.to_yaml}"

create
end

def create
build( store_definition )
end

def store_definition
@log.debug "Storing definition file for '#{@appliance_config.name}' appliance..."

appliances_dir = "#{@node_config.build_location}/appliances"
file = "#{appliances_dir}/#{@appliance_config.name}.appl"
task_received( payload )

FileUtils.mkdir_p(appliances_dir)
File.open(file, 'w') { |f| f.write(@appliance_config.to_yaml) }
appliance_config = payload.data[:appliance_config].init_arch
image_id = payload.data[:image_id]

@log.debug "Definition stored in '#{file}' file."
@queue_helper.client( :host => @node_config.rest_server_address ) { |client| client.send(IMAGE_MANAGEMENT_QUEUE, :object => {:id => image_id, :status => :building, :node => @node_config.name} ) }

file
if build( store_definition( appliance_config ) )
@queue_helper.client( :host => @node_config.rest_server_address ) { |client| client.send(IMAGE_MANAGEMENT_QUEUE, :object => {:id => image_id, :status => :built } ) }
else
@queue_helper.client( :host => @node_config.rest_server_address ) { |client| client.send(IMAGE_MANAGEMENT_QUEUE, :object => {:id => image_id, :status => :error} ) }
end
end
end
end
Expand Down

0 comments on commit 89a11fe

Please sign in to comment.