geoengineer 0.1.3 → 0.1.4
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +8 -6
- data/lib/geoengineer.rb +2 -0
- data/lib/geoengineer/cli/geo_cli.rb +1 -4
- data/lib/geoengineer/cli/terraform_commands.rb +4 -2
- data/lib/geoengineer/environment.rb +14 -1
- data/lib/geoengineer/provider.rb +38 -0
- data/lib/geoengineer/resource.rb +29 -15
- data/lib/geoengineer/resources/api_gateway/helpers.rb +107 -0
- data/lib/geoengineer/resources/aws_alb.rb +39 -0
- data/lib/geoengineer/resources/aws_alb_listener.rb +39 -0
- data/lib/geoengineer/resources/aws_alb_listener_rule.rb +42 -0
- data/lib/geoengineer/resources/aws_alb_target_group.rb +30 -0
- data/lib/geoengineer/resources/aws_api_gateway_account.rb +18 -0
- data/lib/geoengineer/resources/aws_api_gateway_api_key.rb +20 -0
- data/lib/geoengineer/resources/aws_api_gateway_authorizer.rb +20 -0
- data/lib/geoengineer/resources/aws_api_gateway_base_path_mapping.rb +20 -0
- data/lib/geoengineer/resources/aws_api_gateway_client_certificate.rb +24 -0
- data/lib/geoengineer/resources/aws_api_gateway_deployment.rb +65 -0
- data/lib/geoengineer/resources/aws_api_gateway_domain_name.rb +27 -0
- data/lib/geoengineer/resources/aws_api_gateway_integration.rb +58 -0
- data/lib/geoengineer/resources/aws_api_gateway_integration_response.rb +68 -0
- data/lib/geoengineer/resources/aws_api_gateway_method.rb +59 -0
- data/lib/geoengineer/resources/aws_api_gateway_method_response.rb +69 -0
- data/lib/geoengineer/resources/aws_api_gateway_model.rb +19 -0
- data/lib/geoengineer/resources/aws_api_gateway_resource.rb +47 -0
- data/lib/geoengineer/resources/aws_api_gateway_rest_api.rb +79 -0
- data/lib/geoengineer/resources/aws_api_gateway_usage_plan.rb +27 -0
- data/lib/geoengineer/resources/aws_cloudfront_distribution.rb +25 -0
- data/lib/geoengineer/resources/aws_cloudtrail.rb +2 -2
- data/lib/geoengineer/resources/aws_cloudwatch_event_rule.rb +12 -3
- data/lib/geoengineer/resources/aws_cloudwatch_event_target.rb +2 -2
- data/lib/geoengineer/resources/aws_cloudwatch_metric_alarm.rb +10 -8
- data/lib/geoengineer/resources/aws_customer_gateway.rb +4 -2
- data/lib/geoengineer/resources/aws_db_instance.rb +2 -2
- data/lib/geoengineer/resources/aws_db_parameter_group.rb +4 -2
- data/lib/geoengineer/resources/aws_dynamodb_table.rb +2 -2
- data/lib/geoengineer/resources/aws_eip.rb +2 -2
- data/lib/geoengineer/resources/aws_elasticache_cluster.rb +2 -2
- data/lib/geoengineer/resources/aws_elasticache_parameter_group.rb +2 -2
- data/lib/geoengineer/resources/aws_elasticache_replication_group.rb +2 -2
- data/lib/geoengineer/resources/aws_elasticache_subnet_group.rb +2 -2
- data/lib/geoengineer/resources/aws_elasticsearch_domain.rb +2 -2
- data/lib/geoengineer/resources/aws_elb.rb +4 -2
- data/lib/geoengineer/resources/aws_iam_account_password_policy.rb +2 -1
- data/lib/geoengineer/resources/aws_iam_group.rb +2 -2
- data/lib/geoengineer/resources/aws_iam_group_membership.rb +1 -1
- data/lib/geoengineer/resources/aws_iam_instance_profile.rb +3 -3
- data/lib/geoengineer/resources/aws_iam_policy.rb +6 -4
- data/lib/geoengineer/resources/aws_iam_policy_attachment.rb +1 -1
- data/lib/geoengineer/resources/aws_iam_role.rb +2 -2
- data/lib/geoengineer/resources/aws_iam_role_policy.rb +10 -9
- data/lib/geoengineer/resources/aws_iam_user.rb +4 -4
- data/lib/geoengineer/resources/aws_instance.rb +3 -3
- data/lib/geoengineer/resources/aws_internet_gateway.rb +3 -2
- data/lib/geoengineer/resources/aws_kinesis_stream.rb +4 -4
- data/lib/geoengineer/resources/aws_kms_key.rb +5 -3
- data/lib/geoengineer/resources/aws_lambda_alias.rb +7 -7
- data/lib/geoengineer/resources/aws_lambda_event_source_mapping.rb +2 -2
- data/lib/geoengineer/resources/aws_lambda_function.rb +2 -2
- data/lib/geoengineer/resources/aws_lambda_permission.rb +9 -8
- data/lib/geoengineer/resources/aws_lb_cookie_stickiness_policy.rb +47 -0
- data/lib/geoengineer/resources/aws_load_balancer_backend_server_policy.rb +2 -2
- data/lib/geoengineer/resources/aws_load_balancer_policy.rb +5 -5
- data/lib/geoengineer/resources/aws_main_route_table_association.rb +2 -2
- data/lib/geoengineer/resources/aws_nat_gateway.rb +2 -2
- data/lib/geoengineer/resources/aws_network_acl.rb +2 -2
- data/lib/geoengineer/resources/aws_network_acl_rule.rb +2 -2
- data/lib/geoengineer/resources/aws_proxy_protocol_policy.rb +1 -1
- data/lib/geoengineer/resources/aws_redshift_cluster.rb +2 -2
- data/lib/geoengineer/resources/aws_route.rb +2 -2
- data/lib/geoengineer/resources/aws_route53_record.rb +6 -6
- data/lib/geoengineer/resources/aws_route53_zone.rb +2 -2
- data/lib/geoengineer/resources/aws_route_table.rb +2 -2
- data/lib/geoengineer/resources/aws_route_table_association.rb +2 -2
- data/lib/geoengineer/resources/aws_s3_bucket.rb +2 -2
- data/lib/geoengineer/resources/aws_s3_bucket_notification.rb +38 -0
- data/lib/geoengineer/resources/aws_security_group.rb +2 -2
- data/lib/geoengineer/resources/aws_ses_receipt_rule.rb +2 -2
- data/lib/geoengineer/resources/aws_ses_receipt_rule_set.rb +2 -2
- data/lib/geoengineer/resources/aws_sns_topic.rb +2 -2
- data/lib/geoengineer/resources/aws_sns_topic_subscription.rb +5 -5
- data/lib/geoengineer/resources/aws_sqs_queue.rb +2 -2
- data/lib/geoengineer/resources/aws_subnet.rb +2 -2
- data/lib/geoengineer/resources/aws_vpc.rb +2 -2
- data/lib/geoengineer/resources/aws_vpc_dhcp_options.rb +2 -2
- data/lib/geoengineer/resources/aws_vpc_dhcp_options_association.rb +2 -2
- data/lib/geoengineer/resources/aws_vpc_endpoint.rb +2 -2
- data/lib/geoengineer/resources/aws_vpc_peering_connection.rb +2 -2
- data/lib/geoengineer/resources/aws_vpn_connection.rb +3 -2
- data/lib/geoengineer/resources/aws_vpn_connection_route.rb +2 -2
- data/lib/geoengineer/resources/aws_vpn_gateway.rb +2 -2
- data/lib/geoengineer/resources/aws_vpn_gateway_attachment.rb +2 -2
- data/lib/geoengineer/template.rb +3 -1
- data/lib/geoengineer/templates/json_rest_api.rb +197 -0
- data/lib/geoengineer/utils/aws_clients.rb +129 -38
- data/lib/geoengineer/utils/has_templates.rb +1 -1
- data/lib/geoengineer/version.rb +1 -1
- data/spec/environment_spec.rb +1 -1
- data/spec/resource_spec.rb +24 -10
- data/spec/resources/aws_alb_listener_rule_spec.rb +45 -0
- data/spec/resources/aws_alb_listener_spec.rb +33 -0
- data/spec/resources/aws_alb_spec.rb +33 -0
- data/spec/resources/aws_alb_target_group_spec.rb +35 -0
- data/spec/resources/aws_api_gateway_account_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_api_key_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_authorizer_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_base_path_mapping_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_client_certificate_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_deployment_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_domain_name_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_integration_response_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_integration_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_method_response_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_method_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_model_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_resource_spec.rb +6 -0
- data/spec/resources/aws_api_gateway_rest_api_spec.rb +6 -0
- data/spec/resources/aws_cloudfront_distribution_spec.rb +50 -0
- data/spec/resources/aws_cloudtrail_spec.rb +3 -3
- data/spec/resources/aws_cloudwatch_event_rule_spec.rb +3 -3
- data/spec/resources/aws_cloudwatch_event_target_spec.rb +4 -6
- data/spec/resources/aws_cloudwatch_metric_alarm_spec.rb +3 -6
- data/spec/resources/aws_customer_gateway_spec.rb +4 -3
- data/spec/resources/aws_db_instance_spec.rb +3 -3
- data/spec/resources/aws_db_parameter_group_spec.rb +3 -3
- data/spec/resources/aws_dynamodb_table_spec.rb +3 -3
- data/spec/resources/aws_eip_spec.rb +3 -3
- data/spec/resources/aws_elasticache_replication_group_spec.rb +3 -6
- data/spec/resources/aws_elasticache_subnet_group_spec.rb +4 -6
- data/spec/resources/aws_elasticcache_cluster_spec.rb +3 -3
- data/spec/resources/aws_elasticcache_parameter_group_spec.rb +3 -6
- data/spec/resources/aws_elasticsearch_domain_spec.rb +3 -3
- data/spec/resources/aws_elb_spec.rb +3 -3
- data/spec/resources/aws_iam_account_password_policy_spec.rb +2 -6
- data/spec/resources/aws_iam_group_membership_spec.rb +2 -6
- data/spec/resources/aws_iam_group_spec.rb +3 -3
- data/spec/resources/aws_iam_instance_profile_spec.rb +3 -6
- data/spec/resources/aws_iam_policy_attachment_spec.rb +2 -6
- data/spec/resources/aws_iam_policy_spec.rb +3 -5
- data/spec/resources/aws_iam_role_spec.rb +3 -4
- data/spec/resources/aws_iam_rule_policy_spec.rb +2 -5
- data/spec/resources/aws_iam_user_spec.rb +3 -4
- data/spec/resources/aws_instance_spec.rb +3 -3
- data/spec/resources/aws_internet_gateway_spec.rb +3 -3
- data/spec/resources/aws_kinesis_stream_spec.rb +3 -4
- data/spec/resources/aws_kms_key_spec.rb +3 -3
- data/spec/resources/aws_lambda_alias_spec.rb +2 -3
- data/spec/resources/aws_lambda_event_source_mapping_spec.rb +2 -5
- data/spec/resources/aws_lambda_function_spec.rb +3 -4
- data/spec/resources/aws_lambda_permission_spec.rb +1 -1
- data/spec/resources/aws_lb_cookie_stickiness_policy_spec.rb +38 -0
- data/spec/resources/aws_load_balancer_backend_server_policy_spec.rb +2 -3
- data/spec/resources/aws_load_balancer_policy_spec.rb +3 -4
- data/spec/resources/aws_main_route_table_association_spec.rb +2 -5
- data/spec/resources/aws_nat_gateway_spec.rb +3 -4
- data/spec/resources/aws_network_acl_rule_spec.rb +2 -3
- data/spec/resources/aws_network_acl_spec.rb +3 -3
- data/spec/resources/aws_proxy_protocol_policy_spec.rb +2 -2
- data/spec/resources/aws_redshift_cluster_spec.rb +3 -3
- data/spec/resources/aws_route53_record_spec.rb +3 -4
- data/spec/resources/aws_route53_zone_spec.rb +3 -4
- data/spec/resources/aws_route_spec.rb +3 -6
- data/spec/resources/aws_route_table_association_spec.rb +4 -6
- data/spec/resources/aws_route_table_spec.rb +3 -3
- data/spec/resources/aws_s3_bucket_notification_spec.rb +4 -0
- data/spec/resources/aws_s3_bucket_spec.rb +3 -3
- data/spec/resources/aws_security_group_spec.rb +5 -5
- data/spec/resources/aws_ses_receipt_rule_set_spec.rb +3 -4
- data/spec/resources/aws_ses_receipt_rule_spec.rb +3 -4
- data/spec/resources/aws_sns_topic_spec.rb +10 -6
- data/spec/resources/aws_sns_topic_subscription_spec.rb +8 -7
- data/spec/resources/aws_sqs_queue_spec.rb +3 -3
- data/spec/resources/aws_subnet_spec.rb +3 -3
- data/spec/resources/aws_vpc_dhcp_options_association_spec.rb +3 -6
- data/spec/resources/aws_vpc_dhcp_options_spec.rb +3 -3
- data/spec/resources/aws_vpc_endpoint_spec.rb +3 -6
- data/spec/resources/aws_vpc_peering_connection_spec.rb +4 -6
- data/spec/resources/aws_vpc_spec.rb +3 -3
- data/spec/resources/aws_vpn_connection_route_spec.rb +3 -6
- data/spec/resources/aws_vpn_connection_spec.rb +3 -3
- data/spec/resources/aws_vpn_gateway_attachment_spec.rb +4 -6
- data/spec/resources/aws_vpn_gateway_spec.rb +3 -3
- data/spec/spec_helper.rb +3 -1
- data/spec/support/normalize_indent.rb +12 -0
- metadata +92 -22
- metadata.gz.sig +0 -0
@@ -11,80 +11,171 @@ class AwsClients
|
|
11
11
|
@stub_aws || false
|
12
12
|
end
|
13
13
|
|
14
|
+
def self.client_params(provider = nil)
|
15
|
+
client_params = { stub_responses: stubbed? }
|
16
|
+
client_params[:region] = provider.region if provider
|
17
|
+
client_params
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.client_cache(provider, client)
|
21
|
+
@client_cache ||= {}
|
22
|
+
key = "#{client.name}_" + (provider&.terraform_id || GeoEngineer::Resource::DEFAULT_PROVIDER)
|
23
|
+
@client_cache[key] ||= client.new(client_params(provider))
|
24
|
+
end
|
25
|
+
|
14
26
|
# Clients
|
15
|
-
|
16
|
-
|
27
|
+
|
28
|
+
def self.alb(provider = nil)
|
29
|
+
self.client_cache(
|
30
|
+
provider,
|
31
|
+
Aws::ElasticLoadBalancingV2::Client
|
32
|
+
)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.api_gateway(provider = nil)
|
36
|
+
self.client_cache(
|
37
|
+
provider,
|
38
|
+
Aws::APIGateway::Client
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.cloudfront(provider = nil)
|
43
|
+
self.client_cache(
|
44
|
+
provider,
|
45
|
+
Aws::CloudFront::Client
|
46
|
+
)
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.cloudwatch(provider = nil)
|
50
|
+
self.client_cache(
|
51
|
+
provider,
|
52
|
+
Aws::CloudWatch::Client
|
53
|
+
)
|
17
54
|
end
|
18
55
|
|
19
|
-
def self.cloudwatchevents
|
20
|
-
|
56
|
+
def self.cloudwatchevents(provider = nil)
|
57
|
+
self.client_cache(
|
58
|
+
provider,
|
59
|
+
Aws::CloudWatchEvents::Client
|
60
|
+
)
|
21
61
|
end
|
22
62
|
|
23
|
-
def self.dynamo
|
24
|
-
|
63
|
+
def self.dynamo(provider = nil)
|
64
|
+
self.client_cache(
|
65
|
+
provider,
|
66
|
+
Aws::DynamoDB::Client
|
67
|
+
)
|
25
68
|
end
|
26
69
|
|
27
|
-
def self.ec2
|
28
|
-
|
70
|
+
def self.ec2(provider = nil)
|
71
|
+
self.client_cache(
|
72
|
+
provider,
|
73
|
+
Aws::EC2::Client
|
74
|
+
)
|
29
75
|
end
|
30
76
|
|
31
|
-
def self.elasticache
|
32
|
-
|
77
|
+
def self.elasticache(provider = nil)
|
78
|
+
self.client_cache(
|
79
|
+
provider,
|
80
|
+
Aws::ElastiCache::Client
|
81
|
+
)
|
33
82
|
end
|
34
83
|
|
35
|
-
def self.elasticsearch
|
36
|
-
|
84
|
+
def self.elasticsearch(provider = nil)
|
85
|
+
self.client_cache(
|
86
|
+
provider,
|
87
|
+
Aws::ElasticsearchService::Client
|
88
|
+
)
|
37
89
|
end
|
38
90
|
|
39
|
-
def self.elb
|
40
|
-
|
91
|
+
def self.elb(provider = nil)
|
92
|
+
self.client_cache(
|
93
|
+
provider,
|
94
|
+
Aws::ElasticLoadBalancing::Client
|
95
|
+
)
|
41
96
|
end
|
42
97
|
|
43
|
-
def self.iam
|
44
|
-
|
98
|
+
def self.iam(provider = nil)
|
99
|
+
self.client_cache(
|
100
|
+
provider,
|
101
|
+
Aws::IAM::Client
|
102
|
+
)
|
45
103
|
end
|
46
104
|
|
47
|
-
def self.kinesis
|
48
|
-
|
105
|
+
def self.kinesis(provider = nil)
|
106
|
+
self.client_cache(
|
107
|
+
provider,
|
108
|
+
Aws::Kinesis::Client
|
109
|
+
)
|
49
110
|
end
|
50
111
|
|
51
|
-
def self.lambda
|
52
|
-
|
112
|
+
def self.lambda(provider = nil)
|
113
|
+
self.client_cache(
|
114
|
+
provider,
|
115
|
+
Aws::Lambda::Client
|
116
|
+
)
|
53
117
|
end
|
54
118
|
|
55
|
-
def self.rds
|
56
|
-
|
119
|
+
def self.rds(provider = nil)
|
120
|
+
self.client_cache(
|
121
|
+
provider,
|
122
|
+
Aws::RDS::Client
|
123
|
+
)
|
57
124
|
end
|
58
125
|
|
59
|
-
def self.redshift
|
60
|
-
|
126
|
+
def self.redshift(provider = nil)
|
127
|
+
self.client_cache(
|
128
|
+
provider,
|
129
|
+
Aws::Redshift::Client
|
130
|
+
)
|
61
131
|
end
|
62
132
|
|
63
|
-
def self.route53
|
64
|
-
|
133
|
+
def self.route53(provider = nil)
|
134
|
+
self.client_cache(
|
135
|
+
provider,
|
136
|
+
Aws::Route53::Client
|
137
|
+
)
|
65
138
|
end
|
66
139
|
|
67
|
-
def self.s3
|
68
|
-
|
140
|
+
def self.s3(provider = nil)
|
141
|
+
self.client_cache(
|
142
|
+
provider,
|
143
|
+
Aws::S3::Client
|
144
|
+
)
|
69
145
|
end
|
70
146
|
|
71
|
-
def self.ses
|
72
|
-
|
147
|
+
def self.ses(provider = nil)
|
148
|
+
self.client_cache(
|
149
|
+
provider,
|
150
|
+
Aws::SES::Client
|
151
|
+
)
|
73
152
|
end
|
74
153
|
|
75
|
-
def self.sns
|
76
|
-
|
154
|
+
def self.sns(provider = nil)
|
155
|
+
self.client_cache(
|
156
|
+
provider,
|
157
|
+
Aws::SNS::Client
|
158
|
+
)
|
77
159
|
end
|
78
160
|
|
79
|
-
def self.sqs
|
80
|
-
|
161
|
+
def self.sqs(provider = nil)
|
162
|
+
self.client_cache(
|
163
|
+
provider,
|
164
|
+
Aws::SQS::Client
|
165
|
+
)
|
81
166
|
end
|
82
167
|
|
83
|
-
def self.cloudtrail
|
84
|
-
|
168
|
+
def self.cloudtrail(provider = nil)
|
169
|
+
self.client_cache(
|
170
|
+
provider,
|
171
|
+
Aws::CloudTrail::Client
|
172
|
+
)
|
85
173
|
end
|
86
174
|
|
87
|
-
def self.kms
|
88
|
-
|
175
|
+
def self.kms(provider = nil)
|
176
|
+
self.client_cache(
|
177
|
+
provider,
|
178
|
+
Aws::KMS::Client
|
179
|
+
)
|
89
180
|
end
|
90
181
|
end
|
@@ -14,7 +14,7 @@ module HasTemplates
|
|
14
14
|
module_clazz = "GeoEngineer::Templates::#{clazz_name}"
|
15
15
|
return Object.const_get(module_clazz) if Object.const_defined? module_clazz
|
16
16
|
|
17
|
-
throw "undefined template '#{type}' for '#{clazz_name}' or '
|
17
|
+
throw "undefined template '#{type}' for '#{clazz_name}' or '#{module_clazz}'"
|
18
18
|
end
|
19
19
|
|
20
20
|
def from_template(type, name, parameters = {}, &block)
|
data/lib/geoengineer/version.rb
CHANGED
data/spec/environment_spec.rb
CHANGED
@@ -52,7 +52,7 @@ describe GeoEngineer::Environment do
|
|
52
52
|
describe '#codifies_resources' do
|
53
53
|
it 'should return both codified and uncodified resources' do
|
54
54
|
class GeoEngineer::Resources::CodifiedResource < GeoEngineer::Resource
|
55
|
-
def self._fetch_remote_resources
|
55
|
+
def self._fetch_remote_resources(provider)
|
56
56
|
[{ _geo_id: "geo_id1" }, { _geo_id: "geo_id2" }]
|
57
57
|
end
|
58
58
|
end
|
data/spec/resource_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require_relative './spec_helper'
|
2
2
|
|
3
3
|
class GeoEngineer::RemoteResources < GeoEngineer::Resource
|
4
|
-
def self._fetch_remote_resources
|
4
|
+
def self._fetch_remote_resources(provider)
|
5
5
|
[{ _geo_id: "geo_id1" }, { _geo_id: "geo_id2" }, { _geo_id: "geo_id2" }]
|
6
6
|
end
|
7
7
|
end
|
@@ -88,23 +88,36 @@ describe GeoEngineer::Resource do
|
|
88
88
|
end
|
89
89
|
|
90
90
|
describe '#fetch_remote_resources' do
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
[{ _geo_id: "geoid" }]
|
95
|
-
end
|
91
|
+
class GeoEngineer::FetchableResources < GeoEngineer::Resource
|
92
|
+
def self._fetch_remote_resources(provider)
|
93
|
+
[{ _geo_id: "geoid #{provider.id}" }]
|
96
94
|
end
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'should return a list of resources' do
|
98
|
+
provider = GeoEngineer::Provider.new("prov_1")
|
99
|
+
resources = GeoEngineer::FetchableResources.fetch_remote_resources(provider)
|
100
|
+
expect(resources.length).to eq 1
|
101
|
+
expect(resources[0]._geo_id).to eq "geoid prov_1"
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'should retrieve different resources for different providers' do
|
105
|
+
provider1 = GeoEngineer::Provider.new("prov_1")
|
106
|
+
resources = GeoEngineer::FetchableResources.fetch_remote_resources(provider1)
|
107
|
+
expect(resources.length).to eq 1
|
108
|
+
expect(resources[0]._geo_id).to eq "geoid prov_1"
|
97
109
|
|
98
|
-
|
110
|
+
provider2 = GeoEngineer::Provider.new("prov_2")
|
111
|
+
resources = GeoEngineer::FetchableResources.fetch_remote_resources(provider2)
|
99
112
|
expect(resources.length).to eq 1
|
100
|
-
expect(resources[0]._geo_id).to eq "geoid"
|
113
|
+
expect(resources[0]._geo_id).to eq "geoid prov_2"
|
101
114
|
end
|
102
115
|
end
|
103
116
|
|
104
117
|
describe '#_resources_to_ignore' do
|
105
118
|
it 'lets you ignore certain resources' do
|
106
119
|
class GeoEngineer::IgnorableResources < GeoEngineer::Resource
|
107
|
-
def self._fetch_remote_resources
|
120
|
+
def self._fetch_remote_resources(provider)
|
108
121
|
[{ _geo_id: "geoid1" }, { _geo_id: "geoid2" }]
|
109
122
|
end
|
110
123
|
|
@@ -113,7 +126,8 @@ describe GeoEngineer::Resource do
|
|
113
126
|
end
|
114
127
|
end
|
115
128
|
|
116
|
-
resources = GeoEngineer::IgnorableResources
|
129
|
+
resources = GeoEngineer::IgnorableResources
|
130
|
+
.fetch_remote_resources(GeoEngineer::Provider.new('aws'))
|
117
131
|
expect(resources.length).to eq 1
|
118
132
|
expect(resources[0]._geo_id).to eq "geoid2"
|
119
133
|
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
|
3
|
+
describe GeoEngineer::Resources::AwsAlbListenerRule do
|
4
|
+
let(:alb_client) { AwsClients.alb }
|
5
|
+
|
6
|
+
common_resource_tests(described_class, described_class.type_from_class_name)
|
7
|
+
|
8
|
+
before { alb_client.setup_stubbing }
|
9
|
+
|
10
|
+
describe "#_fetch_remote_resources" do
|
11
|
+
it 'should create list of hashes from returned AWS SDK' do
|
12
|
+
alb_client.stub_responses(
|
13
|
+
:describe_load_balancers,
|
14
|
+
{
|
15
|
+
load_balancers: [{ load_balancer_arn: "foo/bar-baz" }]
|
16
|
+
}
|
17
|
+
)
|
18
|
+
alb_client.stub_responses(
|
19
|
+
:describe_listeners,
|
20
|
+
{
|
21
|
+
listeners: [
|
22
|
+
{
|
23
|
+
load_balancer_arn: "foo/bar-baz",
|
24
|
+
listener_arn: "listener/foo/bar-baz",
|
25
|
+
port: 443
|
26
|
+
}
|
27
|
+
]
|
28
|
+
}
|
29
|
+
)
|
30
|
+
alb_client.stub_responses(
|
31
|
+
:describe_rules,
|
32
|
+
{
|
33
|
+
rules: [
|
34
|
+
{
|
35
|
+
rule_arn: "rule/foo/bar-baz",
|
36
|
+
priority: "69"
|
37
|
+
}
|
38
|
+
]
|
39
|
+
}
|
40
|
+
)
|
41
|
+
remote_resources = GeoEngineer::Resources::AwsAlbListenerRule._fetch_remote_resources(nil)
|
42
|
+
expect(remote_resources.length).to eq 1
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
|
3
|
+
describe GeoEngineer::Resources::AwsAlbListener do
|
4
|
+
let(:alb_client) { AwsClients.alb }
|
5
|
+
|
6
|
+
common_resource_tests(described_class, described_class.type_from_class_name)
|
7
|
+
|
8
|
+
before { alb_client.setup_stubbing }
|
9
|
+
|
10
|
+
describe "#_fetch_remote_resources" do
|
11
|
+
it 'should create list of hashes from returned AWS SDK' do
|
12
|
+
alb_client.stub_responses(
|
13
|
+
:describe_load_balancers,
|
14
|
+
{
|
15
|
+
load_balancers: [{ load_balancer_arn: "foo/bar-baz" }]
|
16
|
+
}
|
17
|
+
)
|
18
|
+
alb_client.stub_responses(
|
19
|
+
:describe_listeners,
|
20
|
+
{
|
21
|
+
listeners: [
|
22
|
+
{
|
23
|
+
load_balancer_arn: "foo/bar-baz",
|
24
|
+
port: 443
|
25
|
+
}
|
26
|
+
]
|
27
|
+
}
|
28
|
+
)
|
29
|
+
remote_resources = GeoEngineer::Resources::AwsAlbListener._fetch_remote_resources(nil)
|
30
|
+
expect(remote_resources.length).to eq 1
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
|
3
|
+
describe GeoEngineer::Resources::AwsAlb do
|
4
|
+
let(:alb_client) { AwsClients.alb }
|
5
|
+
|
6
|
+
common_resource_tests(described_class, described_class.type_from_class_name)
|
7
|
+
|
8
|
+
before { alb_client.setup_stubbing }
|
9
|
+
|
10
|
+
describe "#_fetch_remote_resources" do
|
11
|
+
it 'should create list of hashes from returned AWS SDK' do
|
12
|
+
alb_client.stub_responses(
|
13
|
+
:describe_load_balancers,
|
14
|
+
{
|
15
|
+
load_balancers: [{ load_balancer_arn: "foo/bar-baz" }]
|
16
|
+
}
|
17
|
+
)
|
18
|
+
alb_client.stub_responses(
|
19
|
+
:describe_tags,
|
20
|
+
{
|
21
|
+
tag_descriptions: [
|
22
|
+
{
|
23
|
+
resource_arn: "foo/bar-baz",
|
24
|
+
tags: [{ key: "Name", value: "foo/bar-baz" }]
|
25
|
+
}
|
26
|
+
]
|
27
|
+
}
|
28
|
+
)
|
29
|
+
remote_resources = GeoEngineer::Resources::AwsAlb._fetch_remote_resources(nil)
|
30
|
+
expect(remote_resources.length).to eq 1
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative '../spec_helper'
|
2
|
+
|
3
|
+
describe GeoEngineer::Resources::AwsAlbTargetGroup do
|
4
|
+
let(:alb_client) { AwsClients.alb }
|
5
|
+
|
6
|
+
common_resource_tests(described_class, described_class.type_from_class_name)
|
7
|
+
|
8
|
+
before { alb_client.setup_stubbing }
|
9
|
+
|
10
|
+
describe "#_fetch_remote_resources" do
|
11
|
+
it 'should create list of hashes from returned AWS SDK' do
|
12
|
+
alb_client.stub_responses(
|
13
|
+
:describe_target_groups,
|
14
|
+
{
|
15
|
+
target_groups: [
|
16
|
+
{
|
17
|
+
target_group_arn: "targetgroup/foo/bar-baz",
|
18
|
+
port: 443,
|
19
|
+
protocol: "HTTPS",
|
20
|
+
vpc_id: "vpc-1"
|
21
|
+
},
|
22
|
+
{
|
23
|
+
target_group_arn: "targetgroup/foo/test-test",
|
24
|
+
port: 80,
|
25
|
+
protocol: "HTTP",
|
26
|
+
vpc_id: "vpc-1"
|
27
|
+
}
|
28
|
+
]
|
29
|
+
}
|
30
|
+
)
|
31
|
+
remote_resources = GeoEngineer::Resources::AwsAlbTargetGroup._fetch_remote_resources(nil)
|
32
|
+
expect(remote_resources.length).to eq 2
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|