Skip to main content

Escape from Rackspace ticket hell - a minimal CLI for ticket management

Project description

🗡️ Raxodus

PyPI version Python versions License: MIT Code style: black

"Neither demon nor machine, but something altogether different" - Ultima III

Escape from Rackspace ticket hell. A minimal CLI for managing Rackspace support tickets, optimized for automation and integration with n8n workflows.

Features

  • 🎯 Minimal & Fast - Just the essentials, no bloat
  • 🔄 n8n Ready - JSON output perfect for workflow automation
  • 🔐 Secure - Credentials via environment variables
  • 📊 Multiple Formats - JSON, table, or CSV output
  • Rate Limited - Built-in retry logic and backoff
  • 🛡️ Type Safe - Pydantic models prevent runtime errors

Installation

# Install with uvx (recommended)
uvx install raxodus

# Or with pip
pip install raxodus

# Or with uv
uv pip install raxodus

Quick Start

# Set your credentials
export RACKSPACE_USERNAME="your-username"
export RACKSPACE_API_KEY="your-api-key"
export RACKSPACE_ACCOUNT="123456"  # Optional default account

# List recent tickets
raxodus tickets list --days 7

# Get specific ticket
raxodus tickets get 250625-02866

# Output as JSON for n8n
raxodus tickets list --format json | jq '.tickets[] | select(.status == "open")'

n8n Integration

Use the Execute Command node in n8n:

{
  "command": "raxodus tickets list --format json --status open",
  "cwd": "/tmp"
}

Then parse the JSON output in subsequent nodes for automation.

Output Formats

JSON (Default)

raxodus tickets list --format json

Table (Human Readable)

raxodus tickets list --format table

CSV (Excel/Sheets)

raxodus tickets list --format csv > tickets.csv

Configuration

Environment Variables

RACKSPACE_USERNAME    # Your Rackspace username (required)
RACKSPACE_API_KEY     # Your API key (required)
RACKSPACE_ACCOUNT     # Default account number (optional)
RACKSPACE_REGION      # API region (default: us)
RAXODUS_CACHE_DIR     # Cache directory (default: ~/.cache/raxodus)
RAXODUS_CACHE_TTL     # Cache TTL in seconds (default: 300)

Config File (Optional)

# ~/.config/raxodus/config.toml
[auth]
username = "your-username"
account = "123456"

[cache]
enabled = true
ttl = 300

Commands

Authentication

# Test your credentials
raxodus auth test

# List available accounts
raxodus auth accounts

Tickets

# List tickets with filters
raxodus tickets list [OPTIONS]
  --account TEXT     Rackspace account number
  --status TEXT      Filter by status (open, closed, pending)
  --days INTEGER     Show tickets from last N days
  --format TEXT      Output format (json, table, csv)

# Get single ticket
raxodus tickets get TICKET_ID [OPTIONS]
  --format TEXT      Output format (json, table)

Development

# Clone the repo
git clone https://github.com/bdmorin/raxodus
cd raxodus

# Install with uv
uv pip install -e ".[dev]"

# Run tests
pytest

# Run integration tests (requires credentials)
hurl --test tests/*.hurl

Why "raxodus"?

Like the villain Exodus from Ultima III, Rackspace tickets are neither purely technical problems nor simple service requests, but something altogether more frustrating. This tool helps you escape.

License

MIT - See LICENSE file

Contributing

Pull requests welcome! Please ensure all tests pass and add coverage for new features.

Support

This is an unofficial tool and is not affiliated with or supported by Rackspace Technology.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

raxodus-0.1.2.tar.gz (39.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

raxodus-0.1.2-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file raxodus-0.1.2.tar.gz.

File metadata

  • Download URL: raxodus-0.1.2.tar.gz
  • Upload date:
  • Size: 39.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for raxodus-0.1.2.tar.gz
Algorithm Hash digest
SHA256 ada074ddb27ad6ae357ae0af36a2b2b801ef32e333b49d32f1223b924e46877a
MD5 f7e8b2f4fed1a365f69d20dc82bc1cd5
BLAKE2b-256 ebb510dad8ebd0438272860ba724b30b466bf13130db7cc90893d9caafd02e2d

See more details on using hashes here.

File details

Details for the file raxodus-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: raxodus-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for raxodus-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b6216724b3c7df18ed6ebf52a3fd7825e2ea0d470665431846d6c47a6e871fee
MD5 610fe4aacd203911ce62a93fabb66713
BLAKE2b-256 33c28d54d021b79b244df35dc542d19709abcc124fadabd3e7e3ddda5baec668

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page