Skip to content

Comments

allow a change of storage tier with the --change-tier option and fixes #171

Merged
dirkpetersen merged 7 commits intomainfrom
dev
Oct 17, 2025
Merged

allow a change of storage tier with the --change-tier option and fixes #171
dirkpetersen merged 7 commits intomainfrom
dev

Conversation

@dirkpetersen
Copy link
Owner

feature:

  • allow a change of storage tier with the --change-tier option while in s3
  • added CLAUDE.md instructions

fix:

  • installer issue with pipx while in venv

Dirk Petersen and others added 7 commits October 16, 2025 18:10
Added comprehensive documentation for Claude Code to understand:
- Project architecture and single-file monolithic design
- Core classes with line numbers for navigation
- Development workflow and testing procedures
- Key data flows and important file artifacts
- Release process and HPC-specific considerations

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Implemented `froster restore --change-tier` to allow users to change
AWS S3 storage tiers for archived data without restoring it.

New Components:
- TableStorageTierSelector: Interactive Textual TUI for tier selection
  with cost estimates and folder information display
- AWSBoto.change_storage_class(): S3 tier change implementation using
  copy_object API, preserves STANDARD tier for metadata files
- Commands._change_storage_tier(): Workflow orchestration with database
  sync and user confirmation

Features:
- Available tiers: INTELLIGENT_TIERING, STANDARD_IA, ONEZONE_IA, GLACIER_IR
- Blocks moves FROM Glacier/Deep Archive (not allowed)
- Preserves STANDARD tier for: Froster.allfiles.csv, .froster.md5sum
- Updates local database (froster-archives.json) after tier change
- Interactive TUI with cost information and confirmation prompts

Usage:
  froster restore --change-tier [folder]

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
New feature: storage tier change with --change-tier option

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Fixed pipx installation to handle both system Python and virtual
environments properly.

Changes:
- Skip pipx installation entirely when LOCAL_INSTALL=true (uses pip
  directly for editable installs)
- Add fallback chain for pipx installation:
  1. Try --user flag (system install)
  2. Try --user --break-system-packages (newer pip)
  3. Try without --user (works in venv)
- Better error handling with warnings instead of hard failures
- Clearer status messages showing installation method and version

Now supports all scenarios:
- System Python installation
- Virtual environment with LOCAL_INSTALL=true
- Virtual environment for regular PyPI install
- CI/CD environments

Fixes issue where install.sh would fail in fresh virtual environments
with "No module named pipx" error.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
… output

Replaced plain input() prompt with proper Textual TUI modal dialog for
storage tier change confirmation. Fixed console output by removing rich
markup tags that were displaying as literal text.

Changes:
- Added ScreenConfirmTierChange: Modal dialog with "Proceed"/"Cancel" buttons
- Added TableStorageTierConfirmApp: Wrapper app to launch confirmation modal
- Removed all rich markup tags ([bold], [green], [red], [yellow]) from
  console output in AWSBoto.change_storage_class() and Commands._change_storage_tier()
- Replaced input() prompt with interactive Textual modal for better UX

Now provides:
- Clean console output without markup artifacts
- Professional confirmation dialog matching Froster's UI style
- Consistent user experience across all Textual TUI components

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…tier

Improved tier change UX with proper modal behavior and prevented
selecting the same tier as migration target.

Changes:
- Confirmation modal now appears as overlay on tier selection screen
  (not as separate app with dark background)
- Removed TableStorageTierConfirmApp wrapper class (no longer needed)
- Modified TableStorageTierSelector to use push_screen() for modal
- Added handle_confirmation() to allow users to cancel and reselect
- Excluded current tier from available migration targets

User experience improvements:
- Modal appears over existing screen (proper modal behavior)
- Can cancel and select different tier without restarting
- Cannot accidentally select same tier as migration target
- Cleaner, more intuitive workflow

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Added GLACIER (Flexible Retrieval) and DEEP_ARCHIVE to the list of
available storage tiers for migration, while maintaining the restriction
that data cannot be moved FROM these tiers.

New tiers added:
- GLACIER: Glacier Flexible Retrieval
  - Storage: $3.6/TiB/mo
  - Retrieval: 3-5 hours, $10/TiB
  - Use case: Low-cost archive with hours-based retrieval

- DEEP_ARCHIVE: Glacier Deep Archive
  - Storage: $1/TiB/mo (lowest cost)
  - Retrieval: 12-48 hours, $2.50/TiB
  - Use case: Long-term archive, lowest storage cost

Users can now migrate TO Glacier/Deep Archive for maximum cost savings,
but the existing restriction prevents migration FROM these tiers
(restore required first).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@dirkpetersen dirkpetersen merged commit 7db71bd into main Oct 17, 2025
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant