32 lines
937 B
Python
32 lines
937 B
Python
from enum import Enum
|
|
|
|
|
|
class BucketResourceType(Enum):
|
|
NetworkLink = 'network_link'
|
|
CpuResource = 'cpu_resource'
|
|
|
|
|
|
class BucketResource:
|
|
def __init__(self, capacity: int = 0, resourcetype: BucketResourceType = BucketResourceType.NetworkLink):
|
|
self.type: BucketResourceType = resourcetype
|
|
self.currentUsage: int = 0
|
|
self.capacity: int = capacity
|
|
|
|
def reserve(self, resource: int) -> bool:
|
|
if self.capacity == self.currentUsage or resource > self.capacity - self.currentUsage:
|
|
return False
|
|
else:
|
|
self.currentUsage += resource
|
|
return True
|
|
|
|
def release(self, resource: int) -> bool:
|
|
if self.currentUsage == 0 or self.currentUsage - resource < 0:
|
|
return False
|
|
else:
|
|
self.currentUsage -= resource
|
|
return True
|
|
|
|
def releaseall(self) -> bool:
|
|
self.currentUsage = 0
|
|
return True
|