Skip to content

Release v1.2.0: Security Groups, File Transfer, and Major Improvements#69

Merged
ivyleavedtoadflax merged 5 commits intomainfrom
release/v1.2.0
Jan 24, 2026
Merged

Release v1.2.0: Security Groups, File Transfer, and Major Improvements#69
ivyleavedtoadflax merged 5 commits intomainfrom
release/v1.2.0

Conversation

@ivyleavedtoadflax
Copy link
Owner

Summary

This PR brings all changes from the sandbox repository since v1.1.0, squashed into a single commit for a clean history.

New Features

  • Security Group Management: IP whitelisting commands (instance add-ip / instance remove-ip) with CIDR notation support
  • Volume Resize: New volume resize command for EBS volume management
  • File Transfer: Built-in instance copy and instance sync commands for file transfers via rsync/scp
  • Cumulative Cost Tracking: Track and display cumulative instance costs over time
  • Cache Clearing: Mechanism to clear AWS client caches (--clear-cache flag)
  • Dynamic Region Lookup: Region location names fetched via AWS SSM for accurate pricing
  • SSH Timeout Configuration: Configurable timeout for SSH connect command (--timeout flag)
  • Remote Execution: instance exec command to run commands on remote instances
  • Connect Enhancements: --start / --no-start flags to auto-start stopped instances
  • Consistency Improvements: Added --yes flag to ami create, snapshot create, instance type, and instance launch commands

Refactoring

  • Standardized error handling with @handle_cli_errors decorator across all modules
  • Consolidated SSH configuration into reusable SSHConfig class
  • Extracted shared utilities: create_table(), resolve_instance_or_exit(), get_status_style()
  • Standardized table column styling across CLI
  • Moved timing constants to settings.py for centralized configuration

Bug Fixes

  • AMI pagination for large AMI counts (>1000 images)
  • SSH key path validation before connect/exec commands
  • Instance type format validation in type command
  • Empty DNS validation in connect command
  • Exit code semantics (correct codes for non-success scenarios)
  • Mutual exclusivity validation for conflicting flags
  • ECS scale command validation for desired_count parameter

New Modules

  • remote/sg.py - Security group management
  • remote/tracking.py - Cost tracking functionality
  • remote/instance_resolver.py - Instance resolution utilities

Test Plan

  • All 400+ tests passing
  • Manual testing of new security group commands
  • Manual testing of file transfer commands
  • Manual testing of volume resize command
  • Verify pricing works with dynamic region lookup

…ovements

## New Features

### Security Group Management
- IP whitelisting commands (`instance add-ip` / `instance remove-ip`)
- CIDR notation support for flexible IP range management

### Volume Management
- `volume resize` command for EBS volume management

### File Transfer
- Built-in `instance copy` and `instance sync` commands via rsync/scp

### Cost Tracking
- Cumulative instance cost tracking over time
- Dynamic region location lookup via AWS SSM for accurate pricing

### Instance Management
- `instance exec` command to run commands on remote instances
- `--start` / `--no-start` flags for connect command to auto-start stopped instances
- Configurable timeout for SSH connect command (`--timeout` flag)
- Cache clearing mechanism for AWS clients (`--clear-cache` flag)

### Consistency Improvements
- Added `--yes` flag to ami create, snapshot create, instance type, and instance launch commands
- Exclude terminated instances by default in instance list command

## Refactoring

- Standardized error handling with `@handle_cli_errors` decorator
- Consolidated SSH configuration into reusable SSHConfig class
- Extracted shared utilities: create_table(), resolve_instance_or_exit(), get_status_style()
- Standardized table column styling across CLI
- Moved timing constants to settings.py
- Refactored ECS module with cleaner command names

## Bug Fixes

- AMI pagination for large AMI counts (>1000 images)
- SSH key path validation before connect/exec commands
- Instance type format validation
- Empty DNS validation in connect command
- Exit code semantics for non-success scenarios
- Mutual exclusivity validation for conflicting flags
- ECS scale command validation for desired_count parameter
- Debug logging for silent failure cases in pricing module

## New Modules

- `remote/sg.py` - Security group management
- `remote/tracking.py` - Cost tracking functionality
- `remote/instance_resolver.py` - Instance resolution utilities

## Test Coverage

- 400+ tests with comprehensive edge case coverage
- New test suites for sg, tracking, and volume_resize modules
- Change helper function parameter types to list[Any] for boto3-stubs compatibility
- Change return types to Any to avoid no-any-return errors
- Use separate variable for modify_volume response to avoid type confusion
- Remove progress.md from repository
Rich's error formatting inserts ANSI color codes between dashes in
flag names (e.g., --start becomes "-" + ANSI + "-start"), breaking
assertions that check for the literal string "--start".

Simplified tests to only check for "Cannot use both" message which
is unaffected by formatting.
Brings in:
- Gradient logo feature for CLI help output
- Logo module and tests

Conflicts resolved:
- __main__.py: Added both sg_app and logo imports
- test_config.py: Kept release branch version (already has working test isolation)
- test_configuration_fix.py: Deleted (not needed in release)
@ivyleavedtoadflax ivyleavedtoadflax merged commit 52e1172 into main Jan 24, 2026
3 checks passed
@ivyleavedtoadflax ivyleavedtoadflax deleted the release/v1.2.0 branch January 24, 2026 18:53
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