furnish 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ * 0.0.3 (03/21/2013)
2
+ * Fix an issue where state wasn't tracked for provisioners themselves after the provisioning process had started.
3
+
1
4
  * 0.0.2 (03/20/2013)
2
5
  * Extract Furnish::TestCase into gem for consumption by other gems that need to test against furnish.
3
6
 
@@ -65,6 +65,9 @@ module Furnish
65
65
  # provisioning halts, effectively creating a chain of responsibility
66
66
  # pattern.
67
67
  #
68
+ # If a block is provided, will yield self to it for each step through the
69
+ # group.
70
+ #
68
71
  def startup(*args)
69
72
  each do |this_prov|
70
73
  unless args = this_prov.startup(args)
@@ -74,6 +77,8 @@ module Furnish
74
77
 
75
78
  raise "Could not provision #{this_prov.name} with provisioner #{this_prov.class.name}"
76
79
  end
80
+
81
+ yield self if block_given?
77
82
  end
78
83
 
79
84
  return true
@@ -46,7 +46,7 @@ module Furnish
46
46
  #
47
47
  def report
48
48
  do_delegate(__method__) do
49
- [name]
49
+ [name, @persist]
50
50
  end
51
51
  end
52
52
 
@@ -54,6 +54,7 @@ module Furnish
54
54
  # startup shim
55
55
  #
56
56
  def startup(*args)
57
+ @persist = "floop"
57
58
  do_delegate(__method__) do
58
59
  true
59
60
  end
@@ -338,7 +338,13 @@ module Furnish
338
338
 
339
339
  # FIXME maybe a way to specify initial args?
340
340
  args = nil
341
- provisioner.startup
341
+
342
+ provisioner.startup do |this_prov|
343
+ vm.groups[group_name] = this_prov
344
+ end
345
+
346
+ vm.groups[group_name] = provisioner
347
+
342
348
  @queue << group_name
343
349
  end
344
350
 
@@ -1,4 +1,4 @@
1
1
  module Furnish
2
2
  # The current version of Furnish.
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
data/test/mt_cases.rb CHANGED
@@ -49,6 +49,34 @@ module Furnish
49
49
  assert(provisioner.store[ [name, "shutdown"].join("-") ], "dummy provisioner for #{name} recorded the shutdown run")
50
50
  end
51
51
 
52
+ def test_run_tracking
53
+ #--
54
+ # This is a tad convoluted. Dummy's startup method sets an ivar which
55
+ # should be persisted. Then, we retrieve it by examining the result of
56
+ # the report method, which regurgitates it.
57
+ #
58
+ # This ensures that after startup, the provisioner has had its state
59
+ # tracked, ensuring the correct state.
60
+ #++
61
+
62
+ assert(sched.schedule_provision('test1', Dummy.new))
63
+ sched.run
64
+ sched.wait_for('test1')
65
+ assert_started('test1')
66
+ assert_equal("floop", sched.vm.groups['test1'].first.report.last, 'state was stored after provision success')
67
+
68
+ assert(sched.schedule_provision('test2', [Dummy.new, StartFailDummy.new], []))
69
+
70
+ # the next few lines are an unfortunate necessity, sorry.
71
+ @monitor.kill rescue nil
72
+ assert_raises(RuntimeError) do
73
+ sched.run
74
+ sleep 0.1 while sched.running?
75
+ end
76
+
77
+ assert_equal("floop", sched.vm.groups['test2'].first.report.last, "provision failed but state is still stored for the provisions that succeeded")
78
+ end
79
+
52
80
  def test_provision_cycle
53
81
  machine_names = %w[blarg blarg2 blarg3]
54
82
 
data/test/test_dummy.rb CHANGED
@@ -17,7 +17,7 @@ class TestDummy < Furnish::TestCase
17
17
  dummy.name = 'dummy_test'
18
18
  assert(dummy.startup, 'startup returns true by default')
19
19
  assert(dummy.shutdown, 'shutdown returns true by default')
20
- assert_equal(['dummy_test'], dummy.report, 'report returns boxed name by default')
20
+ assert_equal(['dummy_test', 'floop'], dummy.report, 'report returns boxed name and ivar by default')
21
21
 
22
22
  obj = Palsy::Object.new('dummy')
23
23
  %w[startup shutdown report].each do |meth|
@@ -75,7 +75,7 @@ class TestDummy < Furnish::TestCase
75
75
  dummy.name = "dummy_marshal_test"
76
76
  assert(dummy.startup)
77
77
  assert(dummy.shutdown)
78
- assert_equal([dummy.name], dummy.report)
78
+ assert_equal([dummy.name, 'floop'], dummy.report)
79
79
 
80
80
  obj = Palsy::Object.new('dummy')
81
81
  %w[startup shutdown report].each do |meth|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: furnish
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-20 00:00:00.000000000 Z
12
+ date: 2013-03-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: palsy