Class: Microsandbox::Volume

Inherits:
Object
  • Object
show all
Defined in:
lib/microsandbox/volume.rb

Overview

Management of named persistent volumes. Mount them into a sandbox via ‘Sandbox.create(…, volumes: { “/data” => { named: “my-vol” } })`.

Class Method Summary collapse

Class Method Details

.create(name, kind: "dir", size_mib: nil, quota_mib: nil, labels: nil) ⇒ VolumeInfo

Create a named volume.

Parameters:

  • name (String)
  • kind ("dir", "disk") (defaults to: "dir")

    storage kind (default “dir”)

  • size_mib (Integer, nil) (defaults to: nil)

    required for kind “disk”

  • quota_mib (Integer, nil) (defaults to: nil)

    optional quota

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

Returns:



51
52
53
54
55
56
57
# File 'lib/microsandbox/volume.rb', line 51

def create(name, kind: "dir", size_mib: nil, quota_mib: nil, labels: nil)
  opts = { "kind" => kind.to_s }
  opts["size_mib"] = Integer(size_mib) if size_mib
  opts["quota_mib"] = Integer(quota_mib) if quota_mib
  opts["labels"] = labels.each_with_object({}) { |(k, v), a| a[k.to_s] = v.to_s } if labels
  VolumeInfo.new(Native::Volume.create(name.to_s, opts))
end

.get(name) ⇒ VolumeInfo

Metadata for a volume.

Returns:



61
62
63
# File 'lib/microsandbox/volume.rb', line 61

def get(name)
  VolumeInfo.new(Native::Volume.get(name.to_s))
end

.listArray<VolumeInfo>

All volumes.

Returns:



67
68
69
# File 'lib/microsandbox/volume.rb', line 67

def list
  Native::Volume.list.map { |info| VolumeInfo.new(info) }
end

.remove(name) ⇒ nil

Remove a volume.

Returns:

  • (nil)


73
74
75
76
# File 'lib/microsandbox/volume.rb', line 73

def remove(name)
  Native::Volume.remove(name.to_s)
  nil
end