config_o_mat 0.5.0.beta0 → 0.5.0.beta1
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 +4 -4
- data/CHANGELOG.md +2 -2
- data/lib/config_o_mat/configurator/memory.rb +5 -2
- data/lib/config_o_mat/configurator/op/refresh_all_profiles.rb +3 -4
- data/lib/config_o_mat/configurator/op/refresh_profile.rb +3 -4
- data/lib/config_o_mat/meta_configurator/memory.rb +5 -2
- data/lib/config_o_mat/shared/op/load_meta_config.rb +7 -1
- data/lib/config_o_mat/shared/types.rb +3 -6
- data/lib/config_o_mat/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bb9ec5b07f001551fee80b15ba613646a295d35a1aa0d341e1cdd7924f014b17
|
4
|
+
data.tar.gz: 60a37f95f84bb1d0c29de65cbe43110a7dd4e1eab1f41b7c1952268a200d0776
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14de2abaa1de0b6d6fb5b8301fb628f7c7315d7ac8ed302a5392115a754ba24c9b263784e2862ea3abafb0850b3f4b1626f2a74fe0b5bc97b9a461ac73c7bdfc
|
7
|
+
data.tar.gz: 483f4cfd52cd9d0e835490249602abb87167ae65bb07aa29113b33cce4d679e2e1a1364e2916a1c84784d32749be6fba7631c26d0254a94720bf6efe36242024
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
## 0.5.0.
|
1
|
+
## 0.5.0.beta1
|
2
2
|
|
3
3
|
NEW FEATURES:
|
4
4
|
|
5
|
-
* Profiles can now specify an s3_fallback
|
5
|
+
* Profiles can now specify an s3_fallback key. If AWS AppConfig is unreachable, we will fall back to loading the specified S3 object from the top level configured fallback_s3_bucket and interpreting it as a response from AWS AppConfig. For best results enable versioning on the bucket. It is an error to specify an s3_fallback key if the configuration does not have a top level fallback_s3_bucket.
|
6
6
|
* AppConfig responses can request that the s3_fallback be used by setting a top level "aws:chaos_config" key to true. This allows for deployments which AppConfig deployments which can test the fallback mechanism. If a chaos config load fails, the source AppConfig profile will remain in use. Chaos config is ignored in error recovery scenarios.
|
7
7
|
|
8
8
|
BUG FIXES:
|
@@ -26,7 +26,8 @@ module ConfigOMat
|
|
26
26
|
:generated_templates, :services_to_reload, :profiles_to_apply,
|
27
27
|
:last_refresh_time, :next_state, :retry_count, :retries_left, :retry_wait,
|
28
28
|
:region, :appconfig_client, :secretsmanager_client, :s3_client,
|
29
|
-
:systemd_interface, :secrets_loader_memory, :gc_compact, :gc_stat
|
29
|
+
:systemd_interface, :secrets_loader_memory, :gc_compact, :gc_stat,
|
30
|
+
:fallback_s3_bucket
|
30
31
|
|
31
32
|
def initialize(
|
32
33
|
argv: [],
|
@@ -61,7 +62,8 @@ module ConfigOMat
|
|
61
62
|
systemd_interface: nil,
|
62
63
|
secrets_loader_memory: nil,
|
63
64
|
gc_compact: 0,
|
64
|
-
gc_stat: 0
|
65
|
+
gc_stat: 0,
|
66
|
+
fallback_s3_bucket: nil
|
65
67
|
)
|
66
68
|
super()
|
67
69
|
|
@@ -98,6 +100,7 @@ module ConfigOMat
|
|
98
100
|
@secrets_loader_memory = secrets_loader_memory
|
99
101
|
@gc_compact = gc_compact
|
100
102
|
@gc_stat = gc_stat
|
103
|
+
@fallback_s3_bucket = fallback_s3_bucket
|
101
104
|
end
|
102
105
|
end
|
103
106
|
end
|
@@ -22,7 +22,7 @@ module ConfigOMat
|
|
22
22
|
module Op
|
23
23
|
class RefreshAllProfiles < LifecycleVM::OpBase
|
24
24
|
reads :profile_defs, :applied_profiles, :client_id, :appconfig_client, :secrets_loader_memory,
|
25
|
-
:secretsmanager_client, :s3_client
|
25
|
+
:secretsmanager_client, :s3_client, :fallback_s3_bucket
|
26
26
|
writes :profiles_to_apply, :last_refresh_time, :secrets_loader_memory
|
27
27
|
|
28
28
|
def call
|
@@ -57,13 +57,12 @@ module ConfigOMat
|
|
57
57
|
end
|
58
58
|
|
59
59
|
def request_from_s3(profile_name, definition, ignore_errors)
|
60
|
-
fallback = definition.s3_fallback
|
61
60
|
begin
|
62
|
-
s3_response = s3_client.get_object(bucket:
|
61
|
+
s3_response = s3_client.get_object(bucket: fallback_s3_bucket, key: definition.s3_fallback)
|
63
62
|
OpenStruct.new(
|
64
63
|
content: s3_response.body,
|
65
64
|
content_type: s3_response.content_type,
|
66
|
-
configuration_version: s3_response.version_id
|
65
|
+
configuration_version: s3_response.version_id || s3_response.etag
|
67
66
|
)
|
68
67
|
rescue StandardError => e
|
69
68
|
logger&.error(:s3_fallback_load_failed, name: profile_name, reason: e)
|
@@ -20,7 +20,7 @@ module ConfigOMat
|
|
20
20
|
module Op
|
21
21
|
class RefreshProfile < LifecycleVM::OpBase
|
22
22
|
reads :profile_defs, :client_id, :applying_profile, :appconfig_client, :secretsmanager_client,
|
23
|
-
:secrets_loader_memory, :s3_client
|
23
|
+
:secrets_loader_memory, :s3_client, :fallback_s3_bucket
|
24
24
|
writes :applying_profile, :secrets_loader_memory
|
25
25
|
|
26
26
|
def call
|
@@ -56,13 +56,12 @@ module ConfigOMat
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def request_from_s3(profile_name, definition)
|
59
|
-
fallback = definition.s3_fallback
|
60
59
|
begin
|
61
|
-
s3_response = s3_client.get_object(bucket:
|
60
|
+
s3_response = s3_client.get_object(bucket: fallback_s3_bucket, key: definition.s3_fallback)
|
62
61
|
OpenStruct.new(
|
63
62
|
content: s3_response.body,
|
64
63
|
content_type: s3_response.content_type,
|
65
|
-
configuration_version: s3_response.version_id
|
64
|
+
configuration_version: s3_response.version_id || s3_response.etag
|
66
65
|
)
|
67
66
|
rescue StandardError => e
|
68
67
|
error profile_name, e
|
@@ -23,7 +23,8 @@ module ConfigOMat
|
|
23
23
|
:systemd_directory, :logs_directory, :profile_defs,
|
24
24
|
:template_defs, :service_defs, :dependencies, :refresh_interval,
|
25
25
|
:client_id, :retry_count, :retries_left, :retry_wait,
|
26
|
-
:region, :systemd_interface, :gc_stat, :gc_compact
|
26
|
+
:region, :systemd_interface, :gc_stat, :gc_compact,
|
27
|
+
:fallback_s3_bucket
|
27
28
|
|
28
29
|
def initialize(
|
29
30
|
argv: [],
|
@@ -46,7 +47,8 @@ module ConfigOMat
|
|
46
47
|
region: nil,
|
47
48
|
systemd_interface: nil,
|
48
49
|
gc_stat: 0,
|
49
|
-
gc_copmact: 0
|
50
|
+
gc_copmact: 0,
|
51
|
+
fallback_s3_bucket: nil
|
50
52
|
)
|
51
53
|
super()
|
52
54
|
|
@@ -71,6 +73,7 @@ module ConfigOMat
|
|
71
73
|
@systemd_interface = systemd_interface
|
72
74
|
@gc_stat = gc_stat
|
73
75
|
@gc_compact = gc_compact
|
76
|
+
@fallback_s3_bucket = fallback_s3_bucket
|
74
77
|
end
|
75
78
|
end
|
76
79
|
end
|
@@ -63,7 +63,8 @@ module ConfigOMat
|
|
63
63
|
reads :configuration_directory, :logs_directory, :env
|
64
64
|
writes :profile_defs, :template_defs, :service_defs, :dependencies,
|
65
65
|
:refresh_interval, :client_id, :logger, :retry_count, :retries_left,
|
66
|
-
:retry_wait, :region, :systemd_interface, :gc_stat, :gc_compact
|
66
|
+
:retry_wait, :region, :systemd_interface, :gc_stat, :gc_compact,
|
67
|
+
:fallback_s3_bucket
|
67
68
|
|
68
69
|
def call
|
69
70
|
default_config = {
|
@@ -127,6 +128,11 @@ module ConfigOMat
|
|
127
128
|
self.service_defs = instantiate.call(:services, Service)
|
128
129
|
self.template_defs = instantiate.call(:templates, Template)
|
129
130
|
self.profile_defs = instantiate.call(:profiles, Profile)
|
131
|
+
self.fallback_s3_bucket = merged_config[:fallback_s3_bucket]
|
132
|
+
|
133
|
+
if profile_defs.values.any? { |pd| pd.s3_fallback } && (fallback_s3_bucket.nil? || fallback_s3_bucket.empty?)
|
134
|
+
error :fallback_s3_bucket, 'must be present to use s3_fallback on profiles'
|
135
|
+
end
|
130
136
|
|
131
137
|
facter = merged_config[:facter]
|
132
138
|
if facter
|
@@ -178,13 +178,10 @@ module ConfigOMat
|
|
178
178
|
error :environment, 'must be present' if @environment.nil? || @environment.empty?
|
179
179
|
error :profile, 'must be present' if @profile.nil? || @profile.empty?
|
180
180
|
if !@s3_fallback.nil?
|
181
|
-
if
|
182
|
-
error :s3_fallback, 'must be
|
181
|
+
if @s3_fallback.kind_of?(String)
|
182
|
+
error :s3_fallback, 'must be non-empty' if @s3_fallback.empty?
|
183
183
|
else
|
184
|
-
|
185
|
-
object = @s3_fallback[:object]
|
186
|
-
error :s3_fallback, 'must include bucket' if bucket.nil? || bucket.empty?
|
187
|
-
error :s3_fallback, 'must include object' if object.nil? || object.empty?
|
184
|
+
error :s3_fallback, 'must be a string'
|
188
185
|
end
|
189
186
|
end
|
190
187
|
end
|
data/lib/config_o_mat/version.rb
CHANGED