ReqFly.Volumes (req_fly v1.0.0)

View Source

Functions for interacting with Fly.io Volumes API.

The Volumes API provides operations for managing persistent storage volumes including creation, retrieval, updates, deletion, extension, and snapshot management.

Examples

req = Req.new() |> ReqFly.attach(token: "fly_token")

# List all volumes for an app
{:ok, volumes} = ReqFly.Volumes.list(req, app_name: "my-app")

# Create a new volume
{:ok, volume} = ReqFly.Volumes.create(req,
  app_name: "my-app",
  name: "data_volume",
  region: "sjc",
  size_gb: 10
)

# Get volume details
{:ok, volume} = ReqFly.Volumes.get(req,
  app_name: "my-app",
  volume_id: "vol_1234567890"
)

# Update a volume
{:ok, volume} = ReqFly.Volumes.update(req,
  app_name: "my-app",
  volume_id: "vol_1234567890",
  snapshot_retention: 5
)

# Extend volume size
{:ok, volume} = ReqFly.Volumes.extend(req,
  app_name: "my-app",
  volume_id: "vol_1234567890",
  size_gb: 20
)

# List snapshots
{:ok, snapshots} = ReqFly.Volumes.list_snapshots(req,
  app_name: "my-app",
  volume_id: "vol_1234567890"
)

# Create a snapshot
{:ok, snapshot} = ReqFly.Volumes.create_snapshot(req,
  app_name: "my-app",
  volume_id: "vol_1234567890"
)

# Delete a volume
{:ok, _} = ReqFly.Volumes.delete(req,
  app_name: "my-app",
  volume_id: "vol_1234567890"
)

Summary

Functions

Creates a new volume for an app.

Creates a snapshot of a volume.

Deletes a volume.

Extends the size of a volume.

Gets details for a specific volume.

Lists all volumes for an app.

Lists all snapshots for a volume.

Updates a volume's configuration.

Functions

create(req, opts)

@spec create(
  Req.Request.t(),
  keyword()
) :: {:ok, map()} | {:error, ReqFly.Error.t()}

Creates a new volume for an app.

Parameters

  • req - A Req.Request with ReqFly attached
  • opts - Options keyword list
    • :app_name - Name of the app (required)
    • :name - Volume name (required)
    • :region - Region code (e.g., "sjc", "iad") (required)
    • :size_gb - Size in gigabytes (required, must be positive integer)
    • Additional optional parameters can be passed and will be included in the request

Returns

  • {:ok, volume} - Created volume details
  • {:error, %ReqFly.Error{}} - Error details

Examples

req = Req.new() |> ReqFly.attach(token: "fly_token")
{:ok, volume} = ReqFly.Volumes.create(req,
  app_name: "my-app",
  name: "data_volume",
  region: "sjc",
  size_gb: 10
)

create_snapshot(req, opts)

@spec create_snapshot(
  Req.Request.t(),
  keyword()
) :: {:ok, map()} | {:error, ReqFly.Error.t()}

Creates a snapshot of a volume.

Parameters

  • req - A Req.Request with ReqFly attached
  • opts - Options keyword list
    • :app_name - Name of the app (required)
    • :volume_id - ID of the volume (required)

Returns

  • {:ok, snapshot} - Created snapshot details
  • {:error, %ReqFly.Error{}} - Error details

Examples

req = Req.new() |> ReqFly.attach(token: "fly_token")
{:ok, snapshot} = ReqFly.Volumes.create_snapshot(req,
  app_name: "my-app",
  volume_id: "vol_1234567890"
)

delete(req, opts)

@spec delete(
  Req.Request.t(),
  keyword()
) :: {:ok, term()} | {:error, ReqFly.Error.t()}

Deletes a volume.

Parameters

  • req - A Req.Request with ReqFly attached
  • opts - Options keyword list
    • :app_name - Name of the app (required)
    • :volume_id - ID of the volume to delete (required)

