from django.http import HttpResponse from django.shortcuts import render from datetime import timedelta from django.utils import timezone from django.views.decorators.csrf import csrf_exempt from django.http import JsonResponse from apps.import_aggregator.import_rest_framework import api_view, authentication_classes, permission_classes,TokenAuthentication,IsAuthenticated,Response,status from .utils import import_namespace,retrieve_and_apply from apps.kubernetes_connection.utils import scale_up,scale_down from .models import Deployment_Data,Ingress_Data def hello(request): list_schedule = ['schedule1','schedule2'] list_servers_up = [['wiki', 'wikijs', 2], ['book', 'bookstack-db', 1]] return render(request, 'cloudmanager/index.html', {'list_schedule':list_schedule,'list_servers_up':list_servers_up}) def import_namespace_view(request): import_namespace() return HttpResponse('

Namespace imported!

') def retrieve_and_apply_view(request): output = retrieve_and_apply() return HttpResponse('

'+output+'

') def scale_up_gui(request,namespace_name,deploy_name,replicas=1): Deployment_Data.objects.filter(namespace=namespace_name,name=deploy_name).update(do_not_touch_until=timezone.now() + timedelta(hours=1)) scale_up(namespace_name=namespace_name,deploy_name=deploy_name,replicas=replicas) return render(request, 'dashboard/start.html', {'namespace':namespace_name,'deployment': deploy_name, 'url': 'https://namespace.com'}) def scale_down_gui(request,namespace_name,deploy_name): Deployment_Data.objects.filter(namespace=namespace_name,name=deploy_name).update(do_not_touch_until=timezone.now() + timedelta(hours=1)) scale_down(namespace_name=namespace_name,deploy_name=deploy_name) return render(request, 'dashboard/shutdown.html', {'namespace': namespace_name, 'deployment': deploy_name, 'url': 'https://namespace.com'}) @api_view(['POST']) @authentication_classes([TokenAuthentication]) @permission_classes([IsAuthenticated]) def add_ingress(request): url = request.POST.get('url') namespace = request.POST.get('namespace') print("URL: "+str(url)) print("NS: "+str(namespace)) try: Ingress_Data.objects.update_or_create(url=url,namespace=namespace) except Exception as exception: return JsonResponse({"status": "error","reason":str(exception)}) return JsonResponse({"status": "added","url":str(url),"namespace":str(namespace)}) @api_view(['POST']) @authentication_classes([TokenAuthentication]) @permission_classes([IsAuthenticated]) def delete_ingress(request): url = request.POST.get('url') namespace = request.POST.get('namespace') print("URL: "+str(url)) print("NS: "+str(namespace)) try: ingress_object = Ingress_Data.objects.filter(url=url,namespace=namespace) except Exception as exception: return JsonResponse({"status": "error","reason":str(exception)}) try: ingress_object.delete() except Exception as exception: return JsonResponse({"status": "error","reason":str(exception)}) return JsonResponse({"status": "deleted","url":str(url),"namespace":str(namespace)})