firespring_dev_commands 2.1.11 → 2.1.12.pre.alpha.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 29a90961c458e9095d240b89cf65bfd7cbe3541abd792f59c378a6f758636d67
4
- data.tar.gz: 385f95613b2a66502c4e7a0b55d16315138c9e6cc02637e037865df7d1f3099e
3
+ metadata.gz: 7d45e522585dc1fc678c904d007d74a62e7dcf144ce7740a16d65d74f733f9b3
4
+ data.tar.gz: 921bf69588ec64e831c6ddff866185cb639d0567dbd046cbd3109c451475d349
5
5
  SHA512:
6
- metadata.gz: dcd3f6a6d8f4fea275bf93500fa17b1c3fcda7a81b16dcd9c7c0072de8e5fe2b4298c1dc9bfdcaa5d1a8a46ecde4bcb4c624da03291638237a58a7a8b99cd12d
7
- data.tar.gz: 3cb1434dd6f7edb66f79abfa7520e91bccf50bdc35588f78487d0eb20771e24f74e5105f4ed10a72c2b0d97d9f762b12ccfd43209f5853dadbd18641fa09a304
6
+ metadata.gz: d3b1641933384538aba3ad31a5b7e06bea40a28b1388567ea5d8818488860097b2d465d84fb2259d1c5f1214fece78f3ceb4cb21dba1c5e8c46e266661bd7cbe
7
+ data.tar.gz: c4e70e99aaf81fbb35c60b07178fcf1fbbfa9a2fe1e7636c6b53541c9920122f382f43787c13fc9a6272784ccb0a3aa4772ac4529c2dbe2437406f90dc4fb167
@@ -0,0 +1,65 @@
1
+ require 'aws-sdk-lambda'
2
+ require 'aws-sdk-elasticache'
3
+ require 'aws-sdk-rds'
4
+ require 'aws-sdk-opensearchservice'
5
+
6
+ module Dev
7
+ class EndOfLife
8
+ class Aws
9
+ def elasticache_products
10
+ client = ::Aws::ElastiCache::Client.new
11
+ client.describe_cache_clusters.cache_clusters.filter_map do |cluster|
12
+ name = cluster.cache_cluster_id
13
+ product = cluster.engine
14
+ version = cluster.engine_version.reverse.split('.')[-2..].join('.').reverse
15
+ Dev::EndOfLife::ProductVersion.new(product, version, name)
16
+ end
17
+ end
18
+
19
+ def lambda_products
20
+ client = ::Aws::Lambda::Client.new
21
+ client.list_functions.functions.filter_map do |function|
22
+ # Runtime is empty if using a docker image
23
+ next unless function.runtime
24
+
25
+ name = function.function_name
26
+ product = function.runtime.split(/[0-9]/, 2).first
27
+ version = function.runtime.split(/#{product}/, 2).last.chomp('.x')
28
+ Dev::EndOfLife::ProductVersion.new(product, version, name)
29
+ end
30
+ end
31
+
32
+ def opensearch_products
33
+ client = ::Aws::OpenSearchService::Client.new
34
+ client.list_domain_names.domain_names.filter_map do |domain|
35
+ name = domain.domain_name
36
+ product = domain.engine_type
37
+ version = client.describe_domain(domain_name: name).domain_status.engine_version.split('_').last.split('.').first
38
+ Dev::EndOfLife::ProductVersion.new(product, version, name)
39
+ end
40
+ end
41
+
42
+ def rds_products
43
+ supported_aws_engines = %w(mysql postgresql)
44
+ supported_eol_engines = %w(mssqlserver mysql postgresql sqlite)
45
+
46
+ client = ::Aws::RDS::Client.new
47
+ client.describe_db_instances.db_instances.filter_map do |instance|
48
+ name = instance.db_instance_identifier
49
+ product = if supported_aws_engines.include?(instance.engine)
50
+ "amazon-rds-#{instance.engine}"
51
+ elsif supported_eol_engines.include?(instance.engine)
52
+ instance.engine
53
+ else
54
+ puts "WARNING: unsupported engine #{instance.engine} found".light_yellow
55
+ next
56
+ end
57
+ version = instance.engine_version.reverse.split('.')[-2..].join('.').reverse
58
+ Dev::EndOfLife::ProductVersion.new(product, version, name)
59
+ end
60
+
61
+ # TODO: Add db cluster info too?
62
+ end
63
+ end
64
+ end
65
+ end
@@ -93,6 +93,30 @@ module Dev
93
93
  end
94
94
  end
95
95
  # rubocop:enable Metrics/MethodLength
96
+
97
+ # Create the rake task for the eol method
98
+ def create_eol_task!
99
+ # Have to set a local variable to be accessible inside of the instance_eval block
100
+ exclude = @exclude
101
+
102
+ DEV_COMMANDS_TOP_LEVEL.instance_eval do
103
+ return if exclude.include?(:eol)
104
+
105
+ desc 'Compares the current date to the EOL date for supported resources'
106
+ task eol: %w(init ensure_aws_credentials) do
107
+ account_id = Dev::Aws::Profile.new.current
108
+ account_name = Dev::Aws::Account.new.name_by_account(account_id)
109
+ LOG.info " Current AWS Account is #{account_name} (#{account_id})".light_yellow
110
+
111
+ versions = Dev::EndOfLife::Aws.new.elasticache_products +
112
+ Dev::EndOfLife::Aws.new.lambda_products +
113
+ Dev::EndOfLife::Aws.new.opensearch_products +
114
+ Dev::EndOfLife::Aws.new.rds_products
115
+
116
+ Dev::EndOfLife.new(product_versions: versions.compact).check
117
+ end
118
+ end
119
+ end
96
120
  end
97
121
  end
98
122
  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.11'.freeze
9
+ VERSION = '2.1.12.pre.alpha.1'.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.11
4
+ version: 2.1.12.pre.alpha.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Firespring
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-31 00:00:00.000000000 Z
11
+ date: 2023-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -66,6 +66,62 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 1.61.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: aws-sdk-elasticache
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.88.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.88.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: aws-sdk-lambda
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 1.101.0
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 1.101.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: aws-sdk-opensearchservice
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.24.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.24.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: aws-sdk-rds
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.183.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.183.0
69
125
  - !ruby/object:Gem::Dependency
70
126
  name: aws-sdk-s3
71
127
  requirement: !ruby/object:Gem::Requirement
@@ -280,6 +336,7 @@ files:
280
336
  - lib/firespring_dev_commands/dotenv.rb
281
337
  - lib/firespring_dev_commands/env.rb
282
338
  - lib/firespring_dev_commands/eol.rb
339
+ - lib/firespring_dev_commands/eol/aws.rb
283
340
  - lib/firespring_dev_commands/eol/product_version.rb
284
341
  - lib/firespring_dev_commands/git.rb
285
342
  - lib/firespring_dev_commands/git/info.rb
@@ -342,9 +399,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
342
399
  version: '3.1'
343
400
  required_rubygems_version: !ruby/object:Gem::Requirement
344
401
  requirements:
345
- - - ">="
402
+ - - ">"
346
403
  - !ruby/object:Gem::Version
347
- version: '0'
404
+ version: 1.3.1
348
405
  requirements: []
349
406
  rubygems_version: 3.4.10
350
407
  signing_key: