logical-construct 0.0.5 → 0.1.0

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.
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