assemblyline_models/messages/service_heartbeat.rs
1use serde::{Deserialize, Serialize};
2
3// from assemblyline import odm
4
5// MSG_TYPES = {"ServiceHeartbeat"}
6// LOADER_CLASS = "assemblyline.odm.messages.service_heartbeat.ServiceMessage"
7
8
9
10/// Service Metrics
11#[derive(Serialize, Deserialize, Default)]
12pub struct Metrics {
13 /// Number of cache hits
14 pub cache_hit: i64,
15 /// Number of cache misses
16 pub cache_miss: i64,
17 /// Number of cache skips
18 pub cache_skipped: i64,
19 /// Number of service executes
20 pub execute: i64,
21 /// Number of recoverable fails
22 pub fail_recoverable: i64,
23 /// Number of non-recoverable fails
24 pub fail_nonrecoverable: i64,
25 /// Number of tasks scored
26 pub scored: i64,
27 /// Number of tasks not scored
28 pub not_scored: i64,
29}
30
31// @odm.model(description="Service Activity")
32// class Activity(odm.Model):
33// busy = odm.Integer(description="Number of busy instances")
34// idle = odm.Integer(description="Number of idle instances")
35
36
37// @odm.model(description="Heartbeat Model")
38// class Heartbeat(odm.Model):
39// activity = odm.Compound(Activity, description="Service activity")
40// instances = odm.Integer(description="Service instances")
41// metrics = odm.Compound(Metrics, description="Service metrics")
42// queue = odm.Integer(description="Service queue")
43// service_name = odm.Keyword(description="Service name")
44
45
46// @odm.model(description="Model of Service Heartbeat Message")
47// class ServiceMessage(odm.Model):
48// msg = odm.Compound(Heartbeat, description="Heartbeat message")
49// msg_loader = odm.Enum(values={LOADER_CLASS}, default=LOADER_CLASS, description="Loader class for message")
50// msg_type = odm.Enum(values=MSG_TYPES, default="ServiceHeartbeat", description="Type of message")
51// sender = odm.Keyword(description="Sender of message")