terraframe 0.1.1 → 0.1.2
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.
- 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
|