Skip to main content

mssf_util/monitoring/
entities.rs

1// ------------------------------------------------------------
2// Copyright (c) Microsoft Corporation.  All rights reserved.
3// Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
4// ------------------------------------------------------------
5
6use mssf_core::types::{
7    ApplicationHealth, ApplicationQueryResultItem, ClusterHealth, NodeHealthResult,
8    NodeQueryResultItem, PartitionHealthResult, ReplicaHealthResult, ServiceHealthResult,
9    ServicePartitionQueryResultItem, ServiceQueryResultItem, ServiceReplicaQueryResultItem, Uri,
10};
11
12/// Health entities produced by HealthDataProducer.
13#[derive(Debug, Clone)]
14pub enum HealthEntity {
15    Node(NodeHealthEntity),
16    Cluster(ClusterHealthEntity),
17    Application(ApplicationHealthEntity),
18    Partition(PartitionHealthEntity),
19    Service(ServiceHealthEntity),
20    Replica(ReplicaHealthEntity),
21}
22
23/// There is no info for cluster name in FabricClient.
24/// User is supposed to inject the cluster name in consumer side.
25#[derive(Debug, Clone)]
26pub struct ClusterHealthEntity {
27    pub health: ClusterHealth,
28}
29
30#[derive(Debug, Clone)]
31pub struct NodeHealthEntity {
32    pub node: NodeQueryResultItem,
33    pub health: NodeHealthResult,
34}
35
36#[derive(Debug, Clone)]
37pub struct ApplicationHealthEntity {
38    pub application: ApplicationQueryResultItem,
39    pub health: ApplicationHealth,
40}
41
42#[derive(Debug, Clone)]
43pub struct ServiceHealthEntity {
44    pub service: ServiceQueryResultItem,
45    pub health: ServiceHealthResult,
46}
47
48#[derive(Debug, Clone)]
49pub struct PartitionHealthEntity {
50    pub partition: ServicePartitionQueryResultItem,
51    pub health: PartitionHealthResult,
52    pub service_name: Uri,
53    pub application_name: Uri,
54}
55
56#[derive(Debug, Clone)]
57pub struct ReplicaHealthEntity {
58    pub replica: ServiceReplicaQueryResultItem,
59    pub health: ReplicaHealthResult,
60    pub service_name: Uri,
61    pub application_name: Uri,
62}