boxgrinder-core 0.0.11 → 0.0.20

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG ADDED
@@ -0,0 +1,7 @@
1
+
2
+ v0.0.20
3
+
4
+ * Cleanup in ApplianceConfig
5
+ * Better logging in ExecHelper
6
+
7
+ v0.0.11
data/Manifest ADDED
File without changes
data/README CHANGED
@@ -0,0 +1 @@
1
+ This gem contains core classes used across BoxGrinder projects.
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require 'echoe'
2
+
3
+ Echoe.new("boxgrinder-core") do |p|
4
+ p.project = "BoxGrinder Core"
5
+ p.author = "Marek Goldmann"
6
+ p.summary = "Core files for BoxGrinder."
7
+ p.url = "http://www.jboss.org/stormgrind/projects/boxgrinder.html"
8
+ p.email = "info@boxgrinder.org"
9
+ end
@@ -0,0 +1,30 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{boxgrinder-core}
5
+ s.version = "0.0.20"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Marek Goldmann"]
9
+ s.date = %q{2010-07-21}
10
+ s.description = %q{Core files for BoxGrinder.}
11
+ s.email = %q{info@boxgrinder.org}
12
+ s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/defaults.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/helpers/queue-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/validators/appliance-config-validator.rb", "lib/boxgrinder-core/validators/errors.rb", "lib/openhash/openhash.rb"]
13
+ s.files = ["CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "lib/boxgrinder-core.rb", "lib/boxgrinder-core/defaults.rb", "lib/boxgrinder-core/helpers/appliance-config-helper.rb", "lib/boxgrinder-core/helpers/appliance-helper.rb", "lib/boxgrinder-core/helpers/exec-helper.rb", "lib/boxgrinder-core/helpers/log-helper.rb", "lib/boxgrinder-core/helpers/queue-helper.rb", "lib/boxgrinder-core/models/appliance-config.rb", "lib/boxgrinder-core/models/config.rb", "lib/boxgrinder-core/models/task.rb", "lib/boxgrinder-core/validators/appliance-config-validator.rb", "lib/boxgrinder-core/validators/errors.rb", "lib/openhash/openhash.rb", "spec/Rakefile", "spec/helpers/appliance-config-helper-spec.rb", "spec/helpers/appliance-helper-spec.rb", "spec/helpers/exec-helper-spec.rb", "spec/helpers/log-helper-spec.rb", "spec/helpers/queue-helper-spec.rb", "spec/rspec/rspec-config-helper.rb", "spec/rspec/src/appliances/ephemeral-repo.appl", "spec/rspec/src/appliances/full.appl", "spec/rspec/src/appliances/repo.appl", "spec/validators/appliance-config-validator-spec.rb", "boxgrinder-core.gemspec"]
14
+ s.homepage = %q{http://www.jboss.org/stormgrind/projects/boxgrinder.html}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Boxgrinder-core", "--main", "README"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{BoxGrinder Core}
18
+ s.rubygems_version = %q{1.3.6}
19
+ s.summary = %q{Core files for BoxGrinder.}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
+ else
27
+ end
28
+ else
29
+ end
30
+ end
@@ -50,8 +50,8 @@ module BoxGrinder
50
50
  :release => 'SNAPSHOT',
51
51
  :dir_build => 'build',
52
52
  #:topdir => "#{self.} build/topdir",
53
- :dir_src_cache => 'sources-cache',
54
- :dir_rpms_cache => 'rpms-cache',
53
+ :dir_src_cache => '/var/cache/boxgrinder/sources-cache',
54
+ :dir_rpms_cache => '/var/cache/boxgrinder/rpms-cache',
55
55
  :dir_specs => 'specs',
56
56
  :dir_appliances => 'appliances',
57
57
  :dir_src => 'src',
@@ -19,6 +19,7 @@
19
19
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
20
20
 
21
21
  require 'logger'
22
+ require 'open3'
22
23
 
23
24
  module BoxGrinder
24
25
  class ExecHelper
@@ -29,18 +30,30 @@ module BoxGrinder
29
30
  def execute( command )
30
31
  @log.debug "Executing command: '#{command}'"
31
32
 
32
- out = `#{command} 2>&1`
33
+ output = ""
33
34
 
34
- formatted_output = "Command return:\r\n+++++\r\n#{out}+++++"
35
+ Open3.popen3( command ) do |stdin, stdout, stderr|
36
+ threads = []
35
37
 
36
- if $?.to_i != 0
37
- @log.error formatted_output
38
- raise "An error occurred executing command: '#{command}'"
39
- else
40
- @log.debug formatted_output unless out.strip.length == 0
41
- @log.debug "Command '#{command}' executed successfully"
42
- return out
38
+ threads << Thread.new(stdout) do |input_str|
39
+ input_str.each do |l|
40
+ output << l
41
+ @log.debug l.chomp.strip
42
+ end
43
+ end
44
+
45
+ threads << Thread.new(stderr) do |input_str|
46
+ input_str.each do |l|
47
+ output << l
48
+ @log.debug l.chomp.strip
49
+ end
50
+ end
51
+ threads.each{|t|t.join}
43
52
  end
53
+
54
+ raise "An error occurred executing command: '#{command}'" if $?.to_i != 0
55
+
56
+ output
44
57
  end
45
58
  end
46
59
  end
@@ -20,6 +20,7 @@
20
20
 
21
21
  require 'logger'
22
22
  require 'boxgrinder-core/defaults'
23
+ require 'fileutils'
23
24
 
24
25
  Logger.const_set(:TRACE, 0)
25
26
  Logger.const_set(:DEBUG, 1)
@@ -66,25 +67,32 @@ module BoxGrinder
66
67
  formatter = Logger::Formatter.new
67
68
 
68
69
  if type.include?(:file)
69
- unless File.directory?(File.dirname(location))
70
- FileUtils.mkdir_p(File.dirname(location))
71
- end
70
+ FileUtils.mkdir_p(File.dirname(location))
72
71
 
73
72
  @file_log = Logger.new(location, 10, 1024000)
74
- @file_log.level = Logger::TRACE
73
+ @file_log.level = threshold == Logger::TRACE ? Logger::TRACE : Logger::DEBUG
75
74
  @file_log.formatter = formatter
76
75
  end
77
76
 
78
77
  if type.include?(:stdout)
79
- @stdout_log = Logger.new(STDOUT)
78
+ @stdout_log = Logger.new(STDOUT.dup)
80
79
  @stdout_log.level = threshold || Logger::INFO
81
80
  @stdout_log.formatter = formatter
82
81
  end
83
82
  end
84
83
 
84
+ def write( msg )
85
+ @stdout_log.trace( msg.chomp.strip ) unless @stdout_log.nil?
86
+ @file_log.trace( msg.chomp.strip ) unless @file_log.nil?
87
+ end
88
+
85
89
  def method_missing(method_name, *args)
86
90
  @stdout_log.send(method_name, *args) unless @stdout_log.nil?
87
91
  @file_log.send(method_name, *args) unless @file_log.nil?
88
92
  end
89
93
  end
94
+
95
+ attr_accessor :file_log
96
+ attr_accessor :stdout_log
97
+
90
98
  end
@@ -19,24 +19,22 @@
19
19
  # 02110-1301 USA, or see the FSF site: http://www.fsf.org.
20
20
 
21
21
  require 'boxgrinder-core/defaults'
22
- require 'ostruct'
22
+ require 'openhash/openhash'
23
23
  require 'rbconfig'
24
24
 
25
25
  module BoxGrinder
26
26
  class ApplianceConfig
27
- def initialize #( definition )
28
- #@definition = definition
27
+ def initialize
28
+ @name = nil
29
+ @summary = nil
29
30
 
30
- @name = nil #@definition['name']
31
- @summary = nil #@definition['summary']
31
+ @os = OpenHash.new
32
32
 
33
- @os = OpenStruct.new
33
+ @os.name = nil
34
+ @os.version = nil
35
+ @os.password = nil
34
36
 
35
- @os.name = nil #APPLIANCE_DEFAULTS[:os][:name]
36
- @os.version = nil #APPLIANCE_DEFAULTS[:os][:version]
37
- @os.password = nil #APPLIANCE_DEFAULTS[:os][:password]
38
-
39
- @hardware = OpenStruct.new
37
+ @hardware = OpenHash.new
40
38
 
41
39
  @hardware.cpus = APPLIANCE_DEFAULTS[:hardware][:cpus]
42
40
  @hardware.memory = APPLIANCE_DEFAULTS[:hardware][:memory]
@@ -44,7 +42,7 @@ module BoxGrinder
44
42
 
45
43
  @post = {}
46
44
 
47
- @packages = OpenStruct.new
45
+ @packages = OpenHash.new
48
46
  @packages.includes = []
49
47
  @packages.excludes = []
50
48
 
@@ -55,14 +53,8 @@ module BoxGrinder
55
53
  @release = 0
56
54
  end
57
55
 
58
- #attr_reader :definition
59
- #attr_reader :name
60
- #attr_reader :summary
61
- #attr_reader :appliances
62
56
  attr_reader :os
63
57
  attr_reader :hardware
64
- #attr_reader :repos
65
- #attr_reader :packages
66
58
  attr_reader :path
67
59
  attr_reader :file
68
60
  attr_reader :post
@@ -87,61 +79,13 @@ module BoxGrinder
87
79
  end
88
80
 
89
81
  def initialize_paths
90
- @path = OpenStruct.new
91
-
92
- @path.dir = OpenStruct.new
93
- @path.dir.raw = OpenStruct.new
94
- @path.dir.ec2 = OpenStruct.new
95
- @path.dir.vmware = OpenStruct.new
96
-
97
- @path.file = OpenStruct.new
98
- @path.file.raw = OpenStruct.new
99
- @path.file.ec2 = OpenStruct.new
100
- @path.file.vmware = OpenStruct.new
101
- @path.file.vmware.personal = OpenStruct.new
102
- @path.file.vmware.enterprise = OpenStruct.new
103
-
104
- @path.dir.packages = "build/#{appliance_path}/packages"
105
-
106
- @path.dir.build = "build/#{appliance_path}"
107
-
108
- @path.dir.raw.build = "build/#{appliance_path}/raw"
109
- @path.dir.raw.build_full = "build/#{appliance_path}/raw/#{@name}"
110
-
111
- @path.dir.ec2.build = "build/#{appliance_path}/ec2"
112
- @path.dir.ec2.bundle = "#{@path.dir.ec2.build}/bundle"
113
-
114
- @path.dir.vmware.build = "build/#{appliance_path}/vmware"
115
- @path.dir.vmware.personal = "#{@path.dir.vmware.build}/personal"
116
- @path.dir.vmware.enterprise = "#{@path.dir.vmware.build}/enterprise"
117
-
118
- @path.file.raw.kickstart = "#{@path.dir.raw.build}/#{@name}.ks"
119
- @path.file.raw.config = "#{@path.dir.raw.build}/#{@name}.cfg"
120
- @path.file.raw.yum = "#{@path.dir.raw.build}/#{@name}.yum.conf"
121
- @path.file.raw.disk = "#{@path.dir.raw.build_full}/#{@name}-sda.raw"
122
- @path.file.raw.xml = "#{@path.dir.raw.build_full}/#{@name}.xml"
123
-
124
- @path.file.ec2.disk = "#{@path.dir.ec2.build}/#{@name}.ec2"
125
- @path.file.ec2.manifest = "#{@path.dir.ec2.bundle}/#{@name}-sda.raw.manifest.xml"
126
-
127
- @path.file.vmware.disk = "#{@path.dir.vmware.build}/#{@name}.raw"
128
- @path.file.vmware.personal.vmx = "#{@path.dir.vmware.personal}/#{@name}.vmx"
129
- @path.file.vmware.personal.vmdk = "#{@path.dir.vmware.personal}/#{@name}.vmdk"
130
- @path.file.vmware.personal.disk = "#{@path.dir.vmware.personal}/#{@name}.raw"
131
- @path.file.vmware.enterprise.vmx = "#{@path.dir.vmware.enterprise}/#{@name}.vmx"
132
- @path.file.vmware.enterprise.vmdk = "#{@path.dir.vmware.enterprise}/#{@name}.vmdk"
133
- @path.file.vmware.enterprise.disk = "#{@path.dir.vmware.enterprise}/#{@name}.raw"
134
-
135
- @path.file.package = {
136
- :raw => {
137
- :tgz => "#{@path.dir.packages}/#{@name}-#{@version}.#{@release}-#{@hardware.arch}-raw.tgz",
138
- :zip => "#{@path.dir.packages}/#{@name}-#{@version}.#{@release}-#{@hardware.arch}-raw.zip"
139
- },
140
- :vmware => {
141
- :tgz => "#{@path.dir.packages}/#{@name}-#{@version}.#{@release}-#{@hardware.arch}-VMware.tgz",
142
- :zip => "#{@path.dir.packages}/#{@name}-#{@version}.#{@release}-#{@hardware.arch}-VMware.zip"
143
- }
144
- }
82
+ @path = OpenHash.new
83
+
84
+ @path.os = "#{@os.name}/#{@os.version}"
85
+ @path.main = "#{@hardware.arch}/#{@path.os}"
86
+ @path.appliance = "appliances/#{@path.main}/#{@name}"
87
+ @path.build = "build/#{@path.appliance}"
88
+
145
89
  self
146
90
  end
147
91
 
@@ -150,23 +94,6 @@ module BoxGrinder
150
94
  "#{@name}-#{@summary}-#{@version}-#{@release}-#{@os.name}-#{@os.version}-#{@os.password}-#{@hardware.cpus}-#{@hardware.memory}-#{@hardware.partitions}-#{@appliances}".hash
151
95
  end
152
96
 
153
- # TODO remove this, leave only :name
154
- def simple_name
155
- @name
156
- end
157
-
158
- def os_path
159
- "#{@os.name}/#{@os.version}"
160
- end
161
-
162
- def main_path
163
- "#{@hardware.arch}/#{os_path}"
164
- end
165
-
166
- def appliance_path
167
- "appliances/#{main_path}/#{@name}"
168
- end
169
-
170
97
  def eql?(other)
171
98
  hash.eql?(other.hash)
172
99
  end
@@ -178,10 +105,5 @@ module BoxGrinder
178
105
  def clone
179
106
  Marshal::load(Marshal.dump(self))
180
107
  end
181
-
182
- def os_family
183
- return :linux if [ 'fedora' ].include?( @os.name )
184
- return :unknown
185
- end
186
108
  end
187
109
  end
@@ -49,8 +49,8 @@ module BoxGrinder
49
49
  unless @options[:os_plugins].nil?
50
50
  os_plugin = @options[:os_plugins][@appliance_config.os.name.to_sym]
51
51
 
52
- raise ApplianceValidationError, "Not supported operating system selected: #{@appliance_config.os.name}. Supported OSes are: #{OperatingSystemPluginManager.instance.plugins.keys.join(", ")}" if os_plugin.nil?
53
- raise ApplianceValidationError, "Not supported operating system version selected: #{@appliance_config.os.version}. Supported versions are: #{os_plugin.info[:versions].join(", ")}" unless @appliance_config.os.version.nil? or os_plugin.info[:versions].include?( @appliance_config.os.version )
52
+ raise ApplianceValidationError, "Not supported operating system selected: #{@appliance_config.os.name}. Supported OSes are: #{@options[:os_plugins].keys.join(", ")}" if os_plugin.nil?
53
+ raise ApplianceValidationError, "Not supported operating system version selected: #{@appliance_config.os.version}. Supported versions are: #{os_plugin[:versions].join(", ")}" unless @appliance_config.os.version.nil? or os_plugin[:versions].include?( @appliance_config.os.version )
54
54
  end
55
55
  end
56
56
 
@@ -0,0 +1,92 @@
1
+ # The MIT License
2
+ #
3
+ # Copyright (c) 2005 Thomas Sawyer
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+
23
+ class OpenHash < Hash
24
+
25
+ # New OpenHash.
26
+ def initialize(data={})
27
+ super()
28
+ merge!(data)
29
+ end
30
+
31
+ #
32
+ def <<(x)
33
+ case x
34
+ when Hash
35
+ update(x)
36
+ when Array
37
+ x.each_slice(2) do |(k, v)|
38
+ self[k] = v
39
+ end
40
+ end
41
+ end
42
+
43
+ #
44
+ def respond_to?(name)
45
+ key?(name.to_sym) || super(name)
46
+ end
47
+
48
+ #
49
+ def to_h
50
+ dup
51
+ end
52
+
53
+ #
54
+ def to_hash
55
+ dup
56
+ end
57
+
58
+ #
59
+ def inspect
60
+ super
61
+ end
62
+
63
+ # Omit specific Hash methods from slot protection.
64
+ def omit!(*methods)
65
+ methods.reject!{ |x| x.to_s =~ /^__/ }
66
+ (
67
+ class << self;
68
+ self;
69
+ end).class_eval{ private *methods }
70
+ end
71
+
72
+ # Route get and set calls.
73
+ def method_missing(s, *a, &b)
74
+ type = s.to_s[-1, 1]
75
+ name = s.to_s.sub(/[!?=]$/, '')
76
+ key = name.to_sym
77
+ case type
78
+ when '='
79
+ self[key] = a[0]
80
+ #when '!'
81
+ # self[s] = OpenHash.new
82
+ when '?'
83
+ key?(key)
84
+ else
85
+ if key?(key)
86
+ self[key]
87
+ else
88
+ super(s, *a, &b)
89
+ end
90
+ end
91
+ end
92
+ end
data/spec/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Run all examples"
5
+ Spec::Rake::SpecTask.new('examples') do |t|
6
+ t.spec_files = FileList['../**/spec/**/*-spec.rb']
7
+ t.rcov = true
8
+ t.rcov_opts = ['--exclude', 'spec']
9
+ end
@@ -0,0 +1,6 @@
1
+ require 'boxgrinder-core/helpers/appliance-config-helper'
2
+
3
+ module BoxGrinder
4
+ describe ApplianceConfigHelper do
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require 'boxgrinder-core/helpers/appliance-helper'
2
+
3
+ module BoxGrinder
4
+ describe ApplianceHelper do
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ require 'boxgrinder-core/helpers/exec-helper'
2
+
3
+ module BoxGrinder
4
+ describe ExecHelper do
5
+ end
6
+ end
@@ -0,0 +1,56 @@
1
+ require 'boxgrinder-core/helpers/log-helper'
2
+
3
+ module BoxGrinder
4
+ describe LogHelper do
5
+
6
+ before(:each) do
7
+ @helper = LogHelper.new
8
+ @helper.instance_variable_set(:@stdout_log, Logger.new('/dev/null') )
9
+ @helper.instance_variable_set(:@file_log, Logger.new('/dev/null') )
10
+ end
11
+
12
+ it "should initialize properly without arguments with good log levels" do
13
+ FileUtils.should_receive(:mkdir_p).once.with("log")
14
+
15
+ @helper = LogHelper.new
16
+
17
+ stdout_log = @helper.instance_variable_get(:@stdout_log)
18
+ file_log = @helper.instance_variable_get(:@file_log)
19
+
20
+ stdout_log.level.should == Logger::INFO
21
+ file_log.level.should == Logger::DEBUG
22
+ end
23
+
24
+ it "should allow to log in every known log level" do
25
+ @helper.fatal( "fatal" )
26
+ @helper.debug( "debug" )
27
+ @helper.error( "error" )
28
+ @helper.warn( "warn" )
29
+ @helper.info( "info" )
30
+ end
31
+
32
+ it "should change log level" do
33
+ FileUtils.should_receive(:mkdir_p).once.with("log")
34
+
35
+ @helper = LogHelper.new( :threshold => "debug" )
36
+
37
+ stdout_log = @helper.instance_variable_get(:@stdout_log)
38
+ file_log = @helper.instance_variable_get(:@file_log)
39
+
40
+ stdout_log.level.should == Logger::DEBUG
41
+ file_log.level.should == Logger::DEBUG
42
+ end
43
+
44
+ it "should change log level" do
45
+ FileUtils.should_receive(:mkdir_p).once.with("log")
46
+
47
+ @helper = LogHelper.new( :thrshold => "doesntexists" )
48
+
49
+ stdout_log = @helper.instance_variable_get(:@stdout_log)
50
+ file_log = @helper.instance_variable_get(:@file_log)
51
+
52
+ stdout_log.level.should == Logger::INFO
53
+ file_log.level.should == Logger::DEBUG
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,6 @@
1
+ require 'boxgrinder-core/helpers/queue-helper'
2
+
3
+ module BoxGrinder
4
+ describe QueueHelper do
5
+ end
6
+ end
@@ -0,0 +1,59 @@
1
+ require 'boxgrinder-core/models/config'
2
+ require 'boxgrinder-core/models/appliance-config'
3
+ require 'boxgrinder-core/helpers/appliance-config-helper'
4
+ require 'boxgrinder-core/helpers/appliance-helper'
5
+ require 'logger'
6
+
7
+ Logger.const_set(:TRACE, 0)
8
+ Logger.const_set(:DEBUG, 1)
9
+ Logger.const_set(:INFO, 2)
10
+ Logger.const_set(:WARN, 3)
11
+ Logger.const_set(:ERROR, 4)
12
+ Logger.const_set(:FATAL, 5)
13
+ Logger.const_set(:UNKNOWN, 6)
14
+
15
+ Logger::SEV_LABEL.insert(0, 'TRACE')
16
+
17
+ class Logger
18
+ def trace?
19
+ @level <= TRACE
20
+ end
21
+
22
+ def trace(progname = nil, &block)
23
+ add(TRACE, nil, progname, &block)
24
+ end
25
+ end
26
+
27
+ module RSpecConfigHelper
28
+ RSPEC_BASE_LOCATION = "#{File.dirname(__FILE__)}"
29
+
30
+ def generate_config( params = OpenStruct.new )
31
+ config = BoxGrinder::Config.new
32
+
33
+ # files
34
+ config.files.base_vmdk = params.base_vmdk || "../../../src/base.vmdk"
35
+ config.files.base_vmx = params.base_vmx || "../../../src/base.vmx"
36
+
37
+ config
38
+ end
39
+
40
+ def generate_appliance_config( appliance_definition_file = "#{RSPEC_BASE_LOCATION}/src/appliances/full.appl" )
41
+ appliance_configs, appliance_config = BoxGrinder::ApplianceHelper.new(:log => Logger.new('/dev/null')).read_definitions( appliance_definition_file )
42
+ appliance_config_helper = BoxGrinder::ApplianceConfigHelper.new( appliance_configs )
43
+
44
+ appliance_config_helper.merge(appliance_config.clone.init_arch).initialize_paths
45
+ end
46
+
47
+ def generate_appliance_config_gnome( os_version = "11" )
48
+ appliance_config = BoxGrinder::ApplianceConfig.new("valid-appliance-gnome", (-1.size) == 8 ? "x86_64" : "i386", "fedora", os_version)
49
+
50
+ appliance_config.disk_size = 2
51
+ appliance_config.summary = "this is a summary"
52
+ appliance_config.network_name = "NAT"
53
+ appliance_config.vcpu = "1"
54
+ appliance_config.mem_size = "1024"
55
+ appliance_config.appliances = [ appliance_config.name ]
56
+
57
+ appliance_config
58
+ end
59
+ end
@@ -0,0 +1,24 @@
1
+ name: repo
2
+ summary: A dummy repo appliance
3
+ os:
4
+ name: fedora
5
+ version: 12
6
+ hardware:
7
+ memory: 256
8
+ partitions:
9
+ "/":
10
+ size: 1
11
+ packages:
12
+ includes:
13
+ - gcc-c++
14
+ - wget
15
+ repos:
16
+ - name: "cirras"
17
+ baseurl: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
18
+ ephemeral: true
19
+ - name: "abc"
20
+ baseurl: "http://abc"
21
+ mirrorlist: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
22
+ ephemeral: true
23
+ - name: "boxgrinder-f12-testing-#ARCH#"
24
+ mirrorlist: "https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f#OS_VERSION#&arch=#ARCH#"
@@ -0,0 +1,24 @@
1
+ name: full
2
+ summary: A full appliance definition
3
+ os:
4
+ name: fedora
5
+ version: 11
6
+ hardware:
7
+ memory: 256
8
+ partitions:
9
+ "/":
10
+ size: 2
11
+ "/home":
12
+ size: 3
13
+ packages:
14
+ includes:
15
+ - gcc-c++
16
+ - wget
17
+ repos:
18
+ - name: "cirras"
19
+ baseurl: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
20
+ - name: "abc"
21
+ baseurl: "http://abc"
22
+ mirrorlist: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
23
+ - name: "boxgrinder-f11-testing-#ARCH#"
24
+ mirrorlist: "https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f#OS_VERSION#&arch=#ARCH#"
@@ -0,0 +1,22 @@
1
+ name: repo
2
+ summary: A dummy repo appliance
3
+ os:
4
+ name: fedora
5
+ version: 12
6
+ hardware:
7
+ memory: 256
8
+ partitions:
9
+ "/":
10
+ size: 1
11
+ packages:
12
+ includes:
13
+ - gcc-c++
14
+ - wget
15
+ repos:
16
+ - name: "cirras"
17
+ baseurl: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
18
+ - name: "abc"
19
+ baseurl: "http://abc"
20
+ mirrorlist: "http://repo.boxgrinder.org/packages/#OS_NAME#/#OS_VERSION#/RPMS/#ARCH#"
21
+ - name: "boxgrinder-f12-testing-#ARCH#"
22
+ mirrorlist: "https://mirrors.fedoraproject.org/metalink?repo=updates-testing-f#OS_VERSION#&arch=#ARCH#"
@@ -0,0 +1,6 @@
1
+ require 'boxgrinder-core/validators/appliance-config-validator'
2
+
3
+ module BoxGrinder
4
+ describe ApplianceConfigValidator do
5
+ end
6
+ end
metadata CHANGED
@@ -5,49 +5,85 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 11
9
- version: 0.0.11
8
+ - 20
9
+ version: 0.0.20
10
10
  platform: ruby
11
11
  authors:
12
- - BoxGrinder Project
12
+ - Marek Goldmann
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-06-08 00:00:00 +02:00
17
+ date: 2010-07-21 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
21
- description:
21
+ description: Core files for BoxGrinder.
22
22
  email: info@boxgrinder.org
23
23
  executables: []
24
24
 
25
25
  extensions: []
26
26
 
27
- extra_rdoc_files: []
28
-
29
- files:
27
+ extra_rdoc_files:
28
+ - CHANGELOG
29
+ - LICENSE
30
+ - README
30
31
  - lib/boxgrinder-core.rb
32
+ - lib/boxgrinder-core/defaults.rb
33
+ - lib/boxgrinder-core/helpers/appliance-config-helper.rb
34
+ - lib/boxgrinder-core/helpers/appliance-helper.rb
35
+ - lib/boxgrinder-core/helpers/exec-helper.rb
36
+ - lib/boxgrinder-core/helpers/log-helper.rb
37
+ - lib/boxgrinder-core/helpers/queue-helper.rb
31
38
  - lib/boxgrinder-core/models/appliance-config.rb
32
39
  - lib/boxgrinder-core/models/config.rb
33
40
  - lib/boxgrinder-core/models/task.rb
34
- - lib/boxgrinder-core/defaults.rb
35
- - lib/boxgrinder-core/validators/errors.rb
36
41
  - lib/boxgrinder-core/validators/appliance-config-validator.rb
37
- - lib/boxgrinder-core/helpers/exec-helper.rb
38
- - lib/boxgrinder-core/helpers/queue-helper.rb
42
+ - lib/boxgrinder-core/validators/errors.rb
43
+ - lib/openhash/openhash.rb
44
+ files:
45
+ - CHANGELOG
46
+ - LICENSE
47
+ - Manifest
48
+ - README
49
+ - Rakefile
50
+ - lib/boxgrinder-core.rb
51
+ - lib/boxgrinder-core/defaults.rb
52
+ - lib/boxgrinder-core/helpers/appliance-config-helper.rb
39
53
  - lib/boxgrinder-core/helpers/appliance-helper.rb
54
+ - lib/boxgrinder-core/helpers/exec-helper.rb
40
55
  - lib/boxgrinder-core/helpers/log-helper.rb
41
- - lib/boxgrinder-core/helpers/appliance-config-helper.rb
42
- - README
43
- - LICENSE
56
+ - lib/boxgrinder-core/helpers/queue-helper.rb
57
+ - lib/boxgrinder-core/models/appliance-config.rb
58
+ - lib/boxgrinder-core/models/config.rb
59
+ - lib/boxgrinder-core/models/task.rb
60
+ - lib/boxgrinder-core/validators/appliance-config-validator.rb
61
+ - lib/boxgrinder-core/validators/errors.rb
62
+ - lib/openhash/openhash.rb
63
+ - spec/Rakefile
64
+ - spec/helpers/appliance-config-helper-spec.rb
65
+ - spec/helpers/appliance-helper-spec.rb
66
+ - spec/helpers/exec-helper-spec.rb
67
+ - spec/helpers/log-helper-spec.rb
68
+ - spec/helpers/queue-helper-spec.rb
69
+ - spec/rspec/rspec-config-helper.rb
70
+ - spec/rspec/src/appliances/ephemeral-repo.appl
71
+ - spec/rspec/src/appliances/full.appl
72
+ - spec/rspec/src/appliances/repo.appl
73
+ - spec/validators/appliance-config-validator-spec.rb
74
+ - boxgrinder-core.gemspec
44
75
  has_rdoc: true
45
76
  homepage: http://www.jboss.org/stormgrind/projects/boxgrinder.html
46
77
  licenses: []
47
78
 
48
79
  post_install_message:
49
- rdoc_options: []
50
-
80
+ rdoc_options:
81
+ - --line-numbers
82
+ - --inline-source
83
+ - --title
84
+ - Boxgrinder-core
85
+ - --main
86
+ - README
51
87
  require_paths:
52
88
  - lib
53
89
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -62,14 +98,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
62
98
  - - ">="
63
99
  - !ruby/object:Gem::Version
64
100
  segments:
65
- - 0
66
- version: "0"
101
+ - 1
102
+ - 2
103
+ version: "1.2"
67
104
  requirements: []
68
105
 
69
- rubyforge_project:
106
+ rubyforge_project: BoxGrinder Core
70
107
  rubygems_version: 1.3.6
71
108
  signing_key:
72
109
  specification_version: 3
73
- summary: BoxGrinder Core files
110
+ summary: Core files for BoxGrinder.
74
111
  test_files: []
75
112