Class: Daytona::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/daytona/config.rb

Constant Summary collapse

API_URL =
'https://app.daytona.io/api'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil, jwt_token: nil, api_url: nil, organization_id: nil, target: nil, otel_enabled: nil, use_deprecated_polling: nil, _experimental: nil) ⇒ Config

Initializes a new Daytona::Config object.

Parameters:

  • api_key (String, nil) (defaults to: nil)

    Daytona API key. Defaults to ENV.

  • jwt_token (String, nil) (defaults to: nil)

    Daytona JWT token. Defaults to ENV.

  • api_url (String, nil) (defaults to: nil)

    Daytona API URL. Defaults to ENV or Daytona::Config::API_URL.

  • organization_id (String, nil) (defaults to: nil)

    Daytona organization ID. Defaults to ENV.

  • target (String, nil) (defaults to: nil)

    Daytona target. Defaults to ENV.

  • otel_enabled (Boolean, nil) (defaults to: nil)

    Enable OpenTelemetry tracing for SDK operations.

  • use_deprecated_polling (Boolean, nil) (defaults to: nil)

    Observe sandbox state by legacy polling instead of WebSocket event streaming. Defaults to false (event streaming). Can also be enabled via the DAYTONA_USE_DEPRECATED_POLLING environment variable.

  • _experimental (Hash, nil) (defaults to: nil)

    Experimental configuration options.



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/daytona/config.rb', line 69

def initialize( # rubocop:disable Metrics/ParameterLists
  api_key: nil,
  jwt_token: nil,
  api_url: nil,
  organization_id: nil,
  target: nil,
  otel_enabled: nil,
  use_deprecated_polling: nil,
  _experimental: nil
)
  @env_reader = daytona_env_reader

  @api_key = api_key || @env_reader.call('DAYTONA_API_KEY')
  @jwt_token = jwt_token || @env_reader.call('DAYTONA_JWT_TOKEN')
  @api_url = api_url || @env_reader.call('DAYTONA_API_URL') || API_URL
  @target = target || @env_reader.call('DAYTONA_TARGET')
  @organization_id = organization_id || @env_reader.call('DAYTONA_ORGANIZATION_ID')
  @otel_enabled = otel_enabled
  @_experimental = _experimental
  @use_deprecated_polling = resolve_use_deprecated_polling(use_deprecated_polling)
end

Instance Attribute Details

#_experimentalHash?

Experimental configuration options

Returns:

  • (Hash, nil)

    Experimental configuration hash



55
56
57
# File 'lib/daytona/config.rb', line 55

def _experimental
  @_experimental
end

#api_keyString?

API key for authentication with the Daytona API

Returns:

  • (String, nil)

    Daytona API key



15
16
17
# File 'lib/daytona/config.rb', line 15

def api_key
  @api_key
end

#api_urlString?

URL of the Daytona API

Returns:

  • (String, nil)

    Daytona API URL



25
26
27
# File 'lib/daytona/config.rb', line 25

def api_url
  @api_url
end

#jwt_tokenString?

JWT token for authentication with the Daytona API

Returns:

  • (String, nil)

    Daytona JWT token



20
21
22
# File 'lib/daytona/config.rb', line 20

def jwt_token
  @jwt_token
end

#organization_idString?

Organization ID for authentication with the Daytona API

Returns:

  • (String, nil)

    Daytona API URL



30
31
32
# File 'lib/daytona/config.rb', line 30

def organization_id
  @organization_id
end

#otel_enabledBoolean?

Enable OpenTelemetry tracing for SDK operations.

Returns:

  • (Boolean, nil)


40
41
42
# File 'lib/daytona/config.rb', line 40

def otel_enabled
  @otel_enabled
end

#targetString?

Target environment for sandboxes

Returns:

  • (String, nil)

    Daytona target



35
36
37
# File 'lib/daytona/config.rb', line 35

def target
  @target
end

#use_deprecated_pollingBoolean

Deprecated.

Polling-only mode will be removed in a future release; event streaming is the default and falls back to polling automatically when WebSockets are unavailable.

Observe sandbox state by legacy polling instead of WebSocket event streaming. Defaults to false (event streaming). Can also be enabled via the DAYTONA_USE_DEPRECATED_POLLING environment variable.

Returns:

  • (Boolean)


50
51
52
# File 'lib/daytona/config.rb', line 50

def use_deprecated_polling
  @use_deprecated_polling
end

Instance Method Details

#read_env(name) ⇒ String?

Reads a DAYTONA_-prefixed environment variable using the same precedence as the Config initializer: runtime ENV first, then .env.local, then .env. Only names starting with DAYTONA_ are accepted.

Parameters:

  • name (String)

    The environment variable name. Must start with DAYTONA_.

Returns:

  • (String, nil)

    The value of the environment variable, or nil if not set.

Raises:

  • (ArgumentError)

    If name does not start with DAYTONA_.



98
99
100
# File 'lib/daytona/config.rb', line 98

def read_env(name)
  @env_reader.call(name)
end