From 8d6234927c2c52701de565417072a7d1150095b5 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Mon, 7 Sep 2026 11:27:19 +0100 Subject: [PATCH 01/36] lower the key otherwise it will craerte duplicate with the existing key with uppercase --- django_code/apps/website_redirection/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/django_code/apps/website_redirection/views.py b/django_code/apps/website_redirection/views.py index be77d40..d50e7e3 100644 --- a/django_code/apps/website_redirection/views.py +++ b/django_code/apps/website_redirection/views.py @@ -20,6 +20,7 @@ def redirect(request): def clearkey_process(request): key = request.GET.get('key') + key = key.lower() redirectData.objects.update_or_create(key=key,defaults={'url': "None"}) text_generated = key+" is set to None" -- 2.54.0 From f0b700a688650197219f53d7ec8c36c6b38ceaa0 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 10:08:35 +0100 Subject: [PATCH 02/36] big untested try of cmm --- django_code/apps/cloudmanager/admin.py | 16 +++++++++++++--- django_code/apps/cloudmanager/models.py | 3 +-- django_code/apps/cloudmanager/utils.py | 8 ++++---- django_code/apps/streaming/models.py | 2 +- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index 1ef5a86..b2a3f33 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin,messages from django.utils.translation import ngettext from .models import Deployment_Data,Schedule_Day_Data,Schedule_Week_Data,Namespace_Data,namespace_cmm_data_object -from .utils import import_namespace +from .utils import import_namespace,import_deployment from apps.kubernetes_connection.utils import scale_up,scale_down DB = 'cloudmanager_db' @@ -50,10 +50,20 @@ def import_namespace_admin(modeladmin, request, queryset): # # don't forgot to clear thge quyeryset before running this # - import_namespace(namespace_cmm_data_object) - print("simpsons_data_object.create(season=2, episode=3, url='google.com'', seen=True)") + import_namespace(Namespace_Data.objects) + #print("simpsons_data_object.create(season=2, episode=3, url='google.com'', seen=True)") #call function to trigger refresh of all deploy +@admin.action(description="import deployment") +def import_deployment_admin(modeladmin, request, queryset): + # + # + # + # don't forgot to clear thge quyeryset before running this + # + import_deployment(Deployment_Data.objects) + + class ActiveAtHourFilter(admin.SimpleListFilter): title = 'Active at hour' diff --git a/django_code/apps/cloudmanager/models.py b/django_code/apps/cloudmanager/models.py index 032a558..d7757ee 100644 --- a/django_code/apps/cloudmanager/models.py +++ b/django_code/apps/cloudmanager/models.py @@ -2,6 +2,7 @@ from django.db import models + class Schedule_Week_Data(models.Model): name_schedule = models.CharField(max_length=100,unique=True) state_Monday = models.BooleanField() @@ -61,5 +62,3 @@ class Namespace_Data(models.Model): #deployments = models.ForeignKey(Schedule_Week_Data,null=True, blank=True, on_delete=models.SET_NULL) class Meta: db_table = 'namespace' - -namespace_cmm_data_object = Namespace_Data.objects.using('cloudmanager_db') \ No newline at end of file diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 6bc6b56..6c94736 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -4,10 +4,10 @@ from apps.kubernetes_connection.utils import get_namespace def import_namespace(queryset): namespaces_list = get_namespace() for namespace in namespaces_list: - queryset.create(namespace=namespace) + queryset.objects.create(namespace=namespace) def import_deployment(queryset): - namespaces_list = get_namespace() - #for namespace in namespaces_list: - # queryset.create(namespace=namespace) + deployment_list = get_deployments() + for deployment in deployment_list: + queryset.objects.create(deployment=deployment) \ No newline at end of file diff --git a/django_code/apps/streaming/models.py b/django_code/apps/streaming/models.py index f4e0789..0d36f13 100644 --- a/django_code/apps/streaming/models.py +++ b/django_code/apps/streaming/models.py @@ -38,7 +38,7 @@ class StreamingRedirectData(models.Model): def season_information(self, serie_name): betaserie = betaserieUtils() print(serie_name) - print(betaserie.identify_serie(serie_name)) + print(betaserie.identify_serie(serie_name,True)) return betaserie.series_information(betaserie.identify_serie(serie_name))[0] def maximum_Number_Season(self, serie_name): -- 2.54.0 From 45a67a11cfb2d0a024a6da4a8f721f6fbea735f4 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 10:10:18 +0100 Subject: [PATCH 03/36] big untested try of cmm --- django_code/apps/cloudmanager/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index b2a3f33..635ae3f 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin,messages from django.utils.translation import ngettext -from .models import Deployment_Data,Schedule_Day_Data,Schedule_Week_Data,Namespace_Data,namespace_cmm_data_object +from .models import Deployment_Data,Schedule_Day_Data,Schedule_Week_Data,Namespace_Data from .utils import import_namespace,import_deployment from apps.kubernetes_connection.utils import scale_up,scale_down -- 2.54.0 From 3f25d83f640ac7ced7730cef4f83307454464ec8 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 10:15:18 +0100 Subject: [PATCH 04/36] add action --- django_code/apps/cloudmanager/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index 635ae3f..8518321 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -100,7 +100,7 @@ class MultiDBModelAdmin(admin.ModelAdmin): class DeploymentDataAdmin(MultiDBModelAdmin): list_display = ('name', 'namespace', 'schedule_week', 'schedule_day', 'replicas') list_filter = (ActiveAtHourFilter,) - actions = [scale_up_deploy,scale_down_deploy] + actions = [scale_up_deploy,scale_down_deploy,import_deployment_admin] @admin.register(Schedule_Day_Data) -- 2.54.0 From ce42b3dc33656f3e22c0768d34c0c3c8c6fb2309 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 10:41:19 +0100 Subject: [PATCH 05/36] add action --- django_code/apps/cloudmanager/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 6c94736..ef33f69 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -1,4 +1,4 @@ -from apps.kubernetes_connection.utils import get_namespace +from apps.kubernetes_connection.utils import get_namespace,get_deployments def import_namespace(queryset): -- 2.54.0 From b9cd8e322612d572243326d18f8ebf0f56f0a274 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 13:05:22 +0100 Subject: [PATCH 06/36] change model --- django_code/apps/cloudmanager/admin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index 8518321..5847579 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -50,7 +50,7 @@ def import_namespace_admin(modeladmin, request, queryset): # # don't forgot to clear thge quyeryset before running this # - import_namespace(Namespace_Data.objects) + import_namespace(Namespace_Data) #print("simpsons_data_object.create(season=2, episode=3, url='google.com'', seen=True)") #call function to trigger refresh of all deploy @@ -61,7 +61,7 @@ def import_deployment_admin(modeladmin, request, queryset): # # don't forgot to clear thge quyeryset before running this # - import_deployment(Deployment_Data.objects) + import_deployment(Deployment_Data) -- 2.54.0 From 5d6e5339adae621ca313827470d6a25c2e83a634 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 16:47:29 +0100 Subject: [PATCH 07/36] change model --- django_code/apps/cloudmanager/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index ef33f69..813bb61 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -9,5 +9,6 @@ def import_namespace(queryset): def import_deployment(queryset): deployment_list = get_deployments() for deployment in deployment_list: - queryset.objects.create(deployment=deployment) + #not tested yet , we might be able to parse every lines like that + queryset.objects.create(name=deployment[0],namespace=deployment[1]) \ No newline at end of file -- 2.54.0 From a94390916a0234a8e71b652a5888c929e22387d5 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 17:03:03 +0100 Subject: [PATCH 08/36] add replicas --- django_code/apps/cloudmanager/utils.py | 2 +- django_code/apps/kubernetes_connection/utils.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 813bb61..4d09b6e 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -10,5 +10,5 @@ def import_deployment(queryset): deployment_list = get_deployments() for deployment in deployment_list: #not tested yet , we might be able to parse every lines like that - queryset.objects.create(name=deployment[0],namespace=deployment[1]) + queryset.objects.create(name=deployment[0],namespace=deployment[1],replicas=deployment[2]) \ No newline at end of file diff --git a/django_code/apps/kubernetes_connection/utils.py b/django_code/apps/kubernetes_connection/utils.py index 7dd6585..8bbeff0 100644 --- a/django_code/apps/kubernetes_connection/utils.py +++ b/django_code/apps/kubernetes_connection/utils.py @@ -52,6 +52,7 @@ def get_deployments(): deployments = api.list_namespaced_deployment(namespace) for deployment_index in range(0,len(deployments.items)): deployment = deployments.items[deployment_index].metadata.name - print(" "+str(deployment)) - deployments_list.append([namespace,deployment]) + replicas = deployments.items[deployment_index].spec.replicas + print(" "+str(deployment)+" -- Replicas: "+str(replicas)) + deployments_list.append([namespace,deployment,replicas]) return deployments_list \ No newline at end of file -- 2.54.0 From 70660fbd5a4e26b33ea439933f1346db2ee42578 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 17:08:30 +0100 Subject: [PATCH 09/36] revert name and namespace , and switch to update and create --- django_code/apps/cloudmanager/utils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 4d09b6e..488db70 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -9,6 +9,5 @@ def import_namespace(queryset): def import_deployment(queryset): deployment_list = get_deployments() for deployment in deployment_list: - #not tested yet , we might be able to parse every lines like that - queryset.objects.create(name=deployment[0],namespace=deployment[1],replicas=deployment[2]) + queryset.objects.update_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2]}) \ No newline at end of file -- 2.54.0 From f4197512060099bdaabac6fc19c9071afab17005 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 17:24:12 +0100 Subject: [PATCH 10/36] create default day schedule, WIP and function not tested --- django_code/apps/cloudmanager/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 488db70..07bb935 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -1,5 +1,5 @@ from apps.kubernetes_connection.utils import get_namespace,get_deployments - +from .models import Schedule_Day_Data def import_namespace(queryset): namespaces_list = get_namespace() @@ -10,4 +10,6 @@ def import_deployment(queryset): deployment_list = get_deployments() for deployment in deployment_list: queryset.objects.update_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2]}) - \ No newline at end of file + +def generate_default_day_schedule(queryset): + Schedule_Day_Data.objects.update_or_create(name="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_1False" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_2False" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) -- 2.54.0 From e26ba6d99d790a93ec807355943ce5e84cb16c9f Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 17:57:24 +0100 Subject: [PATCH 11/36] default schedule --- django_code/apps/cloudmanager/admin.py | 13 +++++++++---- django_code/apps/cloudmanager/utils.py | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index 5847579..462f4b9 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin,messages from django.utils.translation import ngettext from .models import Deployment_Data,Schedule_Day_Data,Schedule_Week_Data,Namespace_Data -from .utils import import_namespace,import_deployment +from .utils import import_namespace,import_deployment,generate_default_day_schedule from apps.kubernetes_connection.utils import scale_up,scale_down DB = 'cloudmanager_db' @@ -43,6 +43,10 @@ def create_entry(modeladmin, request, queryset): print("simpsons_data_object.create(season=2, episode=3, url='google.com'', seen=True)") #call function to trigger refresh of all deploy +@admin.action(description="create default schedule") +def generate_default_day_schedule_admin(modeladmin, request, queryset): + generate_default_day_schedule(Schedule_Day_Data) + @admin.action(description="import namespace") def import_namespace_admin(modeladmin, request, queryset): # @@ -100,13 +104,13 @@ class MultiDBModelAdmin(admin.ModelAdmin): class DeploymentDataAdmin(MultiDBModelAdmin): list_display = ('name', 'namespace', 'schedule_week', 'schedule_day', 'replicas') list_filter = (ActiveAtHourFilter,) - actions = [scale_up_deploy,scale_down_deploy,import_deployment_admin] + actions = [scale_up_deploy,scale_down_deploy,import_deployment_admin,generate_default_day_schedule_admin] @admin.register(Schedule_Day_Data) class ScheduleDayAdmin(MultiDBModelAdmin): list_display = ['name_schedule'] + [f'state_at_{h}' for h in range(24)] - + actions = [import_deployment_admin,generate_default_day_schedule_admin] @admin.register(Schedule_Week_Data) class ScheduleWeekAdmin(MultiDBModelAdmin): @@ -115,7 +119,8 @@ class ScheduleWeekAdmin(MultiDBModelAdmin): 'state_Monday', 'state_Tuesday', 'state_Wednesday', 'state_Thursday', 'state_Friday', 'state_Saturday', 'state_Sunday', ) - + actions = [import_deployment_admin,generate_default_day_schedule_admin] + @admin.register(Namespace_Data) class NamespaceAdmin(MultiDBModelAdmin): list_display = ('namespace',) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 07bb935..bf4621b 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -12,4 +12,5 @@ def import_deployment(queryset): queryset.objects.update_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2]}) def generate_default_day_schedule(queryset): - Schedule_Day_Data.objects.update_or_create(name="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_1False" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_2False" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) + queryset.objects.update_or_create(name="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_1False" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_2False" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) + queryset.objects.update_or_create(name="Always_off",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_1True" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_2True" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) \ No newline at end of file -- 2.54.0 From d2740d4b62de9a6b6295d2f5c326b4f7f6770ed8 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 18:01:29 +0100 Subject: [PATCH 12/36] default schedule --- django_code/apps/cloudmanager/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index bf4621b..40d49e1 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -12,5 +12,5 @@ def import_deployment(queryset): queryset.objects.update_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2]}) def generate_default_day_schedule(queryset): - queryset.objects.update_or_create(name="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_1False" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_2False" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) - queryset.objects.update_or_create(name="Always_off",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_1True" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_2True" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) \ No newline at end of file + queryset.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_1False" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_2False" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) + queryset.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_1True" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_2True" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) \ No newline at end of file -- 2.54.0 From fdb32538bff2240fa8238bc250030d4cee372648 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 18:10:52 +0100 Subject: [PATCH 13/36] wrong find & replace --- django_code/apps/cloudmanager/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 40d49e1..92bf19f 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -12,5 +12,5 @@ def import_deployment(queryset): queryset.objects.update_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2]}) def generate_default_day_schedule(queryset): - queryset.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_1False" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_2False" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) - queryset.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_1True" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_2True" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) \ No newline at end of file + queryset.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_10" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_20" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) + queryset.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_10" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_20" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) \ No newline at end of file -- 2.54.0 From 95945cd4cf6a735ba11330c119eaf38c2ffffc3e Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 18:17:25 +0100 Subject: [PATCH 14/36] fix same name and add schedule week --- django_code/apps/cloudmanager/admin.py | 4 ++-- django_code/apps/cloudmanager/utils.py | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index 462f4b9..ae384a6 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin,messages from django.utils.translation import ngettext from .models import Deployment_Data,Schedule_Day_Data,Schedule_Week_Data,Namespace_Data -from .utils import import_namespace,import_deployment,generate_default_day_schedule +from .utils import import_namespace,import_deployment,generate_default_day_schedule,generate_default_week_schedule from apps.kubernetes_connection.utils import scale_up,scale_down DB = 'cloudmanager_db' @@ -46,7 +46,7 @@ def create_entry(modeladmin, request, queryset): @admin.action(description="create default schedule") def generate_default_day_schedule_admin(modeladmin, request, queryset): generate_default_day_schedule(Schedule_Day_Data) - + generate_default_week_schedule(Schedule_Week_Data) @admin.action(description="import namespace") def import_namespace_admin(modeladmin, request, queryset): # diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 92bf19f..4c709f4 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -13,4 +13,10 @@ def import_deployment(queryset): def generate_default_day_schedule(queryset): queryset.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_10" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_20" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) - queryset.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_10" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_20" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) \ No newline at end of file + queryset.objects.update_or_create(name_schedule="Always_on",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_10" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_20" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) + + +def generate_default_week_schedule(queryset): + queryset.objects.update_or_create(name_schedule="Always_on",defaults={"state_Monday" : True , "state_Tuesday" : True , "state_Wednesday" : True , "state_Thursday" : True , "state_Friday" : True , "state_Saturday" : True , "state_Sunday" : True}) + queryset.objects.update_or_create(name_schedule="Always_off",defaults={"state_Monday" : False , "state_Tuesday" : False , "state_Wednesday" : False , "state_Thursday" : False , "state_Friday" : False , "state_Saturday" : False , "state_Sunday" : False}) + \ No newline at end of file -- 2.54.0 From 0833a20347c26720121f5a9fcfbcbe6fe836431d Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 18:24:03 +0100 Subject: [PATCH 15/36] move the import of data so other app can invoke the methods --- django_code/apps/cloudmanager/admin.py | 6 ++++-- django_code/apps/cloudmanager/utils.py | 14 +++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index ae384a6..e9a0010 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -45,8 +45,10 @@ def create_entry(modeladmin, request, queryset): @admin.action(description="create default schedule") def generate_default_day_schedule_admin(modeladmin, request, queryset): - generate_default_day_schedule(Schedule_Day_Data) - generate_default_week_schedule(Schedule_Week_Data) + generate_default_day_schedule() + generate_default_week_schedule() + + @admin.action(description="import namespace") def import_namespace_admin(modeladmin, request, queryset): # diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 4c709f4..2ac04f0 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -1,5 +1,5 @@ from apps.kubernetes_connection.utils import get_namespace,get_deployments -from .models import Schedule_Day_Data +from .models import Schedule_Day_Data,Schedule_Week_Data def import_namespace(queryset): namespaces_list = get_namespace() @@ -11,12 +11,12 @@ def import_deployment(queryset): for deployment in deployment_list: queryset.objects.update_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2]}) -def generate_default_day_schedule(queryset): - queryset.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_10" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_20" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) - queryset.objects.update_or_create(name_schedule="Always_on",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_10" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_20" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) +def generate_default_day_schedule(): + Schedule_Day_Data.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_10" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_20" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) + Schedule_Day_Data.objects.update_or_create(name_schedule="Always_on",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_10" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_20" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) -def generate_default_week_schedule(queryset): - queryset.objects.update_or_create(name_schedule="Always_on",defaults={"state_Monday" : True , "state_Tuesday" : True , "state_Wednesday" : True , "state_Thursday" : True , "state_Friday" : True , "state_Saturday" : True , "state_Sunday" : True}) - queryset.objects.update_or_create(name_schedule="Always_off",defaults={"state_Monday" : False , "state_Tuesday" : False , "state_Wednesday" : False , "state_Thursday" : False , "state_Friday" : False , "state_Saturday" : False , "state_Sunday" : False}) +def generate_default_week_schedule(): + Schedule_Week_Data.objects.update_or_create(name_schedule="Always_on",defaults={"state_Monday" : True , "state_Tuesday" : True , "state_Wednesday" : True , "state_Thursday" : True , "state_Friday" : True , "state_Saturday" : True , "state_Sunday" : True}) + Schedule_Week_Data.objects.update_or_create(name_schedule="Always_off",defaults={"state_Monday" : False , "state_Tuesday" : False , "state_Wednesday" : False , "state_Thursday" : False , "state_Friday" : False , "state_Saturday" : False , "state_Sunday" : False}) \ No newline at end of file -- 2.54.0 From 2785eecbf363cfb2e5b9901577887a84fe5de982 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 18:30:05 +0100 Subject: [PATCH 16/36] cleanup --- django_code/apps/cloudmanager/admin.py | 21 ++------------------- django_code/apps/cloudmanager/utils.py | 10 +++++----- 2 files changed, 7 insertions(+), 24 deletions(-) diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index e9a0010..56bab4e 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -38,11 +38,6 @@ def scale_down_deploy(modeladmin, request, queryset): messages.SUCCESS, ) -@admin.action(description="create_entry") -def create_entry(modeladmin, request, queryset): - print("simpsons_data_object.create(season=2, episode=3, url='google.com'', seen=True)") - #call function to trigger refresh of all deploy - @admin.action(description="create default schedule") def generate_default_day_schedule_admin(modeladmin, request, queryset): generate_default_day_schedule() @@ -51,23 +46,11 @@ def generate_default_day_schedule_admin(modeladmin, request, queryset): @admin.action(description="import namespace") def import_namespace_admin(modeladmin, request, queryset): - # - # - # - # don't forgot to clear thge quyeryset before running this - # - import_namespace(Namespace_Data) - #print("simpsons_data_object.create(season=2, episode=3, url='google.com'', seen=True)") - #call function to trigger refresh of all deploy + import_namespace() @admin.action(description="import deployment") def import_deployment_admin(modeladmin, request, queryset): - # - # - # - # don't forgot to clear thge quyeryset before running this - # - import_deployment(Deployment_Data) + import_deployment() diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 2ac04f0..0878b1c 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -1,15 +1,15 @@ from apps.kubernetes_connection.utils import get_namespace,get_deployments -from .models import Schedule_Day_Data,Schedule_Week_Data +from .models import Schedule_Day_Data,Schedule_Week_Data,Namespace_Data,Deployment_Data -def import_namespace(queryset): +def import_namespace(): namespaces_list = get_namespace() for namespace in namespaces_list: - queryset.objects.create(namespace=namespace) + Namespace_Data.objects.update_or_create(namespace=namespace) -def import_deployment(queryset): +def import_deployment(Deployment_Data): deployment_list = get_deployments() for deployment in deployment_list: - queryset.objects.update_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2]}) + Deployment_Data.objects.update_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2]}) def generate_default_day_schedule(): Schedule_Day_Data.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_10" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_20" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) -- 2.54.0 From afe668cca6db10d35721a78ad1efec633944586e Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 18:48:45 +0100 Subject: [PATCH 17/36] change the logic --- django_code/apps/cloudmanager/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 0878b1c..15a2957 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -4,12 +4,13 @@ from .models import Schedule_Day_Data,Schedule_Week_Data,Namespace_Data,Deployme def import_namespace(): namespaces_list = get_namespace() for namespace in namespaces_list: - Namespace_Data.objects.update_or_create(namespace=namespace) + Namespace_Data.objects.get_or_create(namespace=namespace) def import_deployment(Deployment_Data): deployment_list = get_deployments() for deployment in deployment_list: - Deployment_Data.objects.update_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2]}) + Deployment_Data.objects.get_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2],"schedule_week":"Always_on"}) + def generate_default_day_schedule(): Schedule_Day_Data.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_10" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_20" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) -- 2.54.0 From cac74471aaf062e3be7693a463d31511fce77b41 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 18:50:37 +0100 Subject: [PATCH 18/36] fix the wrong import --- django_code/apps/cloudmanager/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 15a2957..75c7e58 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -6,7 +6,7 @@ def import_namespace(): for namespace in namespaces_list: Namespace_Data.objects.get_or_create(namespace=namespace) -def import_deployment(Deployment_Data): +def import_deployment(): deployment_list = get_deployments() for deployment in deployment_list: Deployment_Data.objects.get_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2],"schedule_week":"Always_on"}) -- 2.54.0 From a79a9623b63d681bb25df9acc30a90adc5c940da Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 18:56:38 +0100 Subject: [PATCH 19/36] trying this way --- django_code/apps/cloudmanager/utils.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 75c7e58..2a0df9b 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -8,14 +8,15 @@ def import_namespace(): def import_deployment(): deployment_list = get_deployments() + Always_off,Always_on = generate_default_day_schedule() for deployment in deployment_list: - Deployment_Data.objects.get_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2],"schedule_week":"Always_on"}) - + Deployment_Data.objects.get_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2],"schedule_week":Always_on}) + def generate_default_day_schedule(): - Schedule_Day_Data.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_10" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_20" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) - Schedule_Day_Data.objects.update_or_create(name_schedule="Always_on",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_10" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_20" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) - + Always_off = Schedule_Day_Data.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_10" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_20" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) + Always_on = Schedule_Day_Data.objects.update_or_create(name_schedule="Always_on",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_10" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_20" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) + return Always_off,Always_on def generate_default_week_schedule(): Schedule_Week_Data.objects.update_or_create(name_schedule="Always_on",defaults={"state_Monday" : True , "state_Tuesday" : True , "state_Wednesday" : True , "state_Thursday" : True , "state_Friday" : True , "state_Saturday" : True , "state_Sunday" : True}) -- 2.54.0 From c2e34305eba82ce1b229d0d9a034976d72333907 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 19:09:54 +0100 Subject: [PATCH 20/36] trying this way --- django_code/apps/cloudmanager/utils.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 2a0df9b..9649e88 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -1,5 +1,5 @@ from apps.kubernetes_connection.utils import get_namespace,get_deployments -from .models import Schedule_Day_Data,Schedule_Week_Data,Namespace_Data,Deployment_Data +from apps.cloudmanager.models import Schedule_Day_Data,Schedule_Week_Data,Namespace_Data,Deployment_Data def import_namespace(): namespaces_list = get_namespace() @@ -8,17 +8,19 @@ def import_namespace(): def import_deployment(): deployment_list = get_deployments() - Always_off,Always_on = generate_default_day_schedule() + Schedule_Day_Always_off,Schedule_Day_Always_on = generate_default_day_schedule() + Schedule_Week_Always_off,Schedule_Week_Always_on = generate_default_week_schedule() + for deployment in deployment_list: - Deployment_Data.objects.get_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2],"schedule_week":Always_on}) + Deployment_Data.objects.get_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2],"schedule_day":Schedule_Day_Always_on,"schedule_week":Schedule_Week_Always_on}) def generate_default_day_schedule(): - Always_off = Schedule_Day_Data.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_10" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_20" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) - Always_on = Schedule_Day_Data.objects.update_or_create(name_schedule="Always_on",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_10" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_20" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) + Always_off,status = Schedule_Day_Data.objects.update_or_create(name_schedule="Always_off",defaults={"state_at_0" : False ,"state_at_1" : False ,"state_at_2" : False ,"state_at_3" : False ,"state_at_4" : False ,"state_at_5" : False ,"state_at_6" : False ,"state_at_7" : False ,"state_at_8" : False ,"state_at_9" : False ,"state_at_10" : False ,"state_at_11" : False ,"state_at_12" : False ,"state_at_13" : False ,"state_at_14" : False ,"state_at_15" : False ,"state_at_16" : False ,"state_at_17" : False ,"state_at_18" : False ,"state_at_19" : False ,"state_at_20" : False ,"state_at_21" : False ,"state_at_22" : False ,"state_at_23" : False}) + Always_on,status = Schedule_Day_Data.objects.update_or_create(name_schedule="Always_on",defaults={"state_at_0" : True ,"state_at_1" : True ,"state_at_2" : True ,"state_at_3" : True ,"state_at_4" : True ,"state_at_5" : True ,"state_at_6" : True ,"state_at_7" : True ,"state_at_8" : True ,"state_at_9" : True ,"state_at_10" : True ,"state_at_11" : True ,"state_at_12" : True ,"state_at_13" : True ,"state_at_14" : True ,"state_at_15" : True ,"state_at_16" : True ,"state_at_17" : True ,"state_at_18" : True ,"state_at_19" : True ,"state_at_20" : True ,"state_at_21" : True ,"state_at_22" : True ,"state_at_23" : True}) return Always_off,Always_on def generate_default_week_schedule(): - Schedule_Week_Data.objects.update_or_create(name_schedule="Always_on",defaults={"state_Monday" : True , "state_Tuesday" : True , "state_Wednesday" : True , "state_Thursday" : True , "state_Friday" : True , "state_Saturday" : True , "state_Sunday" : True}) - Schedule_Week_Data.objects.update_or_create(name_schedule="Always_off",defaults={"state_Monday" : False , "state_Tuesday" : False , "state_Wednesday" : False , "state_Thursday" : False , "state_Friday" : False , "state_Saturday" : False , "state_Sunday" : False}) - \ No newline at end of file + Always_off,status = Schedule_Week_Data.objects.update_or_create(name_schedule="Always_off",defaults={"state_Monday" : False , "state_Tuesday" : False , "state_Wednesday" : False , "state_Thursday" : False , "state_Friday" : False , "state_Saturday" : False , "state_Sunday" : False}) + Always_on,status = Schedule_Week_Data.objects.update_or_create(name_schedule="Always_on",defaults={"state_Monday" : True , "state_Tuesday" : True , "state_Wednesday" : True , "state_Thursday" : True , "state_Friday" : True , "state_Saturday" : True , "state_Sunday" : True}) + return Always_off,Always_on \ No newline at end of file -- 2.54.0 From ea9459f01357b60680dbff873be0829cb85cec37 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 19:52:27 +0100 Subject: [PATCH 21/36] good progress on the filter part --- django_code/apps/cloudmanager/utils.py | 40 +++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 9649e88..f566ba4 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -1,3 +1,5 @@ +import datetime + from apps.kubernetes_connection.utils import get_namespace,get_deployments from apps.cloudmanager.models import Schedule_Day_Data,Schedule_Week_Data,Namespace_Data,Deployment_Data @@ -23,4 +25,40 @@ def generate_default_day_schedule(): def generate_default_week_schedule(): Always_off,status = Schedule_Week_Data.objects.update_or_create(name_schedule="Always_off",defaults={"state_Monday" : False , "state_Tuesday" : False , "state_Wednesday" : False , "state_Thursday" : False , "state_Friday" : False , "state_Saturday" : False , "state_Sunday" : False}) Always_on,status = Schedule_Week_Data.objects.update_or_create(name_schedule="Always_on",defaults={"state_Monday" : True , "state_Tuesday" : True , "state_Wednesday" : True , "state_Thursday" : True , "state_Friday" : True , "state_Saturday" : True , "state_Sunday" : True}) - return Always_off,Always_on \ No newline at end of file + return Always_off,Always_on + +def Give_current_weekday(): + days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday','Saturday', 'Sunday'] + weekday = days[datetime.datetime.today().weekday()] + return weekday + +def Give_current_hour(): + now = datetime.datetime.now() + return now.hour + +def Check_server_supposed_XXX(expected_status): + + # Get week schedule + +argument_week="state_"+str(Give_current_weekday()) +query_week = {argument_week : expected_status} + +schedules_week = Schedule_Week_Data.objects.filter(**query_week) + +# Get day schedule + +argument_day="state_at_"+str(Give_current_hour()) +query_day = {argument_day : expected_status} + +schedules_day = Schedule_Day_Data.objects.filter(**query_day) +schedules_day +deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week,schedule_day__in=schedules_day) + + for deployment in deployments: + name = deployment.name + namespace = deployment.namespace + replicas = deployment.replicas + print("name: "+str(name)) + print("namespace: "+str(namespace)) + + return 0 \ No newline at end of file -- 2.54.0 From 5e41927b8de5dcecdd9d5b53ffaaa40d0f9922e3 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 20:57:17 +0100 Subject: [PATCH 22/36] wrong identiation --- django_code/apps/cloudmanager/utils.py | 27 +++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index f566ba4..4da8429 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -40,19 +40,19 @@ def Check_server_supposed_XXX(expected_status): # Get week schedule -argument_week="state_"+str(Give_current_weekday()) -query_week = {argument_week : expected_status} - -schedules_week = Schedule_Week_Data.objects.filter(**query_week) - -# Get day schedule - -argument_day="state_at_"+str(Give_current_hour()) -query_day = {argument_day : expected_status} - -schedules_day = Schedule_Day_Data.objects.filter(**query_day) -schedules_day -deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week,schedule_day__in=schedules_day) + argument_week="state_"+str(Give_current_weekday()) + query_week = {argument_week : expected_status} + + schedules_week = Schedule_Week_Data.objects.filter(**query_week) + + # Get day schedule + + argument_day="state_at_"+str(Give_current_hour()) + query_day = {argument_day : expected_status} + + schedules_day = Schedule_Day_Data.objects.filter(**query_day) + + deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week,schedule_day__in=schedules_day) for deployment in deployments: name = deployment.name @@ -60,5 +60,6 @@ deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week,sc replicas = deployment.replicas print("name: "+str(name)) print("namespace: "+str(namespace)) + print("replicas: "+str(replicas)) return 0 \ No newline at end of file -- 2.54.0 From a2f6d43398d143f2cdc02fce0bed3da716b731c0 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Tue, 8 Sep 2026 21:07:46 +0100 Subject: [PATCH 23/36] seems good, more testing to do --- django_code/apps/cloudmanager/utils.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 4da8429..25e1987 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -37,6 +37,14 @@ def Give_current_hour(): return now.hour def Check_server_supposed_XXX(expected_status): + # + # testing matrix + # bitwarden-admin week always off + # bitwarden-api days always off + # bitwarden-attachments day except 19 20 + + + expected_status = False # Get week schedule @@ -51,9 +59,9 @@ def Check_server_supposed_XXX(expected_status): query_day = {argument_day : expected_status} schedules_day = Schedule_Day_Data.objects.filter(**query_day) + + deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week) | Deployment_Data.objects.filter(schedule_day__in=schedules_day) - deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week,schedule_day__in=schedules_day) - for deployment in deployments: name = deployment.name namespace = deployment.namespace @@ -61,5 +69,5 @@ def Check_server_supposed_XXX(expected_status): print("name: "+str(name)) print("namespace: "+str(namespace)) print("replicas: "+str(replicas)) - + return 0 \ No newline at end of file -- 2.54.0 From 4145db089f419d23669050a8c01fdf669a812557 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 09:40:23 +0100 Subject: [PATCH 24/36] sounds promising --- django_code/apps/cloudmanager/utils.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 25e1987..66877c5 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -42,9 +42,9 @@ def Check_server_supposed_XXX(expected_status): # bitwarden-admin week always off # bitwarden-api days always off # bitwarden-attachments day except 19 20 - - expected_status = False + #just for testing + #expected_status = True # Get week schedule @@ -60,7 +60,15 @@ def Check_server_supposed_XXX(expected_status): schedules_day = Schedule_Day_Data.objects.filter(**query_day) - deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week) | Deployment_Data.objects.filter(schedule_day__in=schedules_day) + if expected_status: + deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week, schedule_day__in=schedules_day) + else: + deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week) | Deployment_Data.objects.filter(schedule_day__in=schedules_day) + + print("---------------------------------------------------------") + print("-----------------Expected status: -----------------------") + print("-----------------"+str(expected_status)+"-----------------------") + print("---------------------------------------------------------") for deployment in deployments: name = deployment.name -- 2.54.0 From 951bf0a80792dd66ef5ad61eb61f987b37b41997 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 10:29:10 +0100 Subject: [PATCH 25/36] creating the function to display the expected state list --- django_code/apps/cloudmanager/admin.py | 12 +++++++--- django_code/apps/cloudmanager/utils.py | 32 +++++++++++++------------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index 56bab4e..c25b7e1 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin,messages from django.utils.translation import ngettext from .models import Deployment_Data,Schedule_Day_Data,Schedule_Week_Data,Namespace_Data -from .utils import import_namespace,import_deployment,generate_default_day_schedule,generate_default_week_schedule +from .utils import import_namespace,import_deployment,generate_default_day_schedule,generate_default_week_schedule,Check_server_supposed_XXX from apps.kubernetes_connection.utils import scale_up,scale_down DB = 'cloudmanager_db' @@ -38,6 +38,12 @@ def scale_down_deploy(modeladmin, request, queryset): messages.SUCCESS, ) +@admin.action(description="Expected False") +def Check_server_supposed_False(modeladmin, request, queryset): + servers_supposed_false = Check_server_supposed_XXX(False) + for server in servers_supposed_false: + messages.add_message(request, messages.INFO, server) + @admin.action(description="create default schedule") def generate_default_day_schedule_admin(modeladmin, request, queryset): generate_default_day_schedule() @@ -52,7 +58,7 @@ def import_namespace_admin(modeladmin, request, queryset): def import_deployment_admin(modeladmin, request, queryset): import_deployment() - + class ActiveAtHourFilter(admin.SimpleListFilter): title = 'Active at hour' @@ -89,7 +95,7 @@ class MultiDBModelAdmin(admin.ModelAdmin): class DeploymentDataAdmin(MultiDBModelAdmin): list_display = ('name', 'namespace', 'schedule_week', 'schedule_day', 'replicas') list_filter = (ActiveAtHourFilter,) - actions = [scale_up_deploy,scale_down_deploy,import_deployment_admin,generate_default_day_schedule_admin] + actions = [scale_up_deploy,scale_down_deploy,import_deployment_admin,generate_default_day_schedule_admin,Check_server_supposed_False] @admin.register(Schedule_Day_Data) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 66877c5..df9cdee 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -37,12 +37,6 @@ def Give_current_hour(): return now.hour def Check_server_supposed_XXX(expected_status): - # - # testing matrix - # bitwarden-admin week always off - # bitwarden-api days always off - # bitwarden-attachments day except 19 20 - #just for testing #expected_status = True @@ -64,18 +58,24 @@ def Check_server_supposed_XXX(expected_status): deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week, schedule_day__in=schedules_day) else: deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week) | Deployment_Data.objects.filter(schedule_day__in=schedules_day) - + print("---------------------------------------------------------") print("-----------------Expected status: -----------------------") print("-----------------"+str(expected_status)+"-----------------------") print("---------------------------------------------------------") - - for deployment in deployments: - name = deployment.name - namespace = deployment.namespace - replicas = deployment.replicas - print("name: "+str(name)) - print("namespace: "+str(namespace)) - print("replicas: "+str(replicas)) - return 0 \ No newline at end of file + + deployments_list = [] + for deployment in deployments: + display_list = [] + name = deployment.name + display_list.append(name) + print("name: "+str(name)) + namespace = deployment.namespace + display_list.append(namespace) + print("namespace: "+str(namespace)) + replicas = deployment.replicas + display_list.append(replicas) + print("replicas: "+str(replicas)) + deployments_list.append(display_list) + return deployments_list \ No newline at end of file -- 2.54.0 From d9366b665b4fd330629c0aa0076fd54412f6548d Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 10:29:55 +0100 Subject: [PATCH 26/36] Add check for state true --- django_code/apps/cloudmanager/admin.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index c25b7e1..bb6b80e 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -44,6 +44,12 @@ def Check_server_supposed_False(modeladmin, request, queryset): for server in servers_supposed_false: messages.add_message(request, messages.INFO, server) +@admin.action(description="Expected True") +def Check_server_supposed_true(modeladmin, request, queryset): + servers_supposed_false = Check_server_supposed_XXX(True) + for server in servers_supposed_false: + messages.add_message(request, messages.INFO, server) + @admin.action(description="create default schedule") def generate_default_day_schedule_admin(modeladmin, request, queryset): generate_default_day_schedule() @@ -95,7 +101,7 @@ class MultiDBModelAdmin(admin.ModelAdmin): class DeploymentDataAdmin(MultiDBModelAdmin): list_display = ('name', 'namespace', 'schedule_week', 'schedule_day', 'replicas') list_filter = (ActiveAtHourFilter,) - actions = [scale_up_deploy,scale_down_deploy,import_deployment_admin,generate_default_day_schedule_admin,Check_server_supposed_False] + actions = [Check_server_supposed_False,Check_server_supposed_true,scale_up_deploy,scale_down_deploy,import_deployment_admin,generate_default_day_schedule_admin] @admin.register(Schedule_Day_Data) -- 2.54.0 From 47e6d6630da7ba5f27f5f850a975c41da5edfdd1 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 12:59:52 +0100 Subject: [PATCH 27/36] add function --- django_code/apps/cloudmanager/utils.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index df9cdee..50502fa 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -1,8 +1,10 @@ import datetime -from apps.kubernetes_connection.utils import get_namespace,get_deployments +from apps.kubernetes_connection.utils import get_namespace,get_deployments,scale_up,scale_down from apps.cloudmanager.models import Schedule_Day_Data,Schedule_Week_Data,Namespace_Data,Deployment_Data + + def import_namespace(): namespaces_list = get_namespace() for namespace in namespaces_list: @@ -78,4 +80,23 @@ def Check_server_supposed_XXX(expected_status): display_list.append(replicas) print("replicas: "+str(replicas)) deployments_list.append(display_list) - return deployments_list \ No newline at end of file + return deployments_list + + +def retrieve_and_apply(): + + print("------------------------------------------") + print("-----------------UP-----------------------") + print("------------------------------------------") + servers_supposed_true = Check_server_supposed_XXX(True) + for server in servers_supposed_true: + print("name: "+str(name)+" namespace: "+str(namespace)+" replicas: "+str(replicas)) + scale_up(namespace_name=server[1],deploy_name=server[0],replicas=server[2]) + + print("------------------------------------------") + print("----------------DOWN----------------------") + print("------------------------------------------") + servers_supposed_false = Check_server_supposed_XXX(False) + for server in servers_supposed_false: + print("name: "+str(name)+" namespace: "+str(namespace)+" replicas: "+str(replicas)) + scale_down(namespace_name=server[1],deploy_name=server[0]) -- 2.54.0 From 75004d16f9b4d0f76a69324e79bde24aa31c493d Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 13:02:18 +0100 Subject: [PATCH 28/36] fix call and remove one echo --- django_code/apps/cloudmanager/utils.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 50502fa..aec82f4 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -61,10 +61,10 @@ def Check_server_supposed_XXX(expected_status): else: deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week) | Deployment_Data.objects.filter(schedule_day__in=schedules_day) - print("---------------------------------------------------------") - print("-----------------Expected status: -----------------------") - print("-----------------"+str(expected_status)+"-----------------------") - print("---------------------------------------------------------") + #print("---------------------------------------------------------") + #print("-----------------Expected status: -----------------------") + #print("-----------------"+str(expected_status)+"-----------------------") + #print("---------------------------------------------------------") deployments_list = [] @@ -90,7 +90,7 @@ def retrieve_and_apply(): print("------------------------------------------") servers_supposed_true = Check_server_supposed_XXX(True) for server in servers_supposed_true: - print("name: "+str(name)+" namespace: "+str(namespace)+" replicas: "+str(replicas)) + print("name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])) scale_up(namespace_name=server[1],deploy_name=server[0],replicas=server[2]) print("------------------------------------------") @@ -98,5 +98,5 @@ def retrieve_and_apply(): print("------------------------------------------") servers_supposed_false = Check_server_supposed_XXX(False) for server in servers_supposed_false: - print("name: "+str(name)+" namespace: "+str(namespace)+" replicas: "+str(replicas)) + print("name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])) scale_down(namespace_name=server[1],deploy_name=server[0]) -- 2.54.0 From 38e00d6ac631c96da5e6a1553a55b03b1ae0026d Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 13:07:51 +0100 Subject: [PATCH 29/36] not touching kube-system --- django_code/apps/cloudmanager/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index aec82f4..40f70b3 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -16,7 +16,8 @@ def import_deployment(): Schedule_Week_Always_off,Schedule_Week_Always_on = generate_default_week_schedule() for deployment in deployment_list: - Deployment_Data.objects.get_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2],"schedule_day":Schedule_Day_Always_on,"schedule_week":Schedule_Week_Always_on}) + if deployment[0]!="kube-system": + Deployment_Data.objects.get_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2],"schedule_day":Schedule_Day_Always_on,"schedule_week":Schedule_Week_Always_on}) def generate_default_day_schedule(): -- 2.54.0 From 430172911ef3c183b3b543d45b5c5cb17cfc7401 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 13:29:31 +0100 Subject: [PATCH 30/36] not touching kube-system --- django_code/apps/cloudmanager/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 40f70b3..8f2636d 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -8,7 +8,8 @@ from apps.cloudmanager.models import Schedule_Day_Data,Schedule_Week_Data,Namesp def import_namespace(): namespaces_list = get_namespace() for namespace in namespaces_list: - Namespace_Data.objects.get_or_create(namespace=namespace) + if namespace[0]!="kube-system": + Namespace_Data.objects.get_or_create(namespace=namespace) def import_deployment(): deployment_list = get_deployments() -- 2.54.0 From 294af1945d683ab491786be979392d18b30c88e0 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 13:49:53 +0100 Subject: [PATCH 31/36] add the actua_replicas to gather the data whenever required --- .../0002_deployment_data_actual_replica.py | 19 +++++++++++++++++++ django_code/apps/cloudmanager/models.py | 1 + 2 files changed, 20 insertions(+) create mode 100644 django_code/apps/cloudmanager/migrations/0002_deployment_data_actual_replica.py diff --git a/django_code/apps/cloudmanager/migrations/0002_deployment_data_actual_replica.py b/django_code/apps/cloudmanager/migrations/0002_deployment_data_actual_replica.py new file mode 100644 index 0000000..fb3f57d --- /dev/null +++ b/django_code/apps/cloudmanager/migrations/0002_deployment_data_actual_replica.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.30 on 2026-09-09 12:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cloudmanager', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='deployment_data', + name='actual_replica', + field=models.IntegerField(default=1), + preserve_default=False, + ), + ] diff --git a/django_code/apps/cloudmanager/models.py b/django_code/apps/cloudmanager/models.py index d7757ee..3a05b3f 100644 --- a/django_code/apps/cloudmanager/models.py +++ b/django_code/apps/cloudmanager/models.py @@ -54,6 +54,7 @@ class Deployment_Data(models.Model): schedule_week = models.ForeignKey(Schedule_Week_Data,null=True, blank=True, on_delete=models.SET_NULL) schedule_day = models.ForeignKey(Schedule_Day_Data,null=True, blank=True, on_delete=models.SET_NULL) replicas = models.IntegerField() + actual_replica = models.IntegerField() class Meta: db_table = 'machine' -- 2.54.0 From 9d82d619938c959ef33f955366dff280db7cc3d1 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 14:17:37 +0100 Subject: [PATCH 32/36] add the check to avoid making the operations for everyone --- django_code/apps/cloudmanager/utils.py | 33 ++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 8f2636d..ffb0ba1 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -18,7 +18,7 @@ def import_deployment(): for deployment in deployment_list: if deployment[0]!="kube-system": - Deployment_Data.objects.get_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2],"schedule_day":Schedule_Day_Always_on,"schedule_week":Schedule_Week_Always_on}) + Deployment_Data.objects.get_or_create(namespace=deployment[0],name=deployment[1],defaults={"replicas":deployment[2],"actual_replica":deployment[2],"schedule_day":Schedule_Day_Always_on,"schedule_week":Schedule_Week_Always_on}) def generate_default_day_schedule(): @@ -40,6 +40,15 @@ def Give_current_hour(): now = datetime.datetime.now() return now.hour +def get_current_replicas(): + deployments_list = get_deployments() + for deployment in deployments_list: + if deployment[0]!="kube-system": + object,created = Deployment_Data.objects.update_or_create(namespace=deployment[0],name=deployment[1],defaults={"actual_replica":deployment[2]}) + if created: + print("THIS DEPLOY: name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])+" IS NEW !!!!!") + return 0 + def Check_server_supposed_XXX(expected_status): #just for testing #expected_status = True @@ -81,24 +90,38 @@ def Check_server_supposed_XXX(expected_status): replicas = deployment.replicas display_list.append(replicas) print("replicas: "+str(replicas)) + #Adding the whole object as well for future use + display_list.append(deployment) deployments_list.append(display_list) + return deployments_list def retrieve_and_apply(): + + #Get current replica to compare with the replicas created at the start + get_current_replicas() print("------------------------------------------") print("-----------------UP-----------------------") print("------------------------------------------") servers_supposed_true = Check_server_supposed_XXX(True) for server in servers_supposed_true: - print("name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])) - scale_up(namespace_name=server[1],deploy_name=server[0],replicas=server[2]) + #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]: + print("name: "+str(server[1])+" namespace: "+str(server[0])+" already good") + else: + print("Starting -> name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])) + scale_up(namespace_name=server[1],deploy_name=server[0],replicas=server[2]) print("------------------------------------------") print("----------------DOWN----------------------") print("------------------------------------------") servers_supposed_false = Check_server_supposed_XXX(False) for server in servers_supposed_false: - print("name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])) - scale_down(namespace_name=server[1],deploy_name=server[0]) + #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: + print("name: "+str(server[1])+" namespace: "+str(server[0])+" already down") + else: + print("Shutting down -> name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])) + scale_down(namespace_name=server[1],deploy_name=server[0]) -- 2.54.0 From 860de928ba6a910c288653d46394bb75171c67fd Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 14:25:05 +0100 Subject: [PATCH 33/36] verbose everywhere --- django_code/apps/cloudmanager/utils.py | 14 ++++---------- django_code/apps/kubernetes_connection/utils.py | 10 +++++----- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index ffb0ba1..6b249ad 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -49,7 +49,7 @@ def get_current_replicas(): print("THIS DEPLOY: name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])+" IS NEW !!!!!") return 0 -def Check_server_supposed_XXX(expected_status): +def Check_server_supposed_XXX(expected_status,verbose=False): #just for testing #expected_status = True @@ -71,25 +71,19 @@ def Check_server_supposed_XXX(expected_status): deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week, schedule_day__in=schedules_day) else: deployments = Deployment_Data.objects.filter(schedule_week__in=schedules_week) | Deployment_Data.objects.filter(schedule_day__in=schedules_day) - - #print("---------------------------------------------------------") - #print("-----------------Expected status: -----------------------") - #print("-----------------"+str(expected_status)+"-----------------------") - #print("---------------------------------------------------------") - deployments_list = [] for deployment in deployments: display_list = [] name = deployment.name display_list.append(name) - print("name: "+str(name)) + if verbose : print("name: "+str(name)) namespace = deployment.namespace display_list.append(namespace) - print("namespace: "+str(namespace)) + if verbose : print("namespace: "+str(namespace)) replicas = deployment.replicas display_list.append(replicas) - print("replicas: "+str(replicas)) + if verbose : print("replicas: "+str(replicas)) #Adding the whole object as well for future use display_list.append(deployment) deployments_list.append(display_list) diff --git a/django_code/apps/kubernetes_connection/utils.py b/django_code/apps/kubernetes_connection/utils.py index 8bbeff0..f85d039 100644 --- a/django_code/apps/kubernetes_connection/utils.py +++ b/django_code/apps/kubernetes_connection/utils.py @@ -32,27 +32,27 @@ def import_Deployments(): test.items[2].spec.template.spec.containers[0].name # name the third deploy within the namespace return 0 -def get_namespace(): +def get_namespace(verbose=False): config.load_kube_config(config_file='/kubeconfig/config') core = client.CoreV1Api() namespace = core.list_namespace() namespace_list = [] for i in range(0,len(namespace.items)): - print(namespace.items[i].metadata.name) + if verbose : print(namespace.items[i].metadata.name) namespace_list.append(namespace.items[i].metadata.name) return namespace_list -def get_deployments(): +def get_deployments(verbose=False): config.load_kube_config(config_file='/kubeconfig/config') api = client.AppsV1Api() namespaces_list = get_namespace() deployments_list = [] for namespace in namespaces_list: - print(namespace) + if verbose : print(namespace) deployments = api.list_namespaced_deployment(namespace) for deployment_index in range(0,len(deployments.items)): deployment = deployments.items[deployment_index].metadata.name replicas = deployments.items[deployment_index].spec.replicas - print(" "+str(deployment)+" -- Replicas: "+str(replicas)) + if verbose : print(" "+str(deployment)+" -- Replicas: "+str(replicas)) deployments_list.append([namespace,deployment,replicas]) return deployments_list \ No newline at end of file -- 2.54.0 From 91e0c992ec15bd96cf8334c3ba87c86a33f149ea Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 14:26:01 +0100 Subject: [PATCH 34/36] verbose everywhere --- django_code/apps/cloudmanager/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 6b249ad..5ddc925 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -91,7 +91,7 @@ def Check_server_supposed_XXX(expected_status,verbose=False): return deployments_list -def retrieve_and_apply(): +def retrieve_and_apply(verbose=False): #Get current replica to compare with the replicas created at the start get_current_replicas() @@ -103,7 +103,7 @@ def retrieve_and_apply(): for server in servers_supposed_true: #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]: - print("name: "+str(server[1])+" namespace: "+str(server[0])+" already good") + if verbose : print("name: "+str(server[1])+" namespace: "+str(server[0])+" already good") else: print("Starting -> name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])) scale_up(namespace_name=server[1],deploy_name=server[0],replicas=server[2]) -- 2.54.0 From 2bbdad3e471359b4524310d174618e1636ce8540 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 14:26:50 +0100 Subject: [PATCH 35/36] verbose everywhere --- django_code/apps/cloudmanager/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 5ddc925..8ebfbdc 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -103,7 +103,7 @@ def retrieve_and_apply(verbose=False): for server in servers_supposed_true: #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 good") + if verbose : print("name: "+str(server[1])+" namespace: "+str(server[0])+" already UP") else: print("Starting -> name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])) scale_up(namespace_name=server[1],deploy_name=server[0],replicas=server[2]) @@ -115,7 +115,7 @@ def retrieve_and_apply(verbose=False): for server in servers_supposed_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: - print("name: "+str(server[1])+" namespace: "+str(server[0])+" already down") + print("name: "+str(server[1])+" namespace: "+str(server[0])+" already DOWN") else: print("Shutting down -> name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])) scale_down(namespace_name=server[1],deploy_name=server[0]) -- 2.54.0 From 496a6bd94078652a88614f721c446ac79c4d0686 Mon Sep 17 00:00:00 2001 From: "pierre.geeraert" Date: Wed, 9 Sep 2026 14:34:14 +0100 Subject: [PATCH 36/36] verbose everywhere --- django_code/apps/cloudmanager/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/django_code/apps/cloudmanager/utils.py b/django_code/apps/cloudmanager/utils.py index 8ebfbdc..a13dc9d 100644 --- a/django_code/apps/cloudmanager/utils.py +++ b/django_code/apps/cloudmanager/utils.py @@ -115,7 +115,7 @@ def retrieve_and_apply(verbose=False): for server in servers_supposed_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: - print("name: "+str(server[1])+" namespace: "+str(server[0])+" already DOWN") + if verbose : print("name: "+str(server[1])+" namespace: "+str(server[0])+" already DOWN") else: print("Shutting down -> name: "+str(server[1])+" namespace: "+str(server[0])+" replicas: "+str(server[2])) scale_down(namespace_name=server[1],deploy_name=server[0]) -- 2.54.0