smplkit 3.0.14 → 3.0.15

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: c96e2ae58a16657eb4fb39372c370ca2a49671fcb7414d098a4f6e0019a5be9e
4
- data.tar.gz: d2a539076441031f5b476bf56bfd5ca06c70ebca6754db13fded0bcaafc68c4a
3
+ metadata.gz: 5d846979c77a96bd5b8f3fbd3bf36ddbe0a6556b7925a33302142b173c7c3e96
4
+ data.tar.gz: dd7e3c2b10238f038f2d9e5de715bb5b12e7a05eae85af9acf53d5ac7735b370
5
5
  SHA512:
6
- metadata.gz: 41fdd36eedf126ba56313482c3fc568f370f0537b49057a62716e446c05fee96083d12c28ba728f1c2d241147e9e8844de17fe62a7ecc8d4ae88b613a7f26328
7
- data.tar.gz: 17067605a53e4faff4b07b61bc29ada2292ec41f369edd05be41ff30c6ffce8e2ffee1d9148d7ca9f6619683a90f6e4a347c424aaac34b091424c34553299378
6
+ metadata.gz: 52eaa355e2937332ed2637f9cec86b2959b477ad577caeb36bda66c6ca966ca8d1782c9c8a0f6c5a5e3ce11e20f3ad08a54239f0069109b691797a09fe970810
7
+ data.tar.gz: 3931a2e34214aa78575f1dc7652631335608246fec988e5a5fca12488b330d59297d585c7e2b3cf3b60e9afe0ba38853107e66e6342ec58c1ad3d6906a0704f1
@@ -63,8 +63,8 @@ module Smplkit
63
63
  @manage.loggers.get(name)
64
64
  end
65
65
 
66
- def list
67
- @manage.loggers.list
66
+ def list(page_number: nil, page_size: nil)
67
+ @manage.loggers.list(page_number: page_number, page_size: page_size)
68
68
  end
69
69
 
70
70
  def delete(name)
@@ -27,6 +27,12 @@ module Smplkit
27
27
  # etc.) and converts at the boundary via the existing
28
28
  # +<resource>_from_resource+ helpers.
29
29
  class ManagementClient
30
+ # Default page[size] the runtime asks for when walking a list
31
+ # endpoint to completion. The platform caps page[size] at 1000;
32
+ # using the same value here makes the minimum number of round-trips
33
+ # per exhaustive fetch.
34
+ RUNTIME_PAGE_SIZE = 1000
35
+
30
36
  attr_reader :contexts, :context_types, :environments, :account_settings,
31
37
  :config, :flags, :loggers, :log_groups, :audit
32
38
 
@@ -126,6 +132,33 @@ module Smplkit
126
132
  end
127
133
  end
128
134
 
135
+ # Walk a generated paginated list endpoint to completion.
136
+ #
137
+ # The block receives a per-page +opts+ hash with +page_number+ and
138
+ # +page_size+ filled in, calls the generated list method through
139
+ # {ErrorMapping.call}, and returns the response object. Pages stop
140
+ # when the server returns fewer rows than requested — the platform's
141
+ # standard last-page signal across every offset-paginated list
142
+ # endpoint. Returns the concatenated +response.data+ rows.
143
+ module PaginatedFetch
144
+ module_function
145
+
146
+ def collect(page_size: RUNTIME_PAGE_SIZE)
147
+ rows = []
148
+ page_number = 1
149
+ loop do
150
+ opts = { page_number: page_number, page_size: page_size }
151
+ response = ErrorMapping.call { yield(opts) }
152
+ page = response.data || []
153
+ rows.concat(page)
154
+ break if page.length < page_size
155
+
156
+ page_number += 1
157
+ end
158
+ rows
159
+ end
160
+ end
161
+
129
162
  # Deep-stringify Hash keys so resources returned by generated +to_hash+
130
163
  # (symbol-keyed) match what the wrapper helpers expect (string-keyed).
131
164
  module ResourceShim
@@ -175,8 +208,11 @@ module Smplkit
175
208
  Smplkit.debug("registration", "context flush failed: #{e.class}: #{e.message}")
176
209
  end
177
210
 
178
- def list
179
- response = ErrorMapping.call { @api.list_contexts }
211
+ def list(page_number: nil, page_size: nil)
212
+ opts = {}
213
+ opts[:page_number] = page_number unless page_number.nil?
214
+ opts[:page_size] = page_size unless page_size.nil?
215
+ response = ErrorMapping.call { @api.list_contexts(opts) }
180
216
  (response.data || []).map { |r| context_from_resource(ResourceShim.from_model(r)) }
181
217
  end
182
218
 
@@ -237,8 +273,11 @@ module Smplkit
237
273
  @api = SmplkitGeneratedClient::App::ContextTypesApi.new(api_client)
238
274
  end
239
275
 
240
- def list
241
- response = ErrorMapping.call { @api.list_context_types }
276
+ def list(page_number: nil, page_size: nil)
277
+ opts = {}
278
+ opts[:page_number] = page_number unless page_number.nil?
279
+ opts[:page_size] = page_size unless page_size.nil?
280
+ response = ErrorMapping.call { @api.list_context_types(opts) }
242
281
  (response.data || []).map { |r| from_resource(ResourceShim.from_model(r)) }
243
282
  end
244
283
 
@@ -296,8 +335,11 @@ module Smplkit
296
335
  @api = SmplkitGeneratedClient::App::EnvironmentsApi.new(api_client)
297
336
  end
298
337
 
