30 lines
1.2 KiB
Python
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()
|