Returns

  • {:ok, response} - Deletion confirmation
  • {:error, %ReqFly.Error{}} - Error details

Examples

req = Req.new() |> ReqFly.attach(token: "fly_token")
{:ok, _} = ReqFly.Volumes.delete(req,
  app_name: "my-app",
  volume_id: "vol_1234567890"
)

extend(req, opts)

@spec extend(
  Req.Request.t(),
  keyword()
) :: {:ok, map()} | {:error, ReqFly.Error.t()}

Extends the size of a volume.

Parameters

  • req - A Req.Request with ReqFly attached
  • opts - Options keyword list
    • :app_name - Name of the app (required)
    • :volume_id - ID of the volume (required)
    • :size_gb - New size in gigabytes (required, must be positive integer)

Returns

  • {:ok, volume} - Extended volume details
  • {:error, %ReqFly.Error{}} - Error details

Examples

req = Req.new() |> ReqFly.attach(token: "fly_token")
{:ok, volume} = ReqFly.Volumes.extend(req,
  app_name: "my-app",
  volume_id: "vol_1234567890",
  size_gb: 20
)

get(req, opts)

@spec get(
  Req.Request.t(),
  keyword()
) :: {:ok, map()} | {:error, ReqFly.Error.t()}

Gets details for a specific volume.

Parameters

  • req - A Req.Request with ReqFly attached
  • opts - Options keyword list
    • :app_name - Name of the app (required)
    • :volume_id - ID of the volume (required)

Returns

  • {:ok, volume} - Volume details
  • {:error, %ReqFly.Error{}} - Error details

Examples

req = Req.new() |> ReqFly.attach(token: "fly_token")
{:ok, volume} = ReqFly.Volumes.get(req,
  app_name: "my-app",
  volume_id: "vol_1234567890"
)

list(req, opts)

@spec list(
  Req.Request.t(),
  keyword()
) :: {:ok, [map()]} | {:error, ReqFly.Error.t()}

Lists all volumes for an app.

Parameters

  • req - A Req.Request with ReqFly attached
  • opts - Options keyword list
    • :app_name - Name of the app (required)

Returns

  • {:ok, volumes} - List of volume maps
  • {:error, %ReqFly.Error{}} - Error details

Examples

req = Req.new() |> ReqFly.attach(token: "fly_token")
{:ok, volumes} = ReqFly.Volumes.list(req, app_name: "my-app")

list_snapshots(req, opts)

@spec list_snapshots(
  Req.Request.t(),
  keyword()
) :: {:ok, [map()]} | {:error, ReqFly.Error.t()}

Lists all snapshots for a volume.

Parameters

  • req - A Req.Request with ReqFly attached
  • opts - Options keyword list
    • :app_name - Name of the app (required)
    • :volume_id - ID of the volume (required)

Returns

  • {:ok, snapshots} - List of snapshot maps
  • {:error, %ReqFly.Error{}} - Error details

Examples

req = Req.new() |> ReqFly.attach(token: "fly_token")
{:ok, snapshots} = ReqFly.Volumes.list_snapshots(req,
  app_name: "my-app",
  volume_id: "vol_1234567890"
)

update(req, opts)

@spec update(
  Req.Request.t(),
  keyword()
) :: {:ok, map()} | {:error, ReqFly.Error.t()}

Updates a volume's configuration.

Parameters

  • req - A Req.Request with ReqFly attached
  • opts - Options keyword list
    • :app_name - Name of the app (required)
    • :volume_id - ID of the volume (required)
    • Additional parameters to update (e.g., :snapshot_retention)

Returns

  • {:ok, volume} - Updated volume details
  • {:error, %ReqFly.Error{}} - Error details

Examples

req = Req.new() |> ReqFly.attach(token: "fly_token")
{:ok, volume} = ReqFly.Volumes.update(req,
  app_name: "my-app",
  volume_id: "vol_1234567890",
  snapshot_retention: 5
)