from dataclasses import dataclass, field
from uuid import UUID, uuid4
from datetime import datetime, timezone
from typing import Optional
from domain.value_objects.mac_address import MacAddress
from domain.value_objects.ip_address import IpAddress
[документация]
@dataclass
class Device:
'''Represents a network device with its attributes and behaviors.'''
mac_address: MacAddress
model: Optional[str] = None
last_activity: Optional[datetime] = None
ip_address: Optional[IpAddress] = None
id: UUID = field(default_factory=uuid4)
config_id: Optional[UUID] = None
[документация]
def update_last_activity(self) -> None:
'''Updates the last activity timestamp to the current UTC time.'''
self.last_activity = datetime.now(tz=timezone.utc)
[документация]
def assign_config(self, config_id: UUID) -> None:
'''Assigns a configuration ID to the device.'''
self.config_id = config_id