Stratis¶
Stratis is a local storage management solution built on device-mapper thin
provisioning. It organizes block devices into pools, which host XFS
filesystems with automatic thin provisioning, snapshots, and optional
encryption (LUKS2 via kernel keyring or Clevis/Tang NBDE). Managed by
the stratisd daemon via the stratis CLI and D-Bus.
Base Functionality¶
sts.stratis.base
¶
Base Stratis CLI wrapper, configuration, and cross-cutting patterns.
Patterns used across Stratis modules:
D-Bus Maybe-type [flag, value] pattern:
stratisd encodes optional D-Bus properties as two-element lists. [0, default] means the
value is not set; [1, actual_value] means the value is set. This pattern appears in
TotalPhysicalUsed, LastReencryptedTimestamp, Used, SizeLimit, and others
across pool.py and filesystem.py.
StratisOptions None-value convention:
In the StratisOptions type alias (dict[str, str | None]), a None value means the
key is a boolean CLI flag with no argument (e.g., '--trust-url': None produces just
--trust-url). A string value means the flag takes that argument (e.g.,
'--key-desc': 'mykey' produces --key-desc mykey).
Two-tier data fetching
stratis report provides basic pool/filesystem metadata (names, UUIDs, blockdevs).
stratis report managed_objects_report queries the D-Bus managed-objects interface for
additional data (sizes in bytes, encryption status, D-Bus variant fields). Code in pool.py
and filesystem.py typically calls both reports and merges results.
last_revision pattern:
The managed-objects report organizes data by D-Bus object path, then by interface revision
(e.g., org.storage.stratis3.pool.r5, ...r6, ...r7). Code uses
list(interfaces.keys())[-1] to select the highest (latest) revision, which carries the
most complete set of properties.
Key
pydantic-model
¶
Bases: StratisBase
Stratis encryption key management (kernel keyring).
Show JSON schema:
{
"$defs": {
"StratisConfig": {
"additionalProperties": false,
"description": "Stratis configuration controlling global CLI options.",
"properties": {
"unhyphenated_uuids": {
"default": false,
"title": "Unhyphenated Uuids",
"type": "boolean"
}
},
"title": "StratisConfig",
"type": "object"
}
},
"additionalProperties": false,
"description": "Stratis encryption key management (kernel keyring).",
"properties": {
"config": {
"$ref": "#/$defs/StratisConfig"
}
},
"title": "Key",
"type": "object"
}
Fields:
-
config(StratisConfig)
Source code in sts_libs/src/sts/stratis/base.py
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | |
exists(keydesc)
¶
Check if a key with the given description is registered.
Source code in sts_libs/src/sts/stratis/base.py
137 138 139 140 | |
list()
¶
List registered key descriptions.
Source code in sts_libs/src/sts/stratis/base.py
133 134 135 | |
reset(keydesc, keyfile_path)
¶
Reset key data for an existing key in the kernel keyring.
Source code in sts_libs/src/sts/stratis/base.py
120 121 122 123 124 125 126 127 | |
set(keydesc, keyfile_path)
¶
Register a key file under the given description.
Source code in sts_libs/src/sts/stratis/base.py
111 112 113 114 115 116 117 118 | |
unset(keydesc)
¶
Remove key registration (does not delete the key file).
Source code in sts_libs/src/sts/stratis/base.py
129 130 131 | |
StratisBase
pydantic-model
¶
Bases: CliTool
Base class for Stratis operations.
Show JSON schema:
{
"$defs": {
"StratisConfig": {
"additionalProperties": false,
"description": "Stratis configuration controlling global CLI options.",
"properties": {
"unhyphenated_uuids": {
"default": false,
"title": "Unhyphenated Uuids",
"type": "boolean"
}
},
"title": "StratisConfig",
"type": "object"
}
},
"additionalProperties": false,
"description": "Base class for Stratis operations.",
"properties": {
"config": {
"$ref": "#/$defs/StratisConfig"
}
},
"title": "StratisBase",
"type": "object"
}
Fields:
-
config(StratisConfig)
Source code in sts_libs/src/sts/stratis/base.py
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | |
version
cached
property
¶
Get Stratis CLI version.
get_report()
¶
Get system-wide Stratis report (pools, filesystems, block devices).
Source code in sts_libs/src/sts/stratis/base.py
96 97 98 99 100 101 102 103 104 105 | |
StratisConfig
pydantic-model
¶
Bases: StsBaseModel
Stratis configuration controlling global CLI options.
Show JSON schema:
{
"additionalProperties": false,
"description": "Stratis configuration controlling global CLI options.",
"properties": {
"unhyphenated_uuids": {
"default": false,
"title": "Unhyphenated Uuids",
"type": "boolean"
}
},
"title": "StratisConfig",
"type": "object"
}
Fields:
-
unhyphenated_uuids(bool)
Source code in sts_libs/src/sts/stratis/base.py
67 68 69 70 71 72 73 74 75 76 77 | |
to_args()
¶
Convert configuration to CLI arguments.
Source code in sts_libs/src/sts/stratis/base.py
72 73 74 75 76 77 | |
dbus_maybe_value(data, key)
¶
Extract value from a D-Bus Maybe-type [flag, value] field.
stratisd encodes optional D-Bus properties as [0, default]
(not set) or [1, actual_value] (set).
Source code in sts_libs/src/sts/stratis/base.py
55 56 57 58 59 60 61 62 63 64 | |
Pool Management¶
sts.stratis.pool
¶
Stratis pool management.
Two main classes:
PoolReport— fetches and holds pool metadata from stratisd. Uses the two-tier fetching pattern: firststratis reportfor filesystem/blockdev details, then the D-Bus managed-objects report for sizes and encryption state not exposed by the basic report.StratisPool— high-level pool management interface. Wraps aPoolReportand exposes pool operations (create, destroy, encryption, cache, etc.).
The managed-objects interface provides D-Bus-level details (total/used sizes, encryption state,
key descriptors, Clevis info) that are absent from the standard stratis report output.
See stratis.base module docstring for cross-cutting patterns (D-Bus Maybe-type,
StratisOptions convention, two-tier data fetching, last_revision).
BlockDevInfo
pydantic-model
¶
Bases: ReportModel
Block device information from stratis report.
Show JSON schema:
{
"description": "Block device information from stratis report.",
"properties": {
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path"
},
"size": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"uuid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Uuid"
},
"in_use": {
"default": false,
"title": "In Use",
"type": "boolean"
},
"blksizes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Blksizes"
},
"clevis_config": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Clevis Config"
},
"clevis_pin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Clevis Pin"
},
"key_description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Key Description"
}
},
"title": "BlockDevInfo",
"type": "object"
}
Fields:
-
path(str | None) -
size(str | None) -
uuid(str | None) -
in_use(CoerceBool) -
blksizes(str | None) -
clevis_config(dict[str, Any] | None) -
clevis_pin(str | None) -
key_description(str | None)
Source code in sts_libs/src/sts/stratis/pool.py
52 53 54 55 56 57 58 59 60 61 62 63 | |
BlockDevs
pydantic-model
¶
Bases: ReportModel
Block devices in a Stratis pool.
Pools have two storage tiers: datadevs for primary data storage and cachedevs for an
optional fast cache layer (typically SSDs accelerating HDDs).
Show JSON schema:
{
"$defs": {
"BlockDevInfo": {
"description": "Block device information from stratis report.",
"properties": {
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path"
},
"size": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"uuid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Uuid"
},
"in_use": {
"default": false,
"title": "In Use",
"type": "boolean"
},
"blksizes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Blksizes"
},
"clevis_config": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Clevis Config"
},
"clevis_pin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Clevis Pin"
},
"key_description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Key Description"
}
},
"title": "BlockDevInfo",
"type": "object"
}
},
"description": "Block devices in a Stratis pool.\n\nPools have two storage tiers: ``datadevs`` for primary data storage and ``cachedevs`` for an\noptional fast cache layer (typically SSDs accelerating HDDs).",
"properties": {
"datadevs": {
"items": {
"$ref": "#/$defs/BlockDevInfo"
},
"title": "Datadevs",
"type": "array"
},
"cachedevs": {
"items": {
"$ref": "#/$defs/BlockDevInfo"
},
"title": "Cachedevs",
"type": "array"
}
},
"title": "BlockDevs",
"type": "object"
}
Fields:
-
datadevs(list[BlockDevInfo]) -
cachedevs(list[BlockDevInfo])
Source code in sts_libs/src/sts/stratis/pool.py
101 102 103 104 105 106 107 108 109 | |
EncryptionInfo
pydantic-model
¶
Bases: StsBaseModel
Encryption metadata for a pool (key descriptions and Clevis bindings).
Uses StsBaseModel rather than ReportModel: PoolReport and StratisPool
are mutable and reassign self.encryption wholesale (see
_parse_pool_interface), which a frozen ReportModel would reject.
v1 pools have at most one binding (singular KeyDescription/ClevisInfo
in the D-Bus interface); v2 pools support multiple (plural
KeyDescriptions/ClevisInfos). Both are normalized to the plural
field names here — see PoolReport._parse_pool_interface.
Show JSON schema:
{
"additionalProperties": false,
"description": "Encryption metadata for a pool (key descriptions and Clevis bindings).\n\nUses `StsBaseModel` rather than `ReportModel`: `PoolReport` and `StratisPool`\nare mutable and reassign `self.encryption` wholesale (see\n`_parse_pool_interface`), which a frozen `ReportModel` would reject.\n\nv1 pools have at most one binding (singular ``KeyDescription``/``ClevisInfo``\nin the D-Bus interface); v2 pools support multiple (plural\n``KeyDescriptions``/``ClevisInfos``). Both are normalized to the plural\nfield names here \u2014 see `PoolReport._parse_pool_interface`.",
"properties": {
"key_descriptions": {
"default": null,
"title": "Key Descriptions"
},
"clevis_infos": {
"default": null,
"title": "Clevis Infos"
}
},
"title": "EncryptionInfo",
"type": "object"
}
Fields:
-
key_descriptions(Any) -
clevis_infos(Any)
Source code in sts_libs/src/sts/stratis/pool.py
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | |
__bool__()
¶
True if any encryption binding is present (dict-like truthiness).
Callers use if pool.encryption: to mean "is this pool encrypted",
matching the raw-dict behavior this model replaced.
Source code in sts_libs/src/sts/stratis/pool.py
82 83 84 85 86 87 88 | |
PoolCreateConfig
pydantic-model
¶
Bases: StsBaseModel
Pool creation configuration (encryption and integrity options).
Show JSON schema:
{
"additionalProperties": false,
"description": "Pool creation configuration (encryption and integrity options).",
"properties": {
"key_desc": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Key Desc"
},
"tang_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Tang Url"
},
"thumbprint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Thumbprint"
},
"clevis": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Clevis"
},
"trust_url": {
"default": false,
"title": "Trust Url",
"type": "boolean"
},
"no_overprovision": {
"default": false,
"title": "No Overprovision",
"type": "boolean"
},
"integrity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Integrity"
},
"journal_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Journal Size"
},
"tag_spec": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Tag Spec"
}
},
"title": "PoolCreateConfig",
"type": "object"
}
Fields:
-
key_desc(str | None) -
tang_url(str | None) -
thumbprint(str | None) -
clevis(str | None) -
trust_url(bool) -
no_overprovision(bool) -
integrity(str | None) -
journal_size(int | None) -
tag_spec(str | None)
Source code in sts_libs/src/sts/stratis/pool.py
342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 | |
PoolReport
pydantic-model
¶
Bases: StratisBase
Pool report data.
Mutable model that fetches and holds pool metadata from stratisd.
Call refresh() after construction to populate from the system.
Show JSON schema:
{
"$defs": {
"BlockDevInfo": {
"description": "Block device information from stratis report.",
"properties": {
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path"
},
"size": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"uuid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Uuid"
},
"in_use": {
"default": false,
"title": "In Use",
"type": "boolean"
},
"blksizes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Blksizes"
},
"clevis_config": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Clevis Config"
},
"clevis_pin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Clevis Pin"
},
"key_description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Key Description"
}
},
"title": "BlockDevInfo",
"type": "object"
},
"BlockDevs": {
"description": "Block devices in a Stratis pool.\n\nPools have two storage tiers: ``datadevs`` for primary data storage and ``cachedevs`` for an\noptional fast cache layer (typically SSDs accelerating HDDs).",
"properties": {
"datadevs": {
"items": {
"$ref": "#/$defs/BlockDevInfo"
},
"title": "Datadevs",
"type": "array"
},
"cachedevs": {
"items": {
"$ref": "#/$defs/BlockDevInfo"
},
"title": "Cachedevs",
"type": "array"
}
},
"title": "BlockDevs",
"type": "object"
},
"EncryptionInfo": {
"additionalProperties": false,
"description": "Encryption metadata for a pool (key descriptions and Clevis bindings).\n\nUses `StsBaseModel` rather than `ReportModel`: `PoolReport` and `StratisPool`\nare mutable and reassign `self.encryption` wholesale (see\n`_parse_pool_interface`), which a frozen `ReportModel` would reject.\n\nv1 pools have at most one binding (singular ``KeyDescription``/``ClevisInfo``\nin the D-Bus interface); v2 pools support multiple (plural\n``KeyDescriptions``/``ClevisInfos``). Both are normalized to the plural\nfield names here \u2014 see `PoolReport._parse_pool_interface`.",
"properties": {
"key_descriptions": {
"default": null,
"title": "Key Descriptions"
},
"clevis_infos": {
"default": null,
"title": "Clevis Infos"
}
},
"title": "EncryptionInfo",
"type": "object"
},
"StratisConfig": {
"additionalProperties": false,
"description": "Stratis configuration controlling global CLI options.",
"properties": {
"unhyphenated_uuids": {
"default": false,
"title": "Unhyphenated Uuids",
"type": "boolean"
}
},
"title": "StratisConfig",
"type": "object"
}
},
"additionalProperties": false,
"description": "Pool report data.\n\nMutable model that fetches and holds pool metadata from stratisd.\nCall ``refresh()`` after construction to populate from the system.",
"properties": {
"config": {
"$ref": "#/$defs/StratisConfig"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"blockdevs": {
"$ref": "#/$defs/BlockDevs"
},
"uuid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Uuid"
},
"encryption": {
"$ref": "#/$defs/EncryptionInfo"
},
"encrypted": {
"default": false,
"title": "Encrypted",
"type": "boolean"
},
"last_reencrypted_timestamp": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Last Reencrypted Timestamp"
},
"fs_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Fs Limit"
},
"available_actions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Available Actions"
},
"filesystems": {
"items": {
"type": "string"
},
"title": "Filesystems",
"type": "array"
},
"raw_data": {
"additionalProperties": true,
"title": "Raw Data",
"type": "object"
},
"total_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Total Size"
},
"used_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Used Size"
},
"object_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Object Path"
},
"prevent_update": {
"default": false,
"title": "Prevent Update",
"type": "boolean"
}
},
"title": "PoolReport",
"type": "object"
}
Fields:
-
config(StratisConfig) -
name(str | None) -
blockdevs(BlockDevs) -
uuid(str | None) -
encryption(EncryptionInfo) -
encrypted(bool) -
last_reencrypted_timestamp(str | None) -
fs_limit(int | None) -
available_actions(str | None) -
filesystems(list[str]) -
raw_data(dict[str, Any]) -
total_size(int | None) -
used_size(int | None) -
object_path(str | None) -
prevent_update(bool)
Source code in sts_libs/src/sts/stratis/pool.py
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 | |
get_all()
classmethod
¶
Get reports for all pools.
Returns:
| Type | Description |
|---|---|
list[PoolReport]
|
List of PoolReport instances |
Source code in sts_libs/src/sts/stratis/pool.py
297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 | |
get_device_paths()
¶
Get all device paths from the pool.
Returns:
| Type | Description |
|---|---|
list[str]
|
List of device paths for both data and cache devices |
Source code in sts_libs/src/sts/stratis/pool.py
287 288 289 290 291 292 293 294 295 | |
refresh()
¶
Refresh pool report data from stratisd.
Source code in sts_libs/src/sts/stratis/pool.py
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | |
update_from_managed_objects()
¶
Fetch encryption info and total/used size from the managed objects interface.
Source code in sts_libs/src/sts/stratis/pool.py
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 | |
StratisPool
pydantic-model
¶
Bases: StratisBase
Stratis pool representation.
Manages Stratis pools including creation, encryption, and cache.
Call refresh_report() after construction to populate report data.
Example
pool = StratisPool(name='pool1', blockdevs=['/dev/sda'])
pool.create() # create() calls refresh_report() internally
Show JSON schema:
{
"$defs": {
"BlockDevInfo": {
"description": "Block device information from stratis report.",
"properties": {
"path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Path"
},
"size": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"uuid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Uuid"
},
"in_use": {
"default": false,
"title": "In Use",
"type": "boolean"
},
"blksizes": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Blksizes"
},
"clevis_config": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Clevis Config"
},
"clevis_pin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Clevis Pin"
},
"key_description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Key Description"
}
},
"title": "BlockDevInfo",
"type": "object"
},
"BlockDevs": {
"description": "Block devices in a Stratis pool.\n\nPools have two storage tiers: ``datadevs`` for primary data storage and ``cachedevs`` for an\noptional fast cache layer (typically SSDs accelerating HDDs).",
"properties": {
"datadevs": {
"items": {
"$ref": "#/$defs/BlockDevInfo"
},
"title": "Datadevs",
"type": "array"
},
"cachedevs": {
"items": {
"$ref": "#/$defs/BlockDevInfo"
},
"title": "Cachedevs",
"type": "array"
}
},
"title": "BlockDevs",
"type": "object"
},
"EncryptionInfo": {
"additionalProperties": false,
"description": "Encryption metadata for a pool (key descriptions and Clevis bindings).\n\nUses `StsBaseModel` rather than `ReportModel`: `PoolReport` and `StratisPool`\nare mutable and reassign `self.encryption` wholesale (see\n`_parse_pool_interface`), which a frozen `ReportModel` would reject.\n\nv1 pools have at most one binding (singular ``KeyDescription``/``ClevisInfo``\nin the D-Bus interface); v2 pools support multiple (plural\n``KeyDescriptions``/``ClevisInfos``). Both are normalized to the plural\nfield names here \u2014 see `PoolReport._parse_pool_interface`.",
"properties": {
"key_descriptions": {
"default": null,
"title": "Key Descriptions"
},
"clevis_infos": {
"default": null,
"title": "Clevis Infos"
}
},
"title": "EncryptionInfo",
"type": "object"
},
"PoolReport": {
"additionalProperties": false,
"description": "Pool report data.\n\nMutable model that fetches and holds pool metadata from stratisd.\nCall ``refresh()`` after construction to populate from the system.",
"properties": {
"config": {
"$ref": "#/$defs/StratisConfig"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"blockdevs": {
"$ref": "#/$defs/BlockDevs"
},
"uuid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Uuid"
},
"encryption": {
"$ref": "#/$defs/EncryptionInfo"
},
"encrypted": {
"default": false,
"title": "Encrypted",
"type": "boolean"
},
"last_reencrypted_timestamp": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Last Reencrypted Timestamp"
},
"fs_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Fs Limit"
},
"available_actions": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Available Actions"
},
"filesystems": {
"items": {
"type": "string"
},
"title": "Filesystems",
"type": "array"
},
"raw_data": {
"additionalProperties": true,
"title": "Raw Data",
"type": "object"
},
"total_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Total Size"
},
"used_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Used Size"
},
"object_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Object Path"
},
"prevent_update": {
"default": false,
"title": "Prevent Update",
"type": "boolean"
}
},
"title": "PoolReport",
"type": "object"
},
"StratisConfig": {
"additionalProperties": false,
"description": "Stratis configuration controlling global CLI options.",
"properties": {
"unhyphenated_uuids": {
"default": false,
"title": "Unhyphenated Uuids",
"type": "boolean"
}
},
"title": "StratisConfig",
"type": "object"
}
},
"additionalProperties": false,
"description": "Stratis pool representation.\n\nManages Stratis pools including creation, encryption, and cache.\nCall ``refresh_report()`` after construction to populate report data.\n\nExample:\n ```python\n pool = StratisPool(name='pool1', blockdevs=['/dev/sda'])\n pool.create() # create() calls refresh_report() internally\n ```",
"properties": {
"config": {
"$ref": "#/$defs/StratisConfig"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"uuid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Uuid"
},
"encryption": {
"$ref": "#/$defs/EncryptionInfo"
},
"blockdevs": {
"items": {
"type": "string"
},
"title": "Blockdevs",
"type": "array"
},
"report": {
"anyOf": [
{
"$ref": "#/$defs/PoolReport"
},
{
"type": "null"
}
],
"default": null
},
"prevent_report_updates": {
"default": false,
"title": "Prevent Report Updates",
"type": "boolean"
}
},
"title": "StratisPool",
"type": "object"
}
Fields:
-
config(StratisConfig) -
name(str | None) -
uuid(str | None) -
encryption(EncryptionInfo) -
blockdevs(list[str]) -
report(PoolReport | None) -
prevent_report_updates(bool)
Source code in sts_libs/src/sts/stratis/pool.py
367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 | |
add_cache(blockdevs)
¶
Add cache devices to pool.
Source code in sts_libs/src/sts/stratis/pool.py
561 562 563 564 565 566 567 568 569 570 571 | |
add_data(blockdevs)
¶
Add data devices to pool.
Source code in sts_libs/src/sts/stratis/pool.py
517 518 519 520 521 522 523 524 525 526 527 528 529 530 | |
bind_keyring(key_desc)
¶
Bind pool encryption to a kernel keyring key.
Source code in sts_libs/src/sts/stratis/pool.py
573 574 575 576 577 578 579 580 581 582 583 | |
bind_tang(config)
¶
Bind pool encryption to a Tang server.
Source code in sts_libs/src/sts/stratis/pool.py
585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 | |
bind_tpm2()
¶
Bind pool encryption to TPM2.
Source code in sts_libs/src/sts/stratis/pool.py
604 605 606 607 608 609 610 611 612 613 614 | |
create(config=None)
¶
Create pool.
Source code in sts_libs/src/sts/stratis/pool.py
428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 | |
destroy()
¶
Destroy pool.
Source code in sts_libs/src/sts/stratis/pool.py
457 458 459 460 461 462 463 | |
encryption_off(*, in_place=False)
¶
Disable encryption on an encrypted pool.
This is a long-running operation (stratis >= 3.9.0). The CLI prints "Operation initiated" after ~10 seconds and returns, but the actual decryption continues in the background within stratisd. The pool's "Encryption Enabled" status is updated upon completion.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
in_place
|
bool
|
Perform the operation in place without additional devices |
False
|
Source code in sts_libs/src/sts/stratis/pool.py
717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 | |
encryption_on(*, key_desc=None, clevis=None, tang_url=None, thumbprint=None, trust_url=False, in_place=False)
¶
Enable encryption on an unencrypted pool.
This is a long-running operation (stratis >= 3.9.0). The CLI prints "Operation initiated" after ~10 seconds and returns, but the actual encryption continues in the background within stratisd. The pool's "Encryption Enabled" status is updated upon completion.
At least one of key_desc or clevis must be specified.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key_desc
|
str | None
|
Key description of key in kernel keyring |
None
|
clevis
|
str | None
|
Clevis encryption specification (nbde, tang, tpm2) |
None
|
tang_url
|
str | None
|
URL of Clevis tang server (requires clevis=tang or clevis=nbde) |
None
|
thumbprint
|
str | None
|
Thumbprint of tang server at specified URL |
None
|
trust_url
|
bool
|
Trust tang server URL without verification |
False
|
in_place
|
bool
|
Perform the operation in place without additional devices |
False
|
Source code in sts_libs/src/sts/stratis/pool.py
666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 | |
encryption_reencrypt(*, in_place=False)
¶
Reencrypt an encrypted pool with a new master key.
This is a long-running operation (stratis >= 3.9.0). The CLI prints "Operation initiated" after ~10 seconds and returns, but the actual reencryption continues in the background within stratisd. The pool's "Last Time Reencrypted" counter is incremented upon completion. Turning encryption off and back on resets the counter to 0.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
in_place
|
bool
|
Perform the operation in place without additional devices |
False
|
Source code in sts_libs/src/sts/stratis/pool.py
742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 | |
explain(code)
staticmethod
¶
Explain a pool alert code (e.g. "WS001").
Returns explanation text from stratis, or empty string on failure.
Source code in sts_libs/src/sts/stratis/pool.py
818 819 820 821 822 823 824 825 826 827 828 829 830 | |
extend_data()
¶
Extend data devices in the pool to use the full device size.
Source code in sts_libs/src/sts/stratis/pool.py
532 533 534 535 536 537 538 539 540 541 542 543 | |
from_report(report)
classmethod
¶
Create pool from report data.
Source code in sts_libs/src/sts/stratis/pool.py
832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 | |
get_all()
classmethod
¶
Get all Stratis pools.
Source code in sts_libs/src/sts/stratis/pool.py
850 851 852 853 854 855 856 857 858 859 860 861 | |
init_cache(blockdevs)
¶
Initialize cache tier with the given block devices.
Source code in sts_libs/src/sts/stratis/pool.py
545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 | |
list_pools(*, stopped=False, current_pool=True)
¶
List information about pools.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
stopped
|
bool
|
Display information about stopped pools only |
False
|
current_pool
|
bool
|
Filter to this pool (by UUID or name) |
True
|
Source code in sts_libs/src/sts/stratis/pool.py
465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 | |
overprovision(enable)
¶
Set overprovisioning mode for pool.
If set to "yes", the pool may allow overprovisioning, i.e., the sum of the logical sizes of the Stratis filesystems supported by the pool may exceed the amount of data space available.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
enable
|
str
|
"yes" or "no" |
required |
Source code in sts_libs/src/sts/stratis/pool.py
798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 | |
rebind_clevis()
¶
Rebind pool to Clevis.
Source code in sts_libs/src/sts/stratis/pool.py
629 630 631 632 633 634 635 636 637 638 639 640 | |
rebind_keyring(key_desc)
¶
Rebind pool encryption to a different keyring key.
Source code in sts_libs/src/sts/stratis/pool.py
616 617 618 619 620 621 622 623 624 625 626 627 | |
refresh_report()
¶
Create or refresh the pool report with the latest stratisd data.
Source code in sts_libs/src/sts/stratis/pool.py
410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 | |
rename(new_name)
¶
Rename pool.
Source code in sts_libs/src/sts/stratis/pool.py
768 769 770 771 772 773 774 775 776 777 778 779 780 781 | |
set_fs_limit(amount)
¶
Set the limit on the number of filesystems allowed per-pool.
This number may only be increased from its current value.
Source code in sts_libs/src/sts/stratis/pool.py
783 784 785 786 787 788 789 790 791 792 793 794 795 796 | |
setup_blockdevices()
classmethod
¶
Prepare physical disks for Stratis pool creation (test helper).
Lives in production code because it needs get_free_disks(). Groups disks by
(sector_size, block_size) and selects the largest group — stratisd requires uniform block
geometry within a pool. Zeroes the first 10 MiB of each selected disk to clear partition
tables, filesystem signatures, and LUKS headers.
Source code in sts_libs/src/sts/stratis/pool.py
863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 | |
start(unlock_method=None, token_slot=None)
¶
Start pool.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
unlock_method
|
UnlockMethod | None
|
Encryption unlock method |
None
|
token_slot
|
int | None
|
Token slot number for V2 pools |
None
|
Source code in sts_libs/src/sts/stratis/pool.py
484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 | |
stop()
¶
Stop pool.
Source code in sts_libs/src/sts/stratis/pool.py
507 508 509 510 511 512 513 514 515 | |
unbind_clevis()
¶
Unbind pool from Clevis.
Source code in sts_libs/src/sts/stratis/pool.py
654 655 656 657 658 659 660 661 662 663 664 | |
unbind_keyring()
¶
Unbind pool from keyring.
Source code in sts_libs/src/sts/stratis/pool.py
642 643 644 645 646 647 648 649 650 651 652 | |
TangConfig
pydantic-model
¶
Bases: StsBaseModel
Tang server configuration for Clevis NBDE encryption.
Show JSON schema:
{
"additionalProperties": false,
"description": "Tang server configuration for Clevis NBDE encryption.",
"properties": {
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Url"
},
"trust_url": {
"default": false,
"title": "Trust Url",
"type": "boolean"
},
"thumbprint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Thumbprint"
}
},
"title": "TangConfig",
"type": "object"
}
Fields:
-
url(str | None) -
trust_url(bool) -
thumbprint(str | None)
Source code in sts_libs/src/sts/stratis/pool.py
359 360 361 362 363 364 | |
Filesystem Management¶
sts.stratis.filesystem
¶
Stratis filesystem management.
Design notes
Each Stratis filesystem lives inside exactly one pool and uses XFS as the underlying filesystem type. Filesystems are thin-provisioned — they consume pool space only as data is written.
Two data sources are used:
- Basic metadata (name, UUID, origin) comes from
stratis reportand is parsed intoFilesystemReportbyget_all(). - Byte-accurate size/used/limit values come from
stratis report managed_objects_reportand are applied byupdate_from_managed_objects().
See stratis.base module docstring for cross-cutting patterns (D-Bus Maybe-type,
two-tier data fetching, last_revision).
FilesystemReport
pydantic-model
¶
Bases: ReportModel
Parsed filesystem data from stratis report.
Frozen (immutable) snapshot of one filesystem's report fields. Unknown JSON keys are silently ignored (extra='ignore').
Show JSON schema:
{
"description": "Parsed filesystem data from stratis report.\n\nFrozen (immutable) snapshot of one filesystem's report fields.\nUnknown JSON keys are silently ignored (extra='ignore').",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"uuid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Uuid"
},
"size": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"size_limit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Size Limit"
},
"origin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Origin"
},
"used": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Used"
}
},
"title": "FilesystemReport",
"type": "object"
}
Fields:
-
name(str | None) -
uuid(str | None) -
size(str | None) -
size_limit(str | None) -
origin(str | None) -
used(str | None)
Validators:
-
_normalize_stratis_sentinel→size_limit,origin,used
Source code in sts_libs/src/sts/stratis/filesystem.py
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | |
StratisFilesystem
pydantic-model
¶
Bases: StratisBase
Stratis filesystem representation.
Manages filesystems with thin provisioning, snapshots, and size
management. Call update_from_managed_objects() after construction
to populate size/used/limit from stratisd.
Example
fs = StratisFilesystem(name='fs1', pool_name='pool1')
fs.create()
Show JSON schema:
{
"$defs": {
"StratisConfig": {
"additionalProperties": false,
"description": "Stratis configuration controlling global CLI options.",
"properties": {
"unhyphenated_uuids": {
"default": false,
"title": "Unhyphenated Uuids",
"type": "boolean"
}
},
"title": "StratisConfig",
"type": "object"
}
},
"additionalProperties": false,
"description": "Stratis filesystem representation.\n\nManages filesystems with thin provisioning, snapshots, and size\nmanagement. Call ``update_from_managed_objects()`` after construction\nto populate size/used/limit from stratisd.\n\nExample:\n ```python\n fs = StratisFilesystem(name='fs1', pool_name='pool1')\n fs.create()\n ```",
"properties": {
"config": {
"$ref": "#/$defs/StratisConfig"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"pool_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Pool Name"
},
"uuid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Uuid"
},
"size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Size"
},
"size_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Size Limit"
},
"origin": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Origin"
},
"used": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Used"
}
},
"title": "StratisFilesystem",
"type": "object"
}
Fields:
-
config(StratisConfig) -
name(str | None) -
pool_name(str | None) -
uuid(str | None) -
size(int | None) -
size_limit(int | None) -
origin(str | None) -
used(int | None)
Source code in sts_libs/src/sts/stratis/filesystem.py
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 | |
cancel_revert()
¶
Cancel a previously scheduled snapshot revert.
Source code in sts_libs/src/sts/stratis/filesystem.py
273 274 275 276 277 278 279 | |
create(size=None, size_limit=None)
¶
Create filesystem.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
size
|
str | None
|
Initial size (e.g. "10G") |
None
|
size_limit
|
str | None
|
Size limit (e.g. "20G") |
None
|
Source code in sts_libs/src/sts/stratis/filesystem.py
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | |
destroy()
¶
Destroy filesystem.
Source code in sts_libs/src/sts/stratis/filesystem.py
201 202 203 204 205 206 207 | |
from_report(report, pool_name)
classmethod
¶
Create filesystem from report.
Size fields (size, used, size_limit) are not populated;
call update_from_managed_objects() separately if needed.
Source code in sts_libs/src/sts/stratis/filesystem.py
281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 | |
get_all(pool_name=None)
classmethod
¶
Get all Stratis filesystems, optionally filtered by pool name.
Source code in sts_libs/src/sts/stratis/filesystem.py
298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 | |
get_fs_uuid()
¶
Get filesystem UUID from the stratis report.
Source code in sts_libs/src/sts/stratis/filesystem.py
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 | |
rename(new_name)
¶
Rename filesystem.
Source code in sts_libs/src/sts/stratis/filesystem.py
209 210 211 212 213 214 215 216 217 218 | |
schedule_revert()
¶
Schedule a snapshot revert.
Sets a flag so that when the pool is next started, this snapshot will overwrite its origin filesystem. This filesystem must be a snapshot. A snapshot scheduled for revert cannot be destroyed; the scheduled revert must be cancelled first.
Source code in sts_libs/src/sts/stratis/filesystem.py
259 260 261 262 263 264 265 266 267 268 269 270 271 | |
set_size_limit(limit)
¶
Set filesystem size limit (e.g. "20G").
Source code in sts_libs/src/sts/stratis/filesystem.py
237 238 239 240 241 242 243 244 245 246 | |
snapshot(snapshot_name)
¶
Create a copy-on-write snapshot of this filesystem.
Source code in sts_libs/src/sts/stratis/filesystem.py
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 | |
unset_size_limit()
¶
Remove filesystem size limit, allowing growth up to pool capacity.
Source code in sts_libs/src/sts/stratis/filesystem.py
248 249 250 251 252 253 254 255 256 257 | |
update_from_managed_objects()
¶
Update size/used/limit from stratis report managed_objects_report.
Uses the managed-objects report which provides clean byte values directly, avoiding sector/unit parsing issues in the basic report.
Source code in sts_libs/src/sts/stratis/filesystem.py
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | |
Error Handling¶
sts.stratis.errors
¶
Stratis-related errors.
StratisBlockdevError
¶
Bases: StratisError
Error in a Stratis blockdev operation.
Source code in sts_libs/src/sts/stratis/errors.py
23 24 | |
StratisError
¶
Bases: STSError
Base class for Stratis-related errors.
Source code in sts_libs/src/sts/stratis/errors.py
11 12 | |
StratisFilesystemError
¶
Bases: StratisError
Error in a Stratis filesystem operation.
Source code in sts_libs/src/sts/stratis/errors.py
19 20 | |
StratisPoolError
¶
Bases: StratisError
Error in a Stratis pool operation.
Source code in sts_libs/src/sts/stratis/errors.py
15 16 | |