Fuzzball Documentation
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Storage Classes

Storage classes are responsible for managing and provisioning volumes for an installed CSI Driver. A CSI Driver can be used by multiple storage classes with different configurations. Once a configuration is in place, it will define storage volumes that are created by users within their accounts.

You can configure storage classes using either the web UI or the CLI. Creating initial storage classes and drivers with the UI is easier since values are automatically populated based on the initial configuration in the cloud formation template. But configuring storage classes and drivers by writing yaml files and issuing CLI commands grants the administrator complete freedom to specify detailed configurations.

Allocating storage classes and using storage volumes can incur cost in the cloud. For instance, Amazon Elastic File System (EFS) is priced based on the amount of persistent data that you store as well as amount of data transferred through read and write operations. Admins should review pricing information and be aware of the potential implications of running workflows before configuring new storage volumes.
Please select either the UI or CLI tab to see the appropriate instructions for your environment.

The Fuzzball Admin UI presents an option to automatically create an initial set of storage classes based on the values entered in the cloud formation template during the installation procedure. Selecting this option will also automatically generate the necessary storage driver to back the newly created storage classes.

To use this feature, first navigate to the Admin UI URL for your Fuzzball cluster. (This URL can be found at https://ui-admin.<domain>) Now you can select the “Storage” option on the left. You will be presented with a screen like the following, informing you that you don’t have any storage classes and asking if you’d like to create a default storage class.

Fuzzball Admin UI prompt to create default storage class

Selecting the blue “Create Default Storage Class” option will cause Fuzzball to create initial storage classes based on the default parameters entered in the cloud formation template during the installation process. In this example, an ephemeral and persistent storage class are created based on Amazon EFS.

If your newly created storage classes are not immediately visible, try pressing the UI refresh button toward the upper right of the dashboard.
If you encounter an error when creating default storage classes, you may need to edit the values provided during installation in the cloud formation template.

Fuzzball Admin UI successful storage class creation

Fuzzball Admin UI showing new storage classes

If you want to review the initial configurations and potentially make adjustments, you can click the vertical ellipsis (kebob) menu to the right of a storage class and inspect/change values like so:

Fuzzball Admin UI initial storage class configuration

Creating default storage classes via the push-button workflow will also generate the appropriate storage driver configuration based on the initial values set in cloud formation template. See the section on storage drivers for more information.

And finally, you can also create new storage classes in the UI from scratch by clicking on the blue “Add Storage Class” button in the upper right of the dashboard view. There are a large number of configuration parameters available. Creating a default storage class and inspecting the initial configuration can give you hints about the values that you should enter to configure your new storage class from scratch.

Storage classes can be manually specified by writing YAML files and using the fuzzball admin storage class create <class.yaml> command. For information about creating YAML files to create storage classes, see the storage class definitions section.

Ensure that you have created and logged into your admin context by issuing these commands:

$ fuzzball admin context create <context_name> <api_url>

$ fuzzball admin context login -u <admin_username> -p '<admin_password>'

You can manage storage classes with the Fuzzball CLI binary. The root command is fuzzball admin storage class with the following sub commands:

Manage Fuzzball storage classes

Usage:
  fuzzball admin storage class [command]

Aliases:
  class, cl

Available Commands:
  create      Create a storage class
  delete      Delete a storage class
  describe    Describe storage class regarding the most recent install/update operation
  disable     Disable a storage class
  export      Export storage class definition as YAML
  info        Get information about a storage class
  list        List storage classes
  update      Update a storage class

The --help option will give detailed up-to-date information about the usage of each of these commands. For instance, fuzzball admin storage class create --help will give you information on creating a storage class via the CLI.

For convenience, information about managing storage classes in the CLI with the available subcommands is summarized below.

The CLI --help docs have the most up-to-date information regarding sub-commands.

Create a Storage Class

Once you have finished creating a storage class definition YAML, you can create the class for your cluster like so:

$ fuzzball admin storage class create <storage_def.yaml>

The command should return a message like

Storage class af0644ef-ab71-3677-9409-473847af3925 created

The create operation runs asynchronously and can take some time depending on the resources available in your Fuzzball cluster. The Fuzzball Storage service will create a temporary volume to validate the definition with the CSI driver. This requires an available Substrate node. The CLI doesn’t wait for completion by default, but you can specify that the CLI should wait until the volume has been created and validated using the --wait argument:

$ fuzzball admin storage class create --wait <storage_def.yaml>

Update a Storage Class

Administrators can also update a storage class definition for a cluster. Note the name field is immutable after the class creation, so changing the class name will return an error when updating.

To update a class definition:

$ fuzzball admin storage class update -i af0644ef-ab71-3677-9409-473847af3925 <new_definition.yaml>

Similar to the create command, the update operation is asynchronous. The update command also accepts the --wait argument to wait for the update completion.

Note that class definition updates done at short interval might return the error:

child workflow execution already started

This signifies that a previous update is still completing. This may be confusing when performing class updates in the UI.

If you encounter this error, you can use the describe command with --wait argument to wait for the update to complete.

Describe a Storage Class

The describe command retrieves the last creation/update state and class error if any. This command returns a raw JSON output or the last error that occurred.

To describe a class:

$ fuzzball admin storage class describe --wait af0644ef-ab71-3677-9409-473847af3925

Disable a Storage Class

Storage classes can be disabled preventing users from creating/using storage volumes. This might be useful to migrate users to another storage class for example.

$ fuzzball admin storage class disable af0644ef-ab71-3677-9409-473847af3925

Delete a Storage Class

Admins can also delete storage classes. To delete a storage class, all storage volumes attached to the class must first be deleted.

$ fuzzball admin storage class delete af0644ef-ab71-3677-9409-473847af3925

If volumes are still attached to the storage class, an error will be returned:

could not delete storage class af0644ef-ab71-3677-9409-473847af3925: volumes still attached to it

List Storage Classes

Administrators can view the configured storage classes like so:

$ fuzzball admin storage volume list
ID                                   | NAME       | STATUS   | CREATED TIME          | LAST UPDATED          | PERSISTENT | RESTRICTED
4e19b6f4-7f69-3f1f-afc5-3aff70eb0f40 | ephemeral  | Ready    | 2023-06-27 06:28:58PM | 2024-01-25 04:24:59PM | No         | No
af0644ef-ab71-3677-9409-473847af3925 | homedir    | Ready    | 2024-01-19 05:17:01PM | 2024-01-19 05:17:01PM | Yes        | No

Obtain Storage Class Information

Administrators can view information about a storage class like so:

$ fuzzball admin storage class info af0644ef-ab71-3677-9409-473847af3925