birbsim/src/scheduler.py

30 lines
1.2 KiB
Python

from clients import Client
from stats import Stats
from datacentre import Datacentre
class Scheduler:
def __init__(self):
self.clients: list[Client] = []
self.cloud: Datacentre = Datacentre()
self.edge: Datacentre = Datacentre()
self.failedClients: list[Client] = []
self.simulationLength: int = 0
self.statsModule: Stats = Stats()
def runsimulation(self):
for i in range(self.simulationLength):
for currclient in self.clients:
print(f"Edge status: CPU used: {self.edge.processingpower.currentUsage}\
BW used: {self.edge.uplink.currentUsage}")
print(f"Cloud status: CPU used: {self.cloud.processingpower.currentUsage}\
BW used: {self.cloud.uplink.currentUsage}")
if not currclient.firerequest(self.edge, self.cloud, i):
self.failedClients.append(currclient)
if i not in self.statsModule.failedDetails:
self.statsModule.failedDetails[i] = 1
else:
self.statsModule.failedDetails[i] += 1
self.cloud.releaseall()
self.edge.releaseall()