kumogata-template 0.0.35 → 0.0.36
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +4 -2
- data/Gemfile +1 -1
- data/Rakefile +1 -1
- data/kumogata-template.gemspec +4 -4
- data/lib/kumogata/template/alb.rb +48 -34
- data/lib/kumogata/template/api-gateway.rb +262 -0
- data/lib/kumogata/template/autoscaling.rb +17 -44
- data/lib/kumogata/template/certificate.rb +11 -8
- data/lib/kumogata/template/cloudfront.rb +67 -60
- data/lib/kumogata/template/cloudwatch.rb +7 -12
- data/lib/kumogata/template/codebuild.rb +4 -8
- data/lib/kumogata/template/codecommit.rb +2 -6
- data/lib/kumogata/template/codedeploy.rb +15 -0
- data/lib/kumogata/template/cognito.rb +203 -0
- data/lib/kumogata/template/const.rb +109 -47
- data/lib/kumogata/template/datapipeline.rb +16 -47
- data/lib/kumogata/template/dynamodb.rb +17 -8
- data/lib/kumogata/template/ec2.rb +61 -10
- data/lib/kumogata/template/ecr.rb +11 -9
- data/lib/kumogata/template/ecs.rb +256 -91
- data/lib/kumogata/template/elasticbeanstalk.rb +6 -9
- data/lib/kumogata/template/elb.rb +9 -24
- data/lib/kumogata/template/emr.rb +184 -51
- data/lib/kumogata/template/events.rb +22 -10
- data/lib/kumogata/template/ext/kumogata.rb +7 -7
- data/lib/kumogata/template/helper.rb +189 -130
- data/lib/kumogata/template/iam.rb +556 -146
- data/lib/kumogata/template/kinesis.rb +282 -0
- data/lib/kumogata/template/lambda.rb +43 -2
- data/lib/kumogata/template/logs.rb +2 -6
- data/lib/kumogata/template/nlb.rb +10 -0
- data/lib/kumogata/template/pinpoint.rb +83 -0
- data/lib/kumogata/template/rds.rb +52 -0
- data/lib/kumogata/template/redshift.rb +15 -6
- data/lib/kumogata/template/role.rb +425 -0
- data/lib/kumogata/template/s3.rb +120 -80
- data/lib/kumogata/template/sns.rb +2 -6
- data/lib/kumogata/template/version.rb +1 -1
- data/lib/kumogata/template.rb +9 -1
- data/template/_template.rb +2 -2
- data/template/alb-load-balancer.rb +5 -4
- data/template/alb-target-group.rb +8 -9
- data/template/api-gateway-account.rb +15 -0
- data/template/api-gateway-api-key.rb +22 -0
- data/template/api-gateway-authorizer.rb +38 -0
- data/template/api-gateway-base-path-mapping.rb +23 -0
- data/template/api-gateway-client-certificate.rb +16 -0
- data/template/api-gateway-deployment.rb +24 -0
- data/template/api-gateway-domain-name.rb +17 -0
- data/template/api-gateway-method.rb +71 -0
- data/template/api-gateway-model.rb +23 -0
- data/template/api-gateway-resource.rb +32 -0
- data/template/api-gateway-rest-api.rb +29 -0
- data/template/api-gateway-stage.rb +33 -0
- data/template/api-gateway-usage-plan-key.rb +19 -0
- data/template/api-gateway-usage-plan.rb +24 -0
- data/template/autoscaling-group.rb +2 -2
- data/template/autoscaling-launch-configuration.rb +7 -4
- data/template/autoscaling-scheduled-action.rb +0 -1
- data/template/certificate.rb +2 -2
- data/template/cloudfront-distribution.rb +4 -0
- data/template/cloudfront-origin-access-identity.rb +19 -0
- data/template/cloudtrail.rb +6 -4
- data/template/cloudwatch-alarm.rb +9 -3
- data/template/codebuild-project.rb +3 -3
- data/template/codecommit-repository.rb +2 -2
- data/template/codedeploy-application.rb +1 -1
- data/template/codedeploy-deployment-config.rb +1 -1
- data/template/codedeploy-deployment-group.rb +2 -0
- data/template/cognito-identity-pool.rb +34 -0
- data/template/cognito-identity-role-attachment.rb +22 -0
- data/template/cognito-user-pool-client.rb +28 -0
- data/template/cognito-user-pool-group.rb +24 -0
- data/template/cognito-user-pool-user-to-group-attachment.rb +20 -0
- data/template/cognito-user-pool-user.rb +28 -0
- data/template/cognito-user-pool.rb +45 -0
- data/template/datapipeline-pipeline.rb +4 -4
- data/template/dynamodb-table.rb +5 -1
- data/template/ec2-eip-association.rb +1 -1
- data/template/ec2-instance.rb +4 -1
- data/template/ec2-nat-gateway.rb +4 -0
- data/template/ec2-route.rb +4 -0
- data/template/ec2-security-group-ingress.rb +1 -1
- data/template/ec2-security-group.rb +2 -2
- data/template/ec2-subnet.rb +8 -4
- data/template/ec2-volume.rb +1 -2
- data/template/ec2-vpc-cidr-block.rb +4 -2
- data/template/ec2-vpc-endpoint.rb +5 -2
- data/template/ecr-repository.rb +2 -2
- data/template/ecs-cluster.rb +1 -1
- data/template/ecs-service.rb +19 -7
- data/template/ecs-task-definition.rb +4 -4
- data/template/elasticache-cache-cluster.rb +1 -1
- data/template/elasticache-parameter-group.rb +1 -1
- data/template/elasticache-replication-group.rb +1 -1
- data/template/elasticache-subnet-group.rb +1 -1
- data/template/elasticbeanstalk-application-version.rb +1 -1
- data/template/elasticbeanstalk-application.rb +1 -1
- data/template/elasticbeanstalk-configuration-template.rb +1 -1
- data/template/elasticbeanstalk-environment.rb +1 -1
- data/template/elb-load-balancer.rb +2 -2
- data/template/emr-cluster.rb +3 -3
- data/template/emr-instance-group-config.rb +4 -2
- data/template/emr-security-configuration.rb +17 -0
- data/template/emr-step.rb +2 -2
- data/template/events-rule.rb +8 -8
- data/template/iam-group.rb +2 -2
- data/template/iam-instance-profile.rb +2 -2
- data/template/iam-managed-policy.rb +1 -1
- data/template/iam-policy.rb +1 -1
- data/template/iam-role.rb +17 -2
- data/template/iam-user.rb +4 -4
- data/template/kinesis-firehose-delivery-stream.rb +36 -0
- data/template/kinesis-stream.rb +21 -0
- data/template/kms-alias.rb +2 -2
- data/template/kms-key.rb +1 -1
- data/template/lambda-alias.rb +2 -2
- data/template/lambda-event-source-mapping.rb +4 -4
- data/template/lambda-function.rb +17 -17
- data/template/lambda-permission.rb +31 -10
- data/template/lambda-version.rb +4 -2
- data/template/logs-destination.rb +1 -1
- data/template/logs-log-group.rb +1 -1
- data/template/logs-log-stream.rb +4 -2
- data/template/logs-metric-filter.rb +1 -1
- data/template/logs-subscription_filter.rb +1 -1
- data/template/mappings-ec2.rb +114 -52
- data/template/output-arn.rb +12 -4
- data/template/output-certificate.rb +11 -0
- data/template/output-distribution.rb +11 -0
- data/template/output-domain-name.rb +11 -0
- data/template/output-ecr-repository.rb +16 -0
- data/template/output-eip.rb +11 -0
- data/template/output-lambda-function.rb +6 -0
- data/template/output-name.rb +7 -2
- data/template/output-origin-access-identity.rb +13 -0
- data/template/output-rds-cluster.rb +17 -0
- data/template/{output-rds.rb → output-rds-instance.rb} +1 -1
- data/template/output-redshift.rb +11 -0
- data/template/output-rest-api.rb +11 -0
- data/template/output-s3.rb +3 -0
- data/template/output-stage.rb +19 -0
- data/template/output-subnet.rb +6 -3
- data/template/output-trail.rb +14 -0
- data/template/output-user-pool-client.rb +14 -0
- data/template/output-user-pool.rb +17 -0
- data/template/output-vpc.rb +13 -3
- data/template/output.rb +3 -2
- data/template/parameter-ec2.rb +10 -4
- data/template/parameter-elasticache.rb +1 -1
- data/template/parameter-rds.rb +51 -4
- data/template/parameter-redshift.rb +31 -1
- data/template/parameter.rb +87 -7
- data/template/rds-db-cluster-parameter-group.rb +18 -4
- data/template/rds-db-cluster.rb +19 -7
- data/template/rds-db-instance.rb +55 -131
- data/template/rds-db-parameter-group.rb +29 -3
- data/template/rds-db-subnet-group.rb +1 -1
- data/template/rds-event-subscription.rb +2 -4
- data/template/rds-option-group.rb +28 -5
- data/template/redshift-cluster-parameter-group.rb +3 -1
- data/template/redshift-cluster-security-group.rb +17 -0
- data/template/redshift-cluster-subnet-group.rb +3 -1
- data/template/redshift-cluster.rb +15 -12
- data/template/s3-bucket.rb +10 -5
- data/template/sns-topic.rb +2 -2
- data/template/sqs-queue.rb +1 -1
- data/test/abstract_unit.rb +2 -9
- data/test/cloudfront_test.rb +57 -28
- data/test/codedeploy_test.rb +21 -0
- data/test/datapipeline_test.rb +0 -22
- data/test/ec2_test.rb +12 -52
- data/test/ecs_test.rb +30 -26
- data/test/emr_test.rb +101 -20
- data/test/events_test.rb +47 -0
- data/test/helper_test.rb +251 -281
- data/test/iam_test.rb +572 -57
- data/test/lambda_test.rb +1 -1
- data/test/s3_test.rb +49 -14
- data/test/template/alb-load-balancer_test.rb +4 -5
- data/test/template/alb-target-group_test.rb +1 -3
- data/test/template/api-gateway-account_test.rb +26 -0
- data/test/template/api-gateway-api-key_test.rb +33 -0
- data/test/template/api-gateway-authorizer_test.rb +62 -0
- data/test/template/api-gateway-base-path-mapping_test.rb +27 -0
- data/test/template/api-gateway-client-certificate_test.rb +21 -0
- data/test/template/api-gateway-deployment_test.rb +27 -0
- data/test/template/api-gateway-domain-name_test.rb +26 -0
- data/test/template/api-gateway-method_test.rb +29 -0
- data/test/template/api-gateway-model_test.rb +37 -0
- data/test/template/api-gateway-resource_test.rb +82 -0
- data/test/template/api-gateway-rest-api_test.rb +33 -0
- data/test/template/api-gateway-stage_test.rb +39 -0
- data/test/template/api-gateway-usage-plan-key_test.rb +25 -0
- data/test/template/api-gateway-usage-plan_test.rb +42 -0
- data/test/template/cloudfront-distribution_test.rb +41 -3
- data/test/template/cloudtrail_test.rb +13 -5
- data/test/template/cloudwatch-alarm_test.rb +14 -2
- data/test/template/codebuild-project_test.rb +2 -11
- data/test/template/codecommit-repository_test.rb +12 -1
- data/test/template/cognito-identity-pool_test.rb +32 -0
- data/test/template/cognito-identity-role-attachment_test.rb +38 -0
- data/test/template/cognito-user-pool-client_test.rb +36 -0
- data/test/template/cognito-user-pool-group_test.rb +36 -0
- data/test/template/cognito-user-pool-user-to-group-attachment_test.rb +29 -0
- data/test/template/cognito-user-pool-user_test.rb +38 -0
- data/test/template/cognito-user-pool_test.rb +99 -0
- data/test/template/datapipeline-pipeline_test.rb +45 -6
- data/test/template/dynamodb-table_test.rb +19 -1
- data/test/template/ec2-instance_test.rb +9 -1
- data/test/template/ec2-nat-gateway_test.rb +29 -1
- data/test/template/ec2-security-group-egress_test.rb +1 -0
- data/test/template/ec2-security-group-ingress_test.rb +1 -0
- data/test/template/ec2-security-group_test.rb +11 -1
- data/test/template/ec2-spot-fleet_test.rb +1 -1
- data/test/template/ec2-subnet_test.rb +62 -1
- data/test/template/ec2-vpc-cidr-block_test.rb +1 -1
- data/test/template/ec2-vpc-endpoint_test.rb +56 -0
- data/test/template/ecr-repository_test.rb +63 -11
- data/test/template/ecs-service_test.rb +13 -2
- data/test/template/ecs-task-definition_test.rb +86 -13
- data/test/template/elasticache-cache-cluster_test.rb +4 -6
- data/test/template/elasticache-replication-group_test.rb +1 -1
- data/test/template/elasticbeanstalk-application-version_test.rb +1 -0
- data/test/template/elasticbeanstalk-application_test.rb +2 -1
- data/test/template/elasticbeanstalk-configuration-template_test.rb +2 -1
- data/test/template/elasticbeanstalk-template_test.rb +1 -0
- data/test/template/elb-load-balancer_test.rb +1 -3
- data/test/template/emr-cluster_test.rb +2 -14
- data/test/template/emr-instance-group-config_test.rb +2 -4
- data/test/template/emr-security-configuration_test.rb +34 -0
- data/test/template/emr-step_test.rb +2 -6
- data/test/template/events-rule_test.rb +3 -3
- data/test/template/iam-group_test.rb +11 -1
- data/test/template/iam-instance-profile_test.rb +11 -1
- data/test/template/iam-managed-policy_test.rb +1 -0
- data/test/template/iam-policy_test.rb +1 -3
- data/test/template/iam-role_test.rb +12 -2
- data/test/template/iam-user_test.rb +11 -17
- data/test/template/kinesis-firehorse-delivery-stream_test.rb +68 -0
- data/test/template/kinesis-stream_test.rb +61 -0
- data/test/template/kms-key_test.rb +1 -0
- data/test/template/lambda-alias_test.rb +2 -3
- data/test/template/lambda-event-source-mapping_test.rb +1 -1
- data/test/template/lambda-function_test.rb +20 -32
- data/test/template/lambda-permission_test.rb +7 -4
- data/test/template/lambda-version_test.rb +5 -2
- data/test/template/logs-log-group_test.rb +1 -3
- data/test/template/logs-log-stream_test.rb +2 -6
- data/test/template/logs-metric-filter_test.rb +1 -3
- data/test/template/logs-subscription-filter_test.rb +1 -3
- data/test/template/mappings-ec2_test.rb +10 -3
- data/test/template/output-domain-name_test.rb +30 -0
- data/test/template/output-name_test.rb +9 -0
- data/test/template/{output-rds_test.rb → output-rds-instance_test.rb} +2 -2
- data/test/template/output-rest-api_test.rb +30 -0
- data/test/template/output-s3_test.rb +9 -0
- data/test/template/output-stage_test.rb +43 -0
- data/test/template/output-user-pool-client_test.rb +39 -0
- data/test/template/output-user-pool_test.rb +48 -0
- data/test/template/output_test.rb +3 -1
- data/test/template/parameter-ec2_test.rb +22 -24
- data/test/template/parameter-elasticache_test.rb +2 -1
- data/test/template/parameter-rds_test.rb +32 -3
- data/test/template/parameter-redshift_test.rb +31 -2
- data/test/template/parameter_test.rb +37 -4
- data/test/template/rds-db-cluster-parameter-group_test.rb +1 -1
- data/test/template/rds-db-cluster_test.rb +4 -20
- data/test/template/rds-db-instance_test.rb +3 -373
- data/test/template/rds-db-parameter-group_test.rb +1 -1
- data/test/template/rds-option-group_test.rb +2 -2
- data/test/template/redshift-cluster-parameter-group_test.rb +28 -0
- data/test/template/redshift-cluster-security-group_test.rb +49 -0
- data/test/template/redshift-cluster-subnet-group_test.rb +28 -0
- data/test/template/redshift-cluster_test.rb +33 -5
- data/test/template/s3-bucket_test.rb +6 -20
- metadata +130 -22
@@ -4,12 +4,6 @@
|
|
4
4
|
require 'date'
|
5
5
|
require 'kumogata/template/const'
|
6
6
|
|
7
|
-
def _resource_name(name, append = nil)
|
8
|
-
name = name.to_s
|
9
|
-
name += " #{append}" unless append.nil?
|
10
|
-
name.split.map(&:capitalize).join(' ').gsub(/[-_#,.]/, '').delete(' ')
|
11
|
-
end
|
12
|
-
|
13
7
|
def _array(args)
|
14
8
|
if args.is_a? String
|
15
9
|
[ args ]
|
@@ -39,12 +33,58 @@ def _description(name)
|
|
39
33
|
chomp.slice(0, 1024)
|
40
34
|
end
|
41
35
|
|
42
|
-
def
|
43
|
-
|
44
|
-
|
45
|
-
|
36
|
+
def _pair_name_value(args, name)
|
37
|
+
_pair_value(args, name, "name")
|
38
|
+
end
|
39
|
+
|
40
|
+
def _pair_value(args, name, key_prefix = "key")
|
41
|
+
return "" unless args.key? name.to_sym
|
42
|
+
|
43
|
+
pair = args[name.to_sym]
|
44
|
+
|
45
|
+
if pair.is_a? Hash
|
46
|
+
pair.map.collect do |key, value|
|
47
|
+
case value
|
48
|
+
when /^_ref_(.*)$/
|
49
|
+
value = _ref_pseudo($1)
|
50
|
+
when /^_import_(.*)$/
|
51
|
+
value = _import($1)
|
52
|
+
end
|
53
|
+
|
54
|
+
p = { "#{key_prefix.capitalize}": key.to_s }
|
55
|
+
p['Value'] = value
|
56
|
+
p
|
57
|
+
end
|
58
|
+
else
|
59
|
+
pair.collect do |p|
|
60
|
+
p.map.collect do |_, value|
|
61
|
+
_{
|
62
|
+
Value value
|
63
|
+
}
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def _name(name, args, prefix = "-")
|
70
|
+
return _import(args["import_#{name}".to_sym]) if args.key? "import_#{name}".to_sym
|
71
|
+
ref_name = _ref_string(name, args)
|
72
|
+
if ref_name.empty?
|
73
|
+
ref_name_default = _ref_string("name", args)
|
74
|
+
_join([
|
75
|
+
_ref(_resource_name("service")),
|
76
|
+
(ref_name_default.is_a? String) ? ref_name_default.gsub(' ', prefix) : ref_name_default,
|
77
|
+
],
|
78
|
+
prefix)
|
79
|
+
else
|
80
|
+
(ref_name.is_a? String) ? ref_name.gsub(' ', prefix) : ref_name
|
81
|
+
end
|
82
|
+
end
|
46
83
|
|
47
|
-
|
84
|
+
def _resource_name(name, append = nil)
|
85
|
+
resource = name.to_s.clone
|
86
|
+
resource += " #{append}" unless append.nil?
|
87
|
+
resource.gsub(/[^0-9A-Za-z]/, ' ').split(' ').map(&:capitalize).join()
|
48
88
|
end
|
49
89
|
|
50
90
|
def _valid_values(value, values, default = nil)
|
@@ -59,29 +99,15 @@ def _valid_numbers(value, min = 0, max = 0, default = nil)
|
|
59
99
|
(min <= number and number <= max) ? number : default
|
60
100
|
end
|
61
101
|
|
62
|
-
def
|
63
|
-
key = _ref_key?(name, args) ? name : "name"
|
64
|
-
real_name = _ref_string(key, args)
|
65
|
-
real_name = real_name.gsub(" ", "-") if real_name.is_a? String
|
66
|
-
real_name =~ /^false/i ? false : real_name
|
67
|
-
end
|
68
|
-
|
69
|
-
def _ref_key?(name, args, ref_name = '')
|
102
|
+
def _ref_key?(name, args, ref_name = '', check_name = true)
|
70
103
|
return true if args.key? "import_#{name}".to_sym
|
71
104
|
return true if args.key? "ref_#{name}".to_sym
|
72
|
-
return true
|
105
|
+
return true if check_name and args.key? name.to_sym
|
73
106
|
false
|
74
107
|
end
|
75
108
|
|
76
|
-
def
|
77
|
-
return _import(args["import_#{name}".to_sym]) if args.key? "import_#{name}".to_sym
|
78
|
-
return args[name.to_sym].to_i || 0 unless args.key? "ref_#{name}".to_sym
|
79
|
-
|
80
|
-
_ref(_resource_name(args["ref_#{name}".to_sym].to_s, ref_name))
|
81
|
-
end
|
82
|
-
|
83
|
-
def _ref_string(name, args, ref_name = '')
|
84
|
-
return _import(args["import_#{name}".to_sym]) if args.key? "import_#{name}".to_sym
|
109
|
+
def _ref_string(name, args, ref_name = '', append_import_name = '')
|
110
|
+
return _import(args["import_#{name}".to_sym], ref_name, append_import_name) if args.key? "import_#{name}".to_sym
|
85
111
|
return args[name.to_sym].to_s || '' unless args.key? "ref_#{name}".to_sym
|
86
112
|
|
87
113
|
_ref(_resource_name(args["ref_#{name}".to_sym].to_s, ref_name))
|
@@ -92,23 +118,35 @@ def _ref_string_default(name, args, ref_name = '', default = '')
|
|
92
118
|
ref_string.empty? ? default : ref_string
|
93
119
|
end
|
94
120
|
|
95
|
-
def _ref_array(name, args, ref_name = '')
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
121
|
+
def _ref_array(name, args, ref_name = '', attr_name = '', append_import_name = '')
|
122
|
+
if args["import_#{name}".to_sym].is_a? String
|
123
|
+
[ _import(name, ref_name, append_import_name) ]
|
124
|
+
elsif args["ref_#{name}".to_sym].is_a? String
|
125
|
+
if attr_name.empty?
|
126
|
+
[ _ref_string(name, args, ref_name) ]
|
127
|
+
else
|
128
|
+
[ _attr_string(name, attr_name, ref_name) ]
|
129
|
+
end
|
102
130
|
else
|
103
|
-
|
104
|
-
|
105
|
-
|
131
|
+
array = []
|
132
|
+
array += args["import_#{name}".to_sym].collect do |v|
|
133
|
+
_import(v, ref_name, append_import_name)
|
134
|
+
end if args.key? "import_#{name}".to_sym
|
135
|
+
array += args["ref_#{name}".to_sym].collect do |v|
|
136
|
+
if attr_name.empty?
|
137
|
+
_ref(_resource_name(v, ref_name))
|
138
|
+
else
|
139
|
+
_attr_string(v, attr_name, ref_name)
|
140
|
+
end
|
141
|
+
end if args.key? "ref_#{name}".to_sym
|
142
|
+
array.empty? ? _array(args[name.to_sym] || []) : array
|
106
143
|
end
|
107
|
-
array
|
108
144
|
end
|
109
145
|
|
110
|
-
def _ref_attr_string(name, attr, args, ref_name = '')
|
111
|
-
if args.key? "
|
146
|
+
def _ref_attr_string(name, attr, args, ref_name = '', append_import_name = '')
|
147
|
+
if args.key? "import_#{name}".to_sym
|
148
|
+
_import(args["import_#{name}".to_sym], ref_name, append_import_name)
|
149
|
+
elsif args.key? "ref_#{name}".to_sym
|
112
150
|
_attr_string(args["ref_#{name}".to_sym], attr, ref_name)
|
113
151
|
elsif args.key? name.to_sym
|
114
152
|
args[name.to_sym]
|
@@ -117,52 +155,35 @@ def _ref_attr_string(name, attr, args, ref_name = '')
|
|
117
155
|
end
|
118
156
|
end
|
119
157
|
|
120
|
-
def _ref_name(name, args, ref_name = '')
|
121
|
-
return _ref(_resource_name(args["ref_raw_#{name}".to_sym], ref_name)) if args.key? "ref_raw_#{name}".to_sym
|
122
|
-
return args["raw_#{name}".to_sym] if args.key? "raw_#{name}".to_sym
|
123
|
-
return _import(args["import_#{name}".to_sym]) if args.key? "import_#{name}".to_sym
|
124
|
-
|
125
|
-
name = _ref_string(name, args, ref_name)
|
126
|
-
if name.empty?
|
127
|
-
_join([ _ref(_resource_name("service")), _ref(_resource_name("name")) ], "-")
|
128
|
-
elsif name.is_a? Hash
|
129
|
-
_join([ _ref(_resource_name("service")), name ], "-")
|
130
|
-
else
|
131
|
-
name.gsub(" ", "-")
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
def _ref_name_default(name, args, ref_name = '')
|
136
|
-
return args["raw_#{name}".to_sym] if args.key? "raw_#{name}".to_sym
|
137
|
-
name = _ref_string(name, args, ref_name)
|
138
|
-
name.empty? ? args[:name] : name.gsub(" ", "-")
|
139
|
-
end
|
140
|
-
|
141
|
-
def _ref_resource_name(args, ref_name = '')
|
142
|
-
_ref(_resource_name(args[:name], ref_name))
|
143
|
-
end
|
144
|
-
|
145
158
|
def _ref_arn(service, name)
|
146
159
|
_join([ "arn:aws:#{service}:::", _ref(_resource_name(name)) ], ",")
|
147
160
|
end
|
148
161
|
|
149
162
|
def _ref_pseudo(type)
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
163
|
+
_ref("AWS::#{_pseudo(type)}")
|
164
|
+
end
|
165
|
+
|
166
|
+
def _var_pseudo(type)
|
167
|
+
"${AWS::#{_pseudo(type)}}"
|
168
|
+
end
|
169
|
+
|
170
|
+
def _pseudo(type)
|
171
|
+
case type
|
172
|
+
when "account id", "account_id"
|
173
|
+
"AccountId"
|
174
|
+
when "notification arns", "notification_arns"
|
175
|
+
"NotificationARNs"
|
176
|
+
when "no value", "no_value"
|
177
|
+
"NoValue"
|
178
|
+
when "region"
|
179
|
+
"Region"
|
180
|
+
when "stack id", "stack_id"
|
181
|
+
"StackId"
|
182
|
+
when "stack name", "stack_name"
|
183
|
+
"StackName"
|
184
|
+
else
|
185
|
+
type
|
186
|
+
end
|
166
187
|
end
|
167
188
|
|
168
189
|
def _ref(name)
|
@@ -207,7 +228,11 @@ def _base64(data)
|
|
207
228
|
end
|
208
229
|
|
209
230
|
def _base64_shell(data, shell = "/bin/bash")
|
210
|
-
|
231
|
+
if data.is_a? Array
|
232
|
+
_base64(_join(data.insert(0, "#!#{shell}"), "\n"))
|
233
|
+
else
|
234
|
+
_base64(_join([ "#!#{shell}", data ], "\n"))
|
235
|
+
end
|
211
236
|
end
|
212
237
|
|
213
238
|
def _find_in_map(name, top_level, secondary_level)
|
@@ -219,65 +244,105 @@ def _select(index, list)
|
|
219
244
|
end
|
220
245
|
|
221
246
|
def _split(name, delimiter = ",")
|
222
|
-
_{
|
223
|
-
|
224
|
-
|
247
|
+
_{ Fn__Split [ delimiter, name ] }
|
248
|
+
end
|
249
|
+
|
250
|
+
def _sub(name, mappings = [])
|
251
|
+
if mappings.empty?
|
252
|
+
_{ Fn__Sub name }
|
253
|
+
else
|
254
|
+
array = [ name ]
|
255
|
+
mappings.each do |mapping|
|
256
|
+
mapping.each_pair do |key, value|
|
257
|
+
_sub = {}
|
258
|
+
_sub.store(_resource_name(key), _ref_string('', { ref_: value }))
|
259
|
+
array << _sub
|
260
|
+
end
|
261
|
+
end
|
262
|
+
_{ Fn__Sub array }
|
263
|
+
end
|
225
264
|
end
|
226
265
|
|
227
|
-
def
|
228
|
-
|
266
|
+
def _sub_service(service)
|
267
|
+
_sub("#{service}.#{_var_pseudo('region')}.#{DOMAIN}")
|
229
268
|
end
|
230
269
|
|
231
270
|
def _export_string(args, prefix)
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
271
|
+
return '' unless args.key? :export
|
272
|
+
return '' unless args[:export] == true
|
273
|
+
|
274
|
+
export = args[:name]
|
275
|
+
export += "-#{args[:resource]}" if args.key? :resource
|
276
|
+
export += "-#{prefix}" unless prefix.empty?
|
277
|
+
export.gsub(/(\s|_)/, '-')
|
237
278
|
end
|
238
279
|
|
239
280
|
def _export(args)
|
240
281
|
export = args[:export] || ''
|
241
282
|
return '' if export.empty?
|
242
283
|
|
243
|
-
|
244
|
-
|
245
|
-
}
|
284
|
+
export = "#{export}-#{args[:resource]}" if args.key? :resource
|
285
|
+
|
286
|
+
_{ Name _sub("${AWS::StackName}-#{export.gsub(/(\s|_)/, '-')}") }
|
287
|
+
end
|
288
|
+
|
289
|
+
def _depends(keys, args)
|
290
|
+
return '' if keys.empty?
|
291
|
+
|
292
|
+
depends =
|
293
|
+
if args.key? :depends
|
294
|
+
args[:depends].collect{|v| _resource_name(v) }
|
295
|
+
else
|
296
|
+
[]
|
297
|
+
end
|
298
|
+
|
299
|
+
keys.each do |v|
|
300
|
+
if v.is_a? String
|
301
|
+
depends << _resource_name(args[v.to_sym]) if args.key? v.to_sym
|
302
|
+
else
|
303
|
+
v.each_pair do |kk, vv|
|
304
|
+
depends << _resource_name(args[kk.to_sym], vv) if args.key? kk.to_sym
|
305
|
+
end
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
depends
|
246
310
|
end
|
247
311
|
|
248
312
|
def _join(args, delimiter = ",")
|
249
313
|
_{ Fn__Join delimiter, args }
|
250
314
|
end
|
251
315
|
|
252
|
-
def _import(name)
|
253
|
-
|
254
|
-
|
255
|
-
}
|
316
|
+
def _import(name, ref_name = '', append_import_name = '')
|
317
|
+
import = name
|
318
|
+
import += "-#{ref_name}" unless ref_name.empty?
|
319
|
+
import += "-#{append_import_name}" unless append_import_name.empty?
|
320
|
+
_{ Fn__ImportValue _sub(import.gsub(/(\s|_)/, '-')) }
|
256
321
|
end
|
257
322
|
|
258
323
|
def _region
|
259
|
-
|
324
|
+
_ref_pseudo("region")
|
325
|
+
end
|
326
|
+
|
327
|
+
def _account_id
|
328
|
+
_ref_pseudo("account id")
|
260
329
|
end
|
261
330
|
|
262
331
|
def _tag(args)
|
263
332
|
key = args[:key].to_s || ''
|
264
333
|
value = args[:value] || ''
|
265
|
-
|
266
|
-
key.gsub!(/^ref_/, '')
|
267
|
-
value = _ref(_resource_name(value))
|
268
|
-
end
|
269
|
-
|
334
|
+
is_ref = (key =~ /^ref_.*/) ? true : false
|
270
335
|
_{
|
271
|
-
Key _resource_name(key)
|
272
|
-
Value value
|
336
|
+
Key _resource_name(key.gsub(/^ref_/, ''))
|
337
|
+
Value is_ref ? _ref(_resource_name(value)) : value
|
273
338
|
}
|
274
339
|
end
|
275
340
|
|
276
|
-
def _tags(args)
|
341
|
+
def _tags(args, tag_name = "tag_name")
|
277
342
|
tags = [
|
278
343
|
_{
|
279
344
|
Key "Name"
|
280
|
-
Value
|
345
|
+
Value _name(tag_name, args)
|
281
346
|
},
|
282
347
|
_{
|
283
348
|
Key "Service"
|
@@ -288,33 +353,27 @@ def _tags(args)
|
|
288
353
|
Value _ref(_resource_name("version"))
|
289
354
|
},
|
290
355
|
]
|
291
|
-
args[:tags_append].collect{|k, v| tags << _tag(key: k, value: v) } if args.key? :tags_append
|
356
|
+
args[:tags_append].collect{|k, v| tags << _tag(key: k, value: v.gsub(" ", "-")) } if args.key? :tags_append
|
292
357
|
tags
|
293
358
|
end
|
294
359
|
|
295
|
-
def
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
return tag_name unless tag_name.empty?
|
360
|
+
def _tags_string(args, tag_name = "tag_name")
|
361
|
+
tags = {}
|
362
|
+
_tags(args, tag_name).collect{|v| tags[v['Key']] = v['Value'] }
|
363
|
+
tags
|
364
|
+
end
|
301
365
|
|
302
|
-
|
303
|
-
|
304
|
-
_join([ _ref(_resource_name(args[:tag_service] || "service")), tag_name ], "-")
|
366
|
+
def _var(value)
|
367
|
+
"${#{value}}"
|
305
368
|
end
|
306
369
|
|
307
|
-
def _availability_zone(args, use_subnet = true)
|
308
|
-
zone = args.
|
370
|
+
def _availability_zone(args, use_subnet = true, prefix = "zone name")
|
371
|
+
zone = args.clone
|
309
372
|
zone.delete(:ref_subnet) if use_subnet == false
|
310
373
|
if zone.key? :ref_subnet
|
311
374
|
_ref_attr_string("subnet", "AvailabilityZone", zone, "subnet")
|
312
|
-
elsif zone.key? :ref_az
|
313
|
-
_ref_string("az", zone)
|
314
|
-
elsif zone.key? :az
|
315
|
-
zone[:az]
|
316
375
|
else
|
317
|
-
|
376
|
+
_ref_string("az", zone, prefix)
|
318
377
|
end
|
319
378
|
end
|
320
379
|
|
@@ -337,7 +396,7 @@ def _availability_zones(args, use_subnet = true)
|
|
337
396
|
end
|
338
397
|
end
|
339
398
|
|
340
|
-
def _timestamp_utc(time = Time.now, type =
|
399
|
+
def _timestamp_utc(time = Time.now, type = '')
|
341
400
|
format =
|
342
401
|
case type
|
343
402
|
when "cron"
|
@@ -348,7 +407,7 @@ def _timestamp_utc(time = Time.now, type = nil)
|
|
348
407
|
time.utc.strftime(format)
|
349
408
|
end
|
350
409
|
|
351
|
-
def _timestamp_utc_from_string(time, type=
|
410
|
+
def _timestamp_utc_from_string(time, type = '')
|
352
411
|
_timestamp_utc(Time.strptime(time, "%Y-%m-%d %H:%M"), type)
|
353
412
|
end
|
354
413
|
|