Metadata-Version: 2.4
Name: elastic-deepfreeze-core
Version: 1.0.0
Summary: Core library for Elasticsearch S3 Glacier archival - shared between curator and standalone deepfreeze
Project-URL: Homepage, https://github.com/elastic/deepfreeze
Project-URL: Documentation, https://github.com/elastic/deepfreeze/tree/main/packages/elastic-deepfreeze-core
Project-URL: Repository, https://github.com/elastic/deepfreeze
Author: Bret Wortman
License-Expression: Apache-2.0
Keywords: archival,elastic,elasticsearch,glacier,s3,snapshot
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Database
Classifier: Topic :: System :: Archiving
Requires-Python: >=3.8
Requires-Dist: boto3>=1.26.0
Requires-Dist: elasticsearch8>=8.0.0
Requires-Dist: rich>=13.0.0
Provides-Extra: dev
Requires-Dist: black>=23.0.0; extra == 'dev'
Requires-Dist: moto>=4.0.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.10.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Requires-Dist: ruff>=0.1.0; extra == 'dev'
Description-Content-Type: text/markdown

# Elastic Deepfreeze Core

Core library for Elasticsearch S3 Glacier archival operations.

## Overview

This package provides the shared functionality for deepfreeze operations, used by both:
- **elastic-deepfreeze-cli**: Standalone CLI tool
- **elasticsearch-curator**: Full Curator with deepfreeze support

## Installation

```bash
pip install elastic-deepfreeze-core
```

Or from source:
```bash
pip install git+https://github.com/elastic/deepfreeze.git#subdirectory=packages/elastic-deepfreeze-core
```

## Usage

This package is typically used as a dependency by other packages. For direct usage:

```python
from elastic_deepfreeze_core import (
    Setup, Status, Rotate, Thaw, Refreeze, Cleanup, RepairMetadata,
    s3_client_factory, create_es_client
)

# Create ES client
client = create_es_client(hosts=["https://localhost:9200"], username="elastic", password="changeme")

# Create and run an action
status = Status(client=client)
status.do_action()
```

## Components

### Actions
- `Setup` - Initialize deepfreeze environment
- `Status` - Display status of repositories and thaw requests
- `Rotate` - Create new repository, archive old ones to Glacier
- `Thaw` - Restore data from Glacier storage
- `Refreeze` - Return thawed data to Glacier
- `Cleanup` - Remove expired repositories and requests
- `RepairMetadata` - Fix metadata discrepancies

### Utilities
- `s3_client_factory` - Create S3 client for AWS
- `create_es_client` - Create Elasticsearch client
- Repository and Settings management functions

## Development

```bash
# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Format code
black elastic_deepfreeze_core/
ruff check elastic_deepfreeze_core/
```

## Why "elastic-deepfreeze-core"?

The package name includes the `elastic-` prefix to prevent dependency confusion attacks. See the [main README](../../README.md) for details.
