firespring_dev_commands 2.1.11.pre.alpha.2 → 2.1.12.pre.alpha.1

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: 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