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}