./lib/svc.rb in strongdm-6.2.1 vs ./lib/svc.rb in strongdm-6.3.0
- old
+ new
@@ -3665,9 +3665,94 @@
}
resp
end
end
+ # SecretStoreHealths exposes health states for secret stores.
+ #
+ # See {SecretStoreHealth}.
+ class SecretStoreHealths
+ extend Gem::Deprecate
+
+ def initialize(channel, parent)
+ begin
+ @stub = V1::SecretStoreHealths::Stub.new(nil, nil, channel_override: channel)
+ rescue => exception
+ raise Plumbing::convert_error_to_porcelain(exception)
+ end
+ @parent = parent
+ end
+
+ # List reports the health status of node to secret store pairs.
+ def list(
+ filter,
+ *args,
+ deadline: nil
+ )
+ req = V1::SecretStoreHealthListRequest.new()
+ req.meta = V1::ListRequestMetadata.new()
+ if @parent.page_limit > 0
+ req.meta.limit = @parent.page_limit
+ end
+ if not @parent.snapshot_time.nil?
+ req.meta.snapshot_at = @parent.snapshot_time
+ end
+
+ req.filter = Plumbing::quote_filter_args(filter, *args)
+ resp = Enumerator::Generator.new { |g|
+ tries = 0
+ loop do
+ begin
+ plumbing_response = @stub.list(req, metadata: @parent.get_metadata("SecretStoreHealths.List", req), deadline: deadline)
+ rescue => exception
+ if (@parent.shouldRetry(tries, exception))
+ tries + +@parent.jitterSleep(tries)
+ next
+ end
+ raise Plumbing::convert_error_to_porcelain(exception)
+ end
+ tries = 0
+ plumbing_response.secret_store_healths.each do |plumbing_item|
+ g.yield Plumbing::convert_secret_store_health_to_porcelain(plumbing_item)
+ end
+ break if plumbing_response.meta.next_cursor == ""
+ req.meta.cursor = plumbing_response.meta.next_cursor
+ end
+ }
+ resp
+ end
+
+ # Healthcheck triggers a remote healthcheck request for a secret store. It may take minutes
+ # to propagate across a large network of Nodes. The call will return immediately, and the
+ # updated health of the Secret Store can be retrieved via List.
+ def healthcheck(
+ secret_store_id,
+ deadline: nil
+ )
+ req = V1::SecretStoreHealthcheckRequest.new()
+
+ req.secret_store_id = (secret_store_id)
+ tries = 0
+ plumbing_response = nil
+ loop do
+ begin
+ plumbing_response = @stub.healthcheck(req, metadata: @parent.get_metadata("SecretStoreHealths.Healthcheck", req), deadline: deadline)
+ rescue => exception
+ if (@parent.shouldRetry(tries, exception))
+ tries + +@parent.jitterSleep(tries)
+ next
+ end
+ raise Plumbing::convert_error_to_porcelain(exception)
+ end
+ break
+ end
+
+ resp = SecretStoreHealthcheckResponse.new()
+ resp.rate_limit = Plumbing::convert_rate_limit_metadata_to_porcelain(plumbing_response.rate_limit)
+ resp
+ end
+ end
+
# SecretStores are servers where resource secrets (passwords, keys) are stored.
#
# See:
# {AWSStore}
# {AzureStore}