299
- def list
300
- response = ErrorMapping.call { @api.list_environments }
338
+ def list(page_number: nil, page_size: nil)
339
+ opts = {}
340
+ opts[:page_number] = page_number unless page_number.nil?
341
+ opts[:page_size] = page_size unless page_size.nil?
342
+ response = ErrorMapping.call { @api.list_environments(opts) }
301
343
  (response.data || []).map { |r| from_resource(ResourceShim.from_model(r)) }
302
344
  end
303
345
 
@@ -413,8 +455,11 @@ module Smplkit
413
455
  @api = SmplkitGeneratedClient::Config::ConfigsApi.new(api_client)
414
456
  end
415
457
 
416
- def list
417
- response = ErrorMapping.call { @api.list_configs }
458
+ def list(page_number: nil, page_size: nil)
459
+ opts = {}
460
+ opts[:page_number] = page_number unless page_number.nil?
461
+ opts[:page_size] = page_size unless page_size.nil?
462
+ response = ErrorMapping.call { @api.list_configs(opts) }
418
463
  (response.data || []).map { |r| Smplkit::Config::Helpers.config_from_json(self, ResourceShim.from_model(r)) }
419
464
  end
420
465
 
@@ -451,8 +496,11 @@ module Smplkit
451
496
  # Build the parent-chain for a given config, walking +parent_id+
452
497
  # pointers across the full config list. Mirrors the Python SDK's
453
498
  # client-side resolution — there is no server +/chain+ endpoint.
499
+ #
500
+ # Walks every page of +list_configs+ so an account with more than
501
+ # +RUNTIME_PAGE_SIZE+ configs still resolves chains correctly.
454
502
  def fetch_chain(target_key)
455
- all_configs = list
503
+ all_configs = fetch_all_configs
456
504
  by_key = all_configs.to_h { |c| [c.key, c] }
457
505
  by_id = all_configs.to_h { |c| [c.id, c] }
458
506
 
@@ -475,6 +523,11 @@ module Smplkit
475
523
 
476
524
  private
477
525
 
526
+ def fetch_all_configs
527
+ rows = PaginatedFetch.collect { |opts| @api.list_configs(opts) }
528
+ rows.map { |r| Smplkit::Config::Helpers.config_from_json(self, ResourceShim.from_model(r)) }
529
+ end
530
+
478
531
  def config_body(config)
479
532
  SmplkitGeneratedClient::Config::ConfigResponse.new(
480
533
  data: SmplkitGeneratedClient::Config::ConfigResource.new(
@@ -576,8 +629,11 @@ module Smplkit
576
629
  @buffer.pending_count
577
630
  end
578
631
 
579
- def list
580
- response = ErrorMapping.call { @api.list_flags }
632
+ def list(page_number: nil, page_size: nil)
633
+ opts = {}
634
+ opts[:page_number] = page_number unless page_number.nil?
635
+ opts[:page_size] = page_size unless page_size.nil?
636
+ response = ErrorMapping.call { @api.list_flags(opts) }
581
637
  (response.data || []).map { |r| flag_from_resource(ResourceShim.from_model(r)) }
582
638
  end
583
639
 
@@ -634,9 +690,11 @@ module Smplkit
634
690
  Smplkit::Flags::Helpers.flag_dict_from_json(ResourceShim.from_model(response.data))
635
691
  end
636
692
 
693
+ # Runtime entry — walks every page so an account holding more than
694
+ # +RUNTIME_PAGE_SIZE+ flags still gets a complete in-memory store.
637
695
  def list_flags
638
- response = ErrorMapping.call { @api.list_flags }
639
- (response.data || []).map { |r| Smplkit::Flags::Helpers.flag_dict_from_json(ResourceShim.from_model(r)) }
696
+ rows = PaginatedFetch.collect { |opts| @api.list_flags(opts) }
697
+ rows.map { |r| Smplkit::Flags::Helpers.flag_dict_from_json(ResourceShim.from_model(r)) }
640
698
  end
641
699
 
642
700
  private
@@ -731,8 +789,11 @@ module Smplkit
731
789
  Smplkit.debug("registration", "logger flush failed: #{e.class}: #{e.message}")
732
790
  end
733
791
 
734
- def list
735
- response = ErrorMapping.call { @api.list_loggers }
792
+ def list(page_number: nil, page_size: nil)
793
+ opts = {}
794
+ opts[:page_number] = page_number unless page_number.nil?
795
+ opts[:page_size] = page_size unless page_size.nil?
796
+ response = ErrorMapping.call { @api.list_loggers(opts) }
736
797
  (response.data || []).map do |r|
737
798
  Smplkit::Logging::Helpers.logger_resource_to_model(self, ResourceShim.from_model(r))
738
799
  end
@@ -781,8 +842,11 @@ module Smplkit
781
842
  @api = SmplkitGeneratedClient::Logging::LogGroupsApi.new(api_client)
782
843
  end
783
844
 
784
- def list
785
- response = ErrorMapping.call { @api.list_log_groups }
845
+ def list(page_number: nil, page_size: nil)
846
+ opts = {}
847
+ opts[:page_number] = page_number unless page_number.nil?
848
+ opts[:page_size] = page_size unless page_size.nil?
849
+ response = ErrorMapping.call { @api.list_log_groups(opts) }
786
850
  (response.data || []).map do |r|
787
851
  Smplkit::Logging::Helpers.log_group_resource_to_model(self, ResourceShim.from_model(r))
788
852
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smplkit
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.14
4
+ version: 3.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Smpl Solutions LLC