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.1.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.1-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for raxodus-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5cce5bddac4e20899095a712118a8d4c2c99ebc65cae41cdb54cc764245331f8
MD5 f8d23eed7cc85270acaf5c78927cfc2f
BLAKE2b-256 3f55c2a2bc926145e3ca35eb1fdf106ef18e3d8ba8a33f19a8f7bc3b94babc8b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: raxodus-0.1.1-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.10

File hashes

Hashes for raxodus-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9e27f98198e7c367035a4629f6edcefea561912ec340493472892f8515eeddf8
MD5 690124329c640e8364a691891186edb2
BLAKE2b-256 12fb77c08c737ef5225165a291d696af9def05e7efdfc2efc10b2c0b91d92548

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