daytona 0.198.0 → 0.199.0

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: e2003b4293b8ee69d171ad86402151e2924b814022649097deb51da19da6ff58
4
- data.tar.gz: 30884a506c2dd332c804f995dd2d3afc654cf75b0fa66e4bf54cdd4a38909c12
3
+ metadata.gz: 10a8c1d98ef86a3f5cb94cef3bb6df610bcfbb5abf59a585eaa76c3b5c527fdd
4
+ data.tar.gz: d6159db7b2febce21f6670c7340a792b10cecedac1b20178bf506a44926d7467
5
5
  SHA512:
6
- metadata.gz: f4627f864da4ae028a19d856a014da0f3513e30a5a8c7299148d89d815a82b13a2c0de3bc8fc3dc4e96ca7a455ee9ef9e291fe71dd58f57e12af8e85ebcbd3d1
7
- data.tar.gz: c8b07b46dfb64043794af1d4d33db1ca3ac49c1271ebde8eae3b2c9e05ca66030e780d2fbb5cede035c564c03a69f0abba68d87ff098bac36d198fe3ab1d2636
6
+ metadata.gz: 434cb81dc3376883e3bdce1456f5d1bcad59c51a6cf0e0390e629fdb61f80fbaccf7475fe210e872e8214b3dc6a399da1e9b9b865e950c855d370bd6cf30fd6e
7
+ data.tar.gz: 7ad98fd8a62ba96305475cb3742376cd7c48d729d3bd2a7b49f0e0a8075ff188671d03285497cf8abfc429c13a7e5cd98b55e29147e88c8f1cc982fe8d4815ce
@@ -56,6 +56,9 @@ module Daytona
56
56
  # @return [String, nil] Comma-separated list of allowed domains for the Sandbox
57
57
  attr_accessor :domain_allow_list
58
58
 
59
+ # @return [Integer, nil] Time to live in minutes (0 to disable)
60
+ attr_accessor :ttl_minutes
61
+
59
62
  # @return [Boolean, nil] Whether the Sandbox should be ephemeral
60
63
  attr_accessor :ephemeral
61
64
 
@@ -83,6 +86,7 @@ module Daytona
83
86
  # @param network_block_all [Boolean, nil] Whether to block all network access for the Sandbox
84
87
  # @param network_allow_list [String, nil] Comma-separated list of allowed CIDR network addresses for the Sandbox
85
88
  # @param domain_allow_list [String, nil] Comma-separated list of allowed domains for the Sandbox
89
+ # @param ttl_minutes [Integer, nil] Time to live in minutes (0 to disable)
86
90
  # @param ephemeral [Boolean, nil] Whether the Sandbox should be ephemeral
87
91
  # @param linked_sandbox [String, nil] ID or name of an existing Sandbox to link the new Sandbox to
88
92
  def initialize( # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
@@ -96,6 +100,7 @@ module Daytona
96
100
  auto_pause_interval: nil,
97
101
  auto_archive_interval: nil,
98
102
  auto_delete_interval: nil,
103
+ ttl_minutes: nil,
99
104
  volumes: nil,
100
105
  secrets: nil,
101
106
  network_block_all: nil,
@@ -114,6 +119,7 @@ module Daytona
114
119
  @auto_pause_interval = auto_pause_interval
115
120
  @auto_archive_interval = auto_archive_interval
116
121
  @auto_delete_interval = auto_delete_interval
122
+ @ttl_minutes = ttl_minutes
117
123
  @volumes = volumes
118
124
  @secrets = secrets
119
125
  @network_block_all = network_block_all
@@ -141,6 +147,7 @@ module Daytona
141
147
  auto_pause_interval:,
142
148
  auto_archive_interval:,
143
149
  auto_delete_interval:,
150
+ ttl_minutes:,
144
151
  volumes:,
145
152
  secrets:,
146
153
  network_block_all:,
@@ -193,6 +200,7 @@ module Daytona
193
200
  # @param auto_pause_interval [Integer, nil] Auto-pause interval in minutes
194
201
  # @param auto_archive_interval [Integer, nil] Auto-archive interval in minutes
195
202
  # @param auto_delete_interval [Integer, nil] Auto-delete interval in minutes
203
+ # @param ttl_minutes [Integer, nil] Time to live in minutes (0 to disable)
196
204
  # @param volumes [Array<DaytonaApiClient::SandboxVolume>, nil] List of volumes mounts to attach to the Sandbox
197
205
  # @param secrets [Hash<String, String>, nil] Organization Secrets to expose in the Sandbox, as a
198
206
  # mapping of env var name to existing Secret name
@@ -235,6 +243,7 @@ module Daytona
235
243
  # @param auto_pause_interval [Integer, nil] Auto-pause interval in minutes
236
244
  # @param auto_archive_interval [Integer, nil] Auto-archive interval in minutes
237
245
  # @param auto_delete_interval [Integer, nil] Auto-delete interval in minutes
246
+ # @param ttl_minutes [Integer, nil] Time to live in minutes (0 to disable)
238
247
  # @param volumes [Array<DaytonaApiClient::SandboxVolume>, nil] List of volumes mounts to attach to the Sandbox
239
248
  # @param secrets [Hash<String, String>, nil] Organization Secrets to expose in the Sandbox, as a
240
249
  # mapping of env var name to existing Secret name
@@ -99,7 +99,7 @@ module Daytona
99
99
  #
100
100
  # @param params [Daytona::CreateSandboxFromSnapshotParams, Daytona::CreateSandboxFromImageParams, Nil] Sandbox creation parameters
101
101
  # @return [Daytona::Sandbox] The created sandbox
102
- # @raise [Daytona::Sdk::Error] If auto_stop_interval, auto_pause_interval, or auto_archive_interval is negative,
102
+ # @raise [Daytona::Sdk::Error] If auto_stop_interval, auto_pause_interval, auto_archive_interval, or ttl_minutes is negative,
103
103
  # or if auto_stop_interval and auto_pause_interval are both non-zero
104
104
  def create(params = nil, on_snapshot_create_logs: nil)
105
105
  if params.nil?
@@ -237,7 +237,7 @@ module Daytona
237
237
  # @param timeout [Numeric] Maximum wait time in seconds (defaults to 60 s).
238
238
  # @param on_snapshot_create_logs [Proc]
239
239
  # @return [Daytona::Sandbox] The created sandbox
240
- # @raise [Daytona::Sdk::Error] If auto_stop_interval, auto_pause_interval, or auto_archive_interval is negative,
240
+ # @raise [Daytona::Sdk::Error] If auto_stop_interval, auto_pause_interval, auto_archive_interval, or ttl_minutes is negative,
241
241
  # or if auto_stop_interval and auto_pause_interval are both non-zero
242
242
  def _create(params, timeout: 60, on_snapshot_create_logs: nil)
243
243
  raise Sdk::Error, 'Timeout must be a non-negative number' if timeout.negative?
@@ -261,6 +261,8 @@ module Daytona
261
261
  raise Sdk::Error, 'auto_archive_interval must be a non-negative integer'
262
262
  end
263
263
 
264
+ raise Sdk::Error, 'ttl_minutes must be a non-negative integer' if params.ttl_minutes&.negative?
265
+
264
266
  labels = params.labels&.dup || {}
265
267
  labels[CODE_TOOLBOX_LANGUAGE_LABEL] = params.language.to_s if params.language
266
268
 
@@ -274,6 +276,7 @@ module Daytona
274
276
  auto_pause_interval: params.auto_pause_interval,
275
277
  auto_archive_interval: params.auto_archive_interval,
276
278
  auto_delete_interval: params.auto_delete_interval,
279
+ ttl_minutes: params.ttl_minutes,
277
280
  volumes: params.volumes,
278
281
  secrets: params.secrets&.map { |env_var, secret_name| { env_var.to_s => secret_name.to_s } },
279
282
  network_block_all: params.network_block_all,
@@ -140,6 +140,9 @@ module Daytona
140
140
  # Not returned by list results; call #refresh on each item to populate.
141
141
  attr_reader :build_info
142
142
 
143
+ # @return [String, nil] When the sandbox will be automatically destroyed (nil if no TTL is set)
144
+ attr_reader :auto_destroy_at
145
+
143
146
  # @return [String] The creation timestamp of the sandbox
144
147
  attr_reader :created_at
145
148
 
@@ -354,6 +357,19 @@ module Daytona
354
357
  @auto_pause_interval = interval
355
358
  end
356
359
 
360
+ # Sets the TTL (time to live) for the Sandbox.
361
+ # The TTL is re-anchored from the current time. When it elapses the Sandbox is destroyed,
362
+ # regardless of its current state. Use 0 to disable.
363
+ #
364
+ # @param minutes [Integer]
365
+ # @return [void]
366
+ # @raise [Daytona::Sdk::Error]
367
+ def ttl_minutes=(minutes)
368
+ raise Sdk::Error, 'TTL must be a non-negative integer' if minutes.negative?
369
+
370
+ sandbox_api.set_ttl(id, minutes)
371
+ end
372
+
357
373
  # Creates an SSH access token for the sandbox.
358
374
  #
359
375
  # @param expires_in_minutes [Integer] TThe number of minutes the SSH access token will be valid for
@@ -821,6 +837,7 @@ module Daytona
821
837
  :experimental_fork, :experimental_create_snapshot, :pause
822
838
 
823
839
  instrument :archive, :auto_archive_interval=, :auto_delete_interval=, :auto_pause_interval=, :auto_stop_interval=,
840
+ :ttl_minutes=,
824
841
  :update_network_settings, :update_secrets, :update_env,
825
842
  :create_ssh_access, :delete, :get_user_home_dir, :get_work_dir, :get_metrics, :get_metrics_latest,
826
843
  :labels=,
@@ -973,6 +990,7 @@ module Daytona
973
990
  @auto_pause_interval = sandbox_dto.auto_pause_interval
974
991
  @auto_archive_interval = sandbox_dto.auto_archive_interval
975
992
  @auto_delete_interval = sandbox_dto.auto_delete_interval
993
+ @auto_destroy_at = sandbox_dto.auto_destroy_at
976
994
  @created_at = sandbox_dto.created_at
977
995
  @updated_at = sandbox_dto.updated_at
978
996
  @last_activity_at = sandbox_dto.last_activity_at
@@ -5,6 +5,6 @@
5
5
 
6
6
  module Daytona
7
7
  module Sdk
8
- VERSION = '0.198.0'
8
+ VERSION = '0.199.0'
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daytona
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.198.0
4
+ version: 0.199.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daytona Platforms Inc.
@@ -85,42 +85,42 @@ dependencies:
85
85
  requirements:
86
86
  - - '='
87
87
  - !ruby/object:Gem::Version
88
- version: 0.198.0
88
+ version: 0.199.0
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
93
  - - '='
94
94
  - !ruby/object:Gem::Version
95
- version: 0.198.0
95
+ version: 0.199.0
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: daytona_api_client
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - '='
101
101
  - !ruby/object:Gem::Version
102
- version: 0.198.0
102
+ version: 0.199.0
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - '='
108
108
  - !ruby/object:Gem::Version
109
- version: 0.198.0
109
+ version: 0.199.0
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: daytona_toolbox_api_client
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - '='
115
115
  - !ruby/object:Gem::Version
116
- version: 0.198.0
116
+ version: 0.199.0
117
117
  type: :runtime
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - '='
122
122
  - !ruby/object:Gem::Version
123
- version: 0.198.0
123
+ version: 0.199.0
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: dotenv
126
126
  requirement: !ruby/object:Gem::Requirement