diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f343f40 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM python:3.10 + +WORKDIR /app + +COPY requirements.txt ./ + +RUN pip install --no-cache-dir -r requirements.txt + +COPY ./src . \ No newline at end of file diff --git a/src/apps.py b/src/apps.py new file mode 100644 index 0000000..92ea1c8 --- /dev/null +++ b/src/apps.py @@ -0,0 +1,8 @@ +class ApplicationModule: + bwRequirement: int = 0 + cpuRequirement: int = 0 + + +class Application: + name: str = "" + modules: list[ApplicationModule] = [] diff --git a/src/bucketresources.py b/src/bucketresources.py new file mode 100644 index 0000000..00e4e65 --- /dev/null +++ b/src/bucketresources.py @@ -0,0 +1,28 @@ +from enum import Enum + + +class BucketResourceType(Enum): + NetworkLink = 'network_link' + CpuResource = 'cpu_resource' + + +class BucketResource: + type: BucketResourceType = BucketResourceType.NetworkLink + currentUsage: int = 0 + capacity: int = 0 + + def reserve(self, resource: int) -> bool: + if self.capacity == self.currentUsage or resource > self.capacity - self.currentUsage: + return False + else: + return True + + def release(self, resource: int) -> bool: + if self.currentUsage == 0 or self.currentUsage - resource < 0: + return False + else: + return True + + def releaseAll(self) -> bool: + self.currentUsage = 0 + return True diff --git a/src/clients.py b/src/clients.py new file mode 100644 index 0000000..6995b0a --- /dev/null +++ b/src/clients.py @@ -0,0 +1,7 @@ +from apps import Application + + +class Client: + startSlices: list[int] = [] + lengthOfTransmission: int = 0 + application: Application = Application() diff --git a/src/datacentre.py b/src/datacentre.py new file mode 100644 index 0000000..b17cd1a --- /dev/null +++ b/src/datacentre.py @@ -0,0 +1,6 @@ +from bucketresources import BucketResource + + +class Datacentre: + processingpower: BucketResource = BucketResource() + uplink: BucketResource = BucketResource() diff --git a/main.py b/src/main.py similarity index 100% rename from main.py rename to src/main.py diff --git a/src/scheduler.py b/src/scheduler.py new file mode 100644 index 0000000..ac7656a --- /dev/null +++ b/src/scheduler.py @@ -0,0 +1,13 @@ +from clients import Client +from apps import Application, ApplicationModule +from bucketresources import BucketResource, BucketResource +from datacentre import Datacentre + + +class Scheduler: + clients: list[Client] = [] + cloud: Datacentre = Datacentre() + edge: Datacentre = Datacentre() + + def createClients(self, numofClients: int = 1): + pass