firespring_dev_commands 2.1.30 → 2.1.31.pre.alpha.0

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: c98960c1647053a0e07d700b5405cfe56d4924d2178172ddbbf5a8e0234045b5
4
- data.tar.gz: ad88cd46712794d5fea9a5bfddf239088d165364a6056d5a44ec4d714849df8f
3
+ metadata.gz: 2461e93aa37cb700943611b0233d3eb29edc703ccf49d908c6bdde0ad1c19702
4
+ data.tar.gz: c5e4ee6453fb0dac9103e79c24259f975aa5d754c4b59da3d1e07e022bdcd24b
5
5
  SHA512:
6
- metadata.gz: dd276c75d35da37bff2a454e9ffa75140a211255178c81808cdfd74381cc804643cc9cde32c2731dceae7afb80762451494b9f679be15ba9a25e28741b8aab58
7
- data.tar.gz: 1e34152a7bd5b4c50841e66c845b5a5862924e52ac13d4ddc8946e532c776a2aa42ee2e4dccd0812d7847465afac122dbaf293132a04af90052f88d47693eeb4
6
+ metadata.gz: 2ed9beedfa716a09ff1278affe3dbd02b559fe64585163b1cf103741347849c0ebe9cd44fa260d913cf16a6452915fa25a18a1adbbbc5c4f72b6dcae920ad7e2
7
+ data.tar.gz: 41e83726187ad9d78f45d707bfa7c83810e1b99ce99d8a3324d4ee39bd1bf04c28b0b30d7c7a48d729f0e15a2dc6a0876b272afde259a3dcba47d8287155da60
data/README.md CHANGED
@@ -28,7 +28,7 @@ Dev::Template::Docker::Node::Application.new('foo')
28
28
  ```
29
29
  * If you run `rake -T` now, you should have base rake commands and application rake commands for an app called `foo`
30
30
 
31
- * (optinoal) Add AWS login template commands
31
+ * (optional) Add AWS login template commands
32
32
  ```
33
33
  # Configure AWS accounts and create tasks
34
34
  Dev::Aws::Account::configure do |c|
@@ -0,0 +1,72 @@
1
+ require 'aws-sdk-route53'
2
+
3
+ module Dev
4
+ class Aws
5
+ # Class for performing Route53 functions
6
+ class Route53
7
+ attr_reader :client, :zones
8
+
9
+ def initialize
10
+ @client = ::Aws::Route53::Client.new
11
+ @zones = []
12
+ end
13
+
14
+ def get_hosted_zones(domains)
15
+ if domains.empty?
16
+ response = client.list_hosted_zones
17
+ response.hosted_zones.each do |hosted_zone|
18
+ @zones << hosted_zone.id
19
+ end
20
+ else
21
+ domains.each do |domain_name|
22
+ zone = client.list_hosted_zones_by_name({dns_name: domain_name, max_items: 1})
23
+ target_name = zone.hosted_zones[0].name.chomp!('.') if zone.hosted_zones[0].name.end_with?('.')
24
+ @zones << zone.hosted_zones[0].id unless target_name != domain_name
25
+ end
26
+ end
27
+ raise 'Hosted zone(s) not found.' if @zones.empty?
28
+ end
29
+
30
+ def get_target_config_id(zone_id)
31
+ config = client.list_query_logging_configs(
32
+ hosted_zone_id: zone_id,
33
+ max_results: '1'
34
+ )
35
+ config.query_logging_configs[0].id unless config.query_logging_configs.empty? || config.query_logging_configs[0].hosted_zone_id == zone_id
36
+ end
37
+
38
+ def activate_query_logging(log_group)
39
+ output = {}
40
+
41
+ @zones.each do |zone|
42
+ response = client.create_query_logging_config(
43
+ hosted_zone_id: zone,
44
+ cloud_watch_logs_log_group_arn: log_group
45
+ )
46
+ output[zone] = response.location
47
+ rescue ::Aws::Route53::Errors::ServiceError => e
48
+ raise "Error: #{e.message}" unless e.instance_of?(::Aws::Route53::Errors::QueryLoggingConfigAlreadyExists)
49
+
50
+ output[zone] = e.message
51
+ end
52
+ pp output
53
+ end
54
+
55
+ def deactivate_query_logging
56
+ output = {}
57
+ @zones.each do |zone|
58
+ target_config_id = get_target_config_id(zone)
59
+ if target_config_id
60
+ client.delete_query_logging_config(
61
+ id: target_config_id
62
+ )
63
+ output[zone] = 'Query logging config removed.'
64
+ else
65
+ output[zone] = 'No query logging config assigned.'
66
+ end
67
+ end
68
+ pp output
69
+ end
70
+ end
71
+ end
72
+ end
@@ -120,6 +120,56 @@ module Dev
120
120
  end
121
121
  end
122
122
  end
123
+
124
+ # rubocop:disable Metrics/MethodLength
125
+ # Create the rake task for the hosted zone method
126
+ def create_hosted_zone_task!
127
+ # Have to set a local variable to be accessible inside of the instance_eval block
128
+ exclude = @exclude
129
+
130
+ DEV_COMMANDS_TOP_LEVEL.instance_eval do
131
+ namespace :aws do
132
+ return if exclude.include?(:hosted_zone)
133
+
134
+ namespace :hosted_zone do
135
+ namespace :dns_logging do
136
+ task :init do
137
+ @route53 = Dev::Aws::Route53.new
138
+
139
+ domains = ENV['DOMAINS'].to_s.strip.split(',')
140
+ domain = ENV['DOMAIN'].to_s.strip
141
+ domains << domain unless domain.empty?
142
+
143
+ # Set global zone id array
144
+ @route53.get_hosted_zones(domains)
145
+ end
146
+
147
+ desc 'Activates query logging for all hosted zones by default.' \
148
+ 'This command should be run from the account the hosted zone(s) reside.' \
149
+ "\n\toptionally specify DOMAIN='foo.com' to specify the hosted zone to activate." \
150
+ "\n\toptionally specify DOMAINS='foo.com,foobar.com' to specify the hosted zones to activate." \
151
+ "\n\t\tComma delimited list."
152
+ task activate: %w(init) do
153
+ # Use user defined log group. Otherwise, go get the default.
154
+ log_group = (ENV['HOSTED_ZONE_GROUP'] || Dev::Aws::Parameter.new.get_value('/Firespring/Internal/Route53/hosted-zone/log-group-arn'))
155
+
156
+ @route53.activate_query_logging(log_group)
157
+ end
158
+
159
+ desc 'Deactivates query logging for all hosted zones by default. ' \
160
+ 'This command should be run from the account the hosted zone(s) reside.' \
161
+ "\n\toptionally specify DOMAIN='foo.com' to specify the hosted zone to activate." \
162
+ "\n\toptionally specify DOMAINS='foo.com,foobar.com' to specify the hosted zones to activate." \
163
+ "\n\t\tComma delimited list."
164
+ task deactivate: %w(init) do
165
+ @route53.deactivate_query_logging
166
+ end
167
+ end
168
+ end
169
+ end
170
+ end
171
+ end
172
+ # rubocop:enable Metrics/MethodLength
123
173
  end
124
174
  end
125
175
  end
@@ -6,6 +6,6 @@ module Dev
6
6
  # Use 'v.v.v.pre.alpha.v' for pre-release vesions
7
7
  # Use 'v.v.v.beta.v for beta versions
8
8
  # Use semantic versioning for any releases (https://semver.org/)
9
- VERSION = '2.1.30'.freeze
9
+ VERSION = '2.1.31.pre.alpha.0'.freeze
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firespring_dev_commands
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.30
4
+ version: 2.1.31.pre.alpha.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Firespring
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-08 00:00:00.000000000 Z
11
+ date: 2024-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: 1.208.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: aws-sdk-route53
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 1.87.0
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 1.87.0
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: aws-sdk-s3
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -326,6 +340,7 @@ files:
326
340
  - lib/firespring_dev_commands/aws/login.rb
327
341
  - lib/firespring_dev_commands/aws/parameter.rb
328
342
  - lib/firespring_dev_commands/aws/profile.rb
343
+ - lib/firespring_dev_commands/aws/route53.rb
329
344
  - lib/firespring_dev_commands/aws/s3.rb
330
345
  - lib/firespring_dev_commands/bloom_growth.rb
331
346
  - lib/firespring_dev_commands/bloom_growth/rock.rb
@@ -412,9 +427,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
412
427
  version: '3.1'
413
428
  required_rubygems_version: !ruby/object:Gem::Requirement
414
429
  requirements:
415
- - - ">="
430
+ - - ">"
416
431
  - !ruby/object:Gem::Version
417
- version: '0'
432
+ version: 1.3.1
418
433
  requirements: []
419
434
  rubygems_version: 3.4.10
420
435
  signing_key: