terraframe 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/terraframe/aws/aws_context.rb +1 -1
- data/lib/terraframe/aws/aws_resources.rb +10 -3
- data/lib/terraframe/resource.rb +38 -2
- data/lib/terraframe/script_item.rb +7 -2
- data/lib/terraframe/state.rb +5 -8
- data/lib/terraframe/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00d384598fcee65d58735e3c41a56f4a4970d399
|
4
|
+
data.tar.gz: 1b798d833ae2d4d8ec3d5eb8642d12660448b0d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b72417f33acbe501eff732c849aa5a0d6711afe50ee86b7f3909aeef66759e5ab508ec0c77a766312eafae813c57540177211bf06a2f8a37041a362ec86c08bf
|
7
|
+
data.tar.gz: 65f00999504ed3840a655c69a22230fc72cbe2a7127d8d24c3c4dc93ee4aeed9efe89e09b778e345bc77c6df2418f0b863af5baaf03e51b0d9b1f1fb8cf2e53f
|
@@ -25,7 +25,7 @@ module Terraframe
|
|
25
25
|
|
26
26
|
:aws_instance => Terraframe::AWS::AWSTaggedResource,
|
27
27
|
:aws_route_table => Terraframe::AWS::AWSTaggedResource,
|
28
|
-
:aws_security_group => Terraframe::AWS::
|
28
|
+
:aws_security_group => Terraframe::AWS::AWSSecurityGroupResource,
|
29
29
|
:aws_subnet => Terraframe::AWS::AWSTaggedResource,
|
30
30
|
:aws_vpc => Terraframe::AWS::AWSTaggedResource
|
31
31
|
}
|
@@ -15,7 +15,7 @@ module Terraframe
|
|
15
15
|
end
|
16
16
|
|
17
17
|
class AWSTaggedResource < Terraframe::Resource
|
18
|
-
def initialize(name, vars, &block)
|
18
|
+
def initialize(name, vars, context, &block)
|
19
19
|
@fields = {}
|
20
20
|
@vars = Hashie::Mash.new(vars)
|
21
21
|
|
@@ -23,10 +23,10 @@ module Terraframe
|
|
23
23
|
@fields["tags"]["Name"] = name
|
24
24
|
|
25
25
|
instance_eval &block
|
26
|
-
|
26
|
+
end
|
27
27
|
|
28
28
|
def tags(&block)
|
29
|
-
tag_set = Terraframe::AWS::AWSTagBlock.new(@vars, &block)
|
29
|
+
tag_set = Terraframe::AWS::AWSTagBlock.new(@vars, @context, &block)
|
30
30
|
@fields["tags"].merge!(tag_set.fields)
|
31
31
|
end
|
32
32
|
|
@@ -37,5 +37,12 @@ module Terraframe
|
|
37
37
|
|
38
38
|
class AWSTagBlock < Terraframe::ScriptItem
|
39
39
|
end
|
40
|
+
|
41
|
+
class AWSSecurityGroupResource < AWSResource
|
42
|
+
def initialize(name, vars, context, &block)
|
43
|
+
super(name, vars, context, &block)
|
44
|
+
@fields["name"] = name
|
45
|
+
end
|
46
|
+
end
|
40
47
|
end
|
41
48
|
end
|
data/lib/terraframe/resource.rb
CHANGED
@@ -4,9 +4,45 @@ module Terraframe
|
|
4
4
|
class Resource < Terraframe::ScriptItem
|
5
5
|
attr_reader :resource_name
|
6
6
|
|
7
|
-
def initialize(resource_name, vars, &block)
|
7
|
+
def initialize(resource_name, vars, context, &block)
|
8
8
|
@resource_name = resource_name
|
9
|
-
super(vars, &block)
|
9
|
+
super(vars, context, &block)
|
10
10
|
end
|
11
|
+
|
12
|
+
def connection(&block)
|
13
|
+
connection_set = Connection.new(vars, context, &block)
|
14
|
+
@fields["connection"] = connection_set.fields
|
15
|
+
end
|
16
|
+
|
17
|
+
def provisioner(provisioner_type, &block)
|
18
|
+
provisioner_type = provisioner_type.to_sym
|
19
|
+
|
20
|
+
@fields["provisioner"] = @fields["provisioner"] || []
|
21
|
+
|
22
|
+
provisioner_set = Provisioner.new(vars, context, &block)
|
23
|
+
@fields["provisioner"] << { cleanup_provisioner_type(provisioner_type) => provisioner_set.fields }
|
24
|
+
end
|
25
|
+
|
26
|
+
def cleanup_provisioner_type(provisioner_type)
|
27
|
+
case provisioner_type.to_sym
|
28
|
+
when :remote_exec
|
29
|
+
"remote-exec"
|
30
|
+
when :local_exec
|
31
|
+
"local-exec"
|
32
|
+
else
|
33
|
+
provisioner_type
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
class Provisioner < Terraframe::ScriptItem
|
41
|
+
def connection(&block)
|
42
|
+
connection_set = Connection.new(vars, context, &block)
|
43
|
+
@fields["connection"] = connection_set.fields
|
44
|
+
end
|
45
|
+
end
|
46
|
+
class Connection < Terraframe::ScriptItem
|
11
47
|
end
|
12
48
|
end
|
@@ -5,16 +5,21 @@ module Terraframe
|
|
5
5
|
class ScriptItem
|
6
6
|
attr_reader :fields
|
7
7
|
attr_reader :vars
|
8
|
+
attr_reader :context
|
8
9
|
|
9
|
-
def initialize(vars, &block)
|
10
|
+
def initialize(vars, context, &block)
|
10
11
|
@fields = {}
|
12
|
+
@context = context
|
11
13
|
@vars = Hashie::Mash.new(vars)
|
12
14
|
|
13
15
|
instance_eval &block
|
14
16
|
end
|
15
17
|
|
16
18
|
def to_json(*a)
|
17
|
-
@fields
|
19
|
+
sanitized = @fields
|
20
|
+
sanitized.delete("\#")
|
21
|
+
|
22
|
+
sanitized.to_json(*a)
|
18
23
|
end
|
19
24
|
|
20
25
|
## DSL FUNCTIONS BELOW
|
data/lib/terraframe/state.rb
CHANGED
@@ -3,6 +3,8 @@ require 'hashie/mash'
|
|
3
3
|
|
4
4
|
module Terraframe
|
5
5
|
class State
|
6
|
+
# TODO: support outputs!
|
7
|
+
|
6
8
|
attr_reader :vars
|
7
9
|
attr_reader :logger
|
8
10
|
|
@@ -50,7 +52,8 @@ module Terraframe
|
|
50
52
|
raise msg
|
51
53
|
end
|
52
54
|
|
53
|
-
|
55
|
+
handling_context = @__contexts[type]
|
56
|
+
provider = handling_context.provider_type.new(vars, handling_context, &block)
|
54
57
|
logger.debug "Provider of type '#{type}': #{provider.inspect}"
|
55
58
|
@__output[:provider][type] = provider
|
56
59
|
|
@@ -63,12 +66,6 @@ module Terraframe
|
|
63
66
|
raise msg
|
64
67
|
end
|
65
68
|
|
66
|
-
def provisioner
|
67
|
-
msg = "TODO: implement provisioner support."
|
68
|
-
logger.fatal msg
|
69
|
-
raise msg
|
70
|
-
end
|
71
|
-
|
72
69
|
def resource(resource_type, resource_name, &block)
|
73
70
|
handling_context_pair = @__contexts.find { |k, v| v.resources.include?(resource_type) }
|
74
71
|
if handling_context_pair == nil
|
@@ -81,7 +78,7 @@ module Terraframe
|
|
81
78
|
resource_class = handling_context.resources[resource_type]
|
82
79
|
|
83
80
|
@__output[:resource][resource_type] ||= {}
|
84
|
-
@__output[:resource][resource_type][resource_name.to_s] = resource_class.new(resource_name, vars, &block)
|
81
|
+
@__output[:resource][resource_type][resource_name.to_s] = resource_class.new(resource_name, vars, handling_context, &block)
|
85
82
|
end
|
86
83
|
|
87
84
|
# anything that is not a provider or a variable should be interpreted
|
data/lib/terraframe/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: terraframe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ed Ropple
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|