import ovh
from django.core.management.base import BaseCommand, CommandError

class Command(BaseCommand):
    help = 'Aktywuje CDN dla kontenera OVH Object Storage'

    def add_arguments(self, parser):
        parser.add_argument('--container', type=str, required=True, help='Nazwa kontenera (np. hously)')
        parser.add_argument('--region', type=str, default='SBG', help='Region kontenera: GRA, SBG, BHS (domyślnie: SBG)')

    def handle(self, *args, **options):
        container = options['container']
        region = options['region'].upper()
        domain = f"{container}.storage.{region.lower()}.cloud.ovh.net"

        self.stdout.write(f"🔍 Próbuję aktywować CDN dla: {domain}")

        client = ovh.Client()  # Pobiera dane z ~/.ovh.conf

        try:
            response = client.post('/cdn/website', domain=domain, offer="storage")
            self.stdout.write(self.style.SUCCESS("✅ CDN aktywowany!"))
            self.stdout.write(f"📦 serviceName: {response['serviceName']}")
        except ovh.exceptions.APIError as e:
            if "already exists" in str(e):
                self.stdout.write(self.style.WARNING("⚠️ CDN już aktywowany dla tego kontenera."))
            else:
                raise CommandError(f"Błąd aktywacji CDN: {e}")

        # Pobierz domenę CDN
        cdn_services = client.get('/cdn/website')
        for service in cdn_services:
            details = client.get(f'/cdn/website/{service}')
            if details['domain'] == domain:
                self.stdout.write(f"🌐 Oryginalna domena: {details['domain']}")
                self.stdout.write(self.style.SUCCESS(f"🚀 CDN domena: {details['cdnDomain']}"))
                return



# python manage.py activate_cdn --container=hously --region=SBG --custom-domain=cdn.hously.cloud
