# Pure Storage FlashBlade Driver for OpenStack Manila

The Pure Storage FlashBlade Manila driver provides NFS shared file systems to OpenStack using Pure Storage’s FlashBlade native filesystem capabilities.

## Supported Operations

The following operations are supported with Pure Storage FlashBlade:

- Create/delete NFS shares

  - Shares are not accessible until access rules allow access

- Allow/deny NFS share access

  - IP access rules are required for NFS share access

- Create/delete snapshots

- Expand and Shrink shares

- Revert to Snapshot

Share networks are not supported. Shares are created directly on the FlashBlade without the use of a share server or service VM. Network connectivity is setup outside of Manila.

## General Requirements

On the system running the Manila share service:

- purity_fb 1.12.1 or newer from PyPI.

On the Pure Storage FlashBlade:

- Purity//FB Operating System software version 2.3.0 or higher

## Network Requirements

Connectivity between the FlashBlade (REST) and the manila host is required for share management.

Connectivity between the clients and the FlashBlade is required for mounting and using the shares. This includes:

- Routing from the client to the external network

- Assigning the client an external IP address (e.g., a floating IP)

- Configuring the manila host networking properly for IP forwarding

- Configuring the FlashBlade networking properly for client subnets

## Driver Configuration

Before configuring the driver, make sure the following networking requirements have been met:

- A management subnet must be accessible from the system running the Manila share services

- A data subnet must be accessible from the system running the Nova compute services

- An API token must be available for a user with administrative privileges

Perform the following steps:

1. Configure the Pure Storage FlashBlade parameters in manila.conf

2. Configure/create a share type

3. Restart the services

It is also assumed that the OpenStack networking has been confiured correctly.

### Step 1 - FlashBlade Parameters configuration

The following parameters need to be configured in the [DEFAULT] section of /etc/manila/manila.conf:

Option | Description
--- | ---
enabled_share_backends | Name of the section on `manila.conf` used to specify a backend. For example: enabled_share_backends = flashblade
enabled_share_protocols | Specify a list of protocols to be allowed for share creation. This driver version only supports NFS

The following parameters need to be configured in the [backend] section of `/etc/manila/manila.conf`:

Option | Description
--- | ---
share_backend_name | A name for the backend.
share_driver | Python module path. For this driver this must be: manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver
driver_handles_share_servers | Driver working mode. For this driver this must be: False.
flashblade_mgmt_vip | The name (or IP address) for the Pure Storage FlashBlade storage system management VIP.
flashblade_data_vip | The names (or IP address) for the Pure Storage FlashBlade storage system data VIPs.
flashblade_api | API token for an administrative user account
flashblade_eradicate (Optional) | When enabled, all FlashBlade file systems and snapshots will be eradicated at the time of deletion in Manila. Data will NOT be recoverable after a delete with this set to True! When disabled, file systems and snapshots will go into pending eradication state and can be recovered. Default value is True.

Below is an example of a valid configuration of the FlashBlade driver:

    [DEFAULT]
    ...
    enabled_share_backends = flashblade
    enabled_share_protocols = NFS
    ...

    [flashblade]
    share_backend_name = flashblade
    share_driver = manila.share.drivers.purestorage.flashblade.FlashBladeShareDriver
    driver_handles_share_servers = False
    flashblade_mgmt_vip = 1.2.3.4
    flashblade_data_vip = 1.2.3.5,1.2.3.6
    flashblade_api = T-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Restart of manila-share service is needed for the configuration changes to take effect.

### Step 2 - Share Type Configuration

Shared File Systems service requires that the share type includes the driver_handles_share_servers extra-spec. This ensures that the share will be created on a backend that supports the requested driver_handles_share_servers capability. For the Pure Storage FlashBlade Driver for OpenStack this must be set to False.

    $ manila type-create flashblade False

Additionally, the driver also reports the following common capabilities that can be specified in the share type:

Capability | Description
--- | ---
thin_provisioning = True | All shares created on FlashBlade are always thin provisioned. If you set it this, the value must be: True.
snapshot_support = True/False | FlashBlade supports share snapshots. If you set this, the value must be: True.
revert_to_snapshot = True/False | FlashBlade supports reverting a share to the latest available snapshot. If you set this, the value must be: True.

To specify a common capability on the share type, use the type-key command, for example:

    $ manila type-key flashblade set snapshot_support=True
    $ manila type-key flashblade set revert_to_snapshot=True

### Step 3 - Restart the Services

Restart all Shared File Systems services (manila-share, manila-scheduler and manila-api). This step is specific to your environment. for example, systemctl restart <controller>@manila-shr is used to restart the share service.

## The `manila.share.drivers.purestorage.flashblade` Module

Pure Storage FlashBlade Share Driver

class FlashBladeShareDriver(*args, **kwargs)

  Bases: `ShareDriver`

  Version hisotry:

  1.0.0 - Initial version 2.0.0 - Xena release 3.0.0 - Yoga release 4.0.0 - Zed release 5.0.0 - Antelope release 6.0.0 - Bobcat release 7.0.0 - 2024.1 (Caracal) release

  USER_AGENT_BASE = 'OpenStack Manila'
  VERSION = '7.0'
  create_share(context, share, share_server=None)

    Create a share and export it based on protocol used.

  create_snapshot(context, snapshot, share_server=None)

    Called to create a snapshot

  delete_share(context, share, share_server=None)

    Called to delete a share

  delete_snapshot(context, snapshot, share_server=None)

    Called to delete a snapshot

  do_setup(context)

    Driver initialization

  ensure_share(context, share, share_server=None)

    Dummy - called to ensure share is exported.

    All shares created on a FlashBlade are guaranteed to be exported so this check is redundant

  extend_share(share, new_size, share_server=None)

    uses resize_share to extend a share

  revert_to_snapshot(context, snapshot, share_access_rules, snapshot_access_rules, share_server=None)

    Reverts a share (in place) to the specified snapshot.

    Does not delete the share snapshot. The share and snapshot must both be ‘available’ for the restore to be attempted. The snapshot must be the most recent one taken by Manila; the API layer performs this check so the driver doesn’t have to.

    The share must be reverted in place to the contents of the snapshot. Application admins should quiesce or otherwise prepare the application for the shared file system contents to change suddenly.

    Parameters:

      - context – Current context

      - snapshot – The snapshot to be restored

      - share_access_rules – List of all access rules for the affected share

      - snapshot_access_rules – List of all access rules for the affected snapshot

      - share_server – Optional – Share server model or None

  shrink_share(share, new_size, share_server=None)

    uses resize_share to shrink a share

  update_access(context, share, access_rules, add_rules, delete_rules, share_server=None)

    Update access of share

purity_fb_to_manila_exceptions(func)

this page last updated: 2026-03-20 00:20:57

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug