pg-api 0.1.0

A high-performance PostgreSQL REST API driver with rate limiting, connection pooling, and observability
#!/usr/bin/env python3
"""
Generate API token for OpenSearch integration
This token should be configured in the opensearch-api service
"""

import secrets
import json
import argparse
from datetime import datetime

def generate_token(service_name: str, environment: str = "production") -> dict:
    """Generate an API token for OpenSearch integration"""
    
    # Generate secure token
    token = f"sk_live_pg_api_{environment}_{secrets.token_hex(16)}"
    
    # Token metadata
    metadata = {
        "token": token,
        "service": service_name,
        "environment": environment,
        "created_at": datetime.utcnow().isoformat(),
        "permissions": [
            "ingest:write",
            "index:pg-api-*",
            "metrics:write",
            "logs:write"
        ],
        "description": f"PG-API service token for {environment}"
    }
    
    return metadata

def main():
    parser = argparse.ArgumentParser(
        description='Generate OpenSearch API token for PG-API'
    )
    
    parser.add_argument(
        '--service',
        default='pg-api',
        help='Service name (default: pg-api)'
    )
    
    parser.add_argument(
        '--environment',
        choices=['development', 'staging', 'production'],
        default='production',
        help='Environment (default: production)'
    )
    
    parser.add_argument(
        '--output',
        help='Output file for token info'
    )
    
    args = parser.parse_args()
    
    print("Generating OpenSearch API Token...")
    print("-" * 40)
    
    token_info = generate_token(args.service, args.environment)
    
    print(f"Service:     {token_info['service']}")
    print(f"Environment: {token_info['environment']}")
    print(f"Created:     {token_info['created_at']}")
    print("-" * 40)
    print(f"Token:       {token_info['token']}")
    print("-" * 40)
    
    if args.output:
        with open(args.output, 'w') as f:
            json.dump(token_info, f, indent=2)
        print(f"\nToken info saved to: {args.output}")
    
    print("\nConfiguration:")
    print(f"1. Add this token to opensearch-api configuration")
    print(f"2. Set in pg-api environment:")
    print(f"   OPENSEARCH_API_TOKEN={token_info['token']}")
    print(f"   OPENSEARCH_API_URL=https://opensearch-api.yourdomain.com")
    print(f"   OPENSEARCH_ENABLED=true")

if __name__ == '__main__':
    main()