Skip to content

configure.flexfs

configure.flexfs is the management CLI for flexFS Enterprise. It provides CRUD operations on all admin server resource types, communicating with the admin server over its REST API.

The tool follows a verb/resource model: a verb subcommand (create, delete, list, show, or update) is paired with a <resource> and, for create and update, a set of --field flags. The init creds, deinit creds, license, and version subcommands manage credentials and print build metadata.

It runs in two modes. When run without arguments from a terminal, it starts an interactive REPL with tab completion and command history:

configure.flexfs> list volumes
configure.flexfs> show volume <volume-name>
configure.flexfs> create volume --name test --metaStoreID 1 --blockStoreID 1
configure.flexfs> exit

Commands can also be run directly from the shell in single-command mode:

Terminal window
configure.flexfs list volumes --json
configure.flexfs create volume --name test --metaStoreID 1 --blockStoreID 1

These flags apply to every subcommand.

FlagTypeDefaultDescriptionVisibility
--adminAddrstring""Admin server address (overrides credentials file)Internal
--credsFilestring~/.flexfs/configure/credsCredentials file pathPublic
--jsonboolfalseOutput results as JSONPublic
--noAdminSSLboolfalseDisable SSL for admin server connectionsInternal
--reportErrorsboolfalseReport errors and panics to Paradigm4Public
--tokenstring""Account auth token (overrides credentials file)Internal
SubcommandDescriptionVisibility
createCreate a resourcePublic
deinit credsRemove the credentials filePublic
deleteDelete a resourcePublic
init credsInitialize the credentials filePublic
licensePrint license informationPublic
listList resourcesPublic
showShow details for a single resourcePublic
updateUpdate an existing resourcePublic
versionPrint the build versionPublic

The verbs operate on the following resource types. The resource is named on the command line by its command name; the API name is used in REST paths and JSON output.

ResourceAPI NameDescription
accountaccountsUser account
block-apiblock-apisBlock store API type
block-storeblock-storesBlock store (bucket configuration)
meta-storemeta-storesMetadata store
providerprovidersCloud provider
proxy-groupproxy-groupsProxy group
regionregionsProvider region
volumevolumesVolume
volume-proxy-groupvolume-proxy-groupsVolume-to-proxy-group association
volume-tokenvolume-tokensVolume access token
Terminal window
configure.flexfs create <resource> --field=value ...

Creates a new resource of the given type. The fields accepted depend on the resource; each resource’s fields are documented in the ### subsections below. Fields marked required must be supplied on create.

The --flags field on volumes and volume tokens draws its values from a shared vocabulary documented in Accepted Volume and Token Flags.

Accounts cannot be created with configure.flexfs; the following fields are accepted on update.

FlagTypeDefaultDescriptionVisibility
--emailstring""Email addressPublic
--namestring""Account namePublic
--tokenstring""Auth token (UUID)Public

The following fields are available on create. On update, only --address, --namespace, --password, --prefix, and --username are accepted.

FlagTypeDefaultDescriptionVisibility
--addressstring""Endpoint addressPublic
--apiCodestring""Block API code (s3, gcs, azure, oci) (required, create only)Public
--bucketstring""Block storage bucket (required, create only)Public
--namespacestring""Object storage namespace (required for oci, rejected for every other API)Public
--passwordstring""Access passwordPublic
--prefixstringflexfsKey prefix within bucketPublic
--providerCodestring""Provider code (required, create only)Public
--regionCodestring""Region code (required, create only)Public
--usernamestring""Access usernamePublic

The following fields are available on create. On update, only --address and --token are accepted.

FlagTypeDefaultDescriptionVisibility
--addressstring""Server address (required for create)Public
--providerCodestring""Provider code (required, create only)Public
--regionCodestring""Region code (required, create only)Public
--tokenstring""Auth token (UUID, auto-generated if omitted)Public

The following fields are available on both create and update.

FlagTypeDefaultDescriptionVisibility
--codestring""Provider code (required for create)Public
--namestring""Provider name (required for create)Public

The following fields are available on create. On update, only --addresses is accepted.

FlagTypeDefaultDescriptionVisibility
--addressesstring""Comma-separated proxy addresses (required for create)Public
--providerCodestring""Provider code (required, create only)Public
--regionCodestring""Region code (required, create only)Public

The following fields are available on create. On update, only --code and --name are accepted.

FlagTypeDefaultDescriptionVisibility
--codestring""Region code (required for create)Public
--namestring""Region name (required for create)Public
--providerCodestring""Provider code (required, create only)Public

The following fields are available on create. On update, --blockSize, --compression, --encryption, and --id are not accepted.

FlagTypeDefaultDescriptionVisibility
--blockSizestring4MiBBlock size, e.g. 4MiB, 256KiB, or raw bytes (create only)Public
--blockStoreIDint640Block store ID (required for create)Public
--compressionstringlz4Compression algorithm: lz4, snappy, zstd, or none (create only)Public
--encryptionboolfalseEnable end-to-end encryption (create only)Public
--flagsstring""Comma-separated mount flags (see Accepted Volume and Token Flags)Public
--idstringauto-generatedVolume ID, UUID (create only)Public
--maxBlocksint640Max block count, 0 = unlimitedPublic
--maxInodesint640Max inode count, 0 = unlimitedPublic
--maxProxiedint640Max proxied blocks per file, 0 = unlimitedPublic
--metaStoreIDint640Metadata store ID (required for create)Public
--namestring""Volume name (required for create)Public
--notesstring""Free-form notesPublic
--retentionstring7dRetention duration (e.g. 7d, 168h, 30m) or seconds; -1 = foreverPublic

Volume-to-proxy-group associations cannot be updated; the following fields are accepted on create only.

FlagTypeDefaultDescriptionVisibility
--proxyGroupIDint640Proxy group ID (required)Public
--volumeIDstring""Volume ID or name (required)Public

The following fields are available on create. On update, only --flags, --mountPath, and --notes are accepted.

FlagTypeDefaultDescriptionVisibility
--flagsstring""Comma-separated mount flags, plus the volume token flags (see Accepted Volume and Token Flags)Public
--mountPathstring""Subdirectory path to mount as root (e.g. /data/project). Also scopes the token’s reporting queries.Public
--notesstring""Free-form notesPublic
--tokenstringauto-generatedAccess token, UUID (create only)Public
--volumeIDstring""Volume ID or name (required, create only)Public

The --flags field on volumes and volume tokens accepts a comma-separated list of mount options. When set on a volume, they apply to all mounts of that volume. When set on a volume token, they are merged with the volume-level flags (token flags take precedence).

Most flags are accepted in both places. The volume token flags below are accepted on a volume token only.

Boolean flags are enabled by name. Key-value flags use name=value syntax (e.g., umask=0027,attrvalid=3600); values are validated when set, so a flag that is accepted here is one that will be honored.

Flag names are matched case-insensitively and ignoring hyphens, so noAtime, noatime, and no-atime are the same flag, as are anonUID and anon-uid. Whitespace is not significant and is removed before the list is stored.

FlagEffect
aclEnable extended ACL support (implies xattr)
allsquashMap every uid / gid to the anonymous uid / gid (implies rootsquash)
noatimeDisable access-time updates
noexecPrevent execution of files
nonemptyAllow mounting over a non-empty directory
noprefetchDisable block prefetching
noproxyBypass proxy servers for all block I/O
noproxyreadsBypass proxy servers for block reads
noproxywritesBypass proxy servers for block writes
nosuidDisable SUID/SGID special permissions
reporterrorsRequire mounts to report panics and background failures to Paradigm4 (--reportErrors), including the mount log of a client that fails to start. An admin or free server started with --reportMountErrors adds this flag to every volume it serves
roRead-only (implies noatime)
rootsquashMap uid 0 / gid 0 to the anonymous uid / gid (implies acl)
xattrEnable extended attribute support

These flags are accepted on a volume token and rejected on a volume.

FlagEffect
adminAllows the token to run reporting queries against the metadata server — /find, /analyze/* and /duplicates, which list file and directory names along with their owners and permissions

A flag set on a volume applies to every token of that volume, so a grant meant for one token belongs on that token. Grant it when creating or updating a volume token:

Terminal window
configure.flexfs create volume-token \
--volumeID <volume-name> \
--flags admin \
--notes "reporting for the storage team"

admin says nothing about how a volume is mounted and has no effect on a mount, so the same token can be used for both. It is still worth issuing a separate token for reporting, so that the grant can be withdrawn without disturbing any mount.

Where a volume token also sets a mount path, its reporting queries are confined to that subdirectory, exactly as its mounts are. See Metadata REST API.

FlagTypeEffect
anongid=Nuint32GID squashed callers are mapped to
anonuid=Nuint32UID squashed callers are mapped to
attrvalid=Nuint64Attribute cache TTL in seconds
attrvalidnsec=Nuint32Nanosecond offset for attrvalid
entryvalid=Nuint64Directory entry cache TTL in seconds
entryvalidnsec=Nuint32Nanosecond offset for entryvalid
umask=NNNNoctalFile creation mask, with or without a leading 027 and 0027 mean the same thing; max 0777

For boolean flags, either the local mount option or the server-side flag can enable the behavior — neither side can disable what the other enables. For key-value flags, the server-side value takes precedence over the local mount option when set. The squash flags do not follow either rule; see below.

Volume token flags are outside these rules entirely: they are not mount options, so there is nothing on the mount side for them to combine with.

rootsquash, allsquash, anonuid and anongid are the only flags a mount is refused for setting locally as an unprivileged user — setting them here is how a volume squashes mounts whose users it does not control. (Other options can be unavailable to a non-root mount without refusing it: SUID/SGID cannot be enabled, and allow_other may not be permitted.)

They are also the exception to the combining rules above. Setting rootsquash or allsquash here replaces the mount’s entire local squash configuration rather than combining with it: --rootSquash, --allSquash, --anonUID and --anonGID are all discarded, whether or not this side states an identity of its own — an unstated identity falls back to 65534, not to what the mount asked for. So a local --allSquash does not take effect against a volume that sets only rootsquash, which is the one case where a locally enabled boolean is disabled by the server side.

A mount whose root is being squashed chooses neither what it is squashed to nor how widely: use anonuid / anongid here to pick a non-default identity, and allsquash here to squash every caller.

Terminal window
configure.flexfs deinit creds

Removes the credentials file for configure.flexfs. Removing a file that is not there is not an error: deinit creds is idempotent.

Terminal window
configure.flexfs delete <resource> <id>

Deletes the resource of the given type identified by the positional <id> (the resource’s primary key, e.g. a numeric ID, name, or UUID depending on the resource).

Terminal window
configure.flexfs init creds [flags]

Initializes a credentials file for configure.flexfs with the admin server address and an account token. If --token is omitted, the command prompts for it interactively.

FlagTypeDefaultDescriptionVisibility
--adminAddrstring""Admin server address (required)Public
--forceboolfalseOverwrite existing credentials filePublic
--tokenstring""Account auth token (will prompt if omitted)Public
Terminal window
configure.flexfs list <resource> [flags]

Lists all instances of the given resource. list all dumps every resource type in dependency order. Output columns that are empty across every row are hidden unless --json is set.

Every list <resource> accepts a --<field> filter for each column of that resource — for example list block-stores --providerCode aws or list volumes --name myvol. Filters match exactly and combine with AND. Run configure.flexfs list <resource> --help for the exact set a given resource accepts.

In addition, list volume-proxy-groups and list volume-tokens accept a join filter that the raw columns do not provide:

FlagTypeDefaultDescriptionVisibility
--volumeNamestring""Filter by volume namePublic
Terminal window
configure.flexfs show <resource> <id>

Shows the full details for a single resource identified by the positional <id> (the resource’s primary key, e.g. a numeric ID, name, or UUID depending on the resource).

Terminal window
configure.flexfs update <resource> <id> --field=value ...

Updates an existing resource identified by the positional <id>. At least one --field must be specified.

update accepts the same per-resource fields as create, with the per-resource restrictions noted in each field table above (for example, block-store update accepts only --address, --namespace, --password, --prefix, and --username; volume update does not accept --blockSize, --compression, --encryption, or --id). The --flags vocabulary is documented under Accepted Volume and Token Flags.