birbsim/src/bucketresources.py

29 lines
727 B
Python

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