70 lines
2.8 KiB
Python
70 lines
2.8 KiB
Python
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 .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('<h1>Namespace imported!</h1>')
|
|
|
|
|
|
def retrieve_and_apply_view(request):
|
|
output = retrieve_and_apply()
|
|
return HttpResponse('<h1>'+output+'</h1>')
|
|
|
|
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'})
|
|
|
|
@csrf_exempt
|
|
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)})
|
|
|
|
@csrf_exempt
|
|
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)})
|
|
|