Skip to main content

scouter_settings/
grpc.rs

1use pyo3::prelude::*;
2use scouter_types::PyHelperFuncs;
3use scouter_types::TransportType;
4use serde::Serialize;
5
6#[pyclass]
7#[derive(Debug, Clone, Serialize)]
8pub struct GrpcConfig {
9    #[pyo3(get, set)]
10    pub server_uri: String,
11
12    #[pyo3(get, set)]
13    pub username: String,
14
15    #[pyo3(get, set)]
16    pub password: String,
17
18    #[pyo3(get, set)]
19    pub timeout_secs: Option<u64>,
20
21    #[pyo3(get, set)]
22    pub connect_timeout_secs: Option<u64>,
23
24    #[pyo3(get, set)]
25    pub keep_alive_interval_secs: Option<u64>,
26
27    #[pyo3(get, set)]
28    pub keep_alive_timeout_secs: Option<u64>,
29
30    #[pyo3(get, set)]
31    pub keep_alive_while_idle: Option<bool>,
32
33    #[pyo3(get)]
34    pub transport_type: TransportType,
35}
36
37#[pymethods]
38impl GrpcConfig {
39    #[new]
40    #[pyo3(signature = (
41        server_uri=None,
42        username=None,
43        password=None,
44        timeout_secs=None,
45        connect_timeout_secs=None,
46        keep_alive_interval_secs=None,
47        keep_alive_timeout_secs=None,
48        keep_alive_while_idle=None,
49    ))]
50    #[allow(clippy::too_many_arguments)]
51    pub fn new(
52        server_uri: Option<String>,
53        username: Option<String>,
54        password: Option<String>,
55        timeout_secs: Option<u64>,
56        connect_timeout_secs: Option<u64>,
57        keep_alive_interval_secs: Option<u64>,
58        keep_alive_timeout_secs: Option<u64>,
59        keep_alive_while_idle: Option<bool>,
60    ) -> Self {
61        let server_uri = server_uri.unwrap_or_else(|| {
62            std::env::var("SCOUTER_GRPC_URI")
63                .unwrap_or_else(|_| "http://localhost:50051".to_string())
64        });
65
66        let username = username.unwrap_or_else(|| {
67            std::env::var("SCOUTER_USERNAME").unwrap_or_else(|_| "guest".to_string())
68        });
69
70        let password = password.unwrap_or_else(|| {
71            std::env::var("SCOUTER_PASSWORD").unwrap_or_else(|_| "guest".to_string())
72        });
73
74        GrpcConfig {
75            server_uri,
76            username,
77            password,
78            timeout_secs,
79            connect_timeout_secs,
80            keep_alive_interval_secs,
81            keep_alive_timeout_secs,
82            keep_alive_while_idle,
83            transport_type: TransportType::Grpc,
84        }
85    }
86
87    pub fn __str__(&self) -> String {
88        PyHelperFuncs::__str__(self)
89    }
90}
91
92impl Default for GrpcConfig {
93    fn default() -> Self {
94        Self::new(None, None, None, None, None, None, None, None)
95    }
96}