herdst_worker 0.2.12 → 0.2.13
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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4eb4cf45cb45c997518f02f5830eb545f1bfab3d143c74b021adcc1380d3bfd7
|
|
4
|
+
data.tar.gz: cb9e765e9ecdd7435e67fd55fa65f4a54b8802674488f077a4f10c4532e2b528
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '080daf4a1cdae1b0e853317a15c016d0a4ab0e2289f1443ad2a71a259a0a46001c32a7c424bd56dbb9ddbdfca11521157c8080e6a42e190d69191b3ee32669a3'
|
|
7
|
+
data.tar.gz: 2cc800ca64e958848e798c19e8323b028fedfa41ca2890462b29d6ed65f4ae59cd3453659a1ec514b8e6b000a75f0fabd713909af587793a35c57f95821aaf61
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
require "concurrent-ruby"
|
|
1
2
|
require "aws-sdk-core"
|
|
2
3
|
require "aws-sdk-secretsmanager"
|
|
3
4
|
require "aws-sdk-ecs"
|
|
@@ -5,6 +6,24 @@ require "net/http"
|
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
module HerdstWorker
|
|
9
|
+
module ExpiringCredentials
|
|
10
|
+
|
|
11
|
+
attr_accessor :expiry_timestamp
|
|
12
|
+
|
|
13
|
+
def set_expiry(expiry)
|
|
14
|
+
self.expiry_timestamp = expiry
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def has_expired?
|
|
18
|
+
if self.expiry_timestamp.nil?
|
|
19
|
+
false
|
|
20
|
+
else
|
|
21
|
+
Time.now.utc.to_i > self.expiry_timestamp
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
8
27
|
module Configuration
|
|
9
28
|
class Metadata
|
|
10
29
|
|
|
@@ -22,6 +41,8 @@ module HerdstWorker
|
|
|
22
41
|
self.secrets["ENV"] = env
|
|
23
42
|
self.secret_json_keys = ["STRIPE_PLANS"]
|
|
24
43
|
|
|
44
|
+
Aws::Credentials.include HerdstWorker::ExpiringCredentials
|
|
45
|
+
|
|
25
46
|
begin
|
|
26
47
|
self.reload!
|
|
27
48
|
rescue Exception => ex
|
|
@@ -104,17 +125,32 @@ module HerdstWorker
|
|
|
104
125
|
make_request!(get_credentials_uri) :
|
|
105
126
|
self.config.config_for(:aws)
|
|
106
127
|
|
|
128
|
+
expiry_time = (Time.parse(credentials["Expiration"]).utc - 5.minutes) rescue (Time.now.utc + 1.hour)
|
|
129
|
+
|
|
130
|
+
# Set credential info
|
|
107
131
|
self.aws_credentials = Aws::Credentials.new(
|
|
108
132
|
credentials["AccessKeyId"],
|
|
109
133
|
credentials["SecretAccessKey"],
|
|
110
134
|
credentials["Token"]
|
|
111
135
|
)
|
|
112
|
-
|
|
136
|
+
self.aws_credentials.set_expiry(expiry_time.to_i)
|
|
137
|
+
|
|
138
|
+
# Set global config
|
|
113
139
|
Aws.config.update(
|
|
114
140
|
region: self.get_aws_region(credentials),
|
|
115
141
|
credentials: self.aws_credentials
|
|
116
142
|
)
|
|
117
|
-
|
|
143
|
+
|
|
144
|
+
if self.is_prod?
|
|
145
|
+
# Refresh the credentials just before the expiry time
|
|
146
|
+
expiry_in_seconds = (expiry_time - Time.now.utc).to_i
|
|
147
|
+
expiry_in_seconds = 60 if expiry_in_seconds < 60
|
|
148
|
+
|
|
149
|
+
Concurrent::ScheduledTask.execute(expiry_in_seconds) do
|
|
150
|
+
self.get_aws_credentials
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
118
154
|
self.aws_credentials
|
|
119
155
|
end
|
|
120
156
|
|
|
@@ -107,7 +107,11 @@ module HerdstWorker
|
|
|
107
107
|
self.app.logger.queue_stats.info "STATS (#{self.processor_status}): #{stats.inspect}"
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
if self.poller.client.config.credentials.has_expired?
|
|
111
|
+
self.poller.client.config.credentials = self.app.config.metadata.get_aws_credentials
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# After hours of running terminate application.
|
|
111
115
|
# The app will automatically restart in production
|
|
112
116
|
current_time = Time.now.utc.to_i
|
|
113
117
|
if (self.processor_status == "working") && (current_time >= self.restart_time)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: herdst_worker
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.13
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Herd.St
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-
|
|
11
|
+
date: 2025-11-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|