herdst_worker 0.2.11 → 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: 8d7c07f5b245fc06edb5fd91c9fdae774f33d616534af631184d41aac7049b44
4
- data.tar.gz: 6d00f8b2b5fc193c0189144d0af97861308ca389b3d19e83a9ae778f43e21288
3
+ metadata.gz: 4eb4cf45cb45c997518f02f5830eb545f1bfab3d143c74b021adcc1380d3bfd7
4
+ data.tar.gz: cb9e765e9ecdd7435e67fd55fa65f4a54b8802674488f077a4f10c4532e2b528
5
5
  SHA512:
6
- metadata.gz: 40bf0b6a69d6bbff8b99238b6e4ff460f8bc4a49d16dc8a983c2d5f116daecacd9962bfaa4536935c3165aaa5192049c3f22bc6aa1d2cec99abf5d06435d745a
7
- data.tar.gz: d340637481c6d7c308d7b86f66eea9b11ca5f357a4e08237f2f90933f820b6bf30a899485edf8dfce95677a78280eae1804395cc8f91ff6313441f09f9593f5c
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.11'
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.11
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: 2024-07-04 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
@@ -90,62 +90,62 @@ dependencies:
90
90
  requirements:
91
91
  - - "~>"
92
92
  - !ruby/object:Gem::Version
93
- version: '3.114'
93
+ version: '3.222'
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 3.114.3
96
+ version: 3.222.1
97
97
  type: :runtime
98
98
  prerelease: false
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '3.114'
103
+ version: '3.222'
104
104
  - - ">="
105
105
  - !ruby/object:Gem::Version
106
- version: 3.114.3
106
+ version: 3.222.1
107
107
  - !ruby/object:Gem::Dependency
108
108
  name: aws-sdk-sqs
109
109
  requirement: !ruby/object:Gem::Requirement
110
110
  requirements:
111
111
  - - "~>"
112
112
  - !ruby/object:Gem::Version
113
- version: '1.39'
113
+ version: '1.93'
114
114
  type: :runtime
115
115
  prerelease: false
116
116
  version_requirements: !ruby/object:Gem::Requirement
117
117
  requirements:
118
118
  - - "~>"
119
119
  - !ruby/object:Gem::Version
120
- version: '1.39'
120
+ version: '1.93'
121
121
  - !ruby/object:Gem::Dependency
122
122
  name: aws-sdk-secretsmanager
123
123
  requirement: !ruby/object:Gem::Requirement
124
124
  requirements:
125
125
  - - "~>"
126
126
  - !ruby/object:Gem::Version
127
- version: '1.46'
127
+ version: '1.113'
128
128
  type: :runtime
129
129
  prerelease: false
130
130
  version_requirements: !ruby/object:Gem::Requirement
131
131
  requirements:
132
132
  - - "~>"
133
133
  - !ruby/object:Gem::Version
134
- version: '1.46'
134
+ version: '1.113'
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: aws-sdk-ecs
137
137
  requirement: !ruby/object:Gem::Requirement
138
138
  requirements:
139
139
  - - "~>"
140
140
  - !ruby/object:Gem::Version
141
- version: '1.80'
141
+ version: '1.182'
142
142
  type: :runtime
143
143
  prerelease: false
144
144
  version_requirements: !ruby/object:Gem::Requirement
145
145
  requirements:
146
146
  - - "~>"
147
147
  - !ruby/object:Gem::Version
148
- version: '1.80'
148
+ version: '1.182'
149
149
  - !ruby/object:Gem::Dependency
150
150
  name: stackprof
151
151
  requirement: !ruby/object:Gem::Requirement