Skip to content

epic: Presentation Planning and Demo Preparation #412

@joshrotenberg

Description

@joshrotenberg

Overview

Preparation for team presentation on redisctl - the first CLI tool for Redis Cloud and Enterprise management.

The Narrative

Problem: Redis Has NO CLI Tooling

The painful reality today:

  • Redis Cloud: Web UI only, or raw curl scripts
  • Redis Enterprise: Web UI only, or raw curl scripts
  • Support packages: Manual download, manual upload, no automation
  • Multi-step operations: Write your own bash scripts with polling loops
  • Multiple deployments: Manage API keys/passwords in scattered places
  • CI/CD integration: Roll your own with fragile HTTP calls
  • Monitoring/automation: Everyone reinvents the wheel

What people actually do:

# The "best practice" before redisctl
curl -X POST https://api.redislabs.com/v1/subscriptions \
  -H "x-api-key: $KEY" \
  -H "x-api-secret-key: $SECRET" \
  -H "Content-Type: application/json" \
  -d '{"name":"prod","cloudProviders":[...]}'

# Then poll for completion
while true; do
  curl https://api.redislabs.com/v1/tasks/$TASK_ID ...
  # Parse JSON, check status, sleep, repeat
done

# Then create database with another curl...
# Poll again...

Solution: redisctl - First-Class CLI

What redisctl enables:

# Profile setup (one time)
redisctl profile set prod --api-key $KEY --api-secret $SECRET

# Create subscription and wait for completion
redisctl cloud subscription create \
  --name prod \
  --cloud-provider AWS \
  --region us-east-1 \
  --wait

# Everything else just works
redisctl cloud database create --subscription $SUB --name mydb --wait
redisctl enterprise support-package cluster --upload
redisctl enterprise workflow init-cluster

Key Metrics

  • FIRST CLI tool for Redis Cloud and Enterprise
  • ✅ 50+ API handlers (comprehensive coverage)
  • ✅ 85%+ test coverage (production quality)
  • ✅ 21 Cloud + 29 Enterprise endpoints
  • ✅ Support packages: 10+ minutes → 30 seconds
  • ✅ Async operations: No more polling scripts
  • ✅ Library architecture: Reusable components

Architecture Highlights

├── redisctl-config         # ✅ Profile/credentials management
├── redis-cloud             # ✅ Cloud API client (21 handlers)
├── redis-enterprise        # ✅ Enterprise API client (29 handlers)
└── redisctl                # CLI binary (human-friendly layer)

Future: Extracted workflows + output libraries → Platform for ecosystem

Demo Plan

1. The "Before" (Pain Point)

Show ugly curl + jq + while loop script for:

  • Creating subscription
  • Polling for completion
  • Creating database
  • Polling again

2. The "After" (redisctl Magic)

Show same operation in one line:

redisctl cloud subscription create --name demo --wait

3. Key Features Demo

Profile Management:

redisctl profile set prod --use-keyring  # Secure credential storage
redisctl profile list

Enterprise Workflow (against local Docker):

docker compose up -d
redisctl enterprise workflow init-cluster  # Multi-step orchestration
redisctl enterprise database list

Support Package Automation:

redisctl enterprise support-package cluster --optimize --upload
# Before: 10+ minutes of clicking
# After: 30 seconds automated

CI/CD Integration (JSON output):

DB_ID=$(redisctl cloud database list -o json | jq -r '.[0].databaseId')
redisctl cloud database get $SUB $DB_ID -o json -q 'status'

4. Library Architecture

Show how redisctl-config can be used in other tools:

use redisctl_config::Config;

let config = Config::load()?;
let profile = config.get_profile("prod")?;
// Now any Rust tool can use the same profile system

Tasks

  • Create "before/after" demo scripts
  • Set up Docker environment for live demo
  • Build release binaries for all platforms
  • Create presentation slides with key metrics
  • Prepare code walkthrough (architecture highlights)
  • Write demo script with timing (aim for 15-20 min total)
  • Test demo end-to-end at least twice
  • Prepare Q&A responses for common questions

Questions to Anticipate

  • Q: Why Rust?

    • A: Type safety, async/await, zero-cost abstractions, cargo ecosystem
  • Q: What about Python SDK?

    • A: Different use case - SDK for app integration, CLI for operations/automation
  • Q: Can this replace Terraform?

    • A: Complementary - CLI for ad-hoc ops, Terraform for IaC. Future: Terraform provider using our libraries
  • Q: Windows support?

    • A: Yes - builds for Windows, macOS, Linux. Keyring works on all platforms.
  • Q: When can we use this?

    • A: Now - v0.6.5 on GitHub releases, crates.io, Docker Hub

Success Criteria

  • Team understands the "no tools exist" problem clearly
  • Excitement about library-first architecture
  • Clear path for internal adoption
  • Interest in contributing/extending

Timeline

  • This week: Finalize demo, test thoroughly
  • Presentation day: Deliver with confidence
  • Post-presentation: Gather feedback, iterate

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationepicParent issue tracking multiple related issues

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions