gharvey 711ff2d5ca Initial release of Patrii Cloud CLI
Patrii Cloud CLI is the official command-line interface for managing
Patrii Cloud infrastructure. It provides full API coverage for compute,
networking, storage, load balancing, DNS, certificates, secrets, billing,
and project management.

Features:
- 300+ commands covering all Patrii Cloud services
- Multi-profile authentication for managing multiple accounts
- Product-based quota requests with billing catalog integration
- Encrypted credential storage using SSH keys
- Table, JSON, and YAML output formats
- Application credentials for CI/CD automation
- OWASP-hardened security (path traversal prevention, no token leaks, secure file permissions)

Services:
- Compute: servers, flavors, images, keypairs, snapshots, regions
- Networking: networks, subnets, routers, floating IPs, security groups, ports
- Load Balancer: load balancers, listeners, pools, members, health monitors, L7 policies
- Block Storage: volumes, snapshots
- Object Storage: S3-compatible buckets, objects, credentials, keys
- DNS: zones, records, domain verification
- TLS Certificates: ACME certificate ordering and renewal via Barbican
- Secrets: secret management, containers, orders
- Billing: quota requests, invoices, allocations, pricing
- Projects: multi-tenant project management with role-based access
- Support: ticket management

Licensed under the Apache License, Version 2.0.
2026-03-19 04:27:48 -04:00
2026-03-19 04:27:48 -04:00
2026-03-19 04:27:48 -04:00
2026-03-19 04:27:48 -04:00
2026-03-19 04:27:48 -04:00

Patrii Cloud CLI

Command-line interface for managing Patrii Cloud infrastructure.

Installation

pip install -e .

# With development dependencies
pip install -e ".[dev]"

Quick Start

# Initialize default credentials (encrypted with your SSH key)
patrii config init

# Login
patrii auth login

# List servers
patrii server list

Profiles

Manage multiple accounts and projects with named profiles:

# Create a profile
patrii auth login --profile sales
# Or: patrii config profile add sales

# Switch active profile
patrii auth use sales

# List all profiles with login status
patrii auth list

# Switch back to default
patrii auth use default

# Use per-command
patrii --profile dev server list

# Or set environment variable
export PATRII_PROFILE=sales

Authentication

patrii auth login                    # Login with active profile
patrii auth login --profile <name>   # Login with specific profile (creates if new)
patrii auth status                   # Show auth status
patrii auth whoami                   # Show current user
patrii auth list                     # List all profiles and login status
patrii auth use <name>               # Switch active profile
patrii auth use default              # Switch to console.conf
patrii auth logout                   # Clear cached tokens

# Application credentials (for CI/CD)
patrii auth app-credential create --name ci-bot
patrii auth app-credential list
patrii auth app-credential delete <id>

# MFA
patrii auth mfa status
patrii auth mfa enable --method totp
patrii auth mfa verify-setup --code <code>

Compute

# Servers
patrii server list
patrii server create --name my-vm --flavor "shared.balance.1c1g20d" --image "Ubuntu 24.04 LTS" --network <net_id> --key patrii --wait
patrii server show <id_or_name>
patrii server start|stop|reboot|delete <id_or_name>
patrii server console <id_or_name>
patrii server logs <id_or_name>
patrii server metrics <id>
patrii server diagnostics <id>
patrii server resize <id_or_name> --flavor <new_flavor> --wait

# Attach/detach network interfaces
patrii server attach-interface <id> --network <net_id>
patrii server detach-interface <id> <port_id>

# Snapshots & backups
patrii server snapshot create <id_or_name> --name my-snap
patrii server snapshot list <id_or_name>
patrii server backup create <id_or_name> --name my-backup

# Snapshot schedules
patrii server snapshot-schedule show <id>
patrii server snapshot-schedule set <id> --frequency daily --retention 7
patrii server snapshot-schedule delete <id>

# Flavors & images
patrii flavor list
patrii image list
patrii image upload --file disk.qcow2 --name "My Image" --disk-format qcow2
patrii image download <id> --output disk.qcow2

# Keypairs
patrii keypair list
patrii keypair create my-key
patrii keypair import my-key --public-key ~/.ssh/id_rsa.pub

# Regions
patrii region list

Networking

# Networks
patrii network list
patrii network show <id>
patrii network create --name my-net --cidr 10.0.0.0/24
patrii network update <id> --name new-name
patrii network delete <id>

# Subnets
patrii subnet list
patrii subnet create --network <id> --name my-sub --cidr 10.0.1.0/24
patrii subnet update <id> --dns 1.1.1.1

# Routers
patrii router list
patrii router create --name my-router
patrii router set-gateway <id> --network <ext_net_id>
patrii router attach <id> --subnet <subnet_id>
patrii router detach <id> --subnet <subnet_id>
patrii router interfaces <id>
patrii router static-routes <id>
patrii router add-route <id> --destination 10.0.0.0/24 --nexthop 192.168.1.1
patrii router remove-route <id> --destination 10.0.0.0/24 --nexthop 192.168.1.1

# Floating IPs
patrii floating-ip list
patrii floating-ip create
patrii floating-ip associate <fip_id> --port <port_id>
patrii floating-ip disassociate <fip_id>
patrii floating-ip attach <server_id> --ip <fip_id>
patrii floating-ip detach <server_id>

# Security Groups
patrii security-group list
patrii security-group show <id_or_name>
patrii security-group create --name web-sg
patrii security-group rule add <sg_id> -d ingress -P tcp -p 80 -c 0.0.0.0/0
patrii security-group rule list <sg_id>
patrii security-group rule remove <rule_id>

# Ports
patrii port list
patrii port show <id>
patrii port create --network <id>
patrii port update <id> --name new-name

Load Balancer

# Load balancers
patrii loadbalancer list
patrii loadbalancer create --name my-lb --subnet <subnet_id>
patrii loadbalancer show <id>
patrii loadbalancer update <id> --name new-name
patrii loadbalancer delete <id>
patrii loadbalancer stats <id>
patrii loadbalancer failover <id>
patrii loadbalancer flavors
patrii loadbalancer quotas

# Listeners
patrii loadbalancer listener list
patrii loadbalancer listener create --name http --loadbalancer <lb_id> --protocol HTTP --port 80
patrii loadbalancer listener show <id>
patrii loadbalancer listener update <id> --connection-limit 1000
patrii loadbalancer listener delete <id>

# Pools
patrii loadbalancer pool list
patrii loadbalancer pool create --name web-pool --listener <id> --protocol HTTP --algorithm ROUND_ROBIN
patrii loadbalancer pool update <id> --algorithm LEAST_CONNECTIONS
patrii loadbalancer pool delete <id>

# Members
patrii loadbalancer member list <pool_id>
patrii loadbalancer member add <pool_id> --address 10.0.0.5 --port 8080 --subnet <subnet_id>
patrii loadbalancer member update <pool_id> <member_id> --weight 2
patrii loadbalancer member remove <pool_id> <member_id>

# Health monitors
patrii loadbalancer healthmonitor list
patrii loadbalancer healthmonitor create --pool <id> --type HTTP --delay 5 --timeout 3 --max-retries 3
patrii loadbalancer healthmonitor update <id> --delay 10
patrii loadbalancer healthmonitor delete <id>

# L7 Policies & Rules
patrii loadbalancer l7policy list
patrii loadbalancer l7policy create --listener <id> --action REDIRECT_PREFIX --redirect-url https://example.com
patrii loadbalancer l7rule create <policy_id> --type PATH --compare-type STARTS_WITH --value /

Block Storage

patrii volume list
patrii volume create --name data-vol --size 100
patrii volume show <id>
patrii volume update <id> --name new-name
patrii volume attach <id> --server <server_id>
patrii volume detach <id> --server <server_id>
patrii volume extend <id> --size 200
patrii volume delete <id>

# Snapshots
patrii volume snapshot list
patrii volume snapshot create <volume_id> --name my-snap
patrii volume snapshot show <id>
patrii volume snapshot delete <id>

Object Storage (S3)

# Buckets
patrii s3 bucket list
patrii s3 bucket create my-bucket
patrii s3 bucket show my-bucket
patrii s3 bucket stats my-bucket
patrii s3 bucket delete my-bucket

# Bucket configuration
patrii s3 bucket versioning my-bucket --enable
patrii s3 bucket encryption my-bucket --enable
patrii s3 bucket website my-bucket --enable
patrii s3 bucket policy get my-bucket
patrii s3 bucket cors get my-bucket

# Objects
patrii s3 object list my-bucket
patrii s3 object upload my-bucket ./file.txt --key path/file.txt
patrii s3 object delete my-bucket path/file.txt
patrii s3 object presign my-bucket path/file.txt
patrii s3 object download-url my-bucket path/file.txt
patrii s3 object upload-url my-bucket path/file.txt

# Credentials & keys
patrii s3 credentials list
patrii s3 credentials create
patrii s3 key list
patrii s3 key create
patrii s3 cli-config

DNS

# Zones
patrii dns list
patrii dns create --name example.com. --email admin@example.com
patrii dns show <zone_id>
patrii dns update <zone_id> --ttl 300
patrii dns delete <zone_id>
patrii dns lock <zone_id>
patrii dns unlock <zone_id>
patrii dns nameservers <zone_id>
patrii dns ns-check <zone_id>

# Records
patrii dns record list <zone_id>
patrii dns record create <zone_id> --name www.example.com. --type A --record 1.2.3.4
patrii dns record show <zone_id> <record_id>
patrii dns record update <zone_id> <record_id> --record 5.6.7.8
patrii dns record delete <zone_id> <record_id>

# Domain verification
patrii dns verify-initiate example.com
patrii dns verify-check <verification_id>
patrii dns verify-list

TLS Certificates

patrii certificate list
patrii certificate order --domain example.com --name my-cert
patrii certificate show <id>
patrii certificate renew <id>
patrii certificate delete <id>

Secret Management (Barbican)

# Secrets
patrii secret list
patrii secret create --name my-secret --payload "value" --secret-type opaque
patrii secret create --name my-secret --payload-file /path/to/file
patrii secret show <id>
patrii secret get <id>
patrii secret get <id> --output-file secret.txt
patrii secret update <id> --payload "new-value"
patrii secret delete <id>
patrii secret generate --type symmetric --name my-key --algorithm aes --bit-length 256
patrii secret rotate <id> --payload "rotated-value"

# Containers
patrii secret container list
patrii secret container create --name my-certs --type certificate --secret-ref cert:id1 --secret-ref key:id2
patrii secret container show <id>

# Orders
patrii secret order list
patrii secret order create --name gen-key --type key --algorithm aes --bit-length 256

Kubernetes [Coming Soon]

Kubernetes service is not yet available. Commands are defined but may not be functional.

patrii k8s list
patrii k8s create --name my-cluster --version 1.30 --node-count 3
patrii k8s show <id>
patrii k8s kubeconfig <id> --output kubeconfig.yaml
patrii k8s scale <id> --node-count 5
patrii k8s upgrade <id> --version 1.31
patrii k8s metrics <id>
patrii k8s versions
patrii k8s delete <id>

Quota & Billing

# View quotas
patrii quota current
patrii quota list

# Request resources (product-based billing)
patrii quota request --vps "Balanced #1:2" --floating-ips 1 --lb-standard 1 --external-gateways 1
patrii quota request --vps "CPU Optimized #2:1" --block-storage 500 --cycle annual
patrii quota show <request_id>
patrii quota cancel <request_id>
patrii quota stop-renewal <request_id>
patrii quota restore-renewal <request_id>

# View pricing
patrii quota flavors
patrii quota prices

# Billing
patrii billing summary
patrii billing invoices
patrii billing invoice <id>
patrii billing download <id> --output invoice.pdf
patrii billing usage --start 2026-01-01 --end 2026-01-31
patrii billing allocations
patrii billing credit
patrii billing prices
patrii billing payment-status <id>

Projects

patrii project list
patrii project show <id>
patrii project create --name my-project
patrii project update <id> --name new-name
patrii project delete <id>
patrii project switch <id_or_name>
patrii project current
patrii project members
patrii project invite user@example.com --role member
patrii project remove-member <user_id>
patrii project member-role <project_id> <user_id> admin
patrii project quotas

User Profile

patrii profile show
patrii profile update --name "John Doe" --company "Acme Inc"
patrii profile change-password

Support

patrii support list
patrii support create --subject "Issue" --description "Details" --priority high
patrii support show <id>
patrii support reply <id> --message "Update"
patrii support close <id>
patrii support categories
patrii support plan
patrii support plans
patrii support stats

Northstar [Coming Soon]

Northstar CI/CD service is not yet available.

patrii northstar list
patrii northstar create --name my-instance --type standard
patrii northstar show <id>
patrii northstar resize <id> --type premium
patrii northstar delete <id>

Cloud Build [Coming Soon]

Cloud Build service is not yet available.

patrii cloud-build list
patrii cloud-build create --name my-project
patrii cloud-build show <id>
patrii cloud-build build trigger <id>
patrii cloud-build build list <id>
patrii cloud-build build logs <id> <build_id>
patrii cloud-build artifact list <id> <build_id>

Configuration

# Default credentials (console.conf)
patrii config init
patrii config show
patrii config test
patrii config path
patrii config set --project <id> --region COLOGIX-MTL-2

# Named profiles
patrii config profile add <name>
patrii config profile list
patrii config profile show <name>
patrii config profile remove <name>

# Alias: config credential = config profile
patrii config credential add <name>
patrii config credential list

Global Options

patrii --output json|table|yaml    # Output format (default: table)
patrii --project <id>              # Override default project
patrii --region <region>           # Override default region
patrii --profile <name>            # Use a named profile
patrii --debug                     # Enable debug logging
patrii --no-cache                  # Skip token cache
patrii --api-url <url>             # Override API URL

Environment Variables

Variable Description
PATRII_PROFILE Active profile name (same as --profile)
PATRII_PASSWORD Password for non-interactive profile creation (CI/CD)
PATRII_MFA_CODE MFA code for non-interactive auth
PATRII_APP_CREDENTIAL_ID App credential ID for CI/CD
PATRII_APP_CREDENTIAL_SECRET App credential secret for CI/CD
PATRII_SSH_KEY Override SSH key path for config decryption
PATRII_SSH_PASSPHRASE SSH key passphrase for encrypted keys

Storage Locations

Path Purpose
~/.patrii/console.conf Default credentials (encrypted)
~/.patrii/profiles/ Named profile credentials (encrypted)
~/.patrii/active-profile Currently active profile name
~/.patrii/token-cache/ Cached authentication tokens

Development

pip install -e ".[dev]"
pytest tests/ -v
pytest tests/ --cov=patrii_cli --cov-report=html
S
Description
Patrii-CLI is a full CLI integration with Patrii Cloud (https://console.patrii.cloud)
Readme 164 KiB
Languages
Python 100%