81 lines
4.7 KiB
Python
81 lines
4.7 KiB
Python
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
|
|
|
|
def import_namespace():
|
|
namespaces_list = get_namespace()
|
|
for namespace in namespaces_list:
|
|
Namespace_Data.objects.get_or_create(namespace=namespace)
|
|
|
|
def import_deployment():
|
|
deployment_list = get_deployments()
|
|
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_day":Schedule_Day_Always_on,"schedule_week":Schedule_Week_Always_on})
|
|
|
|
|
|
def generate_default_day_schedule():
|
|
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():
|
|
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
|
|
|
|
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):
|
|
#
|
|
# testing matrix
|
|
# bitwarden-admin week always off
|
|
# bitwarden-api days always off
|
|
# bitwarden-attachments day except 19 20
|
|
|
|
#just for testing
|
|
#expected_status = True
|
|
|
|
# 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)
|
|
|
|
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
|
|
namespace = deployment.namespace
|
|
replicas = deployment.replicas
|
|
print("name: "+str(name))
|
|
print("namespace: "+str(namespace))
|
|
print("replicas: "+str(replicas))
|
|
|
|
return 0 |