jets 0.8.8 → 0.8.9

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
  SHA256:
3
- metadata.gz: 56dd075a80453ed4f7e6e684f64060915cfbb01cec7ccff68427507a403b5cf7
4
- data.tar.gz: a0f48fffbdb695cff01a05494402013945d7a51cab62def79beee48722dd2964
3
+ metadata.gz: ce580a14e5051954606f507aa2a9f4edcca4930045970966762d8ceb9857c814
4
+ data.tar.gz: da3d1d6d89c829ee6c28b9808f45c4db6b648925502f20164a725a5ad2acc59f
5
5
  SHA512:
6
- metadata.gz: 1f278333701df438a6e55db6a1b15999b00a4e5d41e0bea1df098920006eadf38eff02885ee93a7efaad9bf03bb04b847bf57151f06d306bd0235ff0cb0447c3
7
- data.tar.gz: c17110bf29063c2e2256f20fa295b906857b7e9161884ba5635397cbba7ad73ec5949a1eec94ee97a158febd9516aabf876265f4503b6541e884a913d512fc54
6
+ metadata.gz: 9a77865cdc7eea19c9bbfb7a82d33c1196c9dbfdb29a990c5c5e268cd9cb3c4dc569d59fe88be10f0ad68b59af9800ed7809fede94f691d4a8e10763af46ea90
7
+ data.tar.gz: b1fab039f595fa5555d4239499868d66d9e1ed72f007c7e9f0fa10bb85fadb41c4cb26e470eedd839f42bd5fcb7da8412a069c5a658e49f004ccc5544178c4a5
@@ -3,6 +3,9 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
5
5
 
6
+ ## [0.8.9]
7
+ - clean up convenience properties and add rest of them PR #24
8
+
6
9
  ## [0.8.8]
7
10
  - fix cron expression
8
11
 
@@ -11,7 +11,7 @@ GIT
11
11
  PATH
12
12
  remote: .
13
13
  specs:
14
- jets (0.8.8)
14
+ jets (0.8.9)
15
15
  actionpack (>= 5.2.1)
16
16
  actionview (>= 5.2.1)
17
17
  activerecord (>= 5.2.1)
@@ -69,7 +69,7 @@ GEM
69
69
  aws-sdk-cloudformation (1.8.0)
70
70
  aws-sdk-core (~> 3, >= 3.26.0)
71
71
  aws-sigv4 (~> 1.0)
72
- aws-sdk-cloudwatchlogs (1.7.0)
72
+ aws-sdk-cloudwatchlogs (1.8.0)
73
73
  aws-sdk-core (~> 3, >= 3.26.0)
74
74
  aws-sigv4 (~> 1.0)
75
75
  aws-sdk-core (3.27.0)
@@ -19,68 +19,75 @@ module Jets::Lambda::Dsl
19
19
  end
20
20
  alias_method :class_props, :class_properties
21
21
 
22
- def class_timeout(value)
23
- class_properties(timeout: value)
22
+ def properties(options={})
23
+ @properties ||= {}
24
+ @properties.deep_merge!(options)
24
25
  end
26
+ alias_method :props, :properties
25
27
 
26
28
  def class_environment(hash)
27
- environment = {}
28
- environment[:variables] ||= {}
29
- environment[:variables].merge!(hash)
29
+ environment = standardize_env(hash)
30
30
  class_properties(environment: environment)
31
31
  end
32
32
  alias_method :class_env, :class_environment
33
33
 
34
- def class_memory_size(value)
35
- class_properties(memory_size: value)
36
- end
37
- alias_method :class_memory, :class_memory_size
38
-
39
- def class_role(name)
40
- class_properties(role: name)
41
- end
42
-
43
- def class_handler(name)
44
- class_properties(handler: name)
34
+ def environment(hash)
35
+ environment = standardize_env(hash)
36
+ properties(environment: environment)
45
37
  end
38
+ alias_method :env, :environment
46
39
 
47
- def class_runtime(value)
48
- class_properties(runtime: value)
49
- end
40
+ # Allows user to pass in hash with or without the :variables key.
41
+ def standardize_env(hash)
42
+ return hash if hash.key?(:variables)
50
43
 
51
- # convenience method that set properties
52
- def timeout(value)
53
- properties(timeout: value)
54
- end
55
-
56
- # convenience method that set properties
57
- def environment(hash)
58
44
  environment = {}
59
45
  environment[:variables] ||= {}
60
46
  environment[:variables].merge!(hash)
61
- properties(environment: environment)
47
+ environment
62
48
  end
63
- alias_method :env, :environment
64
49
 
65
- # convenience method that set properties
66
- def memory_size(value)
67
- properties(memory_size: value)
50
+ # Convenience method that set properties. List based on https://amzn.to/2oSph1P
51
+ # Not all properites are included because some properties are not meant to be set
52
+ # directly. For example, function_name is a calculated setting by Jets.
53
+ PROPERTIES = %W[
54
+ dead_letter_config
55
+ description
56
+ handler
57
+ kms_key_arn
58
+ memory_size
59
+ reserved_concurrent_executions
60
+ role
61
+ runtime
62
+ timeout
63
+ tracing_config
64
+ vpc_config
65
+ tags
66
+ ]
67
+ PROPERTIES.each do |property|
68
+ # Example:
69
+ # def timeout(value)
70
+ # properties(timeout: value)
71
+ # end
72
+ #
73
+ # def class_timeout(value)
74
+ # class_properties(timeout: value)
75
+ # end
76
+ class_eval <<~CODE
77
+ def #{property}(value)
78
+ properties(#{property}: value)
79
+ end
80
+
81
+ def class_#{property}(value)
82
+ class_properties(#{property}: value)
83
+ end
84
+ CODE
68
85
  end
86
+ # More convenience aliases
69
87
  alias_method :memory, :memory_size
70
-
71
- def handler(value)
72
- properties(handler: value)
73
- end
74
-
75
- def runtime(value)
76
- properties(runtime: value)
77
- end
78
-
79
- def properties(options={})
80
- @properties ||= {}
81
- @properties.deep_merge!(options)
82
- end
83
- alias_method :props, :properties
88
+ alias_method :class_memory, :class_memory_size
89
+ alias_method :desc, :description
90
+ alias_method :class_desc, :class_description
84
91
 
85
92
  # definitions: one or more definitions
86
93
  def iam_policy(*definitions)
@@ -123,8 +130,8 @@ module Jets::Lambda::Dsl
123
130
  end
124
131
 
125
132
  #############################
126
- # Generic method that registers a resource to be associated with the Lambda function.
127
- # In the future all DSL methods can lead here.
133
+ # Main methood that registers resources associated with the Lambda function.
134
+ # All resources methods lead here.
128
135
  def resources(*definitions)
129
136
  if definitions == [nil] # when resources called with no arguments
130
137
  @resources || []
@@ -1,46 +1,30 @@
1
1
  class Jets::Resource
2
- class Permission
3
- extend Memoist
4
-
2
+ class Permission < Jets::Resource::Base
5
3
  def initialize(replacements, associated_resource)
6
4
  @replacements = replacements
7
- # puts caller
8
- # puts "replacements #{replacements.inspect}"
9
5
  @associated_resource = associated_resource
10
6
  end
11
7
 
12
- def logical_id
13
- logical_id = "{namespace}Permission"
14
- md = @associated_resource.logical_id.match(/(\d+)/)
15
- counter = md[1] if md
16
- logical_id = [logical_id, counter].compact.join('')
17
- # replace possible {namespace} in the logical id
18
- logical_id = replacer.replace_value(logical_id)
19
- Jets::Camelizer.camelize(logical_id)
20
- end
21
-
22
- def type
23
- attributes['Type']
24
- end
25
-
26
- def properties
27
- attributes['Properties']
28
- end
29
-
30
- def attributes
31
- attributes = {
32
- type: "AWS::Lambda::Permission",
33
- properties: {
34
- function_name: "!GetAtt {namespace}LambdaFunction.Arn",
35
- action: "lambda:InvokeFunction",
36
- principal: principal,
37
- source_arn: source_arn,
8
+ def definition
9
+ {
10
+ permission_logical_id => {
11
+ type: "AWS::Lambda::Permission",
12
+ properties: {
13
+ function_name: "!GetAtt {namespace}LambdaFunction.Arn",
14
+ action: "lambda:InvokeFunction",
15
+ principal: principal,
16
+ source_arn: source_arn,
17
+ }
38
18
  }
39
19
  }
40
- attributes = replacer.replace_placeholders(attributes)
41
- Jets::Camelizer.transform(attributes)
42
20
  end
43
- memoize :attributes
21
+
22
+ def permission_logical_id
23
+ logical_id = "{namespace}_permission"
24
+ md = @associated_resource.logical_id.match(/(\d+)/)
25
+ counter = md[1] if md
26
+ [logical_id, counter].compact.join('').underscore
27
+ end
44
28
 
45
29
  # Auto-detect principal from the associated resources.
46
30
  def principal
@@ -51,10 +35,5 @@ class Jets::Resource
51
35
  default_arn = "!GetAtt #{@associated_resource.logical_id}.Arn"
52
36
  Replacer.source_arn_map(@associated_resource.type) || default_arn
53
37
  end
54
-
55
- def replacer
56
- Replacer.new(@replacements)
57
- end
58
- memoize :replacer
59
38
  end
60
39
  end
@@ -1,3 +1,3 @@
1
1
  module Jets
2
- VERSION = "0.8.8"
2
+ VERSION = "0.8.9"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.8
4
+ version: 0.8.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-07 00:00:00.000000000 Z
11
+ date: 2018-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor