Class: Daytona::VolumeService

Inherits:
Object
  • Object
show all
Includes:
Instrumentation
Defined in:
lib/daytona/volume_service.rb

Instance Method Summary collapse

Methods included from Instrumentation

included

Constructor Details

#initialize(volumes_api, otel_state: nil) ⇒ VolumeService

Service for managing Daytona Volumes. Can be used to list, get, create and delete Volumes.

Parameters:

  • volumes_api (DaytonaApiClient::VolumesApi)
  • otel_state (Daytona::OtelState, nil) (defaults to: nil)


11
12
13
14
# File 'lib/daytona/volume_service.rb', line 11

def initialize(volumes_api, otel_state: nil)
  @volumes_api = volumes_api
  @otel_state = otel_state
end

Instance Method Details

#create(name) ⇒ Daytona::Volume

Create new Volume.

Parameters:

  • name (String)

Returns:



20
# File 'lib/daytona/volume_service.rb', line 20

def create(name) = Volume.new(volumes_api.create_volume(DaytonaApiClient::CreateVolume.new(name:)))

#delete(volume) ⇒ void

This method returns an undefined value.

Delete a Volume.

Parameters:



26
# File 'lib/daytona/volume_service.rb', line 26

def delete(volume) = volumes_api.delete_volume(volume.id)

#get(name, create: false) ⇒ Daytona::Volume

Get a Volume by name.

Parameters:

  • name (String)
  • create (Boolean) (defaults to: false)

Returns:



33
34
35
36
37
38
39
# File 'lib/daytona/volume_service.rb', line 33

def get(name, create: false)
  Volume.new(volumes_api.get_volume_by_name(name))
rescue DaytonaApiClient::ApiError => e
  raise unless create && e.code == 404 && e.message.include?("Volume with name #{name} not found")

  create(name)
end

#listArray<Daytona::Volume>

List all Volumes.

Returns:



44
45
46
# File 'lib/daytona/volume_service.rb', line 44

def list
  volumes_api.list_volumes.map { |volume| Volume.new(volume) }
end