logical-construct 0.0.5 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. data/bin/flight-deck +3 -0
  2. data/doc/DESIGN +48 -0
  3. data/doc/EC2-baking-notes +70 -0
  4. data/doc/ExampleStartupRakefile +152 -0
  5. data/doc/ExampleTargetRakefile +4 -0
  6. data/doc/TODO +148 -0
  7. data/doc/Vb-EC2-translation-notes +96 -0
  8. data/doc/hating-chef +32 -0
  9. data/lib/logical-construct/archive-tasks.rb +307 -0
  10. data/lib/logical-construct/ground-control.rb +4 -1
  11. data/lib/logical-construct/ground-control/build-plan.rb +95 -0
  12. data/lib/logical-construct/ground-control/core.rb +1 -1
  13. data/lib/logical-construct/ground-control/generate-manifest.rb +67 -0
  14. data/lib/logical-construct/ground-control/provision.rb +73 -168
  15. data/lib/logical-construct/ground-control/run-on-target.rb +1 -1
  16. data/lib/logical-construct/ground-control/setup.rb +1 -4
  17. data/lib/logical-construct/ground-control/setup/copy-files.rb +2 -2
  18. data/lib/logical-construct/ground-control/tools.rb +66 -0
  19. data/lib/logical-construct/node-client.rb +112 -0
  20. data/lib/logical-construct/plan.rb +2 -0
  21. data/lib/logical-construct/plan/core.rb +45 -0
  22. data/lib/logical-construct/plan/standalone-bundle.rb +80 -0
  23. data/lib/logical-construct/port-open-check.rb +41 -0
  24. data/lib/logical-construct/protocol.rb +2 -0
  25. data/lib/logical-construct/protocol/plan-validation.rb +46 -0
  26. data/lib/logical-construct/protocol/ssh-tunnel.rb +127 -0
  27. data/lib/logical-construct/protocol/vocabulary.rb +8 -0
  28. data/lib/logical-construct/target/Implement.rake +8 -0
  29. data/lib/logical-construct/target/command-line.rb +90 -0
  30. data/lib/logical-construct/target/flight-deck.rb +341 -0
  31. data/lib/logical-construct/target/implementation.rb +33 -0
  32. data/lib/logical-construct/target/plan-records.rb +317 -0
  33. data/lib/logical-construct/target/resolution-server.rb +153 -0
  34. data/lib/logical-construct/target/{unpack-cookbook.rb → unpack-plan.rb} +8 -4
  35. data/lib/logical-construct/template-file.rb +41 -0
  36. data/lib/templates/Rakefile.erb +8 -0
  37. data/spec/ground-control/smoke-test.rb +8 -7
  38. data/spec/node_resolution.rb +62 -0
  39. data/spec/target/plan-records.rb +142 -0
  40. data/spec/target/provisioning.rb +21 -0
  41. data/spec_help/file-sandbox.rb +12 -6
  42. data/spec_help/fixtures/Manifest +1 -0
  43. data/spec_help/fixtures/source/one.tbz +1 -0
  44. data/spec_help/fixtures/source/three.tbz +1 -0
  45. data/spec_help/fixtures/source/two.tbz +1 -0
  46. data/spec_help/spec_helper.rb +5 -7
  47. metadata +165 -72
  48. data/lib/logical-construct/ground-control/setup/build-files.rb +0 -93
  49. data/lib/logical-construct/ground-control/setup/create-construct-directory.rb +0 -22
  50. data/lib/logical-construct/ground-control/setup/install-init.rb +0 -32
  51. data/lib/logical-construct/resolving-task.rb +0 -141
  52. data/lib/logical-construct/satisfiable-task.rb +0 -87
  53. data/lib/logical-construct/target.rb +0 -4
  54. data/lib/logical-construct/target/chef-solo.rb +0 -37
  55. data/lib/logical-construct/target/platforms.rb +0 -51
  56. data/lib/logical-construct/target/platforms/aws.rb +0 -8
  57. data/lib/logical-construct/target/platforms/default/chef-config.rb +0 -134
  58. data/lib/logical-construct/target/platforms/default/resolve-configuration.rb +0 -44
  59. data/lib/logical-construct/target/platforms/default/volume.rb +0 -11
  60. data/lib/logical-construct/target/platforms/virtualbox.rb +0 -8
  61. data/lib/logical-construct/target/platforms/virtualbox/volume.rb +0 -15
  62. data/lib/logical-construct/target/provision.rb +0 -36
  63. data/lib/logical-construct/target/sinatra-resolver.rb +0 -99
  64. data/lib/logical-construct/testing/resolve-configuration.rb +0 -32
  65. data/lib/logical-construct/testing/resolving-task.rb +0 -15
  66. data/lib/templates/chef.rb.erb +0 -9
  67. data/lib/templates/construct.init.d.erb +0 -18
  68. data/lib/templates/resolver/finished.html.erb +0 -1
  69. data/lib/templates/resolver/index.html.erb +0 -17
  70. data/lib/templates/resolver/task-file-form.html.erb +0 -6
  71. data/lib/templates/resolver/task-form.html.erb +0 -6
  72. data/spec/resolution.rb +0 -147
  73. data/spec/target/chef-config.rb +0 -67
  74. data/spec/target/chef-solo.rb +0 -55
  75. data/spec/target/platforms.rb +0 -36
  76. data/spec/target/smoke-test.rb +0 -45
  77. data/spec_help/ungemmer.rb +0 -36
@@ -1,10 +1,14 @@
1
1
  module LogicalConstruct
2
- class UnpackCookbook < Mattock::TaskLib
2
+ class UnpackPlan < Mattock::TaskLib
3
+ dir(:current)
4
+ dir(:live_temp)
5
+
6
+
3
7
  def default_namespace
4
- :cookbook
8
+ :unpack_plan
5
9
  end
6
10
 
7
- def default_settings(provision)
11
+ def default_configuration(provision)
8
12
  settings(
9
13
  :construct_dir => provision.construct_dir,
10
14
  :cookbook_metadata => nil,
@@ -14,7 +18,7 @@ module LogicalConstruct
14
18
  )
15
19
  end
16
20
 
17
- def resolve_settings
21
+ def resolve_configuration
18
22
  self.cookbook_archive ||= File::join(construct_dir, "cookbook.tbz")
19
23
  self.cookbook_dir ||= File::join(construct_dir, cookbook_name)
20
24
 
@@ -0,0 +1,41 @@
1
+ require 'mattock'
2
+ module LogicalConstruct
3
+ class TemplateFile < Mattock::TaskLib
4
+ include Mattock::TemplateHost
5
+ include Mattock::DeferredDefinition
6
+ Mattock::DeferredDefinition.add_settings(self)
7
+
8
+ setting(:valise, nil)
9
+ setting(:templates)
10
+
11
+ dir(:target_dir, path(:target))
12
+
13
+ setting(:base_name)
14
+ setting(:extra, {})
15
+
16
+ def default_configuration(host)
17
+ super
18
+ host.copy_settings_to(self)
19
+ end
20
+
21
+ def resolve_configuration
22
+ target.relative_path ||= base_name
23
+ resolve_paths
24
+
25
+ if field_unset?(:templates)
26
+ self.templates = fail_unless_set(:valise) && valise.templates
27
+ end
28
+
29
+ super
30
+ end
31
+
32
+ def define
33
+ file target.absolute_path => [target_dir, templates.find(base_name).full_path, Rake.application.rakefile] do
34
+ finalize_configuration
35
+ File::open(target.absolute_path, "w") do |file|
36
+ file.write templates.find(base_name).contents.render(nil, extra)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,5 +1,7 @@
1
1
  require 'logical-construct/target'
2
2
 
3
+ #This is where a global platform declaration would go
4
+
3
5
  include LogicalConstruct
4
6
  include LogicalConstruct::Platform()
5
7
 
@@ -11,4 +13,10 @@ provision.in_namespace do
11
13
  chef_solo = ChefSolo.new(chef_config)
12
14
  end
13
15
 
16
+ bake = Bake.new
17
+ bake.in_namespace do
18
+ resolution = ResolveConfiguration.new(bake)
19
+ baker = BakeSystem.new(bake, resolution)
20
+ end
21
+
14
22
  task :default => :provision
@@ -1,18 +1,19 @@
1
1
  require 'logical-construct/ground-control'
2
+ require 'mattock/testing/rake-example-group'
2
3
 
3
4
  module LogicalConstruct::GroundControl
4
5
  describe "An example Rakefile" do
6
+ include Mattock::RakeExampleGroup
7
+ include LogicalConstruct::GroundControl
5
8
 
6
9
  before :each do
7
- extend LogicalConstruct::GroundControl
8
- core = Core.new
9
10
 
10
- setup = Setup.new(core)
11
- setup.default_subtasks
12
-
13
- provision = Provision.new(core) do |prov|
14
- prov.marshalling_path = "marshall"
11
+ namespace :example do
12
+ provision = Provision.new
13
+ provision.plans("test")
15
14
  end
15
+
16
+ tools = Tools.new
16
17
  end
17
18
 
18
19
  it "should load without error" do
@@ -0,0 +1,62 @@
1
+ require 'logical-construct/node-client'
2
+ require 'logical-construct/target/resolution-server'
3
+
4
+ require 'roadforest/test-support'
5
+
6
+ describe LogicalConstruct::NodeClient do
7
+ let :destination_dir do
8
+ "spec_help/fixtures/destination"
9
+ end
10
+
11
+ let :source_dir do
12
+ "spec_help/fixtures/source"
13
+ end
14
+
15
+ let :services do
16
+ LogicalConstruct::ResolutionServer::ServicesHost.new.tap do |services|
17
+ services.plan_records.directories.tap do |dirs|
18
+ dirs.delivered = File::join(destination_dir, "delivered")
19
+ dirs.current = File::join(destination_dir, "current")
20
+ dirs.stored = File::join(destination_dir, "stored")
21
+ end
22
+ end
23
+ end
24
+
25
+ let :plan_archives do
26
+ %w{one two three}.map do |name|
27
+ "#{source_dir}/#{name}.tbz"
28
+ end
29
+ end
30
+
31
+ let :server do
32
+ RoadForest::TestSupport::RemoteHost.new(
33
+ LogicalConstruct::ResolutionServer::Application.new("http://logical-construct-resolution.com/", services)
34
+ )
35
+ end
36
+
37
+ let :node_client do
38
+ LogicalConstruct::NodeClient.new.tap do |client|
39
+ client.server = server
40
+ client.plan_archives = plan_archives
41
+ client.silent = true
42
+ #client.server.graph_transfer.trace = true
43
+ end
44
+ end
45
+
46
+ before :each do
47
+ require 'fileutils'
48
+ FileUtils.rm_rf(destination_dir)
49
+ FileUtils.mkdir_p(destination_dir)
50
+ end
51
+
52
+ it "should get a resolution state" do
53
+ node_client.state.should == 'no-plans-yet'
54
+ end
55
+
56
+ it "should completely deliver a manifest" do
57
+ node_client.deliver_manifest
58
+ node_client.state.should == "unresolved"
59
+ node_client.deliver_plans
60
+ node_client.state.should == "resolved"
61
+ end
62
+ end
@@ -0,0 +1,142 @@
1
+ require 'logical-construct/target/plan-records'
2
+ require 'logical-construct/protocol/plan-validation'
3
+ require 'file-sandbox'
4
+
5
+ module LogicalConstruct::ResolutionServer
6
+ describe LogicalConstruct::ResolutionServer::PlanRecords do
7
+ include FileSandbox
8
+
9
+ before :all do
10
+ @original_verbose = $VERBOSE
11
+ $VERBOSE = nil
12
+ end
13
+
14
+ after :all do
15
+ $VERBOSE = @original_verbose
16
+ end
17
+
18
+ before :each do
19
+ sandbox.new :directory => "delivered"
20
+ sandbox.new :directory => "current"
21
+ sandbox.new :directory => "stored"
22
+ end
23
+
24
+ let :records do
25
+ PlanRecords.new.tap do |records|
26
+ records.directories.delivered = "delivered"
27
+ records.directories.current = "current"
28
+ records.directories.stored = "stored"
29
+ end
30
+ end
31
+
32
+ it "should not find absent records" do
33
+ records.total_state.should == "no-plans-yet"
34
+ records.find("not there").should be_nil
35
+ end
36
+
37
+ it "should add a record" do
38
+ record = records.add("test", "000000")
39
+ record.should_not be_nil
40
+ records.count.should == 1
41
+ record = records.find("test")
42
+ record.join
43
+ record = records.find("test")
44
+ record.state.should == "unresolved"
45
+ record.name.should == "test"
46
+ record.filehash.should == "000000"
47
+ records.total_state.should == "unresolved"
48
+ end
49
+
50
+ it "should reject a duplicate add" do
51
+ record = records.add("test", "000000")
52
+ expect do
53
+ records.add("test", "000000")
54
+ end.to raise_error
55
+
56
+ expect do
57
+ records.add("test", "ffffff")
58
+ end.to raise_error
59
+ end
60
+
61
+ describe "single record" do
62
+ include LogicalConstruct::Protocol::PlanValidation
63
+
64
+ let! :file do
65
+ sandbox.new :file => "just_hanging_out/test", :with_contents => file_contents
66
+ end
67
+
68
+ let :file_contents do
69
+ "A test file - hello!"
70
+ end
71
+
72
+ let :filehash do
73
+ file_checksum(file.path)
74
+ end
75
+
76
+ it "should receive a new file" do
77
+ record = records.add("test", filehash)
78
+ record.join
79
+
80
+ sandbox.new :file => "delivered/test", :with_contents => file_contents
81
+
82
+ record = records.find("test")
83
+ record.receive.should be_a(LogicalConstruct::ResolutionServer::States::PlanState)
84
+ File.read("current/test").should == file_contents
85
+ File.exists?("delivered/test").should be_false
86
+ records.total_state.should == "resolved"
87
+ end
88
+
89
+ it "should reject a bad file" do
90
+ record = records.add("test", "00000000")
91
+ record.receive
92
+
93
+ File.exists?("current/test").should be_false
94
+ File.exists?("delivered/test").should be_false
95
+ end
96
+
97
+ it "should reject new files when resolved" do
98
+ record = records.add("test", filehash)
99
+ record.join
100
+
101
+ sandbox.new :file => "delivered/test", :with_contents => file_contents
102
+ records.find("test").receive
103
+
104
+ File.read(File.readlink("delivered/test")).should == file_contents
105
+ record = records.find("test")
106
+ expect(record.receive).to be_false
107
+ end
108
+
109
+ it "should reset properly" do
110
+ record = records.add("test", filehash)
111
+ sandbox.new :file => "delivered/test", :with_contents => file_contents
112
+ record.receive
113
+
114
+ records.reset!
115
+
116
+ Dir["delivered/*"].should be_empty
117
+ Dir["current/*"].should be_empty
118
+ records.find("test").should be_nil
119
+ end
120
+
121
+ it "should resolve an old file" do
122
+ record = records.add("test", filehash)
123
+ record.join
124
+ record = records.find("test")
125
+
126
+ sandbox.new :file => "delivered/test", :with_contents => file_contents
127
+ record.receive
128
+
129
+ records.reset!
130
+
131
+ File.exists?("delivered/test").should be_false
132
+
133
+ record = records.add("test", filehash)
134
+ records.find("test").join
135
+
136
+ File.read("current/test").should == file.contents
137
+ File.exists?("delivered/test").should be_false
138
+ record.resolve.should be_false
139
+ end
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,21 @@
1
+ #Notes for the moment:
2
+ #
3
+ #Server has a "status service" - RESTful on 51076
4
+ #Target provisioning can PUT /needs path=<path> sig=<sig> role=<role>
5
+ #Then there's a GET /needs/<path> -> "role, sig, resolved/unresolved"
6
+ #GC provisioning can POST to /needs/<path> file=<file>
7
+ # Rejected with 409 unless MAC aligns with <sig>
8
+ #
9
+ #Also /resolved-needs and /unresolved-needs
10
+ #And /provisioning-status
11
+ # GET /provisioning-status includes:
12
+ # Current stage of deployment (waiting for target, target started, waiting
13
+ # for provisioning needs, performing provision, complete)
14
+ # Last query (if any) to /resolved_needs
15
+ # Link to provisioning log
16
+ # PUT /provisioning-status updates "current stage"
17
+ #all navigable from /
18
+ #
19
+ #
20
+ #Manifest Resolution responsible for removing outdated files from
21
+ #<dir>/provision-files
@@ -22,9 +22,9 @@ module FileSandbox
22
22
  def matches?(target)
23
23
  case @contents
24
24
  when Regexp
25
- @contents =~ target.contents
25
+ @contents =~ target.contents
26
26
  when String
27
- @contents == target.contents
27
+ @contents == target.contents
28
28
  end
29
29
  end
30
30
  end
@@ -134,22 +134,28 @@ module FileSandbox
134
134
  "SandboxFile: #@sandbox_path"
135
135
  end
136
136
 
137
+ def realpath
138
+ File::readlink(@path)
139
+ rescue Errno::EINVAL, Errno::ENOENT
140
+ @path
141
+ end
142
+
137
143
  def exist?
138
- File.exist? path
144
+ File.exist? realpath
139
145
  end
140
146
 
141
147
  def content
142
- File.read path
148
+ File.read realpath
143
149
  end
144
150
 
145
151
  def content=(content)
146
152
  FileUtils.mkdir_p File.dirname(@path)
147
- File.open(@path, "w") {|f| f << content}
153
+ File.open(realpath, "w") {|f| f << content}
148
154
  end
149
155
 
150
156
  def binary_content=(content)
151
157
  FileUtils.mkdir_p File.dirname(@path)
152
- File.open(@path, "wb") {|f| f << content}
158
+ File.open(realpath, "wb") {|f| f << content}
153
159
  end
154
160
 
155
161
  def create
@@ -0,0 +1 @@
1
+ We need some files...
@@ -0,0 +1 @@
1
+ tha-reee
@@ -2,12 +2,10 @@ require 'rspec'
2
2
  require 'file-sandbox'
3
3
 
4
4
  require 'mock-resolve'
5
- require 'timeout'
5
+ require 'cadre/rspec'
6
6
 
7
- RSpec.configure do |rspec|
8
- rspec.around :each do |example|
9
- Timeout::timeout(3) do
10
- example.run
11
- end
12
- end
7
+ RSpec.configure do |config|
8
+ config.run_all_when_everything_filtered = true
9
+ config.add_formatter(Cadre::RSpec::NotifyOnCompleteFormatter)
10
+ config.add_formatter(Cadre::RSpec::QuickfixFormatter)
13
11
  end
metadata CHANGED
@@ -1,140 +1,233 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logical-construct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
5
4
  prerelease:
5
+ version: 0.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Judson Lester
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-12 00:00:00.000000000 Z
12
+ date: 2013-10-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
+ prerelease: false
16
+ type: :development
15
17
  name: corundum
16
- requirement: &75949720 !ruby/object:Gem::Requirement
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 0.0.1
17
23
  none: false
24
+ requirement: !ruby/object:Gem::Requirement
18
25
  requirements:
19
26
  - - ~>
20
27
  - !ruby/object:Gem::Version
21
28
  version: 0.0.1
22
- type: :development
29
+ none: false
30
+ - !ruby/object:Gem::Dependency
23
31
  prerelease: false
24
- version_requirements: *75949720
32
+ type: :runtime
33
+ name: rake
34
+ version_requirements: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ~>
37
+ - !ruby/object:Gem::Version
38
+ segments:
39
+ - 10
40
+ - 0
41
+ version: '10.0'
42
+ none: false
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ segments:
48
+ - 10
49
+ - 0
50
+ version: '10.0'
51
+ none: false
25
52
  - !ruby/object:Gem::Dependency
53
+ prerelease: false
54
+ type: :runtime
26
55
  name: mattock
27
- requirement: &75947710 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ~>
59
+ - !ruby/object:Gem::Version
60
+ segments:
61
+ - 0
62
+ - 5
63
+ - 2
64
+ version: 0.5.2
28
65
  none: false
66
+ requirement: !ruby/object:Gem::Requirement
29
67
  requirements:
30
- - - ! '>='
68
+ - - ~>
31
69
  - !ruby/object:Gem::Version
32
- version: 0.3.4
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: *75947710
70
+ segments:
71
+ - 0
72
+ - 5
73
+ - 2
74
+ version: 0.5.2
75
+ none: false
36
76
  - !ruby/object:Gem::Dependency
37
- name: sinatra
38
- requirement: &75945230 !ruby/object:Gem::Requirement
77
+ prerelease: false
78
+ type: :runtime
79
+ name: roadforest
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ~>
83
+ - !ruby/object:Gem::Version
84
+ segments:
85
+ - 0
86
+ - 0
87
+ - 2
88
+ version: 0.0.2
39
89
  none: false
90
+ requirement: !ruby/object:Gem::Requirement
40
91
  requirements:
41
- - - ! '>='
92
+ - - ~>
42
93
  - !ruby/object:Gem::Version
43
- version: 1.3.3
44
- type: :runtime
45
- prerelease: false
46
- version_requirements: *75945230
94
+ segments:
95
+ - 0
96
+ - 0
97
+ - 2
98
+ version: 0.0.2
99
+ none: false
47
100
  - !ruby/object:Gem::Dependency
48
- name: rest-client
49
- requirement: &75955280 !ruby/object:Gem::Requirement
101
+ prerelease: false
102
+ type: :runtime
103
+ name: multipart-parser
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ segments:
109
+ - 0
110
+ - 1
111
+ - 1
112
+ version: 0.1.1
50
113
  none: false
114
+ requirement: !ruby/object:Gem::Requirement
51
115
  requirements:
52
116
  - - ! '>='
53
117
  - !ruby/object:Gem::Version
54
- version: 1.6.7
55
- type: :runtime
56
- prerelease: false
57
- version_requirements: *75955280
118
+ segments:
119
+ - 0
120
+ - 1
121
+ - 1
122
+ version: 0.1.1
123
+ none: false
58
124
  - !ruby/object:Gem::Dependency
125
+ prerelease: false
126
+ type: :runtime
59
127
  name: nokogiri
60
- requirement: &76199670 !ruby/object:Gem::Requirement
61
- none: false
128
+ version_requirements: !ruby/object:Gem::Requirement
62
129
  requirements:
63
130
  - - ! '>='
64
131
  - !ruby/object:Gem::Version
132
+ segments:
133
+ - 0
134
+ - 13
135
+ - 4
65
136
  version: 0.13.4
137
+ none: false
138
+ requirement: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
66
142
  segments:
67
143
  - 0
68
144
  - 13
69
145
  - 4
70
- type: :runtime
71
- prerelease: false
72
- version_requirements: *76199670
146
+ version: 0.13.4
147
+ none: false
73
148
  - !ruby/object:Gem::Dependency
149
+ prerelease: false
150
+ type: :runtime
74
151
  name: json
75
- requirement: &76197300 !ruby/object:Gem::Requirement
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ! '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
76
157
  none: true
158
+ requirement: !ruby/object:Gem::Requirement
77
159
  requirements:
78
160
  - - ! '>='
79
161
  - !ruby/object:Gem::Version
80
162
  version: '0'
81
- type: :runtime
82
- prerelease: false
83
- version_requirements: *76197300
163
+ none: true
84
164
  description: ! ' Like Vagrant? Missing AWS? Here you go. Limited Rakefiles to
85
165
  do something like that.
86
166
 
87
167
  '
88
168
  email:
89
169
  - nyarly@gmail.com
90
- executables: []
170
+ executables:
171
+ - flight-deck
91
172
  extensions: []
92
- extra_rdoc_files: []
173
+ extra_rdoc_files:
174
+ - doc/TODO
175
+ - doc/ExampleStartupRakefile
176
+ - doc/Vb-EC2-translation-notes
177
+ - doc/ExampleTargetRakefile
178
+ - doc/EC2-baking-notes
179
+ - doc/hating-chef
180
+ - doc/DESIGN
93
181
  files:
182
+ - lib/logical-construct/plan/core.rb
183
+ - lib/logical-construct/plan/standalone-bundle.rb
184
+ - lib/logical-construct/template-file.rb
185
+ - lib/logical-construct/node-client.rb
186
+ - lib/logical-construct/port-open-check.rb
94
187
  - lib/logical-construct/ground-control.rb
95
- - lib/logical-construct/target.rb
96
- - lib/logical-construct/satisfiable-task.rb
97
- - lib/logical-construct/testing/resolve-configuration.rb
98
- - lib/logical-construct/testing/resolving-task.rb
99
- - lib/logical-construct/target/platforms.rb
100
- - lib/logical-construct/target/platforms/default/volume.rb
101
- - lib/logical-construct/target/platforms/default/chef-config.rb
102
- - lib/logical-construct/target/platforms/default/resolve-configuration.rb
103
- - lib/logical-construct/target/platforms/aws.rb
104
- - lib/logical-construct/target/platforms/virtualbox/volume.rb
105
- - lib/logical-construct/target/platforms/virtualbox.rb
106
- - lib/logical-construct/target/provision.rb
107
- - lib/logical-construct/target/chef-solo.rb
108
- - lib/logical-construct/target/unpack-cookbook.rb
109
- - lib/logical-construct/target/sinatra-resolver.rb
188
+ - lib/logical-construct/archive-tasks.rb
189
+ - lib/logical-construct/target/plan-records.rb
190
+ - lib/logical-construct/target/unpack-plan.rb
191
+ - lib/logical-construct/target/Implement.rake
192
+ - lib/logical-construct/target/command-line.rb
193
+ - lib/logical-construct/target/implementation.rb
194
+ - lib/logical-construct/target/flight-deck.rb
195
+ - lib/logical-construct/target/resolution-server.rb
110
196
  - lib/logical-construct/ground-control/core.rb
111
197
  - lib/logical-construct/ground-control/run-on-target.rb
112
198
  - lib/logical-construct/ground-control/setup/copy-files.rb
113
- - lib/logical-construct/ground-control/setup/build-files.rb
114
- - lib/logical-construct/ground-control/setup/create-construct-directory.rb
115
- - lib/logical-construct/ground-control/setup/install-init.rb
116
199
  - lib/logical-construct/ground-control/provision.rb
200
+ - lib/logical-construct/ground-control/build-plan.rb
201
+ - lib/logical-construct/ground-control/generate-manifest.rb
202
+ - lib/logical-construct/ground-control/tools.rb
117
203
  - lib/logical-construct/ground-control/setup.rb
118
- - lib/logical-construct/resolving-task.rb
119
- - lib/templates/construct.init.d.erb
120
- - lib/templates/resolver/index.html.erb
121
- - lib/templates/resolver/finished.html.erb
122
- - lib/templates/resolver/task-form.html.erb
123
- - lib/templates/resolver/task-file-form.html.erb
204
+ - lib/logical-construct/protocol.rb
205
+ - lib/logical-construct/protocol/ssh-tunnel.rb
206
+ - lib/logical-construct/protocol/vocabulary.rb
207
+ - lib/logical-construct/protocol/plan-validation.rb
208
+ - lib/logical-construct/plan.rb
124
209
  - lib/templates/Gemfile.erb
125
- - lib/templates/chef.rb.erb
126
210
  - lib/templates/Rakefile.erb
127
- - spec/resolution.rb
128
- - spec/target/platforms.rb
129
- - spec/target/chef-solo.rb
130
- - spec/target/smoke-test.rb
131
- - spec/target/chef-config.rb
211
+ - bin/flight-deck
212
+ - doc/TODO
213
+ - doc/DESIGN
214
+ - spec/node_resolution.rb
215
+ - spec/target/plan-records.rb
216
+ - spec/target/provisioning.rb
132
217
  - spec/ground-control/smoke-test.rb
133
218
  - spec_help/spec_helper.rb
134
219
  - spec_help/gem_test_suite.rb
135
- - spec_help/ungemmer.rb
220
+ - spec_help/fixtures/Manifest
221
+ - spec_help/fixtures/source/three.tbz
222
+ - spec_help/fixtures/source/two.tbz
223
+ - spec_help/fixtures/source/one.tbz
136
224
  - spec_help/mock-resolve.rb
137
225
  - spec_help/file-sandbox.rb
226
+ - doc/ExampleStartupRakefile
227
+ - doc/Vb-EC2-translation-notes
228
+ - doc/ExampleTargetRakefile
229
+ - doc/EC2-baking-notes
230
+ - doc/hating-chef
138
231
  homepage: http://logical-construct.rubyforge.org/
139
232
  licenses:
140
233
  - MIT
@@ -144,27 +237,27 @@ rdoc_options:
144
237
  - --main
145
238
  - doc/README
146
239
  - --title
147
- - logical-construct-0.0.5 RDoc
240
+ - logical-construct-0.1.0 RDoc
148
241
  require_paths:
149
242
  - lib/
150
243
  required_ruby_version: !ruby/object:Gem::Requirement
151
- none: false
152
244
  requirements:
153
245
  - - ! '>='
154
246
  - !ruby/object:Gem::Version
155
- version: '0'
156
247
  segments:
157
248
  - 0
158
- hash: -522629425
159
- required_rubygems_version: !ruby/object:Gem::Requirement
249
+ hash: -794974735
250
+ version: '0'
160
251
  none: false
252
+ required_rubygems_version: !ruby/object:Gem::Requirement
161
253
  requirements:
162
254
  - - ! '>='
163
255
  - !ruby/object:Gem::Version
164
256
  version: '0'
257
+ none: false
165
258
  requirements: []
166
259
  rubyforge_project: logical-construct
167
- rubygems_version: 1.8.15
260
+ rubygems_version: 1.8.24
168
261
  signing_key:
169
262
  specification_version: 3
170
263
  summary: Works with Fog and Virtualbox and Chef to build servers