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: 24667ba11c332e5770ab05a850ac72e72d4e50a90026e8c62285de7bd7a60390
4
- data.tar.gz: 90931c824d1567e345fb3b702b98d20b5d5fe1f4b5eafd51ef41e5d40cf3d4a4
3
+ metadata.gz: 4eb4cf45cb45c997518f02f5830eb545f1bfab3d143c74b021adcc1380d3bfd7
4
+ data.tar.gz: cb9e765e9ecdd7435e67fd55fa65f4a54b8802674488f077a4f10c4532e2b528
5
5
  SHA512:
6
- metadata.gz: db2a5e29b19ef8c9a0dc47ad2918f420681f2479b360bcd100588b571d89f384374fa86985ffc240575670a2af31fb47f75d98e55af7abe745209e76e93ab9fc
7
- data.tar.gz: e927d63d9a6e48a8d423b01119d7f25e334753012146277decf7b059f1675d1b5f2f6d80defd6eb6ca0931829c68807fed130931d7b3304aa0a9155e9f1f216d
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
- # After 1 hour of running terminate application.
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)
@@ -1,3 +1,3 @@
1
1
  module HerdstWorker
2
- VERSION = '0.2.12'
2
+ VERSION = '0.2.13'
3
3
  end
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.12
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-04-01 00:00:00.000000000 Z
11
+ date: 2025-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport