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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d45e522585dc1fc678c904d007d74a62e7dcf144ce7740a16d65d74f733f9b3
|
4
|
+
data.tar.gz: 921bf69588ec64e831c6ddff866185cb639d0567dbd046cbd3109c451475d349
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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.
|
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-
|
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
|