From e2f49a5b1fc90b964b1a2193136a554d25811443 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Mon, 14 Sep 2026 10:44:41 +0100 Subject: [PATCH] untested addition of the condition and scale up and down function --- django_code/apps/cloudmanager/models.py | 2 +- django_code/apps/cloudmanager/urls.py | 5 +++-- django_code/apps/cloudmanager/utils.py | 5 ++++- django_code/apps/cloudmanager/views.py | 10 ++++++++++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/django_code/apps/cloudmanager/models.py b/django_code/apps/cloudmanager/models.py index a649225..9c96270 100644 --- a/django_code/apps/cloudmanager/models.py +++ b/django_code/apps/cloudmanager/models.py @@ -55,7 +55,7 @@ class Deployment_Data(models.Model): schedule_day = models.ForeignKey(Schedule_Day_Data,null=True, blank=True, on_delete=models.SET_NULL) replicas = models.IntegerField() actual_replica = models.IntegerField() - do_not_touch_until = models.DateField('do_not_touch_until', blank=True, null=True) + do_not_touch_until = models.DateField('do_not_touch_until', blank=True, null=True, auto_now_add=True) class Meta: db_table = 'machine' diff --git a/django_code/apps/cloudmanager/urls.py b/django_code/apps/cloudmanager/urls.py index 2b05d99..5918070 100644 --- a/django_code/apps/cloudmanager/urls.py +++ b/django_code/apps/cloudmanager/urls.py @@ -16,7 +16,7 @@ Including another URLconf """ from django.urls import path -from .views import coucou,display,hello,import_namespace_view,retrieve_and_apply_view +from .views import coucou,display,hello,import_namespace_view,retrieve_and_apply_view,scale_up_gui,scale_down_gui urlpatterns = [ @@ -26,5 +26,6 @@ urlpatterns = [ path('display', display, name='display'), path('import_namespace', import_namespace_view, name='import_namespace'), path('retrieve_and_apply_view', retrieve_and_apply_view, name='retrieve_and_apply_view'), - + path('scale_up//', scale_up_gui), + path('scale_down//', scale_down_gui), ] diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 6b37af6..488019b 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -116,7 +116,8 @@ def retrieve_and_apply(verbose=False): #check if the expected replica (server[2]) match the current replica of the deployment (server[3].actual_replica) if server[3].actual_replica == server[2]: if verbose : print("name: "+str(server[1])+" namespace: "+str(server[0])+" already UP") - #if server[3].do_not_touch_until is after now , do something + if server[3].do_not_touch_until > timezone.now(): + if verbose : print("name: "+str(server[1])+" namespace: "+str(server[0])+" is in freeze period") else: echo = "Starting -> name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2]) output += str(echo) @@ -133,6 +134,8 @@ def retrieve_and_apply(verbose=False): #check if the current replica of the deployment (server[3].actual_replica) is already 0 meaning the server is already down if server[3].actual_replica == 0: if verbose : print("name: "+str(server[1])+" namespace: "+str(server[0])+" already DOWN") + if server[3].do_not_touch_until > timezone.now(): + if verbose : print("name: "+str(server[1])+" namespace: "+str(server[0])+" is in freeze period") else: echo = "Shutting down -> name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2]) diff --git a/django_code/apps/cloudmanager/views.py b/django_code/apps/cloudmanager/views.py index 484e67b..2018e0e 100644 --- a/django_code/apps/cloudmanager/views.py +++ b/django_code/apps/cloudmanager/views.py @@ -5,6 +5,7 @@ from django.shortcuts import render from .models import Deployment_Data,Schedule_Week_Data from .db_interaction import DB_generation,Check_server_supposed_XXX,Give_current_weekday,Give_current_hour from .utils import import_namespace,retrieve_and_apply +from apps.kubernetes_connection.utils import scale_up,scale_down def coucou(request): # 1. Prepare the data inside the function @@ -55,3 +56,12 @@ def redirect(request): print(list_servers_up) return render(request, 'cloudmanager/cmm_blank_page.html', {'list_servers_up':list_servers_up}) +def scale_up_gui(request,namespace_name,deploy_name,replicas=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): + 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'})