firespring_dev_commands 2.1.11.pre.alpha.2 → 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: fc8f0bc322b7f4a223de4a702efbf2a9d5018c35393e705c9ced4c144f646b77
4
- data.tar.gz: f6ac473e759540fc0432e37e6a899cfa6628b07d38506e4d27223b395aaa7beb
3
+ metadata.gz: 7d45e522585dc1fc678c904d007d74a62e7dcf144ce7740a16d65d74f733f9b3
4
+ data.tar.gz: 921bf69588ec64e831c6ddff866185cb639d0567dbd046cbd3109c451475d349
5
5
  SHA512:
6
- metadata.gz: c8913c2462bc151d46b53e8b70d1ef6ff0718a5713b206975f891a21560c262485c41253ca4b6780540d1d25b732687f4ff1b826771f2cea4c6815b41b5b8292
7
- data.tar.gz: 50f74eba4f799fac640a6b82e2b463a9c91248a80ac2b6c9356e75259aabbeac83caa93ab82258697fa77f456b8ef8ae9778f4c188ae2c09318245c76e97f755
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
@@ -53,6 +53,7 @@ module Dev
53
53
  self << "(Id in ('#{user_story_ids.join("', '")}'))"
54
54
  end
55
55
 
56
+ # Add a filter that looks for stories whose team id is contained in the list of ids given
56
57
  def filter_by_team_ids(team_ids)
57
58
  self << "(Team.Id in ('#{team_ids.join("', '")}'))" unless team_ids.nil? || team_ids.empty?
58
59
  end
@@ -72,6 +73,7 @@ module Dev
72
73
  self << "(EntityState.IsFinal eq 'true')"
73
74
  end
74
75
 
76
+ # Add a filter that looks for start dates between the given dates`
75
77
  def filter_start_date_between(start_date, end_date)
76
78
  self << "(StartDate gte '#{start_date}')" if start_date
77
79
  self << "(StartDate lt '#{end_date}')" if end_date
@@ -83,6 +85,7 @@ module Dev
83
85
  self << "(EndDate lt '#{end_date}')" if end_date
84
86
  end
85
87
 
88
+ # Add a filter that looks for entities whose date is between the given dates
86
89
  def filter_date_between(start_date, end_date)
87
90
  self << "(Date gte '#{start_date}')" if start_date
88
91
  self << "(Date lt '#{end_date}')" if end_date
@@ -93,19 +96,23 @@ module Dev
93
96
  self << '(LinkedTestPlan is nil)'
94
97
  end
95
98
 
99
+ # Add a filter that looks for items with a set start date and null end date
96
100
  def filter_by_started_not_finished
97
101
  self << '(StartDate is not nil)'
98
102
  self << '(EndDate is nil)'
99
103
  end
100
104
 
105
+ # Add a filter that looks for assignable entity types that match the name
101
106
  def filter_by_entity_type(entity_type)
102
107
  self << "(Assignable.EntityType.Name eq '#{entity_type}')" unless entity_type.nil?
103
108
  end
104
109
 
110
+ # Add a filter that looks for assignable ids which are included in the given array
105
111
  def filter_by_entity_ids(entity_ids)
106
112
  self << "(Assignable.Id in ('#{entity_ids.join("', '")}'))" unless entity_ids.nil? || entity_ids.empty?
107
113
  end
108
114
 
115
+ # Add a filter that looks for a custom deploy date between the given dates`
109
116
  def filter_by_deploy_date(start_date, end_date = nil)
110
117
  self << "('CustomFields.Deploy Date' gt '#{start_date}')" if start_date
111
118
  self << "('CustomFields.Deploy Date' lt '#{end_date}')" if end_date
@@ -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.pre.alpha.2'.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.pre.alpha.2
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