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.
- data/bin/flight-deck +3 -0
- data/doc/DESIGN +48 -0
- data/doc/EC2-baking-notes +70 -0
- data/doc/ExampleStartupRakefile +152 -0
- data/doc/ExampleTargetRakefile +4 -0
- data/doc/TODO +148 -0
- data/doc/Vb-EC2-translation-notes +96 -0
- data/doc/hating-chef +32 -0
- data/lib/logical-construct/archive-tasks.rb +307 -0
- data/lib/logical-construct/ground-control.rb +4 -1
- data/lib/logical-construct/ground-control/build-plan.rb +95 -0
- data/lib/logical-construct/ground-control/core.rb +1 -1
- data/lib/logical-construct/ground-control/generate-manifest.rb +67 -0
- data/lib/logical-construct/ground-control/provision.rb +73 -168
- data/lib/logical-construct/ground-control/run-on-target.rb +1 -1
- data/lib/logical-construct/ground-control/setup.rb +1 -4
- data/lib/logical-construct/ground-control/setup/copy-files.rb +2 -2
- data/lib/logical-construct/ground-control/tools.rb +66 -0
- data/lib/logical-construct/node-client.rb +112 -0
- data/lib/logical-construct/plan.rb +2 -0
- data/lib/logical-construct/plan/core.rb +45 -0
- data/lib/logical-construct/plan/standalone-bundle.rb +80 -0
- data/lib/logical-construct/port-open-check.rb +41 -0
- data/lib/logical-construct/protocol.rb +2 -0
- data/lib/logical-construct/protocol/plan-validation.rb +46 -0
- data/lib/logical-construct/protocol/ssh-tunnel.rb +127 -0
- data/lib/logical-construct/protocol/vocabulary.rb +8 -0
- data/lib/logical-construct/target/Implement.rake +8 -0
- data/lib/logical-construct/target/command-line.rb +90 -0
- data/lib/logical-construct/target/flight-deck.rb +341 -0
- data/lib/logical-construct/target/implementation.rb +33 -0
- data/lib/logical-construct/target/plan-records.rb +317 -0
- data/lib/logical-construct/target/resolution-server.rb +153 -0
- data/lib/logical-construct/target/{unpack-cookbook.rb → unpack-plan.rb} +8 -4
- data/lib/logical-construct/template-file.rb +41 -0
- data/lib/templates/Rakefile.erb +8 -0
- data/spec/ground-control/smoke-test.rb +8 -7
- data/spec/node_resolution.rb +62 -0
- data/spec/target/plan-records.rb +142 -0
- data/spec/target/provisioning.rb +21 -0
- data/spec_help/file-sandbox.rb +12 -6
- data/spec_help/fixtures/Manifest +1 -0
- data/spec_help/fixtures/source/one.tbz +1 -0
- data/spec_help/fixtures/source/three.tbz +1 -0
- data/spec_help/fixtures/source/two.tbz +1 -0
- data/spec_help/spec_helper.rb +5 -7
- metadata +165 -72
- data/lib/logical-construct/ground-control/setup/build-files.rb +0 -93
- data/lib/logical-construct/ground-control/setup/create-construct-directory.rb +0 -22
- data/lib/logical-construct/ground-control/setup/install-init.rb +0 -32
- data/lib/logical-construct/resolving-task.rb +0 -141
- data/lib/logical-construct/satisfiable-task.rb +0 -87
- data/lib/logical-construct/target.rb +0 -4
- data/lib/logical-construct/target/chef-solo.rb +0 -37
- data/lib/logical-construct/target/platforms.rb +0 -51
- data/lib/logical-construct/target/platforms/aws.rb +0 -8
- data/lib/logical-construct/target/platforms/default/chef-config.rb +0 -134
- data/lib/logical-construct/target/platforms/default/resolve-configuration.rb +0 -44
- data/lib/logical-construct/target/platforms/default/volume.rb +0 -11
- data/lib/logical-construct/target/platforms/virtualbox.rb +0 -8
- data/lib/logical-construct/target/platforms/virtualbox/volume.rb +0 -15
- data/lib/logical-construct/target/provision.rb +0 -36
- data/lib/logical-construct/target/sinatra-resolver.rb +0 -99
- data/lib/logical-construct/testing/resolve-configuration.rb +0 -32
- data/lib/logical-construct/testing/resolving-task.rb +0 -15
- data/lib/templates/chef.rb.erb +0 -9
- data/lib/templates/construct.init.d.erb +0 -18
- data/lib/templates/resolver/finished.html.erb +0 -1
- data/lib/templates/resolver/index.html.erb +0 -17
- data/lib/templates/resolver/task-file-form.html.erb +0 -6
- data/lib/templates/resolver/task-form.html.erb +0 -6
- data/spec/resolution.rb +0 -147
- data/spec/target/chef-config.rb +0 -67
- data/spec/target/chef-solo.rb +0 -55
- data/spec/target/platforms.rb +0 -36
- data/spec/target/smoke-test.rb +0 -45
- data/spec_help/ungemmer.rb +0 -36
@@ -1,10 +1,14 @@
|
|
1
1
|
module LogicalConstruct
|
2
|
-
class
|
2
|
+
class UnpackPlan < Mattock::TaskLib
|
3
|
+
dir(:current)
|
4
|
+
dir(:live_temp)
|
5
|
+
|
6
|
+
|
3
7
|
def default_namespace
|
4
|
-
:
|
8
|
+
:unpack_plan
|
5
9
|
end
|
6
10
|
|
7
|
-
def
|
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
|
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
|
data/lib/templates/Rakefile.erb
CHANGED
@@ -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
|
-
|
11
|
-
|
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
|
data/spec_help/file-sandbox.rb
CHANGED
@@ -22,9 +22,9 @@ module FileSandbox
|
|
22
22
|
def matches?(target)
|
23
23
|
case @contents
|
24
24
|
when Regexp
|
25
|
-
|
25
|
+
@contents =~ target.contents
|
26
26
|
when String
|
27
|
-
|
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?
|
144
|
+
File.exist? realpath
|
139
145
|
end
|
140
146
|
|
141
147
|
def content
|
142
|
-
File.read
|
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(
|
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(
|
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
|
+
one
|
@@ -0,0 +1 @@
|
|
1
|
+
tha-reee
|
@@ -0,0 +1 @@
|
|
1
|
+
two
|
data/spec_help/spec_helper.rb
CHANGED
@@ -2,12 +2,10 @@ require 'rspec'
|
|
2
2
|
require 'file-sandbox'
|
3
3
|
|
4
4
|
require 'mock-resolve'
|
5
|
-
require '
|
5
|
+
require 'cadre/rspec'
|
6
6
|
|
7
|
-
RSpec.configure do |
|
8
|
-
|
9
|
-
|
10
|
-
|
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:
|
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
|
-
|
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
|
-
|
29
|
+
none: false
|
30
|
+
- !ruby/object:Gem::Dependency
|
23
31
|
prerelease: false
|
24
|
-
|
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
|
-
|
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
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
70
|
+
segments:
|
71
|
+
- 0
|
72
|
+
- 5
|
73
|
+
- 2
|
74
|
+
version: 0.5.2
|
75
|
+
none: false
|
36
76
|
- !ruby/object:Gem::Dependency
|
37
|
-
|
38
|
-
|
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
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
94
|
+
segments:
|
95
|
+
- 0
|
96
|
+
- 0
|
97
|
+
- 2
|
98
|
+
version: 0.0.2
|
99
|
+
none: false
|
47
100
|
- !ruby/object:Gem::Dependency
|
48
|
-
|
49
|
-
|
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
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
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
|
-
|
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
|
-
|
71
|
-
|
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
|
-
|
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
|
-
|
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/
|
96
|
-
- lib/logical-construct/
|
97
|
-
- lib/logical-construct/
|
98
|
-
- lib/logical-construct/
|
99
|
-
- lib/logical-construct/target/
|
100
|
-
- lib/logical-construct/target/
|
101
|
-
- lib/logical-construct/target/
|
102
|
-
- lib/logical-construct/target/
|
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/
|
119
|
-
- lib/
|
120
|
-
- lib/
|
121
|
-
- lib/
|
122
|
-
- lib/
|
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
|
-
-
|
128
|
-
-
|
129
|
-
-
|
130
|
-
- spec/
|
131
|
-
- spec/target/
|
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/
|
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
|
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: -
|
159
|
-
|
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.
|
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
|