Metadata-Version: 2.4
Name: charmlibs-rollingops
Version: 1.0.0
Summary: The charmlibs.rollingops package.
Project-URL: Documentation, https://documentation.ubuntu.com/charmlibs/reference/charmlibs/rollingops
Project-URL: Repository, https://github.com/canonical/charmlibs/tree/main/rollingops
Project-URL: Issues, https://github.com/canonical/charmlibs/issues
Project-URL: Changelog, https://github.com/canonical/charmlibs/blob/main/rollingops/CHANGELOG.md
Author: The Data Platform team at Canonical
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.12
Requires-Dist: charmlibs-interfaces-tls-certificates>=1.8.1
Requires-Dist: charmlibs-pathops>=1.2.1
Requires-Dist: dpcharmlibs-interfaces==1.0.0
Requires-Dist: ops<4,>=2.23.1
Requires-Dist: pydantic>=2.12.5
Requires-Dist: shortuuid>=1.0.13
Requires-Dist: tenacity
Description-Content-Type: text/markdown

# charmlibs.rollingops

RollingOps is a Juju charm library for coordinating rolling operations
across application units.

It provides a single API to ensure that disruptive actions such as restarts,
reconfigurations, or maintenance tasks are executed in mutual exclusion,
with at most one unit operating at a time.

The library supports two coordination modes:

- **Peer-based (application level)**
  Uses peer relations to coordinate operations within a single application.

- **Etcd-based (cluster level)**
  Uses etcd for distributed coordination across units, enabling asynchronous,
  non-blocking execution of long-running operations.

To install, add `charmlibs-rollingops` to your Python dependencies. Then in your Python code, import as:

```py
from charmlibs import rollingops
```

See the [reference documentation](https://documentation.ubuntu.com/charmlibs/reference/charmlibs/rollingops) for more.

# Developing

Refer to [CONTRIBUTING.md](https://github.com/canonical/charmlibs/blob/main/CONTRIBUTING.md) for development instructions.

**Note:** Until this [issue](https://github.com/canonical/charmlibs/issues/449) is resolved,
you must explicitly set the Python version when running `just` commands:

```bash
just python=3.12 <recipe> rollingops
```
