Skip to content
Draft
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions lisa/messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,16 @@ class ProvisionBootTimeMessage(MessageBase):
information: Dict[str, str] = field(default_factory=dict)


@dataclass
class UnifiedProvisionBootTimeMessage(ProvisionBootTimeMessage):
type: str = "UnifiedProvisionBootTime"
metric_name: str = ""
metric_value: float = 0.0
metric_unit: str = ""
metric_description: str = ""
metric_relativity: Optional[MetricRelativity] = MetricRelativity.NA


@dataclass
class KernelBuildMessage(MessageBase):
type: str = "KernelBuild"
Expand Down Expand Up @@ -434,3 +444,49 @@ def send_unified_perf_message(
notifier.notify(message)

return message


def send_unified_provision_boot_time_message(
node: "Node",
metric_name: str = "",
metric_value: float = 0.0,
metric_unit: str = "",
metric_description: str = "",
metric_relativity: Optional[MetricRelativity] = MetricRelativity.NA,
boot_times: int = 0,
provision_time: float = 0,
kernel_boot_time: float = 0,
initrd_boot_time: float = 0,
userspace_boot_time: float = 0,
firmware_boot_time: float = 0,
loader_boot_time: float = 0,
information: Optional[Dict[str, str]] = None,
) -> UnifiedProvisionBootTimeMessage:
message = UnifiedProvisionBootTimeMessage()

# Set boot time fields
message.boot_times = boot_times
message.provision_time = provision_time
message.kernel_boot_time = kernel_boot_time
message.initrd_boot_time = initrd_boot_time
message.userspace_boot_time = userspace_boot_time
message.firmware_boot_time = firmware_boot_time
message.loader_boot_time = loader_boot_time

# Set unified metric fields
message.metric_name = metric_name
message.metric_value = metric_value
message.metric_unit = metric_unit
message.metric_description = metric_description
message.metric_relativity = metric_relativity

# Set information
if information:
message.information.update(information)

# Add node information
message.information.update(node.get_information())

notifier.notify(message)

return message