Class: Hatchet::Config
- Inherits:
-
Object
- Object
- Hatchet::Config
- Defined in:
- lib/hatchet/config.rb
Overview
Configuration class for Hatchet client settings
This class manages all configuration options for the Hatchet client, including token authentication, connection settings, and various client behaviors. Configuration can be set via constructor options, environment variables, or extracted from JWT tokens.
Constant Summary collapse
- DEFAULT_HOST_PORT =
"localhost:7070"- DEFAULT_SERVER_URL =
"https://app.dev.hatchet-tools.com"- DEFAULT_GRPC_MAX_MESSAGE_LENGTH =
4MB
4 * 1024 * 1024
- ENV_FILE_NAMES =
[".env", ".env.hatchet", ".env.dev", ".env.local"].freeze
Instance Attribute Summary collapse
-
#grpc_max_recv_message_length ⇒ Integer
Maximum gRPC receive message length in bytes.
-
#grpc_max_send_message_length ⇒ Integer
Maximum gRPC send message length in bytes.
-
#healthcheck ⇒ Object
Returns the value of attribute healthcheck.
-
#host_port ⇒ String
GRPC server host and port.
-
#listener_v2_timeout ⇒ Integer?
Timeout for listener v2 in milliseconds.
-
#logger ⇒ Logger
Logger instance.
-
#namespace ⇒ String
Namespace prefix for resource names.
-
#server_url ⇒ String
Server URL for HTTP requests.
-
#tenant_id ⇒ String
Tenant ID (extracted from JWT ‘sub’ field if not provided).
-
#tls_config ⇒ TLSConfig
TLS configuration.
-
#token ⇒ String
JWT token for authentication.
-
#worker_preset_labels ⇒ Hash<String, String>
Default labels applied to all workers.
Instance Method Summary collapse
-
#apply_namespace(resource_name, namespace_override: nil) ⇒ String?
Apply namespace prefix to a resource name.
-
#auth_metadata ⇒ Hash<String, String>
Returns authentication metadata for gRPC calls.
- #hash ⇒ Object
-
#initialize(**options) ⇒ Config
constructor
Initialize a new configuration instance.
-
#to_h ⇒ Hash<Symbol, Object>
Convert configuration to a hash representation.
Constructor Details
#initialize(**options) ⇒ Config
Initialize a new configuration instance
Configuration values are loaded in the following priority order:
-
Explicit constructor options (highest priority)
-
Environment variables (HATCHET_CLIENT_*)
-
JWT token payload (for tenant_id from ‘sub’ field)
-
Default values (lowest priority)
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 |
# File 'lib/hatchet/config.rb', line 186 def initialize(**) load_env_files @explicitly_set = .keys.to_set @token = [:token] || env_var("HATCHET_CLIENT_TOKEN") || "" @host_port = [:host_port] || env_var("HATCHET_CLIENT_HOST_PORT") || DEFAULT_HOST_PORT @server_url = [:server_url] || env_var("HATCHET_CLIENT_SERVER_URL") || DEFAULT_SERVER_URL @namespace = [:namespace] || env_var("HATCHET_CLIENT_NAMESPACE") || "" @logger = [:logger] || Logger.new($stdout) @listener_v2_timeout = parse_int([:listener_v2_timeout] || env_var("HATCHET_CLIENT_LISTENER_V2_TIMEOUT")) @grpc_max_recv_message_length = parse_int( [:grpc_max_recv_message_length] || env_var("HATCHET_CLIENT_GRPC_MAX_RECV_MESSAGE_LENGTH"), ) || DEFAULT_GRPC_MAX_MESSAGE_LENGTH @grpc_max_send_message_length = parse_int( [:grpc_max_send_message_length] || env_var("HATCHET_CLIENT_GRPC_MAX_SEND_MESSAGE_LENGTH"), ) || DEFAULT_GRPC_MAX_MESSAGE_LENGTH @worker_preset_labels = [:worker_preset_labels] || parse_hash(env_var("HATCHET_CLIENT_WORKER_PRESET_LABELS")) || {} # Initialize nested configurations @tls_config = [:tls_config] || TLSConfig.new @healthcheck = [:healthcheck] || HealthcheckConfig.new # Initialize tenant_id from JWT token @tenant_id = "" validate! apply_token_defaults if valid_jwt_token? apply_address_defaults if valid_jwt_token? normalize_namespace! end |
Instance Attribute Details
#grpc_max_recv_message_length ⇒ Integer
Returns Maximum gRPC receive message length in bytes.
157 158 159 160 |
# File 'lib/hatchet/config.rb', line 157 attr_reader :token, :host_port, :server_url, :namespace, :logger, :listener_v2_timeout, :grpc_max_recv_message_length, :grpc_max_send_message_length, :worker_preset_labels, :tls_config, :healthcheck |
#grpc_max_send_message_length ⇒ Integer
Returns Maximum gRPC send message length in bytes.
157 158 159 160 |
# File 'lib/hatchet/config.rb', line 157 attr_reader :token, :host_port, :server_url, :namespace, :logger, :listener_v2_timeout, :grpc_max_recv_message_length, :grpc_max_send_message_length, :worker_preset_labels, :tls_config, :healthcheck |
#healthcheck ⇒ Object
Returns the value of attribute healthcheck.
157 158 159 160 |
# File 'lib/hatchet/config.rb', line 157 attr_reader :token, :host_port, :server_url, :namespace, :logger, :listener_v2_timeout, :grpc_max_recv_message_length, :grpc_max_send_message_length, :worker_preset_labels, :tls_config, :healthcheck |
#host_port ⇒ String
Returns gRPC server host and port.
157 158 159 160 |
# File 'lib/hatchet/config.rb', line 157 attr_reader :token, :host_port, :server_url, :namespace, :logger, :listener_v2_timeout, :grpc_max_recv_message_length, :grpc_max_send_message_length, :worker_preset_labels, :tls_config, :healthcheck |
#listener_v2_timeout ⇒ Integer?
Returns Timeout for listener v2 in milliseconds.
157 158 159 160 |
# File 'lib/hatchet/config.rb', line 157 attr_reader :token, :host_port, :server_url, :namespace, :logger, :listener_v2_timeout, :grpc_max_recv_message_length, :grpc_max_send_message_length, :worker_preset_labels, :tls_config, :healthcheck |
#logger ⇒ Logger
Returns Logger instance.
157 158 159 160 |
# File 'lib/hatchet/config.rb', line 157 attr_reader :token, :host_port, :server_url, :namespace, :logger, :listener_v2_timeout, :grpc_max_recv_message_length, :grpc_max_send_message_length, :worker_preset_labels, :tls_config, :healthcheck |
#namespace ⇒ String
Returns Namespace prefix for resource names.
157 158 159 160 |
# File 'lib/hatchet/config.rb', line 157 attr_reader :token, :host_port, :server_url, :namespace, :logger, :listener_v2_timeout, :grpc_max_recv_message_length, :grpc_max_send_message_length, :worker_preset_labels, :tls_config, :healthcheck |
#server_url ⇒ String
Returns Server URL for HTTP requests.
157 158 159 160 |
# File 'lib/hatchet/config.rb', line 157 attr_reader :token, :host_port, :server_url, :namespace, :logger, :listener_v2_timeout, :grpc_max_recv_message_length, :grpc_max_send_message_length, :worker_preset_labels, :tls_config, :healthcheck |
#tenant_id ⇒ String
Returns Tenant ID (extracted from JWT ‘sub’ field if not provided).
157 158 159 160 |
# File 'lib/hatchet/config.rb', line 157 attr_reader :token, :host_port, :server_url, :namespace, :logger, :listener_v2_timeout, :grpc_max_recv_message_length, :grpc_max_send_message_length, :worker_preset_labels, :tls_config, :healthcheck |
#tls_config ⇒ TLSConfig
Returns TLS configuration.
157 158 159 160 |
# File 'lib/hatchet/config.rb', line 157 attr_reader :token, :host_port, :server_url, :namespace, :logger, :listener_v2_timeout, :grpc_max_recv_message_length, :grpc_max_send_message_length, :worker_preset_labels, :tls_config, :healthcheck |
#token ⇒ String
Returns JWT token for authentication.
157 158 159 |
# File 'lib/hatchet/config.rb', line 157 def token @token end |
#worker_preset_labels ⇒ Hash<String, String>
Returns Default labels applied to all workers.
157 158 159 160 |
# File 'lib/hatchet/config.rb', line 157 attr_reader :token, :host_port, :server_url, :namespace, :logger, :listener_v2_timeout, :grpc_max_recv_message_length, :grpc_max_send_message_length, :worker_preset_labels, :tls_config, :healthcheck |
Instance Method Details
#apply_namespace(resource_name, namespace_override: nil) ⇒ String?
Apply namespace prefix to a resource name
237 238 239 240 241 242 243 244 245 |
# File 'lib/hatchet/config.rb', line 237 def apply_namespace(resource_name, namespace_override: nil) return resource_name if resource_name.nil? namespace_to_use = namespace_override || namespace return resource_name if namespace_to_use.empty? return resource_name if resource_name.start_with?(namespace_to_use) "#{namespace_to_use}#{resource_name}" end |
#auth_metadata ⇒ Hash<String, String>
Returns authentication metadata for gRPC calls.
270 271 272 |
# File 'lib/hatchet/config.rb', line 270 def { "authorization" => "bearer #{token}" } end |
#hash ⇒ Object
247 248 249 |
# File 'lib/hatchet/config.rb', line 247 def hash to_h.hash end |
#to_h ⇒ Hash<Symbol, Object>
Convert configuration to a hash representation
254 255 256 257 258 259 260 261 262 263 264 265 |
# File 'lib/hatchet/config.rb', line 254 def to_h { token: token, host_port: host_port, server_url: server_url, namespace: namespace, listener_v2_timeout: listener_v2_timeout, grpc_max_recv_message_length: , grpc_max_send_message_length: , worker_preset_labels: worker_preset_labels, } end |