summaryrefslogtreecommitdiff
path: root/lib/dslkeywords/agent.rb
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-11 08:54:10 +0300
committerPaul Buetow <paul@buetow.org>2026-05-11 08:54:10 +0300
commitd57d57fa6cf99db8447380202b7f091827728ef5 (patch)
tree6d317535f5e6d4487ef662330cd78a7a09dc0d14 /lib/dslkeywords/agent.rb
parent8b0531bec5e9229ca41ab7bf143e319f66ed0a22 (diff)
project flow diagram
Diffstat (limited to 'lib/dslkeywords/agent.rb')
-rw-r--r--lib/dslkeywords/agent.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/dslkeywords/agent.rb b/lib/dslkeywords/agent.rb
index 6632835..3d6874c 100644
--- a/lib/dslkeywords/agent.rb
+++ b/lib/dslkeywords/agent.rb
@@ -8,6 +8,7 @@ module RCM
attr_reader :name
class InvalidName < StandardError; end
+ class InvalidRetrySetting < StandardError; end
def self.id_for(name) = super(normalize_name(name))
@@ -20,6 +21,9 @@ module RCM
def initialize(name)
@name = self.class.normalize_name(name)
+ @retries = 2
+ @retry_delay = 1.0
+ @retry_backoff = 2.0
super(@name)
end
@@ -28,6 +32,39 @@ module RCM
@command = text.to_s
end
+
+ def retries(value = nil)
+ return @retries if value.nil?
+
+ @retries = Integer(value)
+ raise InvalidRetrySetting, 'Retry count must be non-negative' if @retries.negative?
+
+ @retries
+ rescue ArgumentError, TypeError
+ raise InvalidRetrySetting, "Invalid retry count: #{value.inspect}"
+ end
+
+ def retry_delay(value = nil)
+ return @retry_delay if value.nil?
+
+ @retry_delay = Float(value)
+ raise InvalidRetrySetting, 'Retry delay must be non-negative' if @retry_delay.negative?
+
+ @retry_delay
+ rescue ArgumentError, TypeError
+ raise InvalidRetrySetting, "Invalid retry delay: #{value.inspect}"
+ end
+
+ def retry_backoff(value = nil)
+ return @retry_backoff if value.nil?
+
+ @retry_backoff = Float(value)
+ raise InvalidRetrySetting, 'Retry backoff must be at least 1.0' if @retry_backoff < 1.0
+
+ @retry_backoff
+ rescue ArgumentError, TypeError
+ raise InvalidRetrySetting, "Invalid retry backoff: #{value.inspect}"
+ end
end
# Adds the `agent` definition keyword to the top-level DSL.