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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0dcd49ea8fc966a851305a7ba0141c7a1f20010c
4
- data.tar.gz: be6ff6375b82ca3a50dda7b258717ca8f5b41064
3
+ metadata.gz: 00d384598fcee65d58735e3c41a56f4a4970d399
4
+ data.tar.gz: 1b798d833ae2d4d8ec3d5eb8642d12660448b0d1
5
5
  SHA512:
6
- metadata.gz: 75eae91b7b578746992c9c9ec9dcb03e3ce3398a6f69b42b65b146676248bb2101ca2c5941fa60bc120fe982d934650dc3d7ba8b7b6e48e49a5112946026d36a
7
- data.tar.gz: 2f80d7729c29a43c714d573e4c8552dae0c3482b48c64ec1d5d2ac6700b76c80ae5a7e428446a7bd1a9de98a38dd8b4d63ea91e1d1c600513e3d5b67d848f38f
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::AWSTaggedResource,
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
- end
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
@@ -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.to_json(*a)
19
+ sanitized = @fields
20
+ sanitized.delete("\#")
21
+
22
+ sanitized.to_json(*a)
18
23
  end
19
24
 
20
25
  ## DSL FUNCTIONS BELOW
@@ -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
- provider = @__contexts[type].provider_type.new(vars, &block)
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
@@ -1,3 +1,3 @@
1
1
  module Terraframe
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
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.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-12 00:00:00.000000000 Z
11
+ date: 2015-